From fb6032d8fc7b490cff34caa559bb6b649f7b6a89 Mon Sep 17 00:00:00 2001 From: "spaceBearAmadeus (Alex)" Date: Mon, 24 Feb 2025 17:43:07 -0500 Subject: [PATCH 01/20] added pep618 compliant config for backwards compat --- poetry.lock | 36 ++++++++++++++-------------- pyproject.toml | 64 ++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 78 insertions(+), 22 deletions(-) diff --git a/poetry.lock b/poetry.lock index 999435e..537ed60 100644 --- a/poetry.lock +++ b/poetry.lock @@ -144,7 +144,7 @@ version = "3.0.0" description = "Annotate AST trees with source code positions" optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["dev"] files = [ {file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2"}, {file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7"}, @@ -518,7 +518,7 @@ files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -markers = {main = "platform_system == \"Windows\" or sys_platform == \"win32\""} +markers = {main = "platform_system == \"Windows\""} [[package]] name = "comm" @@ -803,7 +803,7 @@ version = "5.1.1" description = "Decorators for Humans" optional = false python-versions = ">=3.5" -groups = ["main", "dev"] +groups = ["dev"] files = [ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, @@ -865,7 +865,7 @@ version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" -groups = ["main", "dev"] +groups = ["dev"] markers = "python_version < \"3.11\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, @@ -881,7 +881,7 @@ version = "2.2.0" description = "Get the currently executing AST node of a frame, and other information" optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +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"}, @@ -1250,7 +1250,7 @@ version = "8.32.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" -groups = ["main", "dev"] +groups = ["dev"] files = [ {file = "ipython-8.32.0-py3-none-any.whl", hash = "sha256:cae85b0c61eff1fc48b0a8002de5958b6528fa9c8defb1894da63f42613708aa"}, {file = "ipython-8.32.0.tar.gz", hash = "sha256:be2c91895b0b9ea7ba49d33b23e2040c352b33eb6a519cca7ce6e0c743444251"}, @@ -1304,7 +1304,7 @@ version = "0.19.2" description = "An autocompletion tool for Python that can be used for text editors." optional = false python-versions = ">=3.6" -groups = ["main", "dev"] +groups = ["dev"] files = [ {file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9"}, {file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0"}, @@ -1907,7 +1907,7 @@ version = "0.1.7" description = "Inline Matplotlib backend for Jupyter" optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["dev"] 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"}, @@ -2616,7 +2616,7 @@ version = "0.8.4" description = "A Python Parser" optional = false python-versions = ">=3.6" -groups = ["main", "dev"] +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"}, @@ -2644,7 +2644,7 @@ version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." optional = false python-versions = "*" -groups = ["main", "dev"] +groups = ["dev"] markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" files = [ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, @@ -2838,7 +2838,7 @@ version = "3.0.50" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.8.0" -groups = ["main", "dev"] +groups = ["dev"] files = [ {file = "prompt_toolkit-3.0.50-py3-none-any.whl", hash = "sha256:9b6427eb19e479d98acff65196a307c555eb567989e6d88ebbb1b509d9779198"}, {file = "prompt_toolkit-3.0.50.tar.gz", hash = "sha256:544748f3860a2623ca5cd6d2795e7a14f3d0e1c3c9728359013f79877fc89bab"}, @@ -2877,12 +2877,12 @@ version = "0.7.0" description = "Run a subprocess in a pseudo terminal" optional = false python-versions = "*" -groups = ["main", "dev"] +groups = ["dev"] +markers = "os_name != \"nt\" or sys_platform != \"win32\" and sys_platform != \"emscripten\"" files = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, ] -markers = {main = "sys_platform != \"win32\" and sys_platform != \"emscripten\"", dev = "sys_platform != \"win32\" and sys_platform != \"emscripten\" or os_name != \"nt\""} [[package]] name = "pure-eval" @@ -2890,7 +2890,7 @@ version = "0.2.3" description = "Safely evaluate AST nodes without side effects" optional = false python-versions = "*" -groups = ["main", "dev"] +groups = ["dev"] files = [ {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, @@ -3985,7 +3985,7 @@ version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" optional = false python-versions = "*" -groups = ["main", "dev"] +groups = ["dev"] files = [ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, @@ -4138,7 +4138,7 @@ version = "5.14.3" description = "Traitlets Python configuration system" optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["dev"] files = [ {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, @@ -4350,7 +4350,7 @@ version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" -groups = ["main", "dev"] +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"}, @@ -4422,4 +4422,4 @@ jupyter = ["ipytree (>=0.2.2)", "ipywidgets (>=8.0.0)", "notebook"] [metadata] lock-version = "2.1" python-versions = ">=3.10,<4.0" -content-hash = "85cd739977f51e05bd43544fc600e79bd843de691c68a5b24cfbb2073d324cda" +content-hash = "9699633677b7ebde35a58f1472378e680a46a04c7016a9d213ef6235c8f54547" diff --git a/pyproject.toml b/pyproject.toml index 2e5cfa3..2fda5bb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,59 @@ +# pep618-compliant setuptools config +# --------------------------------- + +[project] +name = "pyvcell" +version = "0.1.1" +description = "This is the python wrapper for vcell modeling and simulation" +authors = ["Jim Schaff "] +repository = "https://github.com/virtualcell/pyvcell" +documentation = "https://virtualcell.github.io/pyvcell/" +readme = "README.md" +dependencies = [ + "numexpr>=2.10.0", + "zarr>=2.17.2", + "h5py>=3.11.0", + "numpy>=1.26.4", + "orjson>=3.10.3", + "vtk>=9.3.1", + "pyvcell-fvsolver>=0.1.0", + "typer>=0.12.3", + "pydantic>=2.10.5", + "requests-oauth2client>=1.6.0", + "overrides>=7.7.0", + "typing-extensions>=4.12.2", + "urllib3>=2.3.0", + "requests>=2.32.3", + "python-dateutil>=2.9.0.post0", + "pyvista>=0.44.2", + "python-libsbml>=5.20.4", + "matplotlib>=3.10.0" +] + +[project.optional-dependencies] +dev = [ + "pytest>=7.2.0", + "pytest-cov>=4.0.0", + "deptry>=0.16.2", + "mypy>=1.5.1", + "pre-commit>=3.8.0", + "tox>=4.11.1", + "types-requests>=2.32.0.20241016", + "notebook>=7.3.2" +] +docs = [ + "mkdocs>=1.6.1", + "mkdocs-material>=9.5.50", + "mkdocstrings[python]>=0.27.0", + "griffe>=1.5.5" +] + + +# poetry-based config +# -------------------- [tool.poetry] name = "pyvcell" -version = "0.1.0" +version = "0.1.1" description = "This is the python wrapper for vcell modeling and simulation" authors = ["Jim Schaff "] repository = "https://github.com/virtualcell/pyvcell" @@ -31,7 +84,6 @@ python-dateutil = "^2.9.0.post0" pyvista = "^0.44.2" python-libsbml = "^5.20.4" matplotlib = "^3.10.0" -ipython = "^8.32.0" [tool.poetry.group.dev.dependencies] pytest = "^7.2.0" @@ -50,8 +102,12 @@ mkdocstrings = {extras = ["python"], version = "^0.27.0"} griffe = "^1.5.5" [build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api" +requires = ["setuptools>=42", "wheel", "poetry-core>=1.0.0"] +build-backend = "setuptools.build_meta" + +# [build-system] +# requires = ["poetry-core>=1.0.0"] +# build-backend = "poetry.core.masonry.api" [tool.mypy] files = ["pyvcell"] From 9a59737287fbe82d05e7294ea50aca25e246d59e Mon Sep 17 00:00:00 2001 From: "spaceBearAmadeus (Alex)" Date: Mon, 24 Feb 2025 17:57:47 -0500 Subject: [PATCH 02/20] removed 618 pyproject because not fully supported in place for setup.py --- pyproject.toml | 60 +++------------------------------------------- setup.py | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 57 deletions(-) create mode 100644 setup.py diff --git a/pyproject.toml b/pyproject.toml index 2fda5bb..235519b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,56 +1,6 @@ -# pep618-compliant setuptools config -# --------------------------------- - -[project] -name = "pyvcell" -version = "0.1.1" -description = "This is the python wrapper for vcell modeling and simulation" -authors = ["Jim Schaff "] -repository = "https://github.com/virtualcell/pyvcell" -documentation = "https://virtualcell.github.io/pyvcell/" -readme = "README.md" -dependencies = [ - "numexpr>=2.10.0", - "zarr>=2.17.2", - "h5py>=3.11.0", - "numpy>=1.26.4", - "orjson>=3.10.3", - "vtk>=9.3.1", - "pyvcell-fvsolver>=0.1.0", - "typer>=0.12.3", - "pydantic>=2.10.5", - "requests-oauth2client>=1.6.0", - "overrides>=7.7.0", - "typing-extensions>=4.12.2", - "urllib3>=2.3.0", - "requests>=2.32.3", - "python-dateutil>=2.9.0.post0", - "pyvista>=0.44.2", - "python-libsbml>=5.20.4", - "matplotlib>=3.10.0" -] - -[project.optional-dependencies] -dev = [ - "pytest>=7.2.0", - "pytest-cov>=4.0.0", - "deptry>=0.16.2", - "mypy>=1.5.1", - "pre-commit>=3.8.0", - "tox>=4.11.1", - "types-requests>=2.32.0.20241016", - "notebook>=7.3.2" -] -docs = [ - "mkdocs>=1.6.1", - "mkdocs-material>=9.5.50", - "mkdocstrings[python]>=0.27.0", - "griffe>=1.5.5" -] - - # poetry-based config # -------------------- + [tool.poetry] name = "pyvcell" version = "0.1.1" @@ -102,12 +52,8 @@ mkdocstrings = {extras = ["python"], version = "^0.27.0"} griffe = "^1.5.5" [build-system] -requires = ["setuptools>=42", "wheel", "poetry-core>=1.0.0"] -build-backend = "setuptools.build_meta" - -# [build-system] -# requires = ["poetry-core>=1.0.0"] -# build-backend = "poetry.core.masonry.api" +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" [tool.mypy] files = ["pyvcell"] diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..a3ddd3e --- /dev/null +++ b/setup.py @@ -0,0 +1,64 @@ +from setuptools import setup, find_packages + +setup( + name="pyvcell", + version="0.1.1", + description="This is the python wrapper for vcell modeling and simulation", + author="Jim Schaff", + author_email="fschaff@uchc.edu", + url="https://github.com/virtualcell/pyvcell", + project_urls={ + "Documentation": "https://virtualcell.github.io/pyvcell/", + "Source": "https://github.com/virtualcell/pyvcell", + }, + packages=find_packages(include=["pyvcell", "pyvcell.*", "tests"]), + python_requires=">=3.10,<4.0", + install_requires=[ + "numexpr>=2.10.0", + "zarr>=2.17.2", + "h5py>=3.11.0", + "numpy>=1.26.4", + "orjson>=3.10.3", + "vtk>=9.3.1", + "pyvcell-fvsolver>=0.1.0", + "typer>=0.12.3", + "pydantic>=2.10.5", + "requests-oauth2client>=1.6.0", + "overrides>=7.7.0", + "typing-extensions>=4.12.2", + "urllib3>=2.3.0", + "requests>=2.32.3", + "python-dateutil>=2.9.0.post0", + "pyvista>=0.44.2", + "python-libsbml>=5.20.4", + "matplotlib>=3.10.0", + ], + extras_require={ + "dev": [ + "pytest>=7.2.0", + "pytest-cov>=4.0.0", + "deptry>=0.16.2", + "mypy>=1.5.1", + "pre-commit>=3.8.0", + "tox>=4.11.1", + "types-requests>=2.32.0.20241016", + "notebook>=7.3.2", + ], + "docs": [ + "mkdocs>=1.6.1", + "mkdocs-material>=9.5.50", + "mkdocstrings[python]>=0.27.0", + "griffe>=1.5.5", + ], + }, + classifiers=[ + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Scientific/Engineering :: Bio-Informatics", + ], +) From 5bc87eb24c619334c20e3b16be3a149c15922e0a Mon Sep 17 00:00:00 2001 From: "spaceBearAmadeus (Alex)" Date: Mon, 24 Feb 2025 18:13:24 -0500 Subject: [PATCH 03/20] added ipython and setuptools in setup and pyproject and fixed path in simulation --- poetry.lock | 38 ++++++++++++++++---------------- pyproject.toml | 2 ++ pyvcell/data_model/simulation.py | 6 ++--- setup.py | 4 +++- 4 files changed, 27 insertions(+), 23 deletions(-) diff --git a/poetry.lock b/poetry.lock index 537ed60..2090a42 100644 --- a/poetry.lock +++ b/poetry.lock @@ -144,7 +144,7 @@ version = "3.0.0" description = "Annotate AST trees with source code positions" optional = false python-versions = ">=3.8" -groups = ["dev"] +groups = ["main", "dev"] files = [ {file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2"}, {file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7"}, @@ -518,7 +518,7 @@ files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -markers = {main = "platform_system == \"Windows\""} +markers = {main = "platform_system == \"Windows\" or sys_platform == \"win32\""} [[package]] name = "comm" @@ -803,7 +803,7 @@ version = "5.1.1" description = "Decorators for Humans" optional = false python-versions = ">=3.5" -groups = ["dev"] +groups = ["main", "dev"] files = [ {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, @@ -865,7 +865,7 @@ version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" -groups = ["dev"] +groups = ["main", "dev"] markers = "python_version < \"3.11\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, @@ -881,7 +881,7 @@ version = "2.2.0" description = "Get the currently executing AST node of a frame, and other information" optional = false python-versions = ">=3.8" -groups = ["dev"] +groups = ["main", "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"}, @@ -1250,7 +1250,7 @@ version = "8.32.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" -groups = ["dev"] +groups = ["main", "dev"] files = [ {file = "ipython-8.32.0-py3-none-any.whl", hash = "sha256:cae85b0c61eff1fc48b0a8002de5958b6528fa9c8defb1894da63f42613708aa"}, {file = "ipython-8.32.0.tar.gz", hash = "sha256:be2c91895b0b9ea7ba49d33b23e2040c352b33eb6a519cca7ce6e0c743444251"}, @@ -1304,7 +1304,7 @@ version = "0.19.2" description = "An autocompletion tool for Python that can be used for text editors." optional = false python-versions = ">=3.6" -groups = ["dev"] +groups = ["main", "dev"] files = [ {file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9"}, {file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0"}, @@ -1907,7 +1907,7 @@ version = "0.1.7" description = "Inline Matplotlib backend for Jupyter" optional = false python-versions = ">=3.8" -groups = ["dev"] +groups = ["main", "dev"] 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"}, @@ -2616,7 +2616,7 @@ version = "0.8.4" description = "A Python Parser" optional = false python-versions = ">=3.6" -groups = ["dev"] +groups = ["main", "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"}, @@ -2644,7 +2644,7 @@ version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." optional = false python-versions = "*" -groups = ["dev"] +groups = ["main", "dev"] markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" files = [ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, @@ -2838,7 +2838,7 @@ version = "3.0.50" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.8.0" -groups = ["dev"] +groups = ["main", "dev"] files = [ {file = "prompt_toolkit-3.0.50-py3-none-any.whl", hash = "sha256:9b6427eb19e479d98acff65196a307c555eb567989e6d88ebbb1b509d9779198"}, {file = "prompt_toolkit-3.0.50.tar.gz", hash = "sha256:544748f3860a2623ca5cd6d2795e7a14f3d0e1c3c9728359013f79877fc89bab"}, @@ -2877,12 +2877,12 @@ version = "0.7.0" description = "Run a subprocess in a pseudo terminal" optional = false python-versions = "*" -groups = ["dev"] -markers = "os_name != \"nt\" or sys_platform != \"win32\" and sys_platform != \"emscripten\"" +groups = ["main", "dev"] files = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, ] +markers = {main = "sys_platform != \"win32\" and sys_platform != \"emscripten\"", dev = "sys_platform != \"win32\" and sys_platform != \"emscripten\" or os_name != \"nt\""} [[package]] name = "pure-eval" @@ -2890,7 +2890,7 @@ version = "0.2.3" description = "Safely evaluate AST nodes without side effects" optional = false python-versions = "*" -groups = ["dev"] +groups = ["main", "dev"] files = [ {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, @@ -3916,7 +3916,7 @@ version = "75.8.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.9" -groups = ["dev"] +groups = ["main", "dev"] files = [ {file = "setuptools-75.8.0-py3-none-any.whl", hash = "sha256:e3982f444617239225d675215d51f6ba05f845d4eec313da4418fdbb56fb27e3"}, {file = "setuptools-75.8.0.tar.gz", hash = "sha256:c5afc8f407c626b8313a86e10311dd3f661c6cd9c09d4bf8c15c0e11f9f2b0e6"}, @@ -3985,7 +3985,7 @@ version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" optional = false python-versions = "*" -groups = ["dev"] +groups = ["main", "dev"] files = [ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, @@ -4138,7 +4138,7 @@ version = "5.14.3" description = "Traitlets Python configuration system" optional = false python-versions = ">=3.8" -groups = ["dev"] +groups = ["main", "dev"] files = [ {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, @@ -4350,7 +4350,7 @@ version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" -groups = ["dev"] +groups = ["main", "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"}, @@ -4422,4 +4422,4 @@ jupyter = ["ipytree (>=0.2.2)", "ipywidgets (>=8.0.0)", "notebook"] [metadata] lock-version = "2.1" python-versions = ">=3.10,<4.0" -content-hash = "9699633677b7ebde35a58f1472378e680a46a04c7016a9d213ef6235c8f54547" +content-hash = "8b4fff3fd7bcedb1336e73b3cfedf7108da8a8a21a8682cbf6f65d2f5c34ffd2" diff --git a/pyproject.toml b/pyproject.toml index 235519b..c55ccfd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,6 +34,8 @@ python-dateutil = "^2.9.0.post0" pyvista = "^0.44.2" python-libsbml = "^5.20.4" matplotlib = "^3.10.0" +ipython = "^8.32.0" +setuptools = "^75.8.0" [tool.poetry.group.dev.dependencies] pytest = "^7.2.0" diff --git a/pyvcell/data_model/simulation.py b/pyvcell/data_model/simulation.py index b1e7929..83fefa4 100644 --- a/pyvcell/data_model/simulation.py +++ b/pyvcell/data_model/simulation.py @@ -12,11 +12,11 @@ class Simulation(abc.ABC): @abc.abstractmethod - def run_simulation(self) -> None: + def run(self) -> Result: pass -class SpatialSimulation: +class SpatialSimulation(Simulation): model: SpatialModel out_dir: Path @@ -25,7 +25,7 @@ def __init__(self, model: SpatialModel, out_dir: Path | None = None): if out_dir is None: self.out_dir = Path(tempfile.mkdtemp(prefix="out_dir_")) else: - self.out_dir = out_dir + self.out_dir = Path(out_dir) if not isinstance(out_dir, Path) else out_dir def run(self) -> Result: # create an unauthenticated API client diff --git a/setup.py b/setup.py index a3ddd3e..d0e2378 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,4 @@ -from setuptools import setup, find_packages +from setuptools import find_packages, setup setup( name="pyvcell", @@ -32,6 +32,8 @@ "pyvista>=0.44.2", "python-libsbml>=5.20.4", "matplotlib>=3.10.0", + "setuptools", + "ipython", ], extras_require={ "dev": [ From fa2c9e6efd3d0ea178d9a493d1e1aadc42b7e43e Mon Sep 17 00:00:00 2001 From: "spaceBearAmadeus (Alex)" Date: Mon, 24 Feb 2025 18:23:47 -0500 Subject: [PATCH 04/20] moved pkgs to setup optional --- setup.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/setup.py b/setup.py index d0e2378..3d07143 100644 --- a/setup.py +++ b/setup.py @@ -32,10 +32,9 @@ "pyvista>=0.44.2", "python-libsbml>=5.20.4", "matplotlib>=3.10.0", - "setuptools", - "ipython", ], extras_require={ + "bootstrap": ["setuptools", "ipython"], "dev": [ "pytest>=7.2.0", "pytest-cov>=4.0.0", From f6c7c634f53bb0bd1a0a813921a3d086ef54d0ff Mon Sep 17 00:00:00 2001 From: "spaceBearAmadeus (Alex)" Date: Mon, 24 Feb 2025 18:35:19 -0500 Subject: [PATCH 05/20] fix: temp remove build system for backwards compat --- pyproject.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index c55ccfd..9a8c2e8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -53,9 +53,9 @@ mkdocs-material = "^9.5.50" mkdocstrings = {extras = ["python"], version = "^0.27.0"} griffe = "^1.5.5" -[build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api" +# [build-system] +# requires = ["poetry-core>=1.0.0"] +# build-backend = "poetry.core.masonry.api" [tool.mypy] files = ["pyvcell"] From cc6d7311574abf09416698608c58aba56972afd6 Mon Sep 17 00:00:00 2001 From: "spaceBearAmadeus (Alex)" Date: Mon, 24 Feb 2025 19:09:54 -0500 Subject: [PATCH 06/20] added zarr metadata to result for post processing --- examples/fv_solver_workflow.ipynb | 907 +++++++++++++++++++++++++++++- pyvcell/data_model/result.py | 37 +- pyvcell/data_model/zarr_types.py | 46 +- 3 files changed, 979 insertions(+), 11 deletions(-) diff --git a/examples/fv_solver_workflow.ipynb b/examples/fv_solver_workflow.ipynb index 949ae0e..454ae50 100644 --- a/examples/fv_solver_workflow.ipynb +++ b/examples/fv_solver_workflow.ipynb @@ -22,8 +22,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-02-20T01:53:43.860052Z", - "start_time": "2025-02-20T01:53:42.882744Z" + "end_time": "2025-02-24T23:37:13.730117Z", + "start_time": "2025-02-24T23:37:12.845441Z" } }, "cell_type": "code", @@ -83,8 +83,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-02-20T01:53:44.441106Z", - "start_time": "2025-02-20T01:53:43.863337Z" + "end_time": "2025-02-24T23:37:14.351120Z", + "start_time": "2025-02-24T23:37:13.733452Z" } }, "cell_type": "code", @@ -251,6 +251,905 @@ ], "execution_count": 2 }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-02-24T23:38:11.329564Z", + "start_time": "2025-02-24T23:38:11.322484Z" + } + }, + "cell_type": "code", + "source": "result.zarr_dataset.attrs.asdict()['metadata']", + "id": "ebf7147a755b32fc", + "outputs": [ + { + "data": { + "text/plain": [ + "{'axes': [{'name': 't', 'type': 'time', 'unit': 'second'},\n", + " {'name': 'c', 'type': 'channel', 'unit': None},\n", + " {'name': 'z', 'type': 'space', 'unit': 'micrometer'},\n", + " {'name': 'y', 'type': 'space', 'unit': 'micrometer'},\n", + " {'name': 'x', 'type': 'space', 'unit': 'micrometer'}],\n", + " 'channels': [{'domain_name': 'all',\n", + " 'index': 0,\n", + " 'label': 'region_mask',\n", + " 'max_value': 0.0,\n", + " 'min_value': 0.0},\n", + " {'domain_name': 'all',\n", + " 'index': 1,\n", + " 'label': 't',\n", + " 'max_value': 5.0,\n", + " 'min_value': 0.0},\n", + " {'domain_name': 'all',\n", + " 'index': 2,\n", + " 'label': 'x',\n", + " 'max_value': 10.0,\n", + " 'min_value': 0.0},\n", + " {'domain_name': 'all',\n", + " 'index': 3,\n", + " 'label': 'y',\n", + " 'max_value': 1.0,\n", + " 'min_value': 0.0},\n", + " {'domain_name': 'all',\n", + " 'index': 4,\n", + " 'label': 'z',\n", + " 'max_value': 1.0,\n", + " 'min_value': 0.0},\n", + " {'domain_name': 'subdomain0',\n", + " 'index': 5,\n", + " 'label': 's0',\n", + " 'max_values': [1000000.0,\n", + " 860708.5246360124,\n", + " 740819.2773145201,\n", + " 637629.2827339853,\n", + " 548812.9316127491,\n", + " 472368.0904034841,\n", + " 406571.45450651087,\n", + " 349939.81298965536,\n", + " 301196.45115257107,\n", + " 259242.6574680288,\n", + " 223132.68273596506,\n", + " 192052.55096306966,\n", + " 165301.6251619423,\n", + " 142276.90008935967,\n", + " 122459.33067687316,\n", + " 105402.1856464801,\n", + " 90720.96893099579,\n", + " 78084.72460158466,\n", + " 67208.59467102581,\n", + " 57847.41433373618,\n", + " 49790.1903524703,\n", + " 42855.27127819924,\n", + " 36886.33756848544,\n", + " 31748.833062745594,\n", + " 27326.93706062633,\n", + " 23520.972065736176,\n", + " 20245.151059817374,\n", + " 17425.622965488277,\n", + " 14998.834644244487,\n", + " 12910.078918978035,\n", + " 11112.267824331771,\n", + " 9564.881034230177,\n", + " 8233.031844932595,\n", + " 7086.700699681477,\n", + " 6100.04424378967,\n", + " 5250.8218429657045,\n", + " 4519.888740215109,\n", + " 3890.768569727798,\n", + " 3349.2792497615246,\n", + " 2883.2155525613225,\n", + " 2482.071044954987,\n", + " 2136.8020763317495,\n", + " 1839.6266317778427,\n", + " 1583.8456523303514,\n", + " 1363.6934077750684,\n", + " 1174.2060237272628,\n", + " 1011.112422367222,\n", + " 870.7368498443896,\n", + " 749.9144657532594,\n", + " 645.9216917774937,\n", + " 556.4142695350445],\n", + " 'mean_values': [500000.00000000006,\n", + " 430354.49464251864,\n", + " 370410.0709214147,\n", + " 318815.24570086243,\n", + " 274407.2182241792,\n", + " 236184.9250611906,\n", + " 203286.71678956892,\n", + " 174970.99041954466,\n", + " 150599.39073224773,\n", + " 129622.5637979974,\n", + " 111567.6365951872,\n", + " 96027.62248550024,\n", + " 82652.20414429814,\n", + " 71139.87995600591,\n", + " 61231.12825225584,\n", + " 52702.58413918237,\n", + " 45362.00022444572,\n", + " 39043.89909552203,\n", + " 33605.8522337663,\n", + " 28925.277645120146,\n", + " 24896.679062681855,\n", + " 21429.231064709908,\n", + " 18444.77414050456,\n", + " 15876.030433996015,\n", + " 13665.089787985999,\n", + " 11762.113620339813,\n", + " 10124.208564831202,\n", + " 8714.449205774627,\n", + " 7501.059079758395,\n", + " 6456.6846893262145,\n", + " 5557.782130200425,\n", + " 4784.091306801051,\n", + " 4118.168925329845,\n", + " 3545.0052573723037,\n", + " 3051.678668593173,\n", + " 2627.0688788549764,\n", + " 2261.6035415134174,\n", + " 1947.0445010734547,\n", + " 1676.3007402543858,\n", + " 1443.2696654784238,\n", + " 1242.6980776316473,\n", + " 1070.06416644645,\n", + " 921.4769374043233,\n", + " 793.5868721603339,\n", + " 683.511115191187,\n", + " 588.7677375544962,\n", + " 507.2212074380988,\n", + " 437.0336540243645,\n", + " 376.62266236862837,\n", + " 324.6264478371489,\n", + " 279.87288513273455],\n", + " 'min_values': [0.0,\n", + " 0.46464902525928864,\n", + " 0.8645283094836882,\n", + " 1.2086677413467835,\n", + " 1.5048356119673365,\n", + " 1.7597188998511473,\n", + " 1.9790726293721292,\n", + " 2.1678494351600985,\n", + " 2.3303119254238944,\n", + " 2.470127966880844,\n", + " 2.590454410151291,\n", + " 2.694007931394946,\n", + " 2.783126654512909,\n", + " 2.859822652607626,\n", + " 2.9258276388928546,\n", + " 2.982631884935937,\n", + " 3.0315178958838414,\n", + " 3.0735894595873883,\n", + " 3.1097965069383324,\n", + " 3.140956504205041,\n", + " 3.167772893474702,\n", + " 3.1908512206258255,\n", + " 3.210712523706638,\n", + " 3.2278052464365286,\n", + " 3.2425153456691467,\n", + " 3.2551749434363484,\n", + " 3.2660698450139596,\n", + " 3.2754460609589935,\n", + " 3.283515272280462,\n", + " 3.2904596743707386,\n", + " 3.296436069055237,\n", + " 3.3015793718980273,\n", + " 3.306005727062094,\n", + " 3.309815063098956,\n", + " 3.313093396640947,\n", + " 3.3159147442093833,\n", + " 3.318342811684955,\n", + " 3.3204324190688848,\n", + " 3.3222307472028985,\n", + " 3.3237783954804136,\n", + " 3.325110308262511,\n", + " 3.3262565611040666,\n", + " 3.327243030756797,\n", + " 3.3280919902688684,\n", + " 3.3288226072577833,\n", + " 3.329451381681153,\n", + " 3.329992508925992,\n", + " 3.3304582042897954,\n", + " 3.330858983947237,\n", + " 3.3312038967537685,\n", + " 3.331500730374292]},\n", + " {'domain_name': 'subdomain0',\n", + " 'index': 6,\n", + " 'label': 's1',\n", + " 'max_values': [10.0,\n", + " 9.535350974740707,\n", + " 9.135471690516306,\n", + " 8.79133225865321,\n", + " 8.495164388032657,\n", + " 8.240281100148845,\n", + " 8.020927370627861,\n", + " 7.832150564839894,\n", + " 7.669688074576097,\n", + " 7.529872033119147,\n", + " 7.4095455898487,\n", + " 7.305992068605045,\n", + " 7.216873345487081,\n", + " 7.140177347392363,\n", + " 7.074172361107136,\n", + " 7.017368115064053,\n", + " 6.968482104116149,\n", + " 6.926410540412602,\n", + " 6.890203493061659,\n", + " 6.859043495794951,\n", + " 6.8322271065252895,\n", + " 6.809148779374166,\n", + " 6.789287476293354,\n", + " 6.772194753563462,\n", + " 6.757484654330843,\n", + " 6.744825056563641,\n", + " 6.733930154986031,\n", + " 6.724553939040998,\n", + " 6.7164847277195285,\n", + " 6.709540325629253,\n", + " 6.703563930944755,\n", + " 6.698420628101964,\n", + " 6.693994272937896,\n", + " 6.690184936901033,\n", + " 6.6869066033590405,\n", + " 6.684085255790604,\n", + " 6.681657188315033,\n", + " 6.679567580931102,\n", + " 6.677769252797089,\n", + " 6.676221604519574,\n", + " 6.674889691737476,\n", + " 6.673743438895918,\n", + " 6.672756969243186,\n", + " 6.671908009731114,\n", + " 6.671177392742199,\n", + " 6.67054861831883,\n", + " 6.670007491073991,\n", + " 6.669541795710187,\n", + " 6.6691410160527465,\n", + " 6.6687961032462155,\n", + " 6.668499269625694],\n", + " 'mean_values': [-499990.00000000006,\n", + " -430344.49464251864,\n", + " -370400.0709214147,\n", + " -318805.24570086243,\n", + " -274397.2182241792,\n", + " -236174.9250611906,\n", + " -203276.71678956892,\n", + " -174960.99041954466,\n", + " -150589.39073224776,\n", + " -129612.56379799743,\n", + " -111557.63659518723,\n", + " -96017.62248550025,\n", + " -82642.20414429817,\n", + " -71129.87995600594,\n", + " -61221.128252255876,\n", + " -52692.5841391824,\n", + " -45352.00022444574,\n", + " -39033.89909552206,\n", + " -33595.85223376633,\n", + " -28915.277645120168,\n", + " -24886.679062681877,\n", + " -21419.231064709933,\n", + " -18434.774140504585,\n", + " -15866.030433996038,\n", + " -13655.089787986022,\n", + " -11752.113620339835,\n", + " -10114.208564831226,\n", + " -8704.44920577465,\n", + " -7491.0590797584155,\n", + " -6446.684689326237,\n", + " -5547.782130200449,\n", + " -4774.091306801075,\n", + " -4108.168925329867,\n", + " -3535.0052573723265,\n", + " -3041.678668593195,\n", + " -2617.0688788549987,\n", + " -2251.6035415134397,\n", + " -1937.0445010734777,\n", + " -1666.3007402544085,\n", + " -1433.2696654784468,\n", + " -1232.6980776316702,\n", + " -1060.0641664464729,\n", + " -911.4769374043459,\n", + " -783.5868721603567,\n", + " -673.5111151912098,\n", + " -578.7677375545189,\n", + " -497.22120743812155,\n", + " -427.0336540243874,\n", + " -366.62266236865105,\n", + " -314.62644783717167,\n", + " -269.87288513275735],\n", + " 'min_values': [-999990.0,\n", + " -860698.5246360124,\n", + " -740809.2773145201,\n", + " -637619.2827339853,\n", + " -548802.9316127491,\n", + " -472358.0904034841,\n", + " -406561.45450651087,\n", + " -349929.8129896553,\n", + " -301186.4511525712,\n", + " -259232.65746802898,\n", + " -223122.68273596527,\n", + " -192042.55096306987,\n", + " -165291.6251619425,\n", + " -142266.9000893599,\n", + " -122449.33067687339,\n", + " -105392.18564648034,\n", + " -90710.96893099602,\n", + " -78074.7246015849,\n", + " -67198.594671026,\n", + " -57837.414333736364,\n", + " -49780.19035247049,\n", + " -42845.271278199434,\n", + " -36876.337568485644,\n", + " -31738.8330627458,\n", + " -27316.937060626533,\n", + " -23510.97206573638,\n", + " -20235.151059817577,\n", + " -17415.62296548848,\n", + " -14988.834644244691,\n", + " -12900.078918978239,\n", + " -11102.267824331973,\n", + " -9554.881034230379,\n", + " -8223.031844932797,\n", + " -7076.700699681679,\n", + " -6090.044243789872,\n", + " -5240.821842965906,\n", + " -4509.8887402153105,\n", + " -3880.768569727999,\n", + " -3339.2792497617256,\n", + " -2873.2155525615235,\n", + " -2472.071044955188,\n", + " -2126.8020763319505,\n", + " -1829.6266317780437,\n", + " -1573.8456523305524,\n", + " -1353.6934077752696,\n", + " -1164.2060237274643,\n", + " -1001.112422367424,\n", + " -860.7368498445912,\n", + " -739.9144657534611,\n", + " -635.9216917776955,\n", + " -546.4142695352463]},\n", + " {'domain_name': 'subdomain0',\n", + " 'index': 6,\n", + " 'label': 'J_r0',\n", + " 'max_values': [1499995.0,\n", + " 1291057.7869540185,\n", + " 1111223.9159717802,\n", + " 956438.9241009781,\n", + " 823214.3974191237,\n", + " 708547.1356052262,\n", + " 609852.1817597663,\n", + " 524904.719484483,\n", + " 451789.67672885663,\n", + " 388858.9862020433,\n", + " 334694.0241039477,\n", + " 288073.8264446046,\n", + " 247947.43774291355,\n", + " 213410.35013403962,\n", + " 183683.99601530985,\n", + " 158098.27846972027,\n", + " 136076.4533964938,\n", + " 117122.08690237711,\n", + " 100807.89200653881,\n", + " 86766.12150060436,\n", + " 74680.28552870554,\n", + " 64277.906917298955,\n", + " 55324.50635272826,\n", + " 47618.2495941185,\n", + " 40985.4055909396,\n", + " 35276.458098604366,\n", + " 30362.72658972616,\n", + " 26133.434448232518,\n", + " 22493.25196636683,\n", + " 19360.118378467156,\n", + " 16663.40173649776,\n", + " 14342.321551345365,\n", + " 12344.547767398994,\n", + " 10625.051049522317,\n", + " 9145.066365684606,\n", + " 7871.232764448658,\n", + " 6774.833110322764,\n", + " 5831.152854591797,\n", + " 5018.918874642388,\n", + " 4319.823328842084,\n", + " 3718.106567432581,\n", + " 3200.2031144977245,\n", + " 2754.4399476668646,\n", + " 2370.7684784956277,\n", + " 2040.540111662703,\n", + " 1756.3090355909949,\n", + " 1511.668633550934,\n", + " 1301.1052747666852,\n", + " 1119.8716986299899,\n", + " 963.8825376663415,\n", + " 829.6214043026675],\n", + " 'mean_values': [749995.0,\n", + " 645526.741963778,\n", + " 555610.106382122,\n", + " 478217.8685512936,\n", + " 411605.82733626873,\n", + " 354272.3875917859,\n", + " 304925.0751843534,\n", + " 262451.485629317,\n", + " 225894.0860983716,\n", + " 194428.84569699614,\n", + " 167346.4548927808,\n", + " 144036.43372825038,\n", + " 123973.30621644724,\n", + " 106704.81993400889,\n", + " 91841.69237838378,\n", + " 79048.87620877358,\n", + " 68038.0003366686,\n", + " 58560.84864328306,\n", + " 50403.778350649474,\n", + " 43382.91646768023,\n", + " 37340.0185940228,\n", + " 32138.84659706487,\n", + " 27662.16121075685,\n", + " 23809.045650994034,\n", + " 20492.634681979012,\n", + " 17638.17043050973,\n", + " 15181.312847246816,\n", + " 13066.673808661952,\n", + " 11246.588619637601,\n", + " 9680.027033989334,\n", + " 8331.67319530065,\n", + " 7171.136960201588,\n", + " 6172.253387994778,\n", + " 5312.507886058467,\n", + " 4572.51800288977,\n", + " 3935.6033182824754,\n", + " 3387.4053122701366,\n", + " 2915.566751610194,\n", + " 2509.45111038159,\n", + " 2159.904498217647,\n", + " 1859.0471164474825,\n", + " 1600.0962496696864,\n", + " 1377.2154061064966,\n", + " 1185.3803082405125,\n", + " 1020.266672786792,\n", + " 878.1516063317556,\n", + " 755.8318111571597,\n", + " 650.5504810365582,\n", + " 559.9339935529538,\n", + " 481.93967175573476,\n", + " 414.8093276991132],\n", + " 'min_values': [-5.0,\n", + " -4.303026462111065,\n", + " -3.7032075357744647,\n", + " -3.1869983879798216,\n", + " -2.7427465820489925,\n", + " -2.3604216502232753,\n", + " -2.0313910559418016,\n", + " -1.7482258472598486,\n", + " -1.5045321118641541,\n", + " -1.2948080496787293,\n", + " -1.1143183847730591,\n", + " -0.9589881029075764,\n", + " -0.8253100182306317,\n", + " -0.7102660210885556,\n", + " -0.6112585416607135,\n", + " -0.5260521725960894,\n", + " -0.4527231561742333,\n", + " -0.38961581061891293,\n", + " -0.3353052395924969,\n", + " -0.2885652436924344,\n", + " -0.24834065978794273,\n", + " -0.21372316906125732,\n", + " -0.1839312144400389,\n", + " -0.1582921303452025,\n", + " -0.13622698149627466,\n", + " -0.11723758484547231,\n", + " -0.10089523247905596,\n", + " -0.08683090856150555,\n", + " -0.07472709157930213,\n", + " -0.06431048844388787,\n", + " -0.055345896417140494,\n", + " -0.0476309421529546,\n", + " -0.040991409406854196,\n", + " -0.03527740535156054,\n", + " -0.03035990503857322,\n", + " -0.026127883685918896,\n", + " -0.0224857824725615,\n", + " -0.019351371396666206,\n", + " -0.01665387919564587,\n", + " -0.014332406779373308,\n", + " -0.012334537606226714,\n", + " -0.010615158343892261,\n", + " -0.009135453864796084,\n", + " -0.00786201459668856,\n", + " -0.006766089113316109,\n", + " -0.005822927478261963,\n", + " -0.005011236611003778,\n", + " -0.004312693565298176,\n", + " -0.003711524079136108,\n", + " -0.003194154869339272,\n", + " -0.002748904438555133]},\n", + " {'domain_name': 'subdomain0',\n", + " 'index': 7,\n", + " 'label': 's0_init_umol_l_1',\n", + " 'max_values': [1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0,\n", + " 1000000.0],\n", + " 'mean_values': [500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006,\n", + " 500000.00000000006],\n", + " 'min_values': [0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0]},\n", + " {'domain_name': 'subdomain0',\n", + " 'index': 8,\n", + " 'label': 's1_init_umol_l_1',\n", + " 'max_values': [10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0,\n", + " 10.0],\n", + " 'mean_values': [-499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006,\n", + " -499990.00000000006],\n", + " 'min_values': [-999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0,\n", + " -999990.0]}],\n", + " 'mesh': {'extent': [10.0, 1.0, 1.0],\n", + " 'origin': [0.0, 0.0, 0.0],\n", + " 'size': [200, 1, 1],\n", + " 'volume_regions': [{'domain_name': 'subdomain0',\n", + " 'domain_type_index': 0,\n", + " 'region_index': 0,\n", + " 'volume': 10.000000000000034}]},\n", + " 'times': [0.0,\n", + " 0.1,\n", + " 0.2,\n", + " 0.3,\n", + " 0.4,\n", + " 0.5,\n", + " 0.6,\n", + " 0.7,\n", + " 0.8,\n", + " 0.9,\n", + " 1.0,\n", + " 1.1,\n", + " 1.2,\n", + " 1.3,\n", + " 1.4,\n", + " 1.5,\n", + " 1.6,\n", + " 1.7,\n", + " 1.8,\n", + " 1.9,\n", + " 2.0,\n", + " 2.1,\n", + " 2.2,\n", + " 2.3,\n", + " 2.4,\n", + " 2.5,\n", + " 2.6,\n", + " 2.7,\n", + " 2.8,\n", + " 2.9,\n", + " 3.0,\n", + " 3.1,\n", + " 3.2,\n", + " 3.3,\n", + " 3.4,\n", + " 3.5,\n", + " 3.6,\n", + " 3.7,\n", + " 3.8,\n", + " 3.9,\n", + " 4.0,\n", + " 4.1,\n", + " 4.2,\n", + " 4.3,\n", + " 4.4,\n", + " 4.5,\n", + " 4.6,\n", + " 4.7,\n", + " 4.8,\n", + " 4.9,\n", + " 5.0]}" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 7 + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": "", + "id": "a1ff54531030f066" + }, { "metadata": { "ExecuteTime": { diff --git a/pyvcell/data_model/result.py b/pyvcell/data_model/result.py index 827235a..dc5b07f 100644 --- a/pyvcell/data_model/result.py +++ b/pyvcell/data_model/result.py @@ -7,7 +7,14 @@ from pyvcell.data_model.plotter import Plotter from pyvcell.data_model.var_types import NDArray2D from pyvcell.data_model.vtk_data import VtkData -from pyvcell.data_model.zarr_types import Channel +from pyvcell.data_model.zarr_types import ( + AxisMetadata, + Channel, + ChannelMetadata, + MeshMetadata, + MeshVolumeRegion, + ZarrMetadata, +) from pyvcell.simdata.mesh import CartesianMesh from pyvcell.simdata.postprocessing import PostProcessing from pyvcell.simdata.simdata_models import DataFunctions, PdeDataSet @@ -54,10 +61,6 @@ def __init__( pde_dataset=self.pde_dataset, data_functions=self.data_functions, mesh=self.mesh, zarr_dir=self.zarr_dir ) - @property - def zarr_dataset(self) -> Union[zarr.Group, zarr.Array]: - return zarr.open(str(self.zarr_dir), mode="r") - @property def post_processing(self) -> PostProcessing: post_processing = PostProcessing( @@ -71,6 +74,10 @@ def concentrations(self) -> NDArray2D: data: list[list[float]] = [c.mean_values for c in self.channels if c.index > 0 and c.mean_values is not None] return np.array(dtype=np.float64, object=data) + @property + def zarr_dataset(self) -> Union[zarr.Group, zarr.Array]: + return zarr.open(str(self.zarr_dir), mode="r") + @property def channels(self) -> list[Channel]: return [ @@ -79,6 +86,24 @@ def channels(self) -> list[Channel]: if channel["index"] > 4 ] + @property + def metadata(self) -> ZarrMetadata: + md = self.zarr_dataset.attrs.asdict()["metadata"] + axes = [AxisMetadata(**ax) for ax in md.get("axes")] + channels = [ChannelMetadata(**channel) for channel in md.get("channels") if channel["index"] > 4] + times = md.get("times") + + mesh_meta = md.get("mesh") + regions = [MeshVolumeRegion(**region) for region in mesh_meta.get("volume_regions")] + mesh = MeshMetadata( + size=mesh_meta.get("size"), + extent=mesh_meta.get("extent"), + origin=mesh_meta.get("origin"), + volume_regions=regions, + ) + + return ZarrMetadata(axes=axes, channels=channels, times=times, mesh=mesh) + @property def num_timepoints(self) -> int: shape: tuple[int] = self.zarr_dataset.shape @@ -117,7 +142,7 @@ def vtk_data(self) -> VtkData: def get_channel_ids(self) -> list[str]: ids = [] - for _i, channel in enumerate(self.channels): + for _i, channel in enumerate(self.metadata.channels): name = channel.domain_name ids.append(name) return ids diff --git a/pyvcell/data_model/zarr_types.py b/pyvcell/data_model/zarr_types.py index 9e53d2a..fd5c8c5 100644 --- a/pyvcell/data_model/zarr_types.py +++ b/pyvcell/data_model/zarr_types.py @@ -1,4 +1,5 @@ -from dataclasses import dataclass +from dataclasses import dataclass, field +from typing import Optional @dataclass @@ -9,3 +10,46 @@ class Channel: mean_values: list[float] min_values: list[float] max_values: list[float] + + +@dataclass +class AxisMetadata: + name: str + type: str + unit: str + + +@dataclass +class ChannelMetadata: + index: int + label: str + domain_name: str + min_value: Optional[float] = field(default=None) + max_value: Optional[float] = field(default=None) + min_values: Optional[list[float]] = field(default=None) + max_values: Optional[list[float]] = field(default=None) + mean_values: Optional[list[float]] = field(default=None) + + +@dataclass +class MeshVolumeRegion: + region_index: int + domain_type_index: int + volume: float + domain_name: str + + +@dataclass +class MeshMetadata: + size: list[int] + extent: list[float] + origin: list[float] + volume_regions: list[MeshVolumeRegion] + + +@dataclass +class ZarrMetadata: + axes: list[AxisMetadata] + channels: list[ChannelMetadata] + times: list[float] + mesh: MeshMetadata From 9b81e9ec17b1f979509eb2ee647a1810a38891a0 Mon Sep 17 00:00:00 2001 From: "spaceBearAmadeus (Alex)" Date: Mon, 24 Feb 2025 19:27:40 -0500 Subject: [PATCH 07/20] feat: added project version parser to setup.py --- poetry.lock | 26 +++++++++++++++++++++++++- pyproject.toml | 2 ++ pyvcell/utils.py | 20 ++++++++++++++++++++ setup.py | 11 ++++++++++- 4 files changed, 57 insertions(+), 2 deletions(-) diff --git a/poetry.lock b/poetry.lock index 2090a42..3042a9e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -4040,6 +4040,18 @@ webencodings = ">=0.4" doc = ["sphinx", "sphinx_rtd_theme"] test = ["pytest", "ruff"] +[[package]] +name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +groups = ["main"] +files = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] + [[package]] name = "tomli" version = "2.2.1" @@ -4193,6 +4205,18 @@ files = [ [package.dependencies] urllib3 = ">=2" +[[package]] +name = "types-toml" +version = "0.10.8.20240310" +description = "Typing stubs for toml" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "types-toml-0.10.8.20240310.tar.gz", hash = "sha256:3d41501302972436a6b8b239c850b26689657e25281b48ff0ec06345b8830331"}, + {file = "types_toml-0.10.8.20240310-py3-none-any.whl", hash = "sha256:627b47775d25fa29977d9c70dc0cbab3f314f32c8d8d0c012f2ef5de7aaec05d"}, +] + [[package]] name = "typing-extensions" version = "4.12.2" @@ -4422,4 +4446,4 @@ jupyter = ["ipytree (>=0.2.2)", "ipywidgets (>=8.0.0)", "notebook"] [metadata] lock-version = "2.1" python-versions = ">=3.10,<4.0" -content-hash = "8b4fff3fd7bcedb1336e73b3cfedf7108da8a8a21a8682cbf6f65d2f5c34ffd2" +content-hash = "7ef5671b201abf1c2854d5f5511a05781b3e6a25e6b5e3e15ba862962c07c6c4" diff --git a/pyproject.toml b/pyproject.toml index 9a8c2e8..d6de56e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,6 +36,7 @@ python-libsbml = "^5.20.4" matplotlib = "^3.10.0" ipython = "^8.32.0" setuptools = "^75.8.0" +toml = "^0.10.2" [tool.poetry.group.dev.dependencies] pytest = "^7.2.0" @@ -46,6 +47,7 @@ pre-commit = "^3.8.0" tox = "^4.11.1" types-requests = "^2.32.0.20241016" notebook = "^7.3.2" +types-toml = "^0.10.8.20240310" [tool.poetry.group.docs.dependencies] mkdocs = "^1.6.1" diff --git a/pyvcell/utils.py b/pyvcell/utils.py index 28afd55..45bb379 100644 --- a/pyvcell/utils.py +++ b/pyvcell/utils.py @@ -1,11 +1,31 @@ +from pathlib import Path from typing import Union import numpy as np +import toml import zarr from pyvcell.data_model.var_types import NDArray2D +class ProjectVersion: + current: str + major: int + minor: int + patch: int + + def __init__(self, pyproject_file: Union[str, Path]): + self.current = toml.load(pyproject_file)["tool"]["poetry"]["version"] + self.major, self.minor, self.patch = tuple([int(item) for item in self.current.split(".")]) + + def __repr__(self) -> str: + return self.current + + +def get_project_version(pyproject_path: Union[str, Path]) -> ProjectVersion: + return ProjectVersion(pyproject_path) + + def slice_dataset( zarr_dataset: Union[zarr.Group, zarr.Array], time_index: int, channel_index: int, z_index: int ) -> NDArray2D: diff --git a/setup.py b/setup.py index 3d07143..748c24b 100644 --- a/setup.py +++ b/setup.py @@ -1,8 +1,17 @@ +import os.path +from pathlib import Path + from setuptools import find_packages, setup +from pyvcell.utils import get_project_version + +pyproject_file: Path = Path(os.path.join(os.path.abspath(os.path.dirname(__file__)), "pyproject.toml")) + +PROJECT_VERSION = get_project_version(pyproject_file) + setup( name="pyvcell", - version="0.1.1", + version=PROJECT_VERSION, description="This is the python wrapper for vcell modeling and simulation", author="Jim Schaff", author_email="fschaff@uchc.edu", From 39a0303d5e4274d9ba0ca26bb4b43d4d977188d3 Mon Sep 17 00:00:00 2001 From: "spaceBearAmadeus (Alex)" Date: Mon, 24 Feb 2025 19:48:38 -0500 Subject: [PATCH 08/20] chore: dynamic installer in setup --- pyvcell/utils.py | 20 -------------------- setup.py | 46 ++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 42 insertions(+), 24 deletions(-) diff --git a/pyvcell/utils.py b/pyvcell/utils.py index 45bb379..28afd55 100644 --- a/pyvcell/utils.py +++ b/pyvcell/utils.py @@ -1,31 +1,11 @@ -from pathlib import Path from typing import Union import numpy as np -import toml import zarr from pyvcell.data_model.var_types import NDArray2D -class ProjectVersion: - current: str - major: int - minor: int - patch: int - - def __init__(self, pyproject_file: Union[str, Path]): - self.current = toml.load(pyproject_file)["tool"]["poetry"]["version"] - self.major, self.minor, self.patch = tuple([int(item) for item in self.current.split(".")]) - - def __repr__(self) -> str: - return self.current - - -def get_project_version(pyproject_path: Union[str, Path]) -> ProjectVersion: - return ProjectVersion(pyproject_path) - - def slice_dataset( zarr_dataset: Union[zarr.Group, zarr.Array], time_index: int, channel_index: int, z_index: int ) -> NDArray2D: diff --git a/setup.py b/setup.py index 748c24b..e4f0fb1 100644 --- a/setup.py +++ b/setup.py @@ -1,17 +1,55 @@ import os.path +import sys from pathlib import Path +from typing import Union from setuptools import find_packages, setup -from pyvcell.utils import get_project_version -pyproject_file: Path = Path(os.path.join(os.path.abspath(os.path.dirname(__file__)), "pyproject.toml")) +def install_dependency(package: str) -> None: + def is_installed(package: str) -> bool: + return importlib.util.find_spec(package) is not None + + if not is_installed(package): + print(f"Installing missing dependency: {package}") + + pip = sys.modules.get("pip") + if pip is None: + import importlib + + pip = importlib.import_module("pip") + pip._internal.main(["install", package]) + else: + print(f"{package} is already installed, skipping installation.") + + +try: + import toml +except ImportError: + install_dependency("toml") + import toml + + +class ProjectVersion: + current: str + major: int + minor: int + patch: int + + def __init__(self, pyproject_file: Union[str, Path]): + self.current = toml.load(pyproject_file)["tool"]["poetry"]["version"] + self.major, self.minor, self.patch = tuple([int(item) for item in self.current.split(".")]) + + def __repr__(self) -> str: + return self.current + + +PROJECT_VERSION = ProjectVersion(Path(os.path.join(os.path.abspath(os.path.dirname(__file__)), "pyproject.toml"))) -PROJECT_VERSION = get_project_version(pyproject_file) setup( name="pyvcell", - version=PROJECT_VERSION, + version=PROJECT_VERSION.current, description="This is the python wrapper for vcell modeling and simulation", author="Jim Schaff", author_email="fschaff@uchc.edu", From 42669d7072f5adcaf0704ee11c34fc9d87db2d0f Mon Sep 17 00:00:00 2001 From: "spaceBearAmadeus (Alex)" Date: Mon, 24 Feb 2025 19:51:22 -0500 Subject: [PATCH 09/20] update pyproject to add setuptools build --- pyproject.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index d6de56e..c29c104 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -59,6 +59,11 @@ griffe = "^1.5.5" # requires = ["poetry-core>=1.0.0"] # build-backend = "poetry.core.masonry.api" +[build-system] +requires = ["setuptools>=42", "wheel"] +build-backend = "setuptools.build_meta" + + [tool.mypy] files = ["pyvcell"] strict = true From 4244b6867747d36a548ff35ee325f2c751588ae9 Mon Sep 17 00:00:00 2001 From: "spaceBearAmadeus (Alex)" Date: Mon, 24 Feb 2025 20:00:09 -0500 Subject: [PATCH 10/20] test modern pyproject build --- pyproject | 151 ++++++++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 94 +++++++++++++---------------- setup.py => setup | 0 3 files changed, 192 insertions(+), 53 deletions(-) create mode 100644 pyproject rename setup.py => setup (100%) diff --git a/pyproject b/pyproject new file mode 100644 index 0000000..c29c104 --- /dev/null +++ b/pyproject @@ -0,0 +1,151 @@ +# poetry-based config +# -------------------- + +[tool.poetry] +name = "pyvcell" +version = "0.1.1" +description = "This is the python wrapper for vcell modeling and simulation" +authors = ["Jim Schaff "] +repository = "https://github.com/virtualcell/pyvcell" +documentation = "https://virtualcell.github.io/pyvcell/" +readme = "README.md" +packages = [ + {include = "pyvcell"}, + {include = "tests"}, +] + +[tool.poetry.dependencies] +python = ">=3.10,<4.0" +numexpr = "^2.10.0" +zarr = "^2.17.2" +h5py = "^3.11.0" +numpy = "^1.26.4" +orjson = "^3.10.3" +vtk = "^9.3.1" +pyvcell-fvsolver = "^0.1.0" +typer = "^0.12.3" +pydantic = "^2.10.5" +requests-oauth2client = "^1.6.0" +overrides = "^7.7.0" +typing-extensions = "^4.12.2" +urllib3 = "^2.3.0" +requests = "^2.32.3" +python-dateutil = "^2.9.0.post0" +pyvista = "^0.44.2" +python-libsbml = "^5.20.4" +matplotlib = "^3.10.0" +ipython = "^8.32.0" +setuptools = "^75.8.0" +toml = "^0.10.2" + +[tool.poetry.group.dev.dependencies] +pytest = "^7.2.0" +pytest-cov = "^4.0.0" +deptry = "^0.16.2" +mypy = "^1.5.1" +pre-commit = "^3.8.0" +tox = "^4.11.1" +types-requests = "^2.32.0.20241016" +notebook = "^7.3.2" +types-toml = "^0.10.8.20240310" + +[tool.poetry.group.docs.dependencies] +mkdocs = "^1.6.1" +mkdocs-material = "^9.5.50" +mkdocstrings = {extras = ["python"], version = "^0.27.0"} +griffe = "^1.5.5" + +# [build-system] +# requires = ["poetry-core>=1.0.0"] +# build-backend = "poetry.core.masonry.api" + +[build-system] +requires = ["setuptools>=42", "wheel"] +build-backend = "setuptools.build_meta" + + +[tool.mypy] +files = ["pyvcell"] +strict = true + +[[tool.mypy.overrides]] +module = [ "pyvcell.api.*" ] +disable_error_code = ["import-not-found", "import-untyped", "no-untyped-def", "no-untyped-call", "attr-defined", + "type-arg", "union-attr", "no-any-return", "return"] + +[[tool.mypy.overrides]] +module = "zarr" +ignore_missing_imports = true +disable_error_code = [ + "import-not-found", "import-untyped", "no-untyped-def", + "no-untyped-call", "attr-defined", "type-arg", "union-attr", + "no-any-return", "return" +] + +[tool.pytest.ini_options] +testpaths = ["tests"] + +[tool.ruff] +target-version = "py39" +line-length = 120 +fix = true +lint.select = [ + # flake8-2020 + "YTT", + # flake8-bandit + "S", + # flake8-bugbear + "B", + # flake8-builtins + "A", + # flake8-comprehensions + "C4", + # flake8-debugger + "T10", + # flake8-simplify + "SIM", + # isort + "I", + # mccabe + "C90", + # pycodestyle + "E", "W", + # pyflakes + "F", + # pygrep-hooks + "PGH", + # pyupgrade + "UP", + # ruff + "RUF", + # tryceratops + "TRY", +] +lint.ignore = [ + # LineTooLong + "E501", + # DoNotAssignLambda + "E731", + # avoid specifiying long messages outside the exception class + "TRY003", + # avoid functions which are too complex + "C901", + # avoid uses of Uses of `tarfile.extractall() + "S202", + # B008 Do not perform function call `typer.Argument` in argument defaults + "B008", +] + +[tool.ruff.format] +preview = true + +[tool.coverage.report] +skip_empty = true + +[tool.coverage.run] +branch = true +source = ["pyvcell"] + + +[tool.ruff.per-file-ignores] +"tests/*" = ["S101"] diff --git a/pyproject.toml b/pyproject.toml index c29c104..a1b4be7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,11 @@ # poetry-based config # -------------------- -[tool.poetry] +[build-system] +requires = ["setuptools>=42", "wheel"] +build-backend = "setuptools.build_meta" + +[project] name = "pyvcell" version = "0.1.1" description = "This is the python wrapper for vcell modeling and simulation" @@ -9,60 +13,44 @@ authors = ["Jim Schaff "] repository = "https://github.com/virtualcell/pyvcell" documentation = "https://virtualcell.github.io/pyvcell/" readme = "README.md" -packages = [ - {include = "pyvcell"}, - {include = "tests"}, +dependencies = [ + "numexpr>=2.10.0", + "zarr>=2.17.2", + "h5py>=3.11.0", + "numpy>=1.26.4", + "orjson>=3.10.3", + "vtk>=9.3.1", + "pyvcell-fvsolver>=0.1.0", + "typer>=0.12.3", + "pydantic>=2.10.5", + "requests-oauth2client>=1.6.0", + "overrides>=7.7.0", + "typing-extensions>=4.12.2", + "urllib3>=2.3.0", + "requests>=2.32.3", + "python-dateutil>=2.9.0.post0", + "pyvista>=0.44.2", + "python-libsbml>=5.20.4", + "matplotlib>=3.10.0" ] -[tool.poetry.dependencies] -python = ">=3.10,<4.0" -numexpr = "^2.10.0" -zarr = "^2.17.2" -h5py = "^3.11.0" -numpy = "^1.26.4" -orjson = "^3.10.3" -vtk = "^9.3.1" -pyvcell-fvsolver = "^0.1.0" -typer = "^0.12.3" -pydantic = "^2.10.5" -requests-oauth2client = "^1.6.0" -overrides = "^7.7.0" -typing-extensions = "^4.12.2" -urllib3 = "^2.3.0" -requests = "^2.32.3" -python-dateutil = "^2.9.0.post0" -pyvista = "^0.44.2" -python-libsbml = "^5.20.4" -matplotlib = "^3.10.0" -ipython = "^8.32.0" -setuptools = "^75.8.0" -toml = "^0.10.2" - -[tool.poetry.group.dev.dependencies] -pytest = "^7.2.0" -pytest-cov = "^4.0.0" -deptry = "^0.16.2" -mypy = "^1.5.1" -pre-commit = "^3.8.0" -tox = "^4.11.1" -types-requests = "^2.32.0.20241016" -notebook = "^7.3.2" -types-toml = "^0.10.8.20240310" - -[tool.poetry.group.docs.dependencies] -mkdocs = "^1.6.1" -mkdocs-material = "^9.5.50" -mkdocstrings = {extras = ["python"], version = "^0.27.0"} -griffe = "^1.5.5" - -# [build-system] -# requires = ["poetry-core>=1.0.0"] -# build-backend = "poetry.core.masonry.api" - -[build-system] -requires = ["setuptools>=42", "wheel"] -build-backend = "setuptools.build_meta" - +[project.optional-dependencies] +dev = [ + "pytest>=7.2.0", + "pytest-cov>=4.0.0", + "deptry>=0.16.2", + "mypy>=1.5.1", + "pre-commit>=3.8.0", + "tox>=4.11.1", + "types-requests>=2.32.0.20241016", + "notebook>=7.3.2" +] +docs = [ + "mkdocs>=1.6.1", + "mkdocs-material>=9.5.50", + "mkdocstrings[python]>=0.27.0", + "griffe>=1.5.5" +] [tool.mypy] files = ["pyvcell"] diff --git a/setup.py b/setup similarity index 100% rename from setup.py rename to setup From a6cb7f8d05c34fa71462f5afa04a768e7318e011 Mon Sep 17 00:00:00 2001 From: "spaceBearAmadeus (Alex)" Date: Mon, 24 Feb 2025 20:02:03 -0500 Subject: [PATCH 11/20] test build system --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index a1b4be7..c4ad9fb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,8 +2,8 @@ # -------------------- [build-system] -requires = ["setuptools>=42", "wheel"] -build-backend = "setuptools.build_meta" +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" [project] name = "pyvcell" From 5e83fbf0d95bb55c3da974fd8126646bc1d45497 Mon Sep 17 00:00:00 2001 From: "spaceBearAmadeus (Alex)" Date: Mon, 24 Feb 2025 20:25:57 -0500 Subject: [PATCH 12/20] test install of groups as optional deps --- poetry.lock | 909 ++++++++++++++++++++++------------------ pyproject.toml | 127 ++++-- pyproject => pyprojectt | 94 ++--- 3 files changed, 634 insertions(+), 496 deletions(-) rename pyproject => pyprojectt (63%) diff --git a/poetry.lock b/poetry.lock index 3042a9e..053e63b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -16,9 +16,10 @@ files = [ name = "anyio" version = "4.8.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "anyio-4.8.0-py3-none-any.whl", hash = "sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a"}, {file = "anyio-4.8.0.tar.gz", hash = "sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a"}, @@ -39,10 +40,10 @@ trio = ["trio (>=0.26.1)"] name = "appnope" version = "0.1.4" description = "Disable App Nap on macOS >= 10.9" -optional = false +optional = true python-versions = ">=3.6" -groups = ["dev"] -markers = "platform_system == \"Darwin\"" +groups = ["main"] +markers = "extra == \"dev\" and platform_system == \"Darwin\"" files = [ {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, @@ -52,9 +53,10 @@ files = [ name = "argon2-cffi" version = "23.1.0" description = "Argon2 for Python" -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"}, {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"}, @@ -73,9 +75,10 @@ typing = ["mypy"] name = "argon2-cffi-bindings" version = "21.2.0" description = "Low-level CFFI bindings for Argon2" -optional = false +optional = true python-versions = ">=3.6" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" 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"}, @@ -111,9 +114,10 @@ tests = ["pytest"] name = "arrow" version = "1.3.0" description = "Better dates & times for Python" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, @@ -142,9 +146,10 @@ files = [ name = "asttokens" version = "3.0.0" description = "Annotate AST trees with source code positions" -optional = false +optional = true python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["main"] +markers = "extra == \"dev\" or extra == \"bootstrap\"" files = [ {file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2"}, {file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7"}, @@ -158,9 +163,10 @@ test = ["astroid (>=2,<4)", "pytest", "pytest-cov", "pytest-xdist"] name = "async-lru" version = "2.0.4" description = "Simple LRU cache for asyncio" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"}, {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"}, @@ -175,7 +181,7 @@ version = "25.1.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["main"] files = [ {file = "attrs-25.1.0-py3-none-any.whl", hash = "sha256:c75a69e28a550a7e93789579c22aa26b0f5b83b75dc4e08fe092980051e1090a"}, {file = "attrs-25.1.0.tar.gz", hash = "sha256:1c97078a80c814273a76b2a298a932eb681c87415c11dee0a6921de7f1b02c3e"}, @@ -193,9 +199,10 @@ tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] name = "babel" version = "2.17.0" description = "Internationalization utilities" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev", "docs"] +groups = ["main"] +markers = "extra == \"dev\" or extra == \"docs\"" files = [ {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, @@ -208,9 +215,10 @@ dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest name = "beautifulsoup4" version = "4.13.3" description = "Screen-scraping library" -optional = false +optional = true python-versions = ">=3.7.0" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "beautifulsoup4-4.13.3-py3-none-any.whl", hash = "sha256:99045d7d3f08f91f0d656bc9b7efbae189426cd913d830294a15eefa0ea4df16"}, {file = "beautifulsoup4-4.13.3.tar.gz", hash = "sha256:1bd32405dacc920b42b83ba01644747ed77456a65760e285fbc47633ceddaf8b"}, @@ -246,9 +254,10 @@ typing-extensions = ">=4.3.0" name = "bleach" version = "6.2.0" description = "An easy safelist-based HTML-sanitizing tool." -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e"}, {file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f"}, @@ -263,14 +272,15 @@ css = ["tinycss2 (>=1.1.0,<1.5)"] [[package]] name = "cachetools" -version = "5.5.1" +version = "5.5.2" description = "Extensible memoizing collections and decorators" -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ - {file = "cachetools-5.5.1-py3-none-any.whl", hash = "sha256:b76651fdc3b24ead3c648bbdeeb940c1b04d365b38b4af66788f9ec4a81d42bb"}, - {file = "cachetools-5.5.1.tar.gz", hash = "sha256:70f238fbba50383ef62e55c6aff6d9673175fe59f7c6782c7a0b9e38f4a9df95"}, + {file = "cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a"}, + {file = "cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4"}, ] [[package]] @@ -279,7 +289,7 @@ version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" -groups = ["main", "dev", "docs"] +groups = ["main"] files = [ {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, @@ -291,7 +301,8 @@ version = "1.17.1" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["main"] +markers = "platform_python_implementation != \"PyPy\" or extra == \"dev\"" 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"}, @@ -361,7 +372,6 @@ files = [ {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] -markers = {main = "platform_python_implementation != \"PyPy\""} [package.dependencies] pycparser = "*" @@ -370,9 +380,10 @@ pycparser = "*" name = "cfgv" version = "3.4.0" description = "Validate configuration and produce human readable error messages." -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, @@ -382,9 +393,10 @@ files = [ name = "chardet" version = "5.2.0" description = "Universal encoding detector for Python 3" -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970"}, {file = "chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7"}, @@ -396,7 +408,7 @@ version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" -groups = ["main", "dev", "docs"] +groups = ["main"] files = [ {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, @@ -498,7 +510,7 @@ version = "8.1.8" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" -groups = ["main", "dev", "docs"] +groups = ["main"] files = [ {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, @@ -513,20 +525,21 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["main", "dev", "docs"] +groups = ["main"] +markers = "extra == \"dev\" or platform_system == \"Windows\" or extra == \"bootstrap\" and sys_platform == \"win32\" or extra == \"docs\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -markers = {main = "platform_system == \"Windows\" or sys_platform == \"win32\""} [[package]] name = "comm" version = "0.2.2" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, @@ -616,9 +629,10 @@ test-no-images = ["pytest", "pytest-cov", "pytest-rerunfailures", "pytest-xdist" name = "coverage" version = "7.6.12" description = "Code coverage measurement for Python" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "coverage-7.6.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:704c8c8c6ce6569286ae9622e534b4f5b9759b6f2cd643f1c1a61f666d534fe8"}, {file = "coverage-7.6.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ad7525bf0241e5502168ae9c643a2f6c219fa0a283001cee4cf23a9b7da75879"}, @@ -765,9 +779,10 @@ tests = ["pytest", "pytest-cov", "pytest-xdist"] name = "debugpy" version = "1.8.12" description = "An implementation of the Debug Adapter Protocol for Python" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "debugpy-1.8.12-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:a2ba7ffe58efeae5b8fad1165357edfe01464f9aef25e814e891ec690e7dd82a"}, {file = "debugpy-1.8.12-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbbd4149c4fc5e7d508ece083e78c17442ee13b0e69bfa6bd63003e486770f45"}, @@ -799,23 +814,25 @@ files = [ [[package]] name = "decorator" -version = "5.1.1" +version = "5.2.1" description = "Decorators for Humans" -optional = false -python-versions = ">=3.5" -groups = ["main", "dev"] +optional = true +python-versions = ">=3.8" +groups = ["main"] +markers = "extra == \"dev\" or extra == \"bootstrap\"" files = [ - {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"}, - {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, + {file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a"}, + {file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360"}, ] [[package]] name = "defusedxml" version = "0.7.1" description = "XML bomb protection for Python stdlib modules" -optional = false +optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, @@ -825,9 +842,10 @@ files = [ name = "deptry" version = "0.16.2" description = "A command line utility to check for unused, missing and transitive dependencies in a Python project." -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "deptry-0.16.2-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:24bfbae07bd6533c852c795e8d88d05a8ad0801bec0d3662e1a37db763c52540"}, {file = "deptry-0.16.2-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:fc881688a2eaeafe51c0617d32a6535057bccdb74559cc667109f48f81cd976e"}, @@ -851,9 +869,10 @@ tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} name = "distlib" version = "0.3.9" description = "Distribution utilities" -optional = false +optional = true python-versions = "*" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, @@ -863,10 +882,10 @@ files = [ name = "exceptiongroup" version = "1.2.2" description = "Backport of PEP 654 (exception groups)" -optional = false +optional = true python-versions = ">=3.7" -groups = ["main", "dev"] -markers = "python_version < \"3.11\"" +groups = ["main"] +markers = "(extra == \"dev\" or extra == \"bootstrap\") and python_version < \"3.11\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -879,9 +898,10 @@ test = ["pytest (>=6)"] name = "executing" version = "2.2.0" description = "Get the currently executing AST node of a frame, and other information" -optional = false +optional = true python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["main"] +markers = "extra == \"dev\" or extra == \"bootstrap\"" files = [ {file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa"}, {file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755"}, @@ -907,9 +927,10 @@ files = [ name = "fastjsonschema" version = "2.21.1" description = "Fastest Python implementation of JSON schema" -optional = false +optional = true python-versions = "*" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667"}, {file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4"}, @@ -922,9 +943,10 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc name = "filelock" version = "3.17.0" description = "A platform independent file lock." -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "filelock-3.17.0-py3-none-any.whl", hash = "sha256:533dc2f7ba78dc2f0f531fc6c4940addf7b70a481e269a5a3b93be94ffbe8338"}, {file = "filelock-3.17.0.tar.gz", hash = "sha256:ee4e77401ef576ebb38cd7f13b9b28893194acc20a8e68e18730ba9c0e54660e"}, @@ -1013,9 +1035,10 @@ woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] name = "fqdn" version = "1.5.1" description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers" -optional = false +optional = true python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"}, {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"}, @@ -1041,9 +1064,10 @@ six = ">=1.8.0" name = "ghp-import" version = "2.1.0" description = "Copy your docs directly to the gh-pages branch." -optional = false +optional = true python-versions = "*" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, @@ -1059,9 +1083,10 @@ dev = ["flake8", "markdown", "twine", "wheel"] name = "griffe" version = "1.5.7" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." -optional = false +optional = true python-versions = ">=3.9" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "griffe-1.5.7-py3-none-any.whl", hash = "sha256:4af8ec834b64de954d447c7b6672426bb145e71605c74a4e22d510cc79fe7d8b"}, {file = "griffe-1.5.7.tar.gz", hash = "sha256:465238c86deaf1137761f700fb343edd8ffc846d72f6de43c3c345ccdfbebe92"}, @@ -1074,9 +1099,10 @@ colorama = ">=0.4" name = "h11" version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, @@ -1125,9 +1151,10 @@ numpy = ">=1.19.3" name = "httpcore" version = "1.0.7" description = "A minimal low-level HTTP client." -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, @@ -1147,9 +1174,10 @@ trio = ["trio (>=0.22.0,<1.0)"] name = "httpx" version = "0.28.1" description = "The next generation HTTP client." -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, @@ -1170,14 +1198,15 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "identify" -version = "2.6.7" +version = "2.6.8" description = "File identification library for Python" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ - {file = "identify-2.6.7-py2.py3-none-any.whl", hash = "sha256:155931cb617a401807b09ecec6635d6c692d180090a1cedca8ef7d58ba5b6aa0"}, - {file = "identify-2.6.7.tar.gz", hash = "sha256:3fa266b42eba321ee0b2bb0936a6a6b9e36a1351cbb69055b3082f4193035684"}, + {file = "identify-2.6.8-py2.py3-none-any.whl", hash = "sha256:83657f0f766a3c8d0eaea16d4ef42494b39b34629a4b3192a9d020d349b3e255"}, + {file = "identify-2.6.8.tar.gz", hash = "sha256:61491417ea2c0c5c670484fd8abbb34de34cdae1e5f39a73ee65e48e4bb663fc"}, ] [package.extras] @@ -1189,7 +1218,7 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" -groups = ["main", "dev", "docs"] +groups = ["main"] files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -1202,9 +1231,10 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, @@ -1214,9 +1244,10 @@ files = [ name = "ipykernel" version = "6.29.5" description = "IPython Kernel for Jupyter" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, @@ -1248,9 +1279,10 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio name = "ipython" version = "8.32.0" description = "IPython: Productive Interactive Computing" -optional = false +optional = true python-versions = ">=3.10" -groups = ["main", "dev"] +groups = ["main"] +markers = "extra == \"dev\" or extra == \"bootstrap\"" files = [ {file = "ipython-8.32.0-py3-none-any.whl", hash = "sha256:cae85b0c61eff1fc48b0a8002de5958b6528fa9c8defb1894da63f42613708aa"}, {file = "ipython-8.32.0.tar.gz", hash = "sha256:be2c91895b0b9ea7ba49d33b23e2040c352b33eb6a519cca7ce6e0c743444251"}, @@ -1287,9 +1319,10 @@ test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "num name = "isoduration" version = "20.11.0" description = "Operations with ISO 8601 durations" -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, @@ -1302,9 +1335,10 @@ arrow = ">=0.15.0" name = "jedi" version = "0.19.2" description = "An autocompletion tool for Python that can be used for text editors." -optional = false +optional = true python-versions = ">=3.6" -groups = ["main", "dev"] +groups = ["main"] +markers = "extra == \"dev\" or extra == \"bootstrap\"" files = [ {file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9"}, {file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0"}, @@ -1322,9 +1356,10 @@ testing = ["Django", "attrs", "colorama", "docopt", "pytest (<9.0.0)"] name = "jinja2" version = "3.1.5" description = "A very fast and expressive template engine." -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev", "docs"] +groups = ["main"] +markers = "extra == \"dev\" or extra == \"docs\"" files = [ {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"}, @@ -1340,9 +1375,10 @@ i18n = ["Babel (>=2.7)"] name = "json5" version = "0.10.0" description = "A Python implementation of the JSON5 data format." -optional = false +optional = true python-versions = ">=3.8.0" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "json5-0.10.0-py3-none-any.whl", hash = "sha256:19b23410220a7271e8377f81ba8aacba2fdd56947fbb137ee5977cbe1f5e8dfa"}, {file = "json5-0.10.0.tar.gz", hash = "sha256:e66941c8f0a02026943c52c2eb34ebeb2a6f819a0be05920a6f5243cd30fd559"}, @@ -1355,9 +1391,10 @@ dev = ["build (==1.2.2.post1)", "coverage (==7.5.3)", "mypy (==1.13.0)", "pip (= name = "jsonpointer" version = "3.0.0" description = "Identify specific nodes in a JSON document (RFC 6901)" -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, @@ -1367,9 +1404,10 @@ files = [ name = "jsonschema" version = "4.23.0" description = "An implementation of JSON Schema validation for Python" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, @@ -1397,9 +1435,10 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- name = "jsonschema-specifications" version = "2024.10.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf"}, {file = "jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272"}, @@ -1412,9 +1451,10 @@ referencing = ">=0.31.0" name = "jupyter-client" version = "8.6.3" description = "Jupyter protocol implementation and client libraries" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, @@ -1435,9 +1475,10 @@ test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pyt name = "jupyter-core" version = "5.7.2" description = "Jupyter core package. A base package on which Jupyter projects rely." -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, @@ -1456,9 +1497,10 @@ test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout" name = "jupyter-events" version = "0.12.0" description = "Jupyter Event System library" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb"}, {file = "jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b"}, @@ -1483,9 +1525,10 @@ test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "p name = "jupyter-lsp" version = "2.2.5" description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001"}, {file = "jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da"}, @@ -1498,9 +1541,10 @@ jupyter-server = ">=1.1.2" name = "jupyter-server" version = "2.15.0" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "jupyter_server-2.15.0-py3-none-any.whl", hash = "sha256:872d989becf83517012ee669f09604aa4a28097c0bd90b2f424310156c2cdae3"}, {file = "jupyter_server-2.15.0.tar.gz", hash = "sha256:9d446b8697b4f7337a1b7cdcac40778babdd93ba614b6d68ab1c0c918f1c4084"}, @@ -1535,9 +1579,10 @@ test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0,<9)", "pytest-console name = "jupyter-server-terminals" version = "0.5.3" description = "A Jupyter Server Extension Providing Terminals." -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, @@ -1555,9 +1600,10 @@ test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (> name = "jupyterlab" version = "4.3.5" description = "JupyterLab computational environment" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "jupyterlab-4.3.5-py3-none-any.whl", hash = "sha256:571bbdee20e4c5321ab5195bc41cf92a75a5cff886be5e57ce78dfa37a5e9fdb"}, {file = "jupyterlab-4.3.5.tar.gz", hash = "sha256:c779bf72ced007d7d29d5bcef128e7fdda96ea69299e19b04a43635a7d641f9d"}, @@ -1590,9 +1636,10 @@ upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)" name = "jupyterlab-pygments" version = "0.3.0" description = "Pygments theme using JupyterLab CSS variables" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, @@ -1602,9 +1649,10 @@ files = [ name = "jupyterlab-server" version = "2.27.3" description = "A set of server components for JupyterLab and JupyterLab like applications." -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"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"}, @@ -1735,9 +1783,10 @@ files = [ name = "markdown" version = "3.7" description = "Python implementation of John Gruber's Markdown." -optional = false +optional = true python-versions = ">=3.8" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803"}, {file = "markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2"}, @@ -1776,9 +1825,10 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] name = "markupsafe" version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev", "docs"] +groups = ["main"] +markers = "extra == \"dev\" or extra == \"docs\"" 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"}, @@ -1905,9 +1955,10 @@ dev = ["meson-python (>=0.13.1,<0.17.0)", "pybind11 (>=2.13.2,!=2.13.3)", "setup name = "matplotlib-inline" version = "0.1.7" description = "Inline Matplotlib backend for Jupyter" -optional = false +optional = true python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["main"] +markers = "extra == \"dev\" or extra == \"bootstrap\"" 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"}, @@ -1932,9 +1983,10 @@ files = [ name = "mergedeep" version = "1.3.4" description = "A deep merge function for 🐍." -optional = false +optional = true python-versions = ">=3.6" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, @@ -1942,14 +1994,15 @@ files = [ [[package]] name = "mistune" -version = "3.1.1" +version = "3.1.2" description = "A sane and fast Markdown parser with useful plugins and renderers" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ - {file = "mistune-3.1.1-py3-none-any.whl", hash = "sha256:02106ac2aa4f66e769debbfa028509a275069dcffce0dfa578edd7b991ee700a"}, - {file = "mistune-3.1.1.tar.gz", hash = "sha256:e0740d635f515119f7d1feb6f9b192ee60f0cc649f80a8f944f905706a21654c"}, + {file = "mistune-3.1.2-py3-none-any.whl", hash = "sha256:4b47731332315cdca99e0ded46fc0004001c1299ff773dfb48fbe1fd226de319"}, + {file = "mistune-3.1.2.tar.gz", hash = "sha256:733bf018ba007e8b5f2d3a9eb624034f6ee26c4ea769a98ec533ee111d504dff"}, ] [package.dependencies] @@ -1959,9 +2012,10 @@ typing-extensions = {version = "*", markers = "python_version < \"3.11\""} name = "mkdocs" version = "1.6.1" description = "Project documentation with Markdown." -optional = false +optional = true python-versions = ">=3.8" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e"}, {file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2"}, @@ -1988,14 +2042,15 @@ min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-imp [[package]] name = "mkdocs-autorefs" -version = "1.3.1" +version = "1.4.0" description = "Automatically link across pages in MkDocs." -optional = false +optional = true python-versions = ">=3.9" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ - {file = "mkdocs_autorefs-1.3.1-py3-none-any.whl", hash = "sha256:18c504ae4d3ee7f344369bb26cb31d4105569ee252aab7d75ec2734c2c8b0474"}, - {file = "mkdocs_autorefs-1.3.1.tar.gz", hash = "sha256:a6d30cbcccae336d622a66c2418a3c92a8196b69782774529ad441abb23c0902"}, + {file = "mkdocs_autorefs-1.4.0-py3-none-any.whl", hash = "sha256:bad19f69655878d20194acd0162e29a89c3f7e6365ffe54e72aa3fd1072f240d"}, + {file = "mkdocs_autorefs-1.4.0.tar.gz", hash = "sha256:a9c0aa9c90edbce302c09d050a3c4cb7c76f8b7b2c98f84a7a05f53d00392156"}, ] [package.dependencies] @@ -2007,9 +2062,10 @@ mkdocs = ">=1.1" name = "mkdocs-get-deps" version = "0.2.0" description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" -optional = false +optional = true python-versions = ">=3.8" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, @@ -2022,14 +2078,15 @@ pyyaml = ">=5.1" [[package]] name = "mkdocs-material" -version = "9.6.4" +version = "9.6.5" description = "Documentation that simply works" -optional = false +optional = true python-versions = ">=3.8" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ - {file = "mkdocs_material-9.6.4-py3-none-any.whl", hash = "sha256:414e8376551def6d644b8e6f77226022868532a792eb2c9accf52199009f568f"}, - {file = "mkdocs_material-9.6.4.tar.gz", hash = "sha256:4d1d35e1c1d3e15294cb7fa5d02e0abaee70d408f75027dc7be6e30fb32e6867"}, + {file = "mkdocs_material-9.6.5-py3-none-any.whl", hash = "sha256:aad3e6fb860c20870f75fb2a69ef901f1be727891e41adb60b753efcae19453b"}, + {file = "mkdocs_material-9.6.5.tar.gz", hash = "sha256:b714679a8c91b0ffe2188e11ed58c44d2523e9c2ae26a29cc652fa7478faa21f"}, ] [package.dependencies] @@ -2054,9 +2111,10 @@ recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2. name = "mkdocs-material-extensions" version = "1.3.1" description = "Extension pack for Python Markdown and MkDocs Material." -optional = false +optional = true python-versions = ">=3.8" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, @@ -2066,9 +2124,10 @@ files = [ name = "mkdocstrings" version = "0.27.0" description = "Automatic documentation from sources, for MkDocs." -optional = false +optional = true python-versions = ">=3.9" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "mkdocstrings-0.27.0-py3-none-any.whl", hash = "sha256:6ceaa7ea830770959b55a16203ac63da24badd71325b96af950e59fd37366332"}, {file = "mkdocstrings-0.27.0.tar.gz", hash = "sha256:16adca6d6b0a1f9e0c07ff0b02ced8e16f228a9d65a37c063ec4c14d7b76a657"}, @@ -2094,9 +2153,10 @@ python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] name = "mkdocstrings-python" version = "1.13.0" description = "A Python handler for mkdocstrings." -optional = false +optional = true python-versions = ">=3.9" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "mkdocstrings_python-1.13.0-py3-none-any.whl", hash = "sha256:b88bbb207bab4086434743849f8e796788b373bd32e7bfefbf8560ac45d88f97"}, {file = "mkdocstrings_python-1.13.0.tar.gz", hash = "sha256:2dbd5757e8375b9720e81db16f52f1856bf59905428fd7ef88005d1370e2f64c"}, @@ -2111,9 +2171,10 @@ mkdocstrings = ">=0.26" name = "mypy" version = "1.15.0" description = "Optional static typing for Python" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "mypy-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:979e4e1a006511dacf628e36fadfecbcc0160a8af6ca7dad2f5025529e082c13"}, {file = "mypy-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c4bb0e1bd29f7d34efcccd71cf733580191e9a264a2202b0239da95984c5b559"}, @@ -2165,9 +2226,10 @@ reports = ["lxml"] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." -optional = false +optional = true python-versions = ">=3.5" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, @@ -2177,9 +2239,10 @@ files = [ name = "nbclient" version = "0.10.2" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." -optional = false +optional = true python-versions = ">=3.9.0" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d"}, {file = "nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193"}, @@ -2200,9 +2263,10 @@ test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>= name = "nbconvert" version = "7.16.6" description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b"}, {file = "nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582"}, @@ -2237,9 +2301,10 @@ webpdf = ["playwright"] name = "nbformat" version = "5.10.4" description = "The Jupyter Notebook format" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, @@ -2259,9 +2324,10 @@ test = ["pep440", "pre-commit", "pytest", "testpath"] name = "nest-asyncio" version = "1.6.0" description = "Patch asyncio to allow nested event loops" -optional = false +optional = true python-versions = ">=3.5" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, @@ -2271,9 +2337,10 @@ files = [ name = "nodeenv" version = "1.9.1" description = "Node.js virtual environment builder" -optional = false +optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, @@ -2283,9 +2350,10 @@ files = [ name = "notebook" version = "7.3.2" description = "Jupyter Notebook - A web-based notebook environment for interactive computing" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "notebook-7.3.2-py3-none-any.whl", hash = "sha256:e5f85fc59b69d3618d73cf27544418193ff8e8058d5bf61d315ce4f473556288"}, {file = "notebook-7.3.2.tar.gz", hash = "sha256:705e83a1785f45b383bf3ee13cb76680b92d24f56fb0c7d2136fe1d850cd3ca8"}, @@ -2307,9 +2375,10 @@ test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4 name = "notebook-shim" version = "0.2.4" description = "A shim layer for notebook traits and config" -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, @@ -2564,7 +2633,7 @@ version = "7.7.0" description = "A decorator to automatically detect mismatch when overriding a method." optional = false python-versions = ">=3.6" -groups = ["main", "dev"] +groups = ["main"] files = [ {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, @@ -2576,7 +2645,7 @@ version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" -groups = ["main", "dev", "docs"] +groups = ["main"] files = [ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, @@ -2586,9 +2655,10 @@ files = [ name = "paginate" version = "0.5.7" description = "Divides large result sets into pages for easier browsing" -optional = false +optional = true python-versions = "*" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, @@ -2602,9 +2672,10 @@ lint = ["black"] name = "pandocfilters" version = "1.5.1" description = "Utilities for writing pandoc filters in python" -optional = false +optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, @@ -2614,9 +2685,10 @@ files = [ name = "parso" version = "0.8.4" description = "A Python Parser" -optional = false +optional = true python-versions = ">=3.6" -groups = ["main", "dev"] +groups = ["main"] +markers = "extra == \"dev\" or extra == \"bootstrap\"" files = [ {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, @@ -2630,9 +2702,10 @@ testing = ["docopt", "pytest"] name = "pathspec" version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." -optional = false +optional = true python-versions = ">=3.8" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, @@ -2642,10 +2715,10 @@ files = [ name = "pexpect" version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." -optional = false +optional = true python-versions = "*" -groups = ["main", "dev"] -markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" +groups = ["main"] +markers = "extra == \"dev\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\") or extra == \"bootstrap\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\")" files = [ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, @@ -2749,7 +2822,7 @@ version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" -groups = ["main", "dev", "docs"] +groups = ["main"] files = [ {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, @@ -2764,9 +2837,10 @@ type = ["mypy (>=1.11.2)"] name = "pluggy" version = "1.5.0" description = "plugin and hook calling mechanisms for python" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, @@ -2802,9 +2876,10 @@ xxhash = ["xxhash (>=1.4.3)"] name = "pre-commit" version = "3.8.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pre_commit-3.8.0-py2.py3-none-any.whl", hash = "sha256:9a90a53bf82fdd8778d58085faf8d83df56e40dfe18f45b19446e26bf1b3a63f"}, {file = "pre_commit-3.8.0.tar.gz", hash = "sha256:8bb6494d4a20423842e198980c9ecf9f96607a07ea29549e180eef9ae80fe7af"}, @@ -2821,9 +2896,10 @@ virtualenv = ">=20.10.0" name = "prometheus-client" version = "0.21.1" description = "Python client for the Prometheus monitoring system." -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "prometheus_client-0.21.1-py3-none-any.whl", hash = "sha256:594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301"}, {file = "prometheus_client-0.21.1.tar.gz", hash = "sha256:252505a722ac04b0456be05c05f75f45d760c2911ffc45f2a06bcaed9f3ae3fb"}, @@ -2836,9 +2912,10 @@ twisted = ["twisted"] name = "prompt-toolkit" version = "3.0.50" description = "Library for building powerful interactive command lines in Python" -optional = false +optional = true python-versions = ">=3.8.0" -groups = ["main", "dev"] +groups = ["main"] +markers = "extra == \"dev\" or extra == \"bootstrap\"" files = [ {file = "prompt_toolkit-3.0.50-py3-none-any.whl", hash = "sha256:9b6427eb19e479d98acff65196a307c555eb567989e6d88ebbb1b509d9779198"}, {file = "prompt_toolkit-3.0.50.tar.gz", hash = "sha256:544748f3860a2623ca5cd6d2795e7a14f3d0e1c3c9728359013f79877fc89bab"}, @@ -2851,9 +2928,10 @@ wcwidth = "*" 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." -optional = false +optional = true python-versions = ">=3.6" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"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"}, @@ -2875,22 +2953,23 @@ test = ["pytest", "pytest-xdist", "setuptools"] name = "ptyprocess" version = "0.7.0" description = "Run a subprocess in a pseudo terminal" -optional = false +optional = true python-versions = "*" -groups = ["main", "dev"] +groups = ["main"] +markers = "extra == \"dev\" and os_name != \"nt\" or extra == \"dev\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\") or extra == \"bootstrap\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\")" files = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, ] -markers = {main = "sys_platform != \"win32\" and sys_platform != \"emscripten\"", dev = "sys_platform != \"win32\" and sys_platform != \"emscripten\" or os_name != \"nt\""} [[package]] name = "pure-eval" version = "0.2.3" description = "Safely evaluate AST nodes without side effects" -optional = false +optional = true python-versions = "*" -groups = ["main", "dev"] +groups = ["main"] +markers = "extra == \"dev\" or extra == \"bootstrap\"" files = [ {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, @@ -2905,12 +2984,12 @@ version = "2.22" description = "C parser in Python" optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["main"] +markers = "platform_python_implementation != \"PyPy\" or extra == \"dev\"" files = [ {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] -markers = {main = "platform_python_implementation != \"PyPy\""} [[package]] name = "pydantic" @@ -3052,7 +3131,7 @@ version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" -groups = ["main", "dev", "docs"] +groups = ["main"] files = [ {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, @@ -3065,9 +3144,10 @@ windows-terminal = ["colorama (>=0.4.6)"] name = "pymdown-extensions" version = "10.14.3" description = "Extension pack for Python Markdown." -optional = false +optional = true python-versions = ">=3.8" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "pymdown_extensions-10.14.3-py3-none-any.whl", hash = "sha256:05e0bee73d64b9c71a4ae17c72abc2f700e8bc8403755a00580b49a4e9f189e9"}, {file = "pymdown_extensions-10.14.3.tar.gz", hash = "sha256:41e576ce3f5d650be59e900e4ceff231e0aed2a88cf30acaee41e02f063a061b"}, @@ -3099,9 +3179,10 @@ diagrams = ["jinja2", "railroad-diagrams"] name = "pyproject-api" version = "1.9.0" description = "API to interact with the python pyproject.toml based projects" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pyproject_api-1.9.0-py3-none-any.whl", hash = "sha256:326df9d68dea22d9d98b5243c46e3ca3161b07a1b9b18e213d1e24fd0e605766"}, {file = "pyproject_api-1.9.0.tar.gz", hash = "sha256:7e8a9854b2dfb49454fae421cb86af43efbb2b2454e5646ffb7623540321ae6e"}, @@ -3119,9 +3200,10 @@ testing = ["covdefaults (>=2.3)", "pytest (>=8.3.4)", "pytest-cov (>=6)", "pytes name = "pytest" version = "7.4.4" description = "pytest: simple powerful testing with Python" -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, @@ -3142,9 +3224,10 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no name = "pytest-cov" version = "4.1.0" description = "Pytest plugin for measuring coverage." -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, @@ -3163,7 +3246,7 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main", "dev", "docs"] +groups = ["main"] files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -3176,9 +3259,10 @@ six = ">=1.5" name = "python-json-logger" version = "3.2.1" description = "JSON Log Formatter for the Python Logging Package" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "python_json_logger-3.2.1-py3-none-any.whl", hash = "sha256:cdc17047eb5374bd311e748b42f99d71223f3b0e186f4206cc5d52aefe85b090"}, {file = "python_json_logger-3.2.1.tar.gz", hash = "sha256:8eb0554ea17cb75b05d2848bc14fb02fbdbd9d6972120781b974380bfa162008"}, @@ -3313,10 +3397,10 @@ jupyter = ["ipywidgets", "jupyter-server-proxy", "nest_asyncio", "trame (>=2.5.2 name = "pywin32" version = "308" description = "Python for Window Extensions" -optional = false +optional = true python-versions = "*" -groups = ["dev"] -markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"" +groups = ["main"] +markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\" and extra == \"dev\"" files = [ {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, {file = "pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e"}, @@ -3342,10 +3426,10 @@ files = [ name = "pywinpty" version = "2.0.15" description = "Pseudo terminal support for Windows from Python." -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] -markers = "os_name == \"nt\"" +groups = ["main"] +markers = "extra == \"dev\" 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"}, @@ -3360,9 +3444,10 @@ files = [ name = "pyyaml" version = "6.0.2" description = "YAML parser and emitter for Python" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev", "docs"] +groups = ["main"] +markers = "extra == \"dev\" or extra == \"docs\"" 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"}, @@ -3423,9 +3508,10 @@ files = [ name = "pyyaml-env-tag" version = "0.1" description = "A custom YAML tag for referencing environment variables in YAML files. " -optional = false +optional = true python-versions = ">=3.6" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, @@ -3438,9 +3524,10 @@ pyyaml = "*" name = "pyzmq" version = "26.2.1" description = "Python bindings for 0MQ" -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "pyzmq-26.2.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:f39d1227e8256d19899d953e6e19ed2ccb689102e6d85e024da5acf410f301eb"}, {file = "pyzmq-26.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a23948554c692df95daed595fdd3b76b420a4939d7a8a28d6d7dea9711878641"}, @@ -3560,9 +3647,10 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} name = "referencing" version = "0.36.2" description = "JSON Referencing + Python" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0"}, {file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa"}, @@ -3577,9 +3665,10 @@ typing-extensions = {version = ">=4.4.0", markers = "python_version < \"3.13\""} name = "regex" version = "2024.11.6" description = "Alternative regular expression module, to replace re." -optional = false +optional = true python-versions = ">=3.8" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"}, {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"}, @@ -3683,7 +3772,7 @@ version = "2.32.3" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" -groups = ["main", "dev", "docs"] +groups = ["main"] files = [ {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, @@ -3722,9 +3811,10 @@ requests = ">=2.19.0" name = "rfc3339-validator" version = "0.1.4" description = "A pure python RFC3339 validator" -optional = false +optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, @@ -3737,9 +3827,10 @@ six = "*" name = "rfc3986-validator" version = "0.1.1" description = "Pure python rfc3986 validator" -optional = false +optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, @@ -3767,115 +3858,116 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "rpds-py" -version = "0.22.3" +version = "0.23.1" description = "Python bindings to Rust's persistent data structures (rpds)" -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "rpds_py-0.22.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:6c7b99ca52c2c1752b544e310101b98a659b720b21db00e65edca34483259967"}, - {file = "rpds_py-0.22.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:be2eb3f2495ba669d2a985f9b426c1797b7d48d6963899276d22f23e33d47e37"}, - {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70eb60b3ae9245ddea20f8a4190bd79c705a22f8028aaf8bbdebe4716c3fab24"}, - {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4041711832360a9b75cfb11b25a6a97c8fb49c07b8bd43d0d02b45d0b499a4ff"}, - {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64607d4cbf1b7e3c3c8a14948b99345eda0e161b852e122c6bb71aab6d1d798c"}, - {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e69b0a0e2537f26d73b4e43ad7bc8c8efb39621639b4434b76a3de50c6966e"}, - {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc27863442d388870c1809a87507727b799c8460573cfbb6dc0eeaef5a11b5ec"}, - {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e79dd39f1e8c3504be0607e5fc6e86bb60fe3584bec8b782578c3b0fde8d932c"}, - {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e0fa2d4ec53dc51cf7d3bb22e0aa0143966119f42a0c3e4998293a3dd2856b09"}, - {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fda7cb070f442bf80b642cd56483b5548e43d366fe3f39b98e67cce780cded00"}, - {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cff63a0272fcd259dcc3be1657b07c929c466b067ceb1c20060e8d10af56f5bf"}, - {file = "rpds_py-0.22.3-cp310-cp310-win32.whl", hash = "sha256:9bd7228827ec7bb817089e2eb301d907c0d9827a9e558f22f762bb690b131652"}, - {file = "rpds_py-0.22.3-cp310-cp310-win_amd64.whl", hash = "sha256:9beeb01d8c190d7581a4d59522cd3d4b6887040dcfc744af99aa59fef3e041a8"}, - {file = "rpds_py-0.22.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d20cfb4e099748ea39e6f7b16c91ab057989712d31761d3300d43134e26e165f"}, - {file = "rpds_py-0.22.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:68049202f67380ff9aa52f12e92b1c30115f32e6895cd7198fa2a7961621fc5a"}, - {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb4f868f712b2dd4bcc538b0a0c1f63a2b1d584c925e69a224d759e7070a12d5"}, - {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bc51abd01f08117283c5ebf64844a35144a0843ff7b2983e0648e4d3d9f10dbb"}, - {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f3cec041684de9a4684b1572fe28c7267410e02450f4561700ca5a3bc6695a2"}, - {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7ef9d9da710be50ff6809fed8f1963fecdfecc8b86656cadfca3bc24289414b0"}, - {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59f4a79c19232a5774aee369a0c296712ad0e77f24e62cad53160312b1c1eaa1"}, - {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a60bce91f81ddaac922a40bbb571a12c1070cb20ebd6d49c48e0b101d87300d"}, - {file = "rpds_py-0.22.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e89391e6d60251560f0a8f4bd32137b077a80d9b7dbe6d5cab1cd80d2746f648"}, - {file = "rpds_py-0.22.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e3fb866d9932a3d7d0c82da76d816996d1667c44891bd861a0f97ba27e84fc74"}, - {file = "rpds_py-0.22.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1352ae4f7c717ae8cba93421a63373e582d19d55d2ee2cbb184344c82d2ae55a"}, - {file = "rpds_py-0.22.3-cp311-cp311-win32.whl", hash = "sha256:b0b4136a252cadfa1adb705bb81524eee47d9f6aab4f2ee4fa1e9d3cd4581f64"}, - {file = "rpds_py-0.22.3-cp311-cp311-win_amd64.whl", hash = "sha256:8bd7c8cfc0b8247c8799080fbff54e0b9619e17cdfeb0478ba7295d43f635d7c"}, - {file = "rpds_py-0.22.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:27e98004595899949bd7a7b34e91fa7c44d7a97c40fcaf1d874168bb652ec67e"}, - {file = "rpds_py-0.22.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1978d0021e943aae58b9b0b196fb4895a25cc53d3956b8e35e0b7682eefb6d56"}, - {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:655ca44a831ecb238d124e0402d98f6212ac527a0ba6c55ca26f616604e60a45"}, - {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:feea821ee2a9273771bae61194004ee2fc33f8ec7db08117ef9147d4bbcbca8e"}, - {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22bebe05a9ffc70ebfa127efbc429bc26ec9e9b4ee4d15a740033efda515cf3d"}, - {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3af6e48651c4e0d2d166dc1b033b7042ea3f871504b6805ba5f4fe31581d8d38"}, - {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67ba3c290821343c192f7eae1d8fd5999ca2dc99994114643e2f2d3e6138b15"}, - {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02fbb9c288ae08bcb34fb41d516d5eeb0455ac35b5512d03181d755d80810059"}, - {file = "rpds_py-0.22.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f56a6b404f74ab372da986d240e2e002769a7d7102cc73eb238a4f72eec5284e"}, - {file = "rpds_py-0.22.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0a0461200769ab3b9ab7e513f6013b7a97fdeee41c29b9db343f3c5a8e2b9e61"}, - {file = "rpds_py-0.22.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8633e471c6207a039eff6aa116e35f69f3156b3989ea3e2d755f7bc41754a4a7"}, - {file = "rpds_py-0.22.3-cp312-cp312-win32.whl", hash = "sha256:593eba61ba0c3baae5bc9be2f5232430453fb4432048de28399ca7376de9c627"}, - {file = "rpds_py-0.22.3-cp312-cp312-win_amd64.whl", hash = "sha256:d115bffdd417c6d806ea9069237a4ae02f513b778e3789a359bc5856e0404cc4"}, - {file = "rpds_py-0.22.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ea7433ce7e4bfc3a85654aeb6747babe3f66eaf9a1d0c1e7a4435bbdf27fea84"}, - {file = "rpds_py-0.22.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6dd9412824c4ce1aca56c47b0991e65bebb7ac3f4edccfd3f156150c96a7bf25"}, - {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20070c65396f7373f5df4005862fa162db5d25d56150bddd0b3e8214e8ef45b4"}, - {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0b09865a9abc0ddff4e50b5ef65467cd94176bf1e0004184eb915cbc10fc05c5"}, - {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3453e8d41fe5f17d1f8e9c383a7473cd46a63661628ec58e07777c2fff7196dc"}, - {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5d36399a1b96e1a5fdc91e0522544580dbebeb1f77f27b2b0ab25559e103b8b"}, - {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009de23c9c9ee54bf11303a966edf4d9087cd43a6003672e6aa7def643d06518"}, - {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1aef18820ef3e4587ebe8b3bc9ba6e55892a6d7b93bac6d29d9f631a3b4befbd"}, - {file = "rpds_py-0.22.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f60bd8423be1d9d833f230fdbccf8f57af322d96bcad6599e5a771b151398eb2"}, - {file = "rpds_py-0.22.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:62d9cfcf4948683a18a9aff0ab7e1474d407b7bab2ca03116109f8464698ab16"}, - {file = "rpds_py-0.22.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9253fc214112405f0afa7db88739294295f0e08466987f1d70e29930262b4c8f"}, - {file = "rpds_py-0.22.3-cp313-cp313-win32.whl", hash = "sha256:fb0ba113b4983beac1a2eb16faffd76cb41e176bf58c4afe3e14b9c681f702de"}, - {file = "rpds_py-0.22.3-cp313-cp313-win_amd64.whl", hash = "sha256:c58e2339def52ef6b71b8f36d13c3688ea23fa093353f3a4fee2556e62086ec9"}, - {file = "rpds_py-0.22.3-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:f82a116a1d03628a8ace4859556fb39fd1424c933341a08ea3ed6de1edb0283b"}, - {file = "rpds_py-0.22.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3dfcbc95bd7992b16f3f7ba05af8a64ca694331bd24f9157b49dadeeb287493b"}, - {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59259dc58e57b10e7e18ce02c311804c10c5a793e6568f8af4dead03264584d1"}, - {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5725dd9cc02068996d4438d397e255dcb1df776b7ceea3b9cb972bdb11260a83"}, - {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99b37292234e61325e7a5bb9689e55e48c3f5f603af88b1642666277a81f1fbd"}, - {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:27b1d3b3915a99208fee9ab092b8184c420f2905b7d7feb4aeb5e4a9c509b8a1"}, - {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f612463ac081803f243ff13cccc648578e2279295048f2a8d5eb430af2bae6e3"}, - {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f73d3fef726b3243a811121de45193c0ca75f6407fe66f3f4e183c983573e130"}, - {file = "rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3f21f0495edea7fdbaaa87e633a8689cd285f8f4af5c869f27bc8074638ad69c"}, - {file = "rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1e9663daaf7a63ceccbbb8e3808fe90415b0757e2abddbfc2e06c857bf8c5e2b"}, - {file = "rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a76e42402542b1fae59798fab64432b2d015ab9d0c8c47ba7addddbaf7952333"}, - {file = "rpds_py-0.22.3-cp313-cp313t-win32.whl", hash = "sha256:69803198097467ee7282750acb507fba35ca22cc3b85f16cf45fb01cb9097730"}, - {file = "rpds_py-0.22.3-cp313-cp313t-win_amd64.whl", hash = "sha256:f5cf2a0c2bdadf3791b5c205d55a37a54025c6e18a71c71f82bb536cf9a454bf"}, - {file = "rpds_py-0.22.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:378753b4a4de2a7b34063d6f95ae81bfa7b15f2c1a04a9518e8644e81807ebea"}, - {file = "rpds_py-0.22.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3445e07bf2e8ecfeef6ef67ac83de670358abf2996916039b16a218e3d95e97e"}, - {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b2513ba235829860b13faa931f3b6846548021846ac808455301c23a101689d"}, - {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eaf16ae9ae519a0e237a0f528fd9f0197b9bb70f40263ee57ae53c2b8d48aeb3"}, - {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:583f6a1993ca3369e0f80ba99d796d8e6b1a3a2a442dd4e1a79e652116413091"}, - {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4617e1915a539a0d9a9567795023de41a87106522ff83fbfaf1f6baf8e85437e"}, - {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c150c7a61ed4a4f4955a96626574e9baf1adf772c2fb61ef6a5027e52803543"}, - {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2fa4331c200c2521512595253f5bb70858b90f750d39b8cbfd67465f8d1b596d"}, - {file = "rpds_py-0.22.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:214b7a953d73b5e87f0ebece4a32a5bd83c60a3ecc9d4ec8f1dca968a2d91e99"}, - {file = "rpds_py-0.22.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f47ad3d5f3258bd7058d2d506852217865afefe6153a36eb4b6928758041d831"}, - {file = "rpds_py-0.22.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f276b245347e6e36526cbd4a266a417796fc531ddf391e43574cf6466c492520"}, - {file = "rpds_py-0.22.3-cp39-cp39-win32.whl", hash = "sha256:bbb232860e3d03d544bc03ac57855cd82ddf19c7a07651a7c0fdb95e9efea8b9"}, - {file = "rpds_py-0.22.3-cp39-cp39-win_amd64.whl", hash = "sha256:cfbc454a2880389dbb9b5b398e50d439e2e58669160f27b60e5eca11f68ae17c"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d48424e39c2611ee1b84ad0f44fb3b2b53d473e65de061e3f460fc0be5f1939d"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:24e8abb5878e250f2eb0d7859a8e561846f98910326d06c0d51381fed59357bd"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b232061ca880db21fa14defe219840ad9b74b6158adb52ddf0e87bead9e8493"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac0a03221cdb5058ce0167ecc92a8c89e8d0decdc9e99a2ec23380793c4dcb96"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb0c341fa71df5a4595f9501df4ac5abfb5a09580081dffbd1ddd4654e6e9123"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf9db5488121b596dbfc6718c76092fda77b703c1f7533a226a5a9f65248f8ad"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8db6b5b2d4491ad5b6bdc2bc7c017eec108acbf4e6785f42a9eb0ba234f4c9"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b3d504047aba448d70cf6fa22e06cb09f7cbd761939fdd47604f5e007675c24e"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:e61b02c3f7a1e0b75e20c3978f7135fd13cb6cf551bf4a6d29b999a88830a338"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:e35ba67d65d49080e8e5a1dd40101fccdd9798adb9b050ff670b7d74fa41c566"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:26fd7cac7dd51011a245f29a2cc6489c4608b5a8ce8d75661bb4a1066c52dfbe"}, - {file = "rpds_py-0.22.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:177c7c0fce2855833819c98e43c262007f42ce86651ffbb84f37883308cb0e7d"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bb47271f60660803ad11f4c61b42242b8c1312a31c98c578f79ef9387bbde21c"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:70fb28128acbfd264eda9bf47015537ba3fe86e40d046eb2963d75024be4d055"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44d61b4b7d0c2c9ac019c314e52d7cbda0ae31078aabd0f22e583af3e0d79723"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f0e260eaf54380380ac3808aa4ebe2d8ca28b9087cf411649f96bad6900c728"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b25bc607423935079e05619d7de556c91fb6adeae9d5f80868dde3468657994b"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fb6116dfb8d1925cbdb52595560584db42a7f664617a1f7d7f6e32f138cdf37d"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a63cbdd98acef6570c62b92a1e43266f9e8b21e699c363c0fef13bd530799c11"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2b8f60e1b739a74bab7e01fcbe3dddd4657ec685caa04681df9d562ef15b625f"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2e8b55d8517a2fda8d95cb45d62a5a8bbf9dd0ad39c5b25c8833efea07b880ca"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:2de29005e11637e7a2361fa151f780ff8eb2543a0da1413bb951e9f14b699ef3"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:666ecce376999bf619756a24ce15bb14c5bfaf04bf00abc7e663ce17c3f34fe7"}, - {file = "rpds_py-0.22.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5246b14ca64a8675e0a7161f7af68fe3e910e6b90542b4bfb5439ba752191df6"}, - {file = "rpds_py-0.22.3.tar.gz", hash = "sha256:e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d"}, +groups = ["main"] +markers = "extra == \"dev\"" +files = [ + {file = "rpds_py-0.23.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2a54027554ce9b129fc3d633c92fa33b30de9f08bc61b32c053dc9b537266fed"}, + {file = "rpds_py-0.23.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b5ef909a37e9738d146519657a1aab4584018746a18f71c692f2f22168ece40c"}, + {file = "rpds_py-0.23.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ee9d6f0b38efb22ad94c3b68ffebe4c47865cdf4b17f6806d6c674e1feb4246"}, + {file = "rpds_py-0.23.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f7356a6da0562190558c4fcc14f0281db191cdf4cb96e7604c06acfcee96df15"}, + {file = "rpds_py-0.23.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9441af1d25aed96901f97ad83d5c3e35e6cd21a25ca5e4916c82d7dd0490a4fa"}, + {file = "rpds_py-0.23.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d8abf7896a91fb97e7977d1aadfcc2c80415d6dc2f1d0fca5b8d0df247248f3"}, + {file = "rpds_py-0.23.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b08027489ba8fedde72ddd233a5ea411b85a6ed78175f40285bd401bde7466d"}, + {file = "rpds_py-0.23.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fee513135b5a58f3bb6d89e48326cd5aa308e4bcdf2f7d59f67c861ada482bf8"}, + {file = "rpds_py-0.23.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:35d5631ce0af26318dba0ae0ac941c534453e42f569011585cb323b7774502a5"}, + {file = "rpds_py-0.23.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a20cb698c4a59c534c6701b1c24a968ff2768b18ea2991f886bd8985ce17a89f"}, + {file = "rpds_py-0.23.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e9c206a1abc27e0588cf8b7c8246e51f1a16a103734f7750830a1ccb63f557a"}, + {file = "rpds_py-0.23.1-cp310-cp310-win32.whl", hash = "sha256:d9f75a06ecc68f159d5d7603b734e1ff6daa9497a929150f794013aa9f6e3f12"}, + {file = "rpds_py-0.23.1-cp310-cp310-win_amd64.whl", hash = "sha256:f35eff113ad430b5272bbfc18ba111c66ff525828f24898b4e146eb479a2cdda"}, + {file = "rpds_py-0.23.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:b79f5ced71efd70414a9a80bbbfaa7160da307723166f09b69773153bf17c590"}, + {file = "rpds_py-0.23.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c9e799dac1ffbe7b10c1fd42fe4cd51371a549c6e108249bde9cd1200e8f59b4"}, + {file = "rpds_py-0.23.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721f9c4011b443b6e84505fc00cc7aadc9d1743f1c988e4c89353e19c4a968ee"}, + {file = "rpds_py-0.23.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f88626e3f5e57432e6191cd0c5d6d6b319b635e70b40be2ffba713053e5147dd"}, + {file = "rpds_py-0.23.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:285019078537949cecd0190f3690a0b0125ff743d6a53dfeb7a4e6787af154f5"}, + {file = "rpds_py-0.23.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b92f5654157de1379c509b15acec9d12ecf6e3bc1996571b6cb82a4302060447"}, + {file = "rpds_py-0.23.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e768267cbe051dd8d1c5305ba690bb153204a09bf2e3de3ae530de955f5b5580"}, + {file = "rpds_py-0.23.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c5334a71f7dc1160382d45997e29f2637c02f8a26af41073189d79b95d3321f1"}, + {file = "rpds_py-0.23.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d6adb81564af0cd428910f83fa7da46ce9ad47c56c0b22b50872bc4515d91966"}, + {file = "rpds_py-0.23.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:cafa48f2133d4daa028473ede7d81cd1b9f9e6925e9e4003ebdf77010ee02f35"}, + {file = "rpds_py-0.23.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0fced9fd4a07a1ded1bac7e961ddd9753dd5d8b755ba8e05acba54a21f5f1522"}, + {file = "rpds_py-0.23.1-cp311-cp311-win32.whl", hash = "sha256:243241c95174b5fb7204c04595852fe3943cc41f47aa14c3828bc18cd9d3b2d6"}, + {file = "rpds_py-0.23.1-cp311-cp311-win_amd64.whl", hash = "sha256:11dd60b2ffddba85715d8a66bb39b95ddbe389ad2cfcf42c833f1bcde0878eaf"}, + {file = "rpds_py-0.23.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3902df19540e9af4cc0c3ae75974c65d2c156b9257e91f5101a51f99136d834c"}, + {file = "rpds_py-0.23.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:66f8d2a17e5838dd6fb9be6baaba8e75ae2f5fa6b6b755d597184bfcd3cb0eba"}, + {file = "rpds_py-0.23.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:112b8774b0b4ee22368fec42749b94366bd9b536f8f74c3d4175d4395f5cbd31"}, + {file = "rpds_py-0.23.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e0df046f2266e8586cf09d00588302a32923eb6386ced0ca5c9deade6af9a149"}, + {file = "rpds_py-0.23.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f3288930b947cbebe767f84cf618d2cbe0b13be476e749da0e6a009f986248c"}, + {file = "rpds_py-0.23.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ce473a2351c018b06dd8d30d5da8ab5a0831056cc53b2006e2a8028172c37ce5"}, + {file = "rpds_py-0.23.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d550d7e9e7d8676b183b37d65b5cd8de13676a738973d330b59dc8312df9c5dc"}, + {file = "rpds_py-0.23.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e14f86b871ea74c3fddc9a40e947d6a5d09def5adc2076ee61fb910a9014fb35"}, + {file = "rpds_py-0.23.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1bf5be5ba34e19be579ae873da515a2836a2166d8d7ee43be6ff909eda42b72b"}, + {file = "rpds_py-0.23.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d7031d493c4465dbc8d40bd6cafefef4bd472b17db0ab94c53e7909ee781b9ef"}, + {file = "rpds_py-0.23.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:55ff4151cfd4bc635e51cfb1c59ac9f7196b256b12e3a57deb9e5742e65941ad"}, + {file = "rpds_py-0.23.1-cp312-cp312-win32.whl", hash = "sha256:a9d3b728f5a5873d84cba997b9d617c6090ca5721caaa691f3b1a78c60adc057"}, + {file = "rpds_py-0.23.1-cp312-cp312-win_amd64.whl", hash = "sha256:b03a8d50b137ee758e4c73638b10747b7c39988eb8e6cd11abb7084266455165"}, + {file = "rpds_py-0.23.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:4caafd1a22e5eaa3732acb7672a497123354bef79a9d7ceed43387d25025e935"}, + {file = "rpds_py-0.23.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:178f8a60fc24511c0eb756af741c476b87b610dba83270fce1e5a430204566a4"}, + {file = "rpds_py-0.23.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c632419c3870507ca20a37c8f8f5352317aca097639e524ad129f58c125c61c6"}, + {file = "rpds_py-0.23.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:698a79d295626ee292d1730bc2ef6e70a3ab135b1d79ada8fde3ed0047b65a10"}, + {file = "rpds_py-0.23.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:271fa2184cf28bdded86bb6217c8e08d3a169fe0bbe9be5e8d96e8476b707122"}, + {file = "rpds_py-0.23.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b91cceb5add79ee563bd1f70b30896bd63bc5f78a11c1f00a1e931729ca4f1f4"}, + {file = "rpds_py-0.23.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a6cb95074777f1ecda2ca4fa7717caa9ee6e534f42b7575a8f0d4cb0c24013"}, + {file = "rpds_py-0.23.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:50fb62f8d8364978478b12d5f03bf028c6bc2af04082479299139dc26edf4c64"}, + {file = "rpds_py-0.23.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c8f7e90b948dc9dcfff8003f1ea3af08b29c062f681c05fd798e36daa3f7e3e8"}, + {file = "rpds_py-0.23.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5b98b6c953e5c2bda51ab4d5b4f172617d462eebc7f4bfdc7c7e6b423f6da957"}, + {file = "rpds_py-0.23.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2893d778d4671ee627bac4037a075168b2673c57186fb1a57e993465dbd79a93"}, + {file = "rpds_py-0.23.1-cp313-cp313-win32.whl", hash = "sha256:2cfa07c346a7ad07019c33fb9a63cf3acb1f5363c33bc73014e20d9fe8b01cdd"}, + {file = "rpds_py-0.23.1-cp313-cp313-win_amd64.whl", hash = "sha256:3aaf141d39f45322e44fc2c742e4b8b4098ead5317e5f884770c8df0c332da70"}, + {file = "rpds_py-0.23.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:759462b2d0aa5a04be5b3e37fb8183615f47014ae6b116e17036b131985cb731"}, + {file = "rpds_py-0.23.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3e9212f52074fc9d72cf242a84063787ab8e21e0950d4d6709886fb62bcb91d5"}, + {file = "rpds_py-0.23.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e9f3a3ac919406bc0414bbbd76c6af99253c507150191ea79fab42fdb35982a"}, + {file = "rpds_py-0.23.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c04ca91dda8a61584165825907f5c967ca09e9c65fe8966ee753a3f2b019fe1e"}, + {file = "rpds_py-0.23.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ab923167cfd945abb9b51a407407cf19f5bee35001221f2911dc85ffd35ff4f"}, + {file = "rpds_py-0.23.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ed6f011bedca8585787e5082cce081bac3d30f54520097b2411351b3574e1219"}, + {file = "rpds_py-0.23.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6959bb9928c5c999aba4a3f5a6799d571ddc2c59ff49917ecf55be2bbb4e3722"}, + {file = "rpds_py-0.23.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1ed7de3c86721b4e83ac440751329ec6a1102229aa18163f84c75b06b525ad7e"}, + {file = "rpds_py-0.23.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5fb89edee2fa237584e532fbf78f0ddd1e49a47c7c8cfa153ab4849dc72a35e6"}, + {file = "rpds_py-0.23.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7e5413d2e2d86025e73f05510ad23dad5950ab8417b7fc6beaad99be8077138b"}, + {file = "rpds_py-0.23.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d31ed4987d72aabdf521eddfb6a72988703c091cfc0064330b9e5f8d6a042ff5"}, + {file = "rpds_py-0.23.1-cp313-cp313t-win32.whl", hash = "sha256:f3429fb8e15b20961efca8c8b21432623d85db2228cc73fe22756c6637aa39e7"}, + {file = "rpds_py-0.23.1-cp313-cp313t-win_amd64.whl", hash = "sha256:d6f6512a90bd5cd9030a6237f5346f046c6f0e40af98657568fa45695d4de59d"}, + {file = "rpds_py-0.23.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:09cd7dbcb673eb60518231e02874df66ec1296c01a4fcd733875755c02014b19"}, + {file = "rpds_py-0.23.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c6760211eee3a76316cf328f5a8bd695b47b1626d21c8a27fb3b2473a884d597"}, + {file = "rpds_py-0.23.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72e680c1518733b73c994361e4b06441b92e973ef7d9449feec72e8ee4f713da"}, + {file = "rpds_py-0.23.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae28144c1daa61366205d32abd8c90372790ff79fc60c1a8ad7fd3c8553a600e"}, + {file = "rpds_py-0.23.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c698d123ce5d8f2d0cd17f73336615f6a2e3bdcedac07a1291bb4d8e7d82a05a"}, + {file = "rpds_py-0.23.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98b257ae1e83f81fb947a363a274c4eb66640212516becaff7bef09a5dceacaa"}, + {file = "rpds_py-0.23.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c9ff044eb07c8468594d12602291c635da292308c8c619244e30698e7fc455a"}, + {file = "rpds_py-0.23.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7938c7b0599a05246d704b3f5e01be91a93b411d0d6cc62275f025293b8a11ce"}, + {file = "rpds_py-0.23.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e9cb79ecedfc156c0692257ac7ed415243b6c35dd969baa461a6888fc79f2f07"}, + {file = "rpds_py-0.23.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:7b77e07233925bd33fc0022b8537774423e4c6680b6436316c5075e79b6384f4"}, + {file = "rpds_py-0.23.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a970bfaf130c29a679b1d0a6e0f867483cea455ab1535fb427566a475078f27f"}, + {file = "rpds_py-0.23.1-cp39-cp39-win32.whl", hash = "sha256:4233df01a250b3984465faed12ad472f035b7cd5240ea3f7c76b7a7016084495"}, + {file = "rpds_py-0.23.1-cp39-cp39-win_amd64.whl", hash = "sha256:c617d7453a80e29d9973b926983b1e700a9377dbe021faa36041c78537d7b08c"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c1f8afa346ccd59e4e5630d5abb67aba6a9812fddf764fd7eb11f382a345f8cc"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fad784a31869747df4ac968a351e070c06ca377549e4ace94775aaa3ab33ee06"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5a96fcac2f18e5a0a23a75cd27ce2656c66c11c127b0318e508aab436b77428"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3e77febf227a1dc3220159355dba68faa13f8dca9335d97504abf428469fb18b"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:26bb3e8de93443d55e2e748e9fd87deb5f8075ca7bc0502cfc8be8687d69a2ec"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:db7707dde9143a67b8812c7e66aeb2d843fe33cc8e374170f4d2c50bd8f2472d"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1eedaaccc9bb66581d4ae7c50e15856e335e57ef2734dbc5fd8ba3e2a4ab3cb6"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28358c54fffadf0ae893f6c1050e8f8853e45df22483b7fff2f6ab6152f5d8bf"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:633462ef7e61d839171bf206551d5ab42b30b71cac8f10a64a662536e057fdef"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a98f510d86f689fcb486dc59e6e363af04151e5260ad1bdddb5625c10f1e95f8"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e0397dd0b3955c61ef9b22838144aa4bef6f0796ba5cc8edfc64d468b93798b4"}, + {file = "rpds_py-0.23.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:75307599f0d25bf6937248e5ac4e3bde5ea72ae6618623b86146ccc7845ed00b"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3614d280bf7aab0d3721b5ce0e73434acb90a2c993121b6e81a1c15c665298ac"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e5963ea87f88bddf7edd59644a35a0feecf75f8985430124c253612d4f7d27ae"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad76f44f70aac3a54ceb1813ca630c53415da3a24fd93c570b2dfb4856591017"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2c6ae11e6e93728d86aafc51ced98b1658a0080a7dd9417d24bfb955bb09c3c2"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc869af5cba24d45fb0399b0cfdbcefcf6910bf4dee5d74036a57cf5264b3ff4"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c76b32eb2ab650a29e423525e84eb197c45504b1c1e6e17b6cc91fcfeb1a4b1d"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4263320ed887ed843f85beba67f8b2d1483b5947f2dc73a8b068924558bfeace"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7f9682a8f71acdf59fd554b82b1c12f517118ee72c0f3944eda461606dfe7eb9"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:754fba3084b70162a6b91efceee8a3f06b19e43dac3f71841662053c0584209a"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:a1c66e71ecfd2a4acf0e4bd75e7a3605afa8f9b28a3b497e4ba962719df2be57"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:8d67beb6002441faef8251c45e24994de32c4c8686f7356a1f601ad7c466f7c3"}, + {file = "rpds_py-0.23.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a1e17d8dc8e57d8e0fd21f8f0f0a5211b3fa258b2e444c2053471ef93fe25a00"}, + {file = "rpds_py-0.23.1.tar.gz", hash = "sha256:7f3240dcfa14d198dba24b8b9cb3b108c06b68d45b7babd9eefc1038fdf7e707"}, ] [[package]] @@ -3897,9 +3989,10 @@ cpu = ["mkl", "psutil"] name = "send2trash" version = "1.8.3" description = "Send file to trash natively under Mac OS X, Windows and Linux" -optional = false +optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, @@ -3914,9 +4007,10 @@ win32 = ["pywin32"] name = "setuptools" version = "75.8.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = false +optional = true python-versions = ">=3.9" -groups = ["main", "dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "setuptools-75.8.0-py3-none-any.whl", hash = "sha256:e3982f444617239225d675215d51f6ba05f845d4eec313da4418fdbb56fb27e3"}, {file = "setuptools-75.8.0.tar.gz", hash = "sha256:c5afc8f407c626b8313a86e10311dd3f661c6cd9c09d4bf8c15c0e11f9f2b0e6"}, @@ -3949,7 +4043,7 @@ version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main", "dev", "docs"] +groups = ["main"] files = [ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, @@ -3959,9 +4053,10 @@ files = [ name = "sniffio" version = "1.3.1" description = "Sniff out which async library your code is running under" -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, @@ -3971,9 +4066,10 @@ files = [ name = "soupsieve" version = "2.6" description = "A modern CSS selector implementation for Beautiful Soup." -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"}, {file = "soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb"}, @@ -3983,9 +4079,10 @@ files = [ name = "stack-data" version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" -optional = false +optional = true python-versions = "*" -groups = ["main", "dev"] +groups = ["main"] +markers = "extra == \"dev\" or extra == \"bootstrap\"" files = [ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, @@ -4003,9 +4100,10 @@ tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] name = "terminado" version = "0.18.1" description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, @@ -4025,9 +4123,10 @@ typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"] name = "tinycss2" version = "1.4.0" description = "A tiny CSS parser" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, @@ -4040,26 +4139,14 @@ webencodings = ">=0.4" doc = ["sphinx", "sphinx_rtd_theme"] test = ["pytest", "ruff"] -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -groups = ["main"] -files = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] - [[package]] name = "tomli" version = "2.2.1" description = "A lil' TOML parser" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] -markers = "python_full_version <= \"3.11.0a6\"" +groups = ["main"] +markers = "extra == \"dev\" and python_full_version <= \"3.11.0a6\"" 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"}, @@ -4099,9 +4186,10 @@ files = [ name = "tornado" version = "6.4.2" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1"}, {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803"}, @@ -4120,9 +4208,10 @@ files = [ name = "tox" version = "4.24.1" description = "tox is a generic virtualenv management and test command line tool" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "tox-4.24.1-py3-none-any.whl", hash = "sha256:57ba7df7d199002c6df8c2db9e6484f3de6ca8f42013c083ea2d4d1e5c6bdc75"}, {file = "tox-4.24.1.tar.gz", hash = "sha256:083a720adbc6166fff0b7d1df9d154f9d00bfccb9403b8abf6bc0ee435d6a62e"}, @@ -4148,9 +4237,10 @@ test = ["devpi-process (>=1.0.2)", "pytest (>=8.3.3)", "pytest-mock (>=3.14)"] name = "traitlets" version = "5.14.3" description = "Traitlets Python configuration system" -optional = false +optional = true python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["main"] +markers = "extra == \"dev\" or extra == \"bootstrap\"" files = [ {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, @@ -4182,9 +4272,10 @@ typing-extensions = ">=3.7.4.3" name = "types-python-dateutil" version = "2.9.0.20241206" description = "Typing stubs for python-dateutil" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" 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"}, @@ -4194,9 +4285,10 @@ files = [ name = "types-requests" version = "2.32.0.20241016" description = "Typing stubs for requests" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "types-requests-2.32.0.20241016.tar.gz", hash = "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95"}, {file = "types_requests-2.32.0.20241016-py3-none-any.whl", hash = "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747"}, @@ -4209,9 +4301,10 @@ urllib3 = ">=2" name = "types-toml" version = "0.10.8.20240310" description = "Typing stubs for toml" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "types-toml-0.10.8.20240310.tar.gz", hash = "sha256:3d41501302972436a6b8b239c850b26689657e25281b48ff0ec06345b8830331"}, {file = "types_toml-0.10.8.20240310-py3-none-any.whl", hash = "sha256:627b47775d25fa29977d9c70dc0cbab3f314f32c8d8d0c012f2ef5de7aaec05d"}, @@ -4223,7 +4316,7 @@ version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["main"] files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, @@ -4233,9 +4326,10 @@ files = [ name = "uri-template" version = "1.3.0" description = "RFC 6570 URI Template Processor" -optional = false +optional = true python-versions = ">=3.7" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, @@ -4250,7 +4344,7 @@ version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.9" -groups = ["main", "dev", "docs"] +groups = ["main"] files = [ {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, @@ -4266,9 +4360,10 @@ zstd = ["zstandard (>=0.18.0)"] name = "virtualenv" version = "20.29.2" description = "Virtual Python Environment builder" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "virtualenv-20.29.2-py3-none-any.whl", hash = "sha256:febddfc3d1ea571bdb1dc0f98d7b45d24def7428214d4fb73cc486c9568cce6a"}, {file = "virtualenv-20.29.2.tar.gz", hash = "sha256:fdaabebf6d03b5ba83ae0a02cfe96f48a716f4fae556461d180825866f75b728"}, @@ -4329,9 +4424,10 @@ web = ["wslink (>=1.0.4)"] name = "watchdog" version = "6.0.0" description = "Filesystem events monitoring" -optional = false +optional = true python-versions = ">=3.9" -groups = ["docs"] +groups = ["main"] +markers = "extra == \"docs\"" files = [ {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26"}, {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112"}, @@ -4372,9 +4468,10 @@ watchmedo = ["PyYAML (>=3.10)"] name = "wcwidth" version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" -optional = false +optional = true python-versions = "*" -groups = ["main", "dev"] +groups = ["main"] +markers = "extra == \"dev\" or extra == \"bootstrap\"" files = [ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, @@ -4384,9 +4481,10 @@ files = [ name = "webcolors" version = "24.11.1" description = "A library for working with the color formats defined by HTML and CSS." -optional = false +optional = true python-versions = ">=3.9" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9"}, {file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6"}, @@ -4396,9 +4494,10 @@ files = [ name = "webencodings" version = "0.5.1" description = "Character encoding aliases for legacy web content" -optional = false +optional = true python-versions = "*" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" files = [ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, @@ -4408,9 +4507,10 @@ files = [ name = "websocket-client" version = "1.8.0" description = "WebSocket client for Python with low level API options" -optional = false +optional = true python-versions = ">=3.8" -groups = ["dev"] +groups = ["main"] +markers = "extra == \"dev\"" 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"}, @@ -4443,7 +4543,12 @@ numpy = ">=1.24" docs = ["numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-automodapi", "sphinx-copybutton", "sphinx-design", "sphinx-issues"] jupyter = ["ipytree (>=0.2.2)", "ipywidgets (>=8.0.0)", "notebook"] +[extras] +bootstrap = ["ipython"] +dev = ["deptry", "mypy", "notebook", "pre-commit", "pytest", "pytest-cov", "tox", "types-requests", "types-toml"] +docs = ["griffe", "mkdocs", "mkdocs-material", "mkdocstrings"] + [metadata] lock-version = "2.1" python-versions = ">=3.10,<4.0" -content-hash = "7ef5671b201abf1c2854d5f5511a05781b3e6a25e6b5e3e15ba862962c07c6c4" +content-hash = "b060302ed63851bde102d0ff048d3692f89b432ab981a274e0cb8b8f20ea0e5c" diff --git a/pyproject.toml b/pyproject.toml index c4ad9fb..3f6664d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,11 +1,7 @@ # poetry-based config # -------------------- -[build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api" - -[project] +[tool.poetry] name = "pyvcell" version = "0.1.1" description = "This is the python wrapper for vcell modeling and simulation" @@ -13,44 +9,74 @@ authors = ["Jim Schaff "] repository = "https://github.com/virtualcell/pyvcell" documentation = "https://virtualcell.github.io/pyvcell/" readme = "README.md" -dependencies = [ - "numexpr>=2.10.0", - "zarr>=2.17.2", - "h5py>=3.11.0", - "numpy>=1.26.4", - "orjson>=3.10.3", - "vtk>=9.3.1", - "pyvcell-fvsolver>=0.1.0", - "typer>=0.12.3", - "pydantic>=2.10.5", - "requests-oauth2client>=1.6.0", - "overrides>=7.7.0", - "typing-extensions>=4.12.2", - "urllib3>=2.3.0", - "requests>=2.32.3", - "python-dateutil>=2.9.0.post0", - "pyvista>=0.44.2", - "python-libsbml>=5.20.4", - "matplotlib>=3.10.0" +packages = [ + {include = "pyvcell"}, + {include = "tests"}, ] -[project.optional-dependencies] -dev = [ - "pytest>=7.2.0", - "pytest-cov>=4.0.0", - "deptry>=0.16.2", - "mypy>=1.5.1", - "pre-commit>=3.8.0", - "tox>=4.11.1", - "types-requests>=2.32.0.20241016", - "notebook>=7.3.2" -] -docs = [ - "mkdocs>=1.6.1", - "mkdocs-material>=9.5.50", - "mkdocstrings[python]>=0.27.0", - "griffe>=1.5.5" -] +[tool.poetry.dependencies] +python = ">=3.10,<4.0" +numexpr = "^2.10.0" +zarr = "^2.17.2" +h5py = "^3.11.0" +numpy = "^1.26.4" +orjson = "^3.10.3" +vtk = "^9.3.1" +pyvcell-fvsolver = "^0.1.0" +typer = "^0.12.3" +pydantic = "^2.10.5" +requests-oauth2client = "^1.6.0" +overrides = "^7.7.0" +typing-extensions = "^4.12.2" +urllib3 = "^2.3.0" +requests = "^2.32.3" +python-dateutil = "^2.9.0.post0" +pyvista = "^0.44.2" +python-libsbml = "^5.20.4" +matplotlib = "^3.10.0" +pytest = { version ="^7.2.0", optional = true } +pytest-cov = { version ="^4.0.0", optional = true } +deptry = { version ="^0.16.2", optional = true } +mypy = { version ="^1.5.1", optional = true } +pre-commit = { version ="^3.8.0", optional = true } +tox = { version ="^4.11.1", optional = true } +types-requests = { version ="^2.32.0.20241016", optional = true } +notebook = { version ="^7.3.2", optional = true } +types-toml = { version ="^0.10.8.20240310", optional = true } +mkdocs = { version = "^1.6.1", optional = true } +mkdocs-material = { version = "^9.5.50", optional = true } +mkdocstrings = { extras = ["python"], version = "^0.27.0", optional = true } +griffe = { version = "^1.5.5", optional = true } +ipython = { version = "*", optional = true } + +# [tool.poetry.group.dev.dependencies] +# pytest = { version ="^7.2.0", optional = true } +# pytest-cov = { version ="^4.0.0", optional = true } +# deptry = { version ="^0.16.2", optional = true } +# mypy = { version ="^1.5.1", optional = true } +# pre-commit = { version ="^3.8.0", optional = true } +# tox = { version ="^4.11.1", optional = true } +# types-requests = { version ="^2.32.0.20241016", optional = true } +# notebook = { version ="^7.3.2", optional = true } +# types-toml = { version ="^0.10.8.20240310", optional = true } + +# [tool.poetry.group.docs.dependencies] +# mkdocs = { version = "^1.6.1", optional = true } +# mkdocs-material = { version = "^9.5.50", optional = true } +# mkdocstrings = { extras = ["python"], version = "^0.27.0", optional = true } +# griffe = { version = "^1.5.5", optional = true } +# +# [tool.poetry.group.bootstrap.dependencies] +# ipython = { version = "*", optional = true } + +[tool.poetry.extras] +dev = ["pytest", "pytest-cov", "deptry", "mypy", "pre-commit", "tox", "types-requests", "notebook", "types-toml"] +docs = ["mkdocs", "mkdocs-material", "mkdocstrings", "griffe"] +bootstrap = ["ipython"] + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" [tool.mypy] files = ["pyvcell"] @@ -137,3 +163,22 @@ source = ["pyvcell"] [tool.ruff.per-file-ignores] "tests/*" = ["S101"] + + +[tool.deptry.per_rule_ignores] +DEP002 = [ + "pytest", + "pytest-cov", + "deptry", + "mypy", + "pre-commit", + "tox", + "types-requests", + "notebook", + "types-toml", + "mkdocs", + "mkdocs-material", + "mkdocstrings", + "griffe", + "ipython" +] diff --git a/pyproject b/pyprojectt similarity index 63% rename from pyproject rename to pyprojectt index c29c104..c4ad9fb 100644 --- a/pyproject +++ b/pyprojectt @@ -1,7 +1,11 @@ # poetry-based config # -------------------- -[tool.poetry] +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" + +[project] name = "pyvcell" version = "0.1.1" description = "This is the python wrapper for vcell modeling and simulation" @@ -9,60 +13,44 @@ authors = ["Jim Schaff "] repository = "https://github.com/virtualcell/pyvcell" documentation = "https://virtualcell.github.io/pyvcell/" readme = "README.md" -packages = [ - {include = "pyvcell"}, - {include = "tests"}, +dependencies = [ + "numexpr>=2.10.0", + "zarr>=2.17.2", + "h5py>=3.11.0", + "numpy>=1.26.4", + "orjson>=3.10.3", + "vtk>=9.3.1", + "pyvcell-fvsolver>=0.1.0", + "typer>=0.12.3", + "pydantic>=2.10.5", + "requests-oauth2client>=1.6.0", + "overrides>=7.7.0", + "typing-extensions>=4.12.2", + "urllib3>=2.3.0", + "requests>=2.32.3", + "python-dateutil>=2.9.0.post0", + "pyvista>=0.44.2", + "python-libsbml>=5.20.4", + "matplotlib>=3.10.0" ] -[tool.poetry.dependencies] -python = ">=3.10,<4.0" -numexpr = "^2.10.0" -zarr = "^2.17.2" -h5py = "^3.11.0" -numpy = "^1.26.4" -orjson = "^3.10.3" -vtk = "^9.3.1" -pyvcell-fvsolver = "^0.1.0" -typer = "^0.12.3" -pydantic = "^2.10.5" -requests-oauth2client = "^1.6.0" -overrides = "^7.7.0" -typing-extensions = "^4.12.2" -urllib3 = "^2.3.0" -requests = "^2.32.3" -python-dateutil = "^2.9.0.post0" -pyvista = "^0.44.2" -python-libsbml = "^5.20.4" -matplotlib = "^3.10.0" -ipython = "^8.32.0" -setuptools = "^75.8.0" -toml = "^0.10.2" - -[tool.poetry.group.dev.dependencies] -pytest = "^7.2.0" -pytest-cov = "^4.0.0" -deptry = "^0.16.2" -mypy = "^1.5.1" -pre-commit = "^3.8.0" -tox = "^4.11.1" -types-requests = "^2.32.0.20241016" -notebook = "^7.3.2" -types-toml = "^0.10.8.20240310" - -[tool.poetry.group.docs.dependencies] -mkdocs = "^1.6.1" -mkdocs-material = "^9.5.50" -mkdocstrings = {extras = ["python"], version = "^0.27.0"} -griffe = "^1.5.5" - -# [build-system] -# requires = ["poetry-core>=1.0.0"] -# build-backend = "poetry.core.masonry.api" - -[build-system] -requires = ["setuptools>=42", "wheel"] -build-backend = "setuptools.build_meta" - +[project.optional-dependencies] +dev = [ + "pytest>=7.2.0", + "pytest-cov>=4.0.0", + "deptry>=0.16.2", + "mypy>=1.5.1", + "pre-commit>=3.8.0", + "tox>=4.11.1", + "types-requests>=2.32.0.20241016", + "notebook>=7.3.2" +] +docs = [ + "mkdocs>=1.6.1", + "mkdocs-material>=9.5.50", + "mkdocstrings[python]>=0.27.0", + "griffe>=1.5.5" +] [tool.mypy] files = ["pyvcell"] From 41e191707b9dc0c4cfd2e55393c99bea88b03193 Mon Sep 17 00:00:00 2001 From: "spaceBearAmadeus (Alex)" Date: Mon, 24 Feb 2025 20:26:27 -0500 Subject: [PATCH 13/20] chore: removed unused --- pyprojectt | 139 ----------------------------------------------------- 1 file changed, 139 deletions(-) delete mode 100644 pyprojectt diff --git a/pyprojectt b/pyprojectt deleted file mode 100644 index c4ad9fb..0000000 --- a/pyprojectt +++ /dev/null @@ -1,139 +0,0 @@ -# poetry-based config -# -------------------- - -[build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api" - -[project] -name = "pyvcell" -version = "0.1.1" -description = "This is the python wrapper for vcell modeling and simulation" -authors = ["Jim Schaff "] -repository = "https://github.com/virtualcell/pyvcell" -documentation = "https://virtualcell.github.io/pyvcell/" -readme = "README.md" -dependencies = [ - "numexpr>=2.10.0", - "zarr>=2.17.2", - "h5py>=3.11.0", - "numpy>=1.26.4", - "orjson>=3.10.3", - "vtk>=9.3.1", - "pyvcell-fvsolver>=0.1.0", - "typer>=0.12.3", - "pydantic>=2.10.5", - "requests-oauth2client>=1.6.0", - "overrides>=7.7.0", - "typing-extensions>=4.12.2", - "urllib3>=2.3.0", - "requests>=2.32.3", - "python-dateutil>=2.9.0.post0", - "pyvista>=0.44.2", - "python-libsbml>=5.20.4", - "matplotlib>=3.10.0" -] - -[project.optional-dependencies] -dev = [ - "pytest>=7.2.0", - "pytest-cov>=4.0.0", - "deptry>=0.16.2", - "mypy>=1.5.1", - "pre-commit>=3.8.0", - "tox>=4.11.1", - "types-requests>=2.32.0.20241016", - "notebook>=7.3.2" -] -docs = [ - "mkdocs>=1.6.1", - "mkdocs-material>=9.5.50", - "mkdocstrings[python]>=0.27.0", - "griffe>=1.5.5" -] - -[tool.mypy] -files = ["pyvcell"] -strict = true - -[[tool.mypy.overrides]] -module = [ "pyvcell.api.*" ] -disable_error_code = ["import-not-found", "import-untyped", "no-untyped-def", "no-untyped-call", "attr-defined", - "type-arg", "union-attr", "no-any-return", "return"] - -[[tool.mypy.overrides]] -module = "zarr" -ignore_missing_imports = true -disable_error_code = [ - "import-not-found", "import-untyped", "no-untyped-def", - "no-untyped-call", "attr-defined", "type-arg", "union-attr", - "no-any-return", "return" -] - -[tool.pytest.ini_options] -testpaths = ["tests"] - -[tool.ruff] -target-version = "py39" -line-length = 120 -fix = true -lint.select = [ - # flake8-2020 - "YTT", - # flake8-bandit - "S", - # flake8-bugbear - "B", - # flake8-builtins - "A", - # flake8-comprehensions - "C4", - # flake8-debugger - "T10", - # flake8-simplify - "SIM", - # isort - "I", - # mccabe - "C90", - # pycodestyle - "E", "W", - # pyflakes - "F", - # pygrep-hooks - "PGH", - # pyupgrade - "UP", - # ruff - "RUF", - # tryceratops - "TRY", -] -lint.ignore = [ - # LineTooLong - "E501", - # DoNotAssignLambda - "E731", - # avoid specifiying long messages outside the exception class - "TRY003", - # avoid functions which are too complex - "C901", - # avoid uses of Uses of `tarfile.extractall() - "S202", - # B008 Do not perform function call `typer.Argument` in argument defaults - "B008", -] - -[tool.ruff.format] -preview = true - -[tool.coverage.report] -skip_empty = true - -[tool.coverage.run] -branch = true -source = ["pyvcell"] - - -[tool.ruff.per-file-ignores] -"tests/*" = ["S101"] From 52cd45ae78bb22e4422ca44b8837023aa02714a9 Mon Sep 17 00:00:00 2001 From: "spaceBearAmadeus (Alex)" Date: Tue, 25 Feb 2025 12:28:59 -0500 Subject: [PATCH 14/20] chore: moved notebook to notebook option --- poetry.lock | 173 +++++++++++++++++++++++++------------------------ pyproject.toml | 3 +- 2 files changed, 89 insertions(+), 87 deletions(-) diff --git a/poetry.lock b/poetry.lock index 053e63b..1c00130 100644 --- a/poetry.lock +++ b/poetry.lock @@ -19,7 +19,7 @@ description = "High level compatibility layer for multiple asynchronous event lo optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "anyio-4.8.0-py3-none-any.whl", hash = "sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a"}, {file = "anyio-4.8.0.tar.gz", hash = "sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a"}, @@ -43,7 +43,7 @@ description = "Disable App Nap on macOS >= 10.9" optional = true python-versions = ">=3.6" groups = ["main"] -markers = "extra == \"dev\" and platform_system == \"Darwin\"" +markers = "extra == \"dev\" and platform_system == \"Darwin\" or extra == \"notebook\" and platform_system == \"Darwin\"" files = [ {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, @@ -56,7 +56,7 @@ description = "Argon2 for Python" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"}, {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"}, @@ -78,7 +78,7 @@ description = "Low-level CFFI bindings for Argon2" optional = true python-versions = ">=3.6" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" 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"}, @@ -117,7 +117,7 @@ description = "Better dates & times for Python" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, @@ -149,7 +149,7 @@ description = "Annotate AST trees with source code positions" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"bootstrap\"" +markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" files = [ {file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2"}, {file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7"}, @@ -166,7 +166,7 @@ description = "Simple LRU cache for asyncio" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"}, {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"}, @@ -202,7 +202,7 @@ description = "Internationalization utilities" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"docs\"" +markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"docs\"" files = [ {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, @@ -218,7 +218,7 @@ description = "Screen-scraping library" optional = true python-versions = ">=3.7.0" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "beautifulsoup4-4.13.3-py3-none-any.whl", hash = "sha256:99045d7d3f08f91f0d656bc9b7efbae189426cd913d830294a15eefa0ea4df16"}, {file = "beautifulsoup4-4.13.3.tar.gz", hash = "sha256:1bd32405dacc920b42b83ba01644747ed77456a65760e285fbc47633ceddaf8b"}, @@ -257,7 +257,7 @@ description = "An easy safelist-based HTML-sanitizing tool." optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e"}, {file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f"}, @@ -302,7 +302,7 @@ description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" groups = ["main"] -markers = "platform_python_implementation != \"PyPy\" or extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\" or platform_python_implementation != \"PyPy\"" 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"}, @@ -526,7 +526,7 @@ description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" groups = ["main"] -markers = "extra == \"dev\" or platform_system == \"Windows\" or extra == \"bootstrap\" and sys_platform == \"win32\" or extra == \"docs\"" +markers = "extra == \"dev\" or platform_system == \"Windows\" or extra == \"notebook\" and sys_platform == \"win32\" or extra == \"docs\" or extra == \"ipython\" and sys_platform == \"win32\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -539,7 +539,7 @@ description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus- optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, @@ -782,7 +782,7 @@ description = "An implementation of the Debug Adapter Protocol for Python" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "debugpy-1.8.12-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:a2ba7ffe58efeae5b8fad1165357edfe01464f9aef25e814e891ec690e7dd82a"}, {file = "debugpy-1.8.12-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbbd4149c4fc5e7d508ece083e78c17442ee13b0e69bfa6bd63003e486770f45"}, @@ -819,7 +819,7 @@ description = "Decorators for Humans" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"bootstrap\"" +markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" files = [ {file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a"}, {file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360"}, @@ -832,7 +832,7 @@ description = "XML bomb protection for Python stdlib modules" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, @@ -885,7 +885,7 @@ description = "Backport of PEP 654 (exception groups)" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "(extra == \"dev\" or extra == \"bootstrap\") and python_version < \"3.11\"" +markers = "(extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\") and python_version < \"3.11\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -901,7 +901,7 @@ description = "Get the currently executing AST node of a frame, and other inform optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"bootstrap\"" +markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" files = [ {file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa"}, {file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755"}, @@ -930,7 +930,7 @@ description = "Fastest Python implementation of JSON schema" optional = true python-versions = "*" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667"}, {file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4"}, @@ -1038,7 +1038,7 @@ description = "Validates fully-qualified domain names against RFC 1123, so that optional = true python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"}, {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"}, @@ -1102,7 +1102,7 @@ description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, @@ -1154,7 +1154,7 @@ description = "A minimal low-level HTTP client." optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, @@ -1177,7 +1177,7 @@ description = "The next generation HTTP client." optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, @@ -1247,7 +1247,7 @@ description = "IPython Kernel for Jupyter" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, @@ -1282,7 +1282,7 @@ description = "IPython: Productive Interactive Computing" optional = true python-versions = ">=3.10" groups = ["main"] -markers = "extra == \"dev\" or extra == \"bootstrap\"" +markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" files = [ {file = "ipython-8.32.0-py3-none-any.whl", hash = "sha256:cae85b0c61eff1fc48b0a8002de5958b6528fa9c8defb1894da63f42613708aa"}, {file = "ipython-8.32.0.tar.gz", hash = "sha256:be2c91895b0b9ea7ba49d33b23e2040c352b33eb6a519cca7ce6e0c743444251"}, @@ -1322,7 +1322,7 @@ description = "Operations with ISO 8601 durations" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, @@ -1338,7 +1338,7 @@ description = "An autocompletion tool for Python that can be used for text edito optional = true python-versions = ">=3.6" groups = ["main"] -markers = "extra == \"dev\" or extra == \"bootstrap\"" +markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" files = [ {file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9"}, {file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0"}, @@ -1359,7 +1359,7 @@ description = "A very fast and expressive template engine." optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"dev\" or extra == \"docs\"" +markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"docs\"" files = [ {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"}, @@ -1378,7 +1378,7 @@ description = "A Python implementation of the JSON5 data format." optional = true python-versions = ">=3.8.0" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "json5-0.10.0-py3-none-any.whl", hash = "sha256:19b23410220a7271e8377f81ba8aacba2fdd56947fbb137ee5977cbe1f5e8dfa"}, {file = "json5-0.10.0.tar.gz", hash = "sha256:e66941c8f0a02026943c52c2eb34ebeb2a6f819a0be05920a6f5243cd30fd559"}, @@ -1394,7 +1394,7 @@ description = "Identify specific nodes in a JSON document (RFC 6901)" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, @@ -1407,7 +1407,7 @@ description = "An implementation of JSON Schema validation for Python" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, @@ -1438,7 +1438,7 @@ description = "The JSON Schema meta-schemas and vocabularies, exposed as a Regis optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf"}, {file = "jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272"}, @@ -1454,7 +1454,7 @@ description = "Jupyter protocol implementation and client libraries" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, @@ -1478,7 +1478,7 @@ description = "Jupyter core package. A base package on which Jupyter projects re optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, @@ -1500,7 +1500,7 @@ description = "Jupyter Event System library" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb"}, {file = "jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b"}, @@ -1528,7 +1528,7 @@ description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab se optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001"}, {file = "jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da"}, @@ -1544,7 +1544,7 @@ description = "The backend—i.e. core services, APIs, and REST endpoints—to J optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "jupyter_server-2.15.0-py3-none-any.whl", hash = "sha256:872d989becf83517012ee669f09604aa4a28097c0bd90b2f424310156c2cdae3"}, {file = "jupyter_server-2.15.0.tar.gz", hash = "sha256:9d446b8697b4f7337a1b7cdcac40778babdd93ba614b6d68ab1c0c918f1c4084"}, @@ -1582,7 +1582,7 @@ description = "A Jupyter Server Extension Providing Terminals." optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, @@ -1603,7 +1603,7 @@ description = "JupyterLab computational environment" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "jupyterlab-4.3.5-py3-none-any.whl", hash = "sha256:571bbdee20e4c5321ab5195bc41cf92a75a5cff886be5e57ce78dfa37a5e9fdb"}, {file = "jupyterlab-4.3.5.tar.gz", hash = "sha256:c779bf72ced007d7d29d5bcef128e7fdda96ea69299e19b04a43635a7d641f9d"}, @@ -1639,7 +1639,7 @@ description = "Pygments theme using JupyterLab CSS variables" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, @@ -1652,7 +1652,7 @@ description = "A set of server components for JupyterLab and JupyterLab like app optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" 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"}, @@ -1828,7 +1828,7 @@ description = "Safely add untrusted strings to HTML/XML markup." optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\" or extra == \"docs\"" +markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"docs\"" 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"}, @@ -1958,7 +1958,7 @@ description = "Inline Matplotlib backend for Jupyter" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"bootstrap\"" +markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" 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"}, @@ -1999,7 +1999,7 @@ description = "A sane and fast Markdown parser with useful plugins and renderers optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "mistune-3.1.2-py3-none-any.whl", hash = "sha256:4b47731332315cdca99e0ded46fc0004001c1299ff773dfb48fbe1fd226de319"}, {file = "mistune-3.1.2.tar.gz", hash = "sha256:733bf018ba007e8b5f2d3a9eb624034f6ee26c4ea769a98ec533ee111d504dff"}, @@ -2242,7 +2242,7 @@ description = "A client library for executing notebooks. Formerly nbconvert's Ex optional = true python-versions = ">=3.9.0" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d"}, {file = "nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193"}, @@ -2266,7 +2266,7 @@ description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Ou optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b"}, {file = "nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582"}, @@ -2304,7 +2304,7 @@ description = "The Jupyter Notebook format" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, @@ -2327,7 +2327,7 @@ description = "Patch asyncio to allow nested event loops" optional = true python-versions = ">=3.5" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, @@ -2353,7 +2353,7 @@ description = "Jupyter Notebook - A web-based notebook environment for interacti optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "notebook-7.3.2-py3-none-any.whl", hash = "sha256:e5f85fc59b69d3618d73cf27544418193ff8e8058d5bf61d315ce4f473556288"}, {file = "notebook-7.3.2.tar.gz", hash = "sha256:705e83a1785f45b383bf3ee13cb76680b92d24f56fb0c7d2136fe1d850cd3ca8"}, @@ -2378,7 +2378,7 @@ description = "A shim layer for notebook traits and config" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, @@ -2675,7 +2675,7 @@ description = "Utilities for writing pandoc filters in python" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, @@ -2688,7 +2688,7 @@ description = "A Python Parser" optional = true python-versions = ">=3.6" groups = ["main"] -markers = "extra == \"dev\" or extra == \"bootstrap\"" +markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" files = [ {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, @@ -2718,7 +2718,7 @@ description = "Pexpect allows easy control of interactive console applications." optional = true python-versions = "*" groups = ["main"] -markers = "extra == \"dev\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\") or extra == \"bootstrap\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\")" +markers = "extra == \"dev\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\") or extra == \"notebook\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\") or extra == \"ipython\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\")" files = [ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, @@ -2899,7 +2899,7 @@ description = "Python client for the Prometheus monitoring system." optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "prometheus_client-0.21.1-py3-none-any.whl", hash = "sha256:594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301"}, {file = "prometheus_client-0.21.1.tar.gz", hash = "sha256:252505a722ac04b0456be05c05f75f45d760c2911ffc45f2a06bcaed9f3ae3fb"}, @@ -2915,7 +2915,7 @@ description = "Library for building powerful interactive command lines in Python optional = true python-versions = ">=3.8.0" groups = ["main"] -markers = "extra == \"dev\" or extra == \"bootstrap\"" +markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" files = [ {file = "prompt_toolkit-3.0.50-py3-none-any.whl", hash = "sha256:9b6427eb19e479d98acff65196a307c555eb567989e6d88ebbb1b509d9779198"}, {file = "prompt_toolkit-3.0.50.tar.gz", hash = "sha256:544748f3860a2623ca5cd6d2795e7a14f3d0e1c3c9728359013f79877fc89bab"}, @@ -2931,7 +2931,7 @@ description = "Cross-platform lib for process and system monitoring in Python. optional = true python-versions = ">=3.6" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" 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"}, @@ -2956,7 +2956,7 @@ description = "Run a subprocess in a pseudo terminal" optional = true python-versions = "*" groups = ["main"] -markers = "extra == \"dev\" and os_name != \"nt\" or extra == \"dev\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\") or extra == \"bootstrap\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\")" +markers = "(extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\") and (extra == \"dev\" or extra == \"notebook\" or sys_platform != \"win32\" and sys_platform != \"emscripten\") and (os_name != \"nt\" or sys_platform != \"win32\" and sys_platform != \"emscripten\")" files = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, @@ -2969,7 +2969,7 @@ description = "Safely evaluate AST nodes without side effects" optional = true python-versions = "*" groups = ["main"] -markers = "extra == \"dev\" or extra == \"bootstrap\"" +markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" files = [ {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, @@ -2985,7 +2985,7 @@ description = "C parser in Python" optional = false python-versions = ">=3.8" groups = ["main"] -markers = "platform_python_implementation != \"PyPy\" or extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\" or platform_python_implementation != \"PyPy\"" files = [ {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, @@ -3262,7 +3262,7 @@ description = "JSON Log Formatter for the Python Logging Package" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "python_json_logger-3.2.1-py3-none-any.whl", hash = "sha256:cdc17047eb5374bd311e748b42f99d71223f3b0e186f4206cc5d52aefe85b090"}, {file = "python_json_logger-3.2.1.tar.gz", hash = "sha256:8eb0554ea17cb75b05d2848bc14fb02fbdbd9d6972120781b974380bfa162008"}, @@ -3400,7 +3400,7 @@ description = "Python for Window Extensions" optional = true python-versions = "*" groups = ["main"] -markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\" and extra == \"dev\"" +markers = "extra == \"dev\" and sys_platform == \"win32\" and platform_python_implementation != \"PyPy\" or extra == \"notebook\" and sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"" files = [ {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, {file = "pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e"}, @@ -3429,7 +3429,7 @@ description = "Pseudo terminal support for Windows from Python." optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\" and os_name == \"nt\"" +markers = "(extra == \"dev\" or extra == \"notebook\") 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"}, @@ -3447,7 +3447,7 @@ description = "YAML parser and emitter for Python" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"docs\"" +markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"docs\"" 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"}, @@ -3527,7 +3527,7 @@ description = "Python bindings for 0MQ" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "pyzmq-26.2.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:f39d1227e8256d19899d953e6e19ed2ccb689102e6d85e024da5acf410f301eb"}, {file = "pyzmq-26.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a23948554c692df95daed595fdd3b76b420a4939d7a8a28d6d7dea9711878641"}, @@ -3650,7 +3650,7 @@ description = "JSON Referencing + Python" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0"}, {file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa"}, @@ -3814,7 +3814,7 @@ description = "A pure python RFC3339 validator" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, @@ -3830,7 +3830,7 @@ description = "Pure python rfc3986 validator" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, @@ -3863,7 +3863,7 @@ description = "Python bindings to Rust's persistent data structures (rpds)" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "rpds_py-0.23.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2a54027554ce9b129fc3d633c92fa33b30de9f08bc61b32c053dc9b537266fed"}, {file = "rpds_py-0.23.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b5ef909a37e9738d146519657a1aab4584018746a18f71c692f2f22168ece40c"}, @@ -3992,7 +3992,7 @@ description = "Send file to trash natively under Mac OS X, Windows and Linux" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, @@ -4010,7 +4010,7 @@ description = "Easily download, build, install, upgrade, and uninstall Python pa optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "setuptools-75.8.0-py3-none-any.whl", hash = "sha256:e3982f444617239225d675215d51f6ba05f845d4eec313da4418fdbb56fb27e3"}, {file = "setuptools-75.8.0.tar.gz", hash = "sha256:c5afc8f407c626b8313a86e10311dd3f661c6cd9c09d4bf8c15c0e11f9f2b0e6"}, @@ -4056,7 +4056,7 @@ description = "Sniff out which async library your code is running under" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, @@ -4069,7 +4069,7 @@ description = "A modern CSS selector implementation for Beautiful Soup." optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"}, {file = "soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb"}, @@ -4082,7 +4082,7 @@ description = "Extract data from python stack frames and tracebacks for informat optional = true python-versions = "*" groups = ["main"] -markers = "extra == \"dev\" or extra == \"bootstrap\"" +markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" files = [ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, @@ -4103,7 +4103,7 @@ description = "Tornado websocket backend for the Xterm.js Javascript terminal em optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, @@ -4126,7 +4126,7 @@ description = "A tiny CSS parser" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, @@ -4146,7 +4146,7 @@ description = "A lil' TOML parser" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" and python_full_version <= \"3.11.0a6\"" +markers = "extra == \"dev\" and python_full_version <= \"3.11.0a6\" or extra == \"notebook\" and 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"}, @@ -4189,7 +4189,7 @@ description = "Tornado is a Python web framework and asynchronous networking lib optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1"}, {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803"}, @@ -4240,7 +4240,7 @@ description = "Traitlets Python configuration system" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"bootstrap\"" +markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" files = [ {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, @@ -4275,7 +4275,7 @@ description = "Typing stubs for python-dateutil" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" 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"}, @@ -4329,7 +4329,7 @@ description = "RFC 6570 URI Template Processor" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, @@ -4471,7 +4471,7 @@ description = "Measures the displayed width of unicode strings in a terminal" optional = true python-versions = "*" groups = ["main"] -markers = "extra == \"dev\" or extra == \"bootstrap\"" +markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" files = [ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, @@ -4484,7 +4484,7 @@ description = "A library for working with the color formats defined by HTML and optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9"}, {file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6"}, @@ -4497,7 +4497,7 @@ description = "Character encoding aliases for legacy web content" optional = true python-versions = "*" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" files = [ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, @@ -4510,7 +4510,7 @@ description = "WebSocket client for Python with low level API options" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\"" +markers = "extra == \"dev\" or extra == \"notebook\"" 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"}, @@ -4544,11 +4544,12 @@ docs = ["numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "sphinx", "sphi jupyter = ["ipytree (>=0.2.2)", "ipywidgets (>=8.0.0)", "notebook"] [extras] -bootstrap = ["ipython"] dev = ["deptry", "mypy", "notebook", "pre-commit", "pytest", "pytest-cov", "tox", "types-requests", "types-toml"] docs = ["griffe", "mkdocs", "mkdocs-material", "mkdocstrings"] +ipython = ["ipython"] +notebook = ["ipython", "notebook"] [metadata] lock-version = "2.1" python-versions = ">=3.10,<4.0" -content-hash = "b060302ed63851bde102d0ff048d3692f89b432ab981a274e0cb8b8f20ea0e5c" +content-hash = "f67e2737cb3166f020c42ccbe84dfd4685df4c70da4bf38e7297a32fc0c1187b" diff --git a/pyproject.toml b/pyproject.toml index 3f6664d..6277e5d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -72,7 +72,8 @@ ipython = { version = "*", optional = true } [tool.poetry.extras] dev = ["pytest", "pytest-cov", "deptry", "mypy", "pre-commit", "tox", "types-requests", "notebook", "types-toml"] docs = ["mkdocs", "mkdocs-material", "mkdocstrings", "griffe"] -bootstrap = ["ipython"] +ipython = ["ipython"] +notebook = ["ipython", "notebook"] [build-system] requires = ["poetry-core>=1.0.0"] From 9dc4acafc4b47fd8058e66465dfecae3a5fd409b Mon Sep 17 00:00:00 2001 From: "spaceBearAmadeus (Alex)" Date: Tue, 25 Feb 2025 12:37:23 -0500 Subject: [PATCH 15/20] chore: added original groups to poetry spot and refactored optional --- poetry.lock | 412 ++++++++++++++++++++++--------------------------- pyproject.toml | 46 +++--- 2 files changed, 209 insertions(+), 249 deletions(-) diff --git a/poetry.lock b/poetry.lock index 1c00130..5e2e6dc 100644 --- a/poetry.lock +++ b/poetry.lock @@ -19,7 +19,7 @@ description = "High level compatibility layer for multiple asynchronous event lo optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "anyio-4.8.0-py3-none-any.whl", hash = "sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a"}, {file = "anyio-4.8.0.tar.gz", hash = "sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a"}, @@ -43,7 +43,7 @@ description = "Disable App Nap on macOS >= 10.9" optional = true python-versions = ">=3.6" groups = ["main"] -markers = "extra == \"dev\" and platform_system == \"Darwin\" or extra == \"notebook\" and platform_system == \"Darwin\"" +markers = "extra == \"notebook\" and platform_system == \"Darwin\"" files = [ {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, @@ -56,7 +56,7 @@ description = "Argon2 for Python" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"}, {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"}, @@ -78,7 +78,7 @@ description = "Low-level CFFI bindings for Argon2" optional = true python-versions = ">=3.6" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" 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"}, @@ -117,7 +117,7 @@ description = "Better dates & times for Python" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, @@ -149,7 +149,7 @@ description = "Annotate AST trees with source code positions" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" +markers = "extra == \"ipython\" or extra == \"notebook\"" files = [ {file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2"}, {file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7"}, @@ -166,7 +166,7 @@ description = "Simple LRU cache for asyncio" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"}, {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"}, @@ -199,14 +199,14 @@ tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] name = "babel" version = "2.17.0" description = "Internationalization utilities" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"docs\"" +groups = ["main", "docs"] files = [ {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, ] +markers = {main = "extra == \"notebook\""} [package.extras] dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata"] @@ -218,7 +218,7 @@ description = "Screen-scraping library" optional = true python-versions = ">=3.7.0" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "beautifulsoup4-4.13.3-py3-none-any.whl", hash = "sha256:99045d7d3f08f91f0d656bc9b7efbae189426cd913d830294a15eefa0ea4df16"}, {file = "beautifulsoup4-4.13.3.tar.gz", hash = "sha256:1bd32405dacc920b42b83ba01644747ed77456a65760e285fbc47633ceddaf8b"}, @@ -257,7 +257,7 @@ description = "An easy safelist-based HTML-sanitizing tool." optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e"}, {file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f"}, @@ -274,10 +274,9 @@ css = ["tinycss2 (>=1.1.0,<1.5)"] name = "cachetools" version = "5.5.2" description = "Extensible memoizing collections and decorators" -optional = true +optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a"}, {file = "cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4"}, @@ -289,7 +288,7 @@ version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" -groups = ["main"] +groups = ["main", "docs"] files = [ {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, @@ -302,7 +301,7 @@ description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\" or platform_python_implementation != \"PyPy\"" +markers = "platform_python_implementation != \"PyPy\" or extra == \"notebook\"" 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"}, @@ -380,10 +379,9 @@ pycparser = "*" name = "cfgv" version = "3.4.0" description = "Validate configuration and produce human readable error messages." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, @@ -393,10 +391,9 @@ files = [ name = "chardet" version = "5.2.0" description = "Universal encoding detector for Python 3" -optional = true +optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970"}, {file = "chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7"}, @@ -408,7 +405,7 @@ version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" -groups = ["main"] +groups = ["main", "docs"] files = [ {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, @@ -510,7 +507,7 @@ version = "8.1.8" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" -groups = ["main"] +groups = ["main", "dev", "docs"] files = [ {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, @@ -525,12 +522,12 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["main"] -markers = "extra == \"dev\" or platform_system == \"Windows\" or extra == \"notebook\" and sys_platform == \"win32\" or extra == \"docs\" or extra == \"ipython\" and sys_platform == \"win32\"" +groups = ["main", "dev", "docs"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] +markers = {main = "extra == \"ipython\" and sys_platform == \"win32\" or platform_system == \"Windows\" or extra == \"notebook\" and sys_platform == \"win32\""} [[package]] name = "comm" @@ -539,7 +536,7 @@ description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus- optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, @@ -629,10 +626,9 @@ test-no-images = ["pytest", "pytest-cov", "pytest-rerunfailures", "pytest-xdist" name = "coverage" version = "7.6.12" description = "Code coverage measurement for Python" -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "coverage-7.6.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:704c8c8c6ce6569286ae9622e534b4f5b9759b6f2cd643f1c1a61f666d534fe8"}, {file = "coverage-7.6.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ad7525bf0241e5502168ae9c643a2f6c219fa0a283001cee4cf23a9b7da75879"}, @@ -782,7 +778,7 @@ description = "An implementation of the Debug Adapter Protocol for Python" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "debugpy-1.8.12-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:a2ba7ffe58efeae5b8fad1165357edfe01464f9aef25e814e891ec690e7dd82a"}, {file = "debugpy-1.8.12-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbbd4149c4fc5e7d508ece083e78c17442ee13b0e69bfa6bd63003e486770f45"}, @@ -819,7 +815,7 @@ description = "Decorators for Humans" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" +markers = "extra == \"ipython\" or extra == \"notebook\"" files = [ {file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a"}, {file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360"}, @@ -832,7 +828,7 @@ description = "XML bomb protection for Python stdlib modules" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, @@ -842,10 +838,9 @@ files = [ name = "deptry" version = "0.16.2" description = "A command line utility to check for unused, missing and transitive dependencies in a Python project." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "deptry-0.16.2-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:24bfbae07bd6533c852c795e8d88d05a8ad0801bec0d3662e1a37db763c52540"}, {file = "deptry-0.16.2-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:fc881688a2eaeafe51c0617d32a6535057bccdb74559cc667109f48f81cd976e"}, @@ -869,10 +864,9 @@ tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} name = "distlib" version = "0.3.9" description = "Distribution utilities" -optional = true +optional = false python-versions = "*" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, @@ -882,14 +876,14 @@ files = [ name = "exceptiongroup" version = "1.2.2" description = "Backport of PEP 654 (exception groups)" -optional = true +optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "(extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\") and python_version < \"3.11\"" +groups = ["main", "dev"] files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, ] +markers = {main = "(extra == \"ipython\" or extra == \"notebook\") and python_version < \"3.11\"", dev = "python_version < \"3.11\""} [package.extras] test = ["pytest (>=6)"] @@ -901,7 +895,7 @@ description = "Get the currently executing AST node of a frame, and other inform optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" +markers = "extra == \"ipython\" or extra == \"notebook\"" files = [ {file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa"}, {file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755"}, @@ -930,7 +924,7 @@ description = "Fastest Python implementation of JSON schema" optional = true python-versions = "*" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667"}, {file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4"}, @@ -943,10 +937,9 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc name = "filelock" version = "3.17.0" description = "A platform independent file lock." -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "filelock-3.17.0-py3-none-any.whl", hash = "sha256:533dc2f7ba78dc2f0f531fc6c4940addf7b70a481e269a5a3b93be94ffbe8338"}, {file = "filelock-3.17.0.tar.gz", hash = "sha256:ee4e77401ef576ebb38cd7f13b9b28893194acc20a8e68e18730ba9c0e54660e"}, @@ -1038,7 +1031,7 @@ description = "Validates fully-qualified domain names against RFC 1123, so that optional = true python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"}, {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"}, @@ -1064,10 +1057,9 @@ six = ">=1.8.0" name = "ghp-import" version = "2.1.0" description = "Copy your docs directly to the gh-pages branch." -optional = true +optional = false python-versions = "*" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, @@ -1083,10 +1075,9 @@ dev = ["flake8", "markdown", "twine", "wheel"] name = "griffe" version = "1.5.7" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "griffe-1.5.7-py3-none-any.whl", hash = "sha256:4af8ec834b64de954d447c7b6672426bb145e71605c74a4e22d510cc79fe7d8b"}, {file = "griffe-1.5.7.tar.gz", hash = "sha256:465238c86deaf1137761f700fb343edd8ffc846d72f6de43c3c345ccdfbebe92"}, @@ -1102,7 +1093,7 @@ description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, @@ -1154,7 +1145,7 @@ description = "A minimal low-level HTTP client." optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, @@ -1177,7 +1168,7 @@ description = "The next generation HTTP client." optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, @@ -1200,10 +1191,9 @@ zstd = ["zstandard (>=0.18.0)"] name = "identify" version = "2.6.8" description = "File identification library for Python" -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "identify-2.6.8-py2.py3-none-any.whl", hash = "sha256:83657f0f766a3c8d0eaea16d4ef42494b39b34629a4b3192a9d020d349b3e255"}, {file = "identify-2.6.8.tar.gz", hash = "sha256:61491417ea2c0c5c670484fd8abbb34de34cdae1e5f39a73ee65e48e4bb663fc"}, @@ -1218,7 +1208,7 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" -groups = ["main"] +groups = ["main", "docs"] files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -1231,10 +1221,9 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -optional = true +optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, @@ -1247,7 +1236,7 @@ description = "IPython Kernel for Jupyter" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, @@ -1282,7 +1271,7 @@ description = "IPython: Productive Interactive Computing" optional = true python-versions = ">=3.10" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" +markers = "extra == \"ipython\" or extra == \"notebook\"" files = [ {file = "ipython-8.32.0-py3-none-any.whl", hash = "sha256:cae85b0c61eff1fc48b0a8002de5958b6528fa9c8defb1894da63f42613708aa"}, {file = "ipython-8.32.0.tar.gz", hash = "sha256:be2c91895b0b9ea7ba49d33b23e2040c352b33eb6a519cca7ce6e0c743444251"}, @@ -1322,7 +1311,7 @@ description = "Operations with ISO 8601 durations" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, @@ -1338,7 +1327,7 @@ description = "An autocompletion tool for Python that can be used for text edito optional = true python-versions = ">=3.6" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" +markers = "extra == \"ipython\" or extra == \"notebook\"" files = [ {file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9"}, {file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0"}, @@ -1356,14 +1345,14 @@ testing = ["Django", "attrs", "colorama", "docopt", "pytest (<9.0.0)"] name = "jinja2" version = "3.1.5" description = "A very fast and expressive template engine." -optional = true +optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"docs\"" +groups = ["main", "docs"] files = [ {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"}, ] +markers = {main = "extra == \"notebook\""} [package.dependencies] MarkupSafe = ">=2.0" @@ -1378,7 +1367,7 @@ description = "A Python implementation of the JSON5 data format." optional = true python-versions = ">=3.8.0" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "json5-0.10.0-py3-none-any.whl", hash = "sha256:19b23410220a7271e8377f81ba8aacba2fdd56947fbb137ee5977cbe1f5e8dfa"}, {file = "json5-0.10.0.tar.gz", hash = "sha256:e66941c8f0a02026943c52c2eb34ebeb2a6f819a0be05920a6f5243cd30fd559"}, @@ -1394,7 +1383,7 @@ description = "Identify specific nodes in a JSON document (RFC 6901)" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, @@ -1407,7 +1396,7 @@ description = "An implementation of JSON Schema validation for Python" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, @@ -1438,7 +1427,7 @@ description = "The JSON Schema meta-schemas and vocabularies, exposed as a Regis optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf"}, {file = "jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272"}, @@ -1454,7 +1443,7 @@ description = "Jupyter protocol implementation and client libraries" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, @@ -1478,7 +1467,7 @@ description = "Jupyter core package. A base package on which Jupyter projects re optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, @@ -1500,7 +1489,7 @@ description = "Jupyter Event System library" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb"}, {file = "jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b"}, @@ -1528,7 +1517,7 @@ description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab se optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001"}, {file = "jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da"}, @@ -1544,7 +1533,7 @@ description = "The backend—i.e. core services, APIs, and REST endpoints—to J optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "jupyter_server-2.15.0-py3-none-any.whl", hash = "sha256:872d989becf83517012ee669f09604aa4a28097c0bd90b2f424310156c2cdae3"}, {file = "jupyter_server-2.15.0.tar.gz", hash = "sha256:9d446b8697b4f7337a1b7cdcac40778babdd93ba614b6d68ab1c0c918f1c4084"}, @@ -1582,7 +1571,7 @@ description = "A Jupyter Server Extension Providing Terminals." optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, @@ -1603,7 +1592,7 @@ description = "JupyterLab computational environment" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "jupyterlab-4.3.5-py3-none-any.whl", hash = "sha256:571bbdee20e4c5321ab5195bc41cf92a75a5cff886be5e57ce78dfa37a5e9fdb"}, {file = "jupyterlab-4.3.5.tar.gz", hash = "sha256:c779bf72ced007d7d29d5bcef128e7fdda96ea69299e19b04a43635a7d641f9d"}, @@ -1639,7 +1628,7 @@ description = "Pygments theme using JupyterLab CSS variables" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, @@ -1652,7 +1641,7 @@ description = "A set of server components for JupyterLab and JupyterLab like app optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" 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"}, @@ -1783,10 +1772,9 @@ files = [ name = "markdown" version = "3.7" description = "Python implementation of John Gruber's Markdown." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803"}, {file = "markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2"}, @@ -1825,10 +1813,9 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] name = "markupsafe" version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"docs\"" +groups = ["main", "docs"] 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"}, @@ -1892,6 +1879,7 @@ files = [ {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, ] +markers = {main = "extra == \"notebook\""} [[package]] name = "matplotlib" @@ -1958,7 +1946,7 @@ description = "Inline Matplotlib backend for Jupyter" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" +markers = "extra == \"ipython\" or extra == \"notebook\"" 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"}, @@ -1983,10 +1971,9 @@ files = [ name = "mergedeep" version = "1.3.4" description = "A deep merge function for 🐍." -optional = true +optional = false python-versions = ">=3.6" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, @@ -1999,7 +1986,7 @@ description = "A sane and fast Markdown parser with useful plugins and renderers optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "mistune-3.1.2-py3-none-any.whl", hash = "sha256:4b47731332315cdca99e0ded46fc0004001c1299ff773dfb48fbe1fd226de319"}, {file = "mistune-3.1.2.tar.gz", hash = "sha256:733bf018ba007e8b5f2d3a9eb624034f6ee26c4ea769a98ec533ee111d504dff"}, @@ -2012,10 +1999,9 @@ typing-extensions = {version = "*", markers = "python_version < \"3.11\""} name = "mkdocs" version = "1.6.1" description = "Project documentation with Markdown." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e"}, {file = "mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2"}, @@ -2044,10 +2030,9 @@ min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-imp name = "mkdocs-autorefs" version = "1.4.0" description = "Automatically link across pages in MkDocs." -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "mkdocs_autorefs-1.4.0-py3-none-any.whl", hash = "sha256:bad19f69655878d20194acd0162e29a89c3f7e6365ffe54e72aa3fd1072f240d"}, {file = "mkdocs_autorefs-1.4.0.tar.gz", hash = "sha256:a9c0aa9c90edbce302c09d050a3c4cb7c76f8b7b2c98f84a7a05f53d00392156"}, @@ -2062,10 +2047,9 @@ mkdocs = ">=1.1" name = "mkdocs-get-deps" version = "0.2.0" description = "MkDocs extension that lists all dependencies according to a mkdocs.yml file" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134"}, {file = "mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c"}, @@ -2080,10 +2064,9 @@ pyyaml = ">=5.1" name = "mkdocs-material" version = "9.6.5" description = "Documentation that simply works" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "mkdocs_material-9.6.5-py3-none-any.whl", hash = "sha256:aad3e6fb860c20870f75fb2a69ef901f1be727891e41adb60b753efcae19453b"}, {file = "mkdocs_material-9.6.5.tar.gz", hash = "sha256:b714679a8c91b0ffe2188e11ed58c44d2523e9c2ae26a29cc652fa7478faa21f"}, @@ -2111,10 +2094,9 @@ recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2. name = "mkdocs-material-extensions" version = "1.3.1" description = "Extension pack for Python Markdown and MkDocs Material." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31"}, {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, @@ -2124,10 +2106,9 @@ files = [ name = "mkdocstrings" version = "0.27.0" description = "Automatic documentation from sources, for MkDocs." -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "mkdocstrings-0.27.0-py3-none-any.whl", hash = "sha256:6ceaa7ea830770959b55a16203ac63da24badd71325b96af950e59fd37366332"}, {file = "mkdocstrings-0.27.0.tar.gz", hash = "sha256:16adca6d6b0a1f9e0c07ff0b02ced8e16f228a9d65a37c063ec4c14d7b76a657"}, @@ -2153,10 +2134,9 @@ python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] name = "mkdocstrings-python" version = "1.13.0" description = "A Python handler for mkdocstrings." -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "mkdocstrings_python-1.13.0-py3-none-any.whl", hash = "sha256:b88bbb207bab4086434743849f8e796788b373bd32e7bfefbf8560ac45d88f97"}, {file = "mkdocstrings_python-1.13.0.tar.gz", hash = "sha256:2dbd5757e8375b9720e81db16f52f1856bf59905428fd7ef88005d1370e2f64c"}, @@ -2171,10 +2151,9 @@ mkdocstrings = ">=0.26" name = "mypy" version = "1.15.0" description = "Optional static typing for Python" -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "mypy-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:979e4e1a006511dacf628e36fadfecbcc0160a8af6ca7dad2f5025529e082c13"}, {file = "mypy-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c4bb0e1bd29f7d34efcccd71cf733580191e9a264a2202b0239da95984c5b559"}, @@ -2226,10 +2205,9 @@ reports = ["lxml"] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." -optional = true +optional = false python-versions = ">=3.5" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, @@ -2242,7 +2220,7 @@ description = "A client library for executing notebooks. Formerly nbconvert's Ex optional = true python-versions = ">=3.9.0" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d"}, {file = "nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193"}, @@ -2266,7 +2244,7 @@ description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Ou optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b"}, {file = "nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582"}, @@ -2304,7 +2282,7 @@ description = "The Jupyter Notebook format" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, @@ -2327,7 +2305,7 @@ description = "Patch asyncio to allow nested event loops" optional = true python-versions = ">=3.5" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, @@ -2337,10 +2315,9 @@ files = [ name = "nodeenv" version = "1.9.1" description = "Node.js virtual environment builder" -optional = true +optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, @@ -2353,7 +2330,7 @@ description = "Jupyter Notebook - A web-based notebook environment for interacti optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "notebook-7.3.2-py3-none-any.whl", hash = "sha256:e5f85fc59b69d3618d73cf27544418193ff8e8058d5bf61d315ce4f473556288"}, {file = "notebook-7.3.2.tar.gz", hash = "sha256:705e83a1785f45b383bf3ee13cb76680b92d24f56fb0c7d2136fe1d850cd3ca8"}, @@ -2378,7 +2355,7 @@ description = "A shim layer for notebook traits and config" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, @@ -2645,7 +2622,7 @@ version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" -groups = ["main"] +groups = ["main", "dev", "docs"] files = [ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, @@ -2655,10 +2632,9 @@ files = [ name = "paginate" version = "0.5.7" description = "Divides large result sets into pages for easier browsing" -optional = true +optional = false python-versions = "*" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"}, {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"}, @@ -2675,7 +2651,7 @@ description = "Utilities for writing pandoc filters in python" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, @@ -2688,7 +2664,7 @@ description = "A Python Parser" optional = true python-versions = ">=3.6" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" +markers = "extra == \"ipython\" or extra == \"notebook\"" files = [ {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, @@ -2702,10 +2678,9 @@ testing = ["docopt", "pytest"] name = "pathspec" version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, @@ -2718,7 +2693,7 @@ description = "Pexpect allows easy control of interactive console applications." optional = true python-versions = "*" groups = ["main"] -markers = "extra == \"dev\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\") or extra == \"notebook\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\") or extra == \"ipython\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\")" +markers = "extra == \"ipython\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\") or extra == \"notebook\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\")" files = [ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, @@ -2822,7 +2797,7 @@ version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" -groups = ["main"] +groups = ["main", "dev", "docs"] files = [ {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, @@ -2837,10 +2812,9 @@ type = ["mypy (>=1.11.2)"] name = "pluggy" version = "1.5.0" description = "plugin and hook calling mechanisms for python" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, @@ -2876,10 +2850,9 @@ xxhash = ["xxhash (>=1.4.3)"] name = "pre-commit" version = "3.8.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "pre_commit-3.8.0-py2.py3-none-any.whl", hash = "sha256:9a90a53bf82fdd8778d58085faf8d83df56e40dfe18f45b19446e26bf1b3a63f"}, {file = "pre_commit-3.8.0.tar.gz", hash = "sha256:8bb6494d4a20423842e198980c9ecf9f96607a07ea29549e180eef9ae80fe7af"}, @@ -2899,7 +2872,7 @@ description = "Python client for the Prometheus monitoring system." optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "prometheus_client-0.21.1-py3-none-any.whl", hash = "sha256:594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301"}, {file = "prometheus_client-0.21.1.tar.gz", hash = "sha256:252505a722ac04b0456be05c05f75f45d760c2911ffc45f2a06bcaed9f3ae3fb"}, @@ -2915,7 +2888,7 @@ description = "Library for building powerful interactive command lines in Python optional = true python-versions = ">=3.8.0" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" +markers = "extra == \"ipython\" or extra == \"notebook\"" files = [ {file = "prompt_toolkit-3.0.50-py3-none-any.whl", hash = "sha256:9b6427eb19e479d98acff65196a307c555eb567989e6d88ebbb1b509d9779198"}, {file = "prompt_toolkit-3.0.50.tar.gz", hash = "sha256:544748f3860a2623ca5cd6d2795e7a14f3d0e1c3c9728359013f79877fc89bab"}, @@ -2931,7 +2904,7 @@ description = "Cross-platform lib for process and system monitoring in Python. optional = true python-versions = ">=3.6" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" 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"}, @@ -2956,7 +2929,7 @@ description = "Run a subprocess in a pseudo terminal" optional = true python-versions = "*" groups = ["main"] -markers = "(extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\") and (extra == \"dev\" or extra == \"notebook\" or sys_platform != \"win32\" and sys_platform != \"emscripten\") and (os_name != \"nt\" or sys_platform != \"win32\" and sys_platform != \"emscripten\")" +markers = "extra == \"ipython\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\") or extra == \"notebook\" and os_name != \"nt\" or extra == \"notebook\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\")" files = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, @@ -2969,7 +2942,7 @@ description = "Safely evaluate AST nodes without side effects" optional = true python-versions = "*" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" +markers = "extra == \"ipython\" or extra == \"notebook\"" files = [ {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, @@ -2985,7 +2958,7 @@ description = "C parser in Python" optional = false python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\" or platform_python_implementation != \"PyPy\"" +markers = "platform_python_implementation != \"PyPy\" or extra == \"notebook\"" files = [ {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, @@ -3131,7 +3104,7 @@ version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" -groups = ["main"] +groups = ["main", "docs"] files = [ {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, @@ -3144,10 +3117,9 @@ windows-terminal = ["colorama (>=0.4.6)"] name = "pymdown-extensions" version = "10.14.3" description = "Extension pack for Python Markdown." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "pymdown_extensions-10.14.3-py3-none-any.whl", hash = "sha256:05e0bee73d64b9c71a4ae17c72abc2f700e8bc8403755a00580b49a4e9f189e9"}, {file = "pymdown_extensions-10.14.3.tar.gz", hash = "sha256:41e576ce3f5d650be59e900e4ceff231e0aed2a88cf30acaee41e02f063a061b"}, @@ -3179,10 +3151,9 @@ diagrams = ["jinja2", "railroad-diagrams"] name = "pyproject-api" version = "1.9.0" description = "API to interact with the python pyproject.toml based projects" -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "pyproject_api-1.9.0-py3-none-any.whl", hash = "sha256:326df9d68dea22d9d98b5243c46e3ca3161b07a1b9b18e213d1e24fd0e605766"}, {file = "pyproject_api-1.9.0.tar.gz", hash = "sha256:7e8a9854b2dfb49454fae421cb86af43efbb2b2454e5646ffb7623540321ae6e"}, @@ -3200,10 +3171,9 @@ testing = ["covdefaults (>=2.3)", "pytest (>=8.3.4)", "pytest-cov (>=6)", "pytes name = "pytest" version = "7.4.4" description = "pytest: simple powerful testing with Python" -optional = true +optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, @@ -3224,10 +3194,9 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no name = "pytest-cov" version = "4.1.0" description = "Pytest plugin for measuring coverage." -optional = true +optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, @@ -3246,7 +3215,7 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main"] +groups = ["main", "docs"] files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -3262,7 +3231,7 @@ description = "JSON Log Formatter for the Python Logging Package" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "python_json_logger-3.2.1-py3-none-any.whl", hash = "sha256:cdc17047eb5374bd311e748b42f99d71223f3b0e186f4206cc5d52aefe85b090"}, {file = "python_json_logger-3.2.1.tar.gz", hash = "sha256:8eb0554ea17cb75b05d2848bc14fb02fbdbd9d6972120781b974380bfa162008"}, @@ -3400,7 +3369,7 @@ description = "Python for Window Extensions" optional = true python-versions = "*" groups = ["main"] -markers = "extra == \"dev\" and sys_platform == \"win32\" and platform_python_implementation != \"PyPy\" or extra == \"notebook\" and sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"" +markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\" and extra == \"notebook\"" files = [ {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, {file = "pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e"}, @@ -3429,7 +3398,7 @@ description = "Pseudo terminal support for Windows from Python." optional = true python-versions = ">=3.9" groups = ["main"] -markers = "(extra == \"dev\" or extra == \"notebook\") and os_name == \"nt\"" +markers = "extra == \"notebook\" 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"}, @@ -3444,10 +3413,9 @@ files = [ name = "pyyaml" version = "6.0.2" description = "YAML parser and emitter for Python" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"docs\"" +groups = ["main", "dev", "docs"] 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"}, @@ -3503,15 +3471,15 @@ files = [ {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] +markers = {main = "extra == \"notebook\""} [[package]] name = "pyyaml-env-tag" version = "0.1" description = "A custom YAML tag for referencing environment variables in YAML files. " -optional = true +optional = false python-versions = ">=3.6" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, @@ -3527,7 +3495,7 @@ description = "Python bindings for 0MQ" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "pyzmq-26.2.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:f39d1227e8256d19899d953e6e19ed2ccb689102e6d85e024da5acf410f301eb"}, {file = "pyzmq-26.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a23948554c692df95daed595fdd3b76b420a4939d7a8a28d6d7dea9711878641"}, @@ -3650,7 +3618,7 @@ description = "JSON Referencing + Python" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0"}, {file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa"}, @@ -3665,10 +3633,9 @@ typing-extensions = {version = ">=4.4.0", markers = "python_version < \"3.13\""} name = "regex" version = "2024.11.6" description = "Alternative regular expression module, to replace re." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"}, {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"}, @@ -3772,7 +3739,7 @@ version = "2.32.3" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" -groups = ["main"] +groups = ["main", "docs"] files = [ {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, @@ -3814,7 +3781,7 @@ description = "A pure python RFC3339 validator" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, @@ -3830,7 +3797,7 @@ description = "Pure python rfc3986 validator" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, @@ -3863,7 +3830,7 @@ description = "Python bindings to Rust's persistent data structures (rpds)" optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "rpds_py-0.23.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2a54027554ce9b129fc3d633c92fa33b30de9f08bc61b32c053dc9b537266fed"}, {file = "rpds_py-0.23.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b5ef909a37e9738d146519657a1aab4584018746a18f71c692f2f22168ece40c"}, @@ -3992,7 +3959,7 @@ description = "Send file to trash natively under Mac OS X, Windows and Linux" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, @@ -4010,7 +3977,7 @@ description = "Easily download, build, install, upgrade, and uninstall Python pa optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "setuptools-75.8.0-py3-none-any.whl", hash = "sha256:e3982f444617239225d675215d51f6ba05f845d4eec313da4418fdbb56fb27e3"}, {file = "setuptools-75.8.0.tar.gz", hash = "sha256:c5afc8f407c626b8313a86e10311dd3f661c6cd9c09d4bf8c15c0e11f9f2b0e6"}, @@ -4043,7 +4010,7 @@ version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main"] +groups = ["main", "docs"] files = [ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, @@ -4056,7 +4023,7 @@ description = "Sniff out which async library your code is running under" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, @@ -4069,7 +4036,7 @@ description = "A modern CSS selector implementation for Beautiful Soup." optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"}, {file = "soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb"}, @@ -4082,7 +4049,7 @@ description = "Extract data from python stack frames and tracebacks for informat optional = true python-versions = "*" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" +markers = "extra == \"ipython\" or extra == \"notebook\"" files = [ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, @@ -4103,7 +4070,7 @@ description = "Tornado websocket backend for the Xterm.js Javascript terminal em optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, @@ -4126,7 +4093,7 @@ description = "A tiny CSS parser" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, @@ -4143,10 +4110,9 @@ test = ["pytest", "ruff"] name = "tomli" version = "2.2.1" description = "A lil' TOML parser" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"dev\" and python_full_version <= \"3.11.0a6\" or extra == \"notebook\" and python_version < \"3.11\"" +groups = ["main", "dev"] 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"}, @@ -4181,6 +4147,7 @@ files = [ {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, ] +markers = {main = "extra == \"notebook\" and python_version < \"3.11\"", dev = "python_full_version <= \"3.11.0a6\""} [[package]] name = "tornado" @@ -4189,7 +4156,7 @@ description = "Tornado is a Python web framework and asynchronous networking lib optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1"}, {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803"}, @@ -4208,10 +4175,9 @@ files = [ name = "tox" version = "4.24.1" description = "tox is a generic virtualenv management and test command line tool" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "tox-4.24.1-py3-none-any.whl", hash = "sha256:57ba7df7d199002c6df8c2db9e6484f3de6ca8f42013c083ea2d4d1e5c6bdc75"}, {file = "tox-4.24.1.tar.gz", hash = "sha256:083a720adbc6166fff0b7d1df9d154f9d00bfccb9403b8abf6bc0ee435d6a62e"}, @@ -4240,7 +4206,7 @@ description = "Traitlets Python configuration system" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" +markers = "extra == \"ipython\" or extra == \"notebook\"" files = [ {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, @@ -4275,7 +4241,7 @@ description = "Typing stubs for python-dateutil" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" 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"}, @@ -4285,10 +4251,9 @@ files = [ name = "types-requests" version = "2.32.0.20241016" description = "Typing stubs for requests" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "types-requests-2.32.0.20241016.tar.gz", hash = "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95"}, {file = "types_requests-2.32.0.20241016-py3-none-any.whl", hash = "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747"}, @@ -4301,10 +4266,9 @@ urllib3 = ">=2" name = "types-toml" version = "0.10.8.20240310" description = "Typing stubs for toml" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "types-toml-0.10.8.20240310.tar.gz", hash = "sha256:3d41501302972436a6b8b239c850b26689657e25281b48ff0ec06345b8830331"}, {file = "types_toml-0.10.8.20240310-py3-none-any.whl", hash = "sha256:627b47775d25fa29977d9c70dc0cbab3f314f32c8d8d0c012f2ef5de7aaec05d"}, @@ -4316,7 +4280,7 @@ version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" -groups = ["main"] +groups = ["main", "dev"] files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, @@ -4329,7 +4293,7 @@ description = "RFC 6570 URI Template Processor" optional = true python-versions = ">=3.7" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, @@ -4344,7 +4308,7 @@ version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.9" -groups = ["main"] +groups = ["main", "dev", "docs"] files = [ {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, @@ -4360,10 +4324,9 @@ zstd = ["zstandard (>=0.18.0)"] name = "virtualenv" version = "20.29.2" description = "Virtual Python Environment builder" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"dev\"" +groups = ["dev"] files = [ {file = "virtualenv-20.29.2-py3-none-any.whl", hash = "sha256:febddfc3d1ea571bdb1dc0f98d7b45d24def7428214d4fb73cc486c9568cce6a"}, {file = "virtualenv-20.29.2.tar.gz", hash = "sha256:fdaabebf6d03b5ba83ae0a02cfe96f48a716f4fae556461d180825866f75b728"}, @@ -4424,10 +4387,9 @@ web = ["wslink (>=1.0.4)"] name = "watchdog" version = "6.0.0" description = "Filesystem events monitoring" -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"docs\"" +groups = ["docs"] files = [ {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26"}, {file = "watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112"}, @@ -4471,7 +4433,7 @@ description = "Measures the displayed width of unicode strings in a terminal" optional = true python-versions = "*" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\" or extra == \"ipython\"" +markers = "extra == \"ipython\" or extra == \"notebook\"" files = [ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, @@ -4484,7 +4446,7 @@ description = "A library for working with the color formats defined by HTML and optional = true python-versions = ">=3.9" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9"}, {file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6"}, @@ -4497,7 +4459,7 @@ description = "Character encoding aliases for legacy web content" optional = true python-versions = "*" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" files = [ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, @@ -4510,7 +4472,7 @@ description = "WebSocket client for Python with low level API options" optional = true python-versions = ">=3.8" groups = ["main"] -markers = "extra == \"dev\" or extra == \"notebook\"" +markers = "extra == \"notebook\"" 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"}, @@ -4544,12 +4506,10 @@ docs = ["numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "sphinx", "sphi jupyter = ["ipytree (>=0.2.2)", "ipywidgets (>=8.0.0)", "notebook"] [extras] -dev = ["deptry", "mypy", "notebook", "pre-commit", "pytest", "pytest-cov", "tox", "types-requests", "types-toml"] -docs = ["griffe", "mkdocs", "mkdocs-material", "mkdocstrings"] ipython = ["ipython"] notebook = ["ipython", "notebook"] [metadata] lock-version = "2.1" python-versions = ">=3.10,<4.0" -content-hash = "f67e2737cb3166f020c42ccbe84dfd4685df4c70da4bf38e7297a32fc0c1187b" +content-hash = "92c3689bd470ab8f5c59240ece40251da4417a547b933ec23bb30ba5768f8003" diff --git a/pyproject.toml b/pyproject.toml index 6277e5d..5773d35 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,22 +34,6 @@ python-dateutil = "^2.9.0.post0" pyvista = "^0.44.2" python-libsbml = "^5.20.4" matplotlib = "^3.10.0" -pytest = { version ="^7.2.0", optional = true } -pytest-cov = { version ="^4.0.0", optional = true } -deptry = { version ="^0.16.2", optional = true } -mypy = { version ="^1.5.1", optional = true } -pre-commit = { version ="^3.8.0", optional = true } -tox = { version ="^4.11.1", optional = true } -types-requests = { version ="^2.32.0.20241016", optional = true } -notebook = { version ="^7.3.2", optional = true } -types-toml = { version ="^0.10.8.20240310", optional = true } -mkdocs = { version = "^1.6.1", optional = true } -mkdocs-material = { version = "^9.5.50", optional = true } -mkdocstrings = { extras = ["python"], version = "^0.27.0", optional = true } -griffe = { version = "^1.5.5", optional = true } -ipython = { version = "*", optional = true } - -# [tool.poetry.group.dev.dependencies] # pytest = { version ="^7.2.0", optional = true } # pytest-cov = { version ="^4.0.0", optional = true } # deptry = { version ="^0.16.2", optional = true } @@ -57,21 +41,37 @@ ipython = { version = "*", optional = true } # pre-commit = { version ="^3.8.0", optional = true } # tox = { version ="^4.11.1", optional = true } # types-requests = { version ="^2.32.0.20241016", optional = true } -# notebook = { version ="^7.3.2", optional = true } # types-toml = { version ="^0.10.8.20240310", optional = true } - -# [tool.poetry.group.docs.dependencies] # mkdocs = { version = "^1.6.1", optional = true } # mkdocs-material = { version = "^9.5.50", optional = true } # mkdocstrings = { extras = ["python"], version = "^0.27.0", optional = true } # griffe = { version = "^1.5.5", optional = true } -# +ipython = { version = "*", optional = true } +notebook = { version ="^7.3.2", optional = true } + +[tool.poetry.group.dev.dependencies] +pytest = "^7.2.0" +pytest-cov = "^4.0.0" +deptry = "^0.16.2" +mypy = "^1.5.1" +pre-commit = "^3.8.0" +tox = "^4.11.1" +types-requests = "^2.32.0.20241016" +types-toml = "^0.10.8.20240310" +# notebook = { version ="^7.3.2", optional = true } + +[tool.poetry.group.docs.dependencies] +mkdocs = "^1.6.1" +mkdocs-material = "^9.5.50" +mkdocstrings = { extras = ["python"], version = "^0.27.0" } +griffe = "^1.5.5" + # [tool.poetry.group.bootstrap.dependencies] -# ipython = { version = "*", optional = true } +# ipython = { version = "*" [tool.poetry.extras] -dev = ["pytest", "pytest-cov", "deptry", "mypy", "pre-commit", "tox", "types-requests", "notebook", "types-toml"] -docs = ["mkdocs", "mkdocs-material", "mkdocstrings", "griffe"] +# dev = ["pytest", "pytest-cov", "deptry", "mypy", "pre-commit", "tox", "types-requests", "notebook", "types-toml"] +# docs = ["mkdocs", "mkdocs-material", "mkdocstrings", "griffe"] ipython = ["ipython"] notebook = ["ipython", "notebook"] From 5333357fff5693f6eafb1f8b648e44dd5f4cb0fe Mon Sep 17 00:00:00 2001 From: "spaceBearAmadeus (Alex)" Date: Tue, 25 Feb 2025 12:47:49 -0500 Subject: [PATCH 16/20] removed unused setup --- setup | 112 ---------------------------------------------------------- 1 file changed, 112 deletions(-) delete mode 100644 setup diff --git a/setup b/setup deleted file mode 100644 index e4f0fb1..0000000 --- a/setup +++ /dev/null @@ -1,112 +0,0 @@ -import os.path -import sys -from pathlib import Path -from typing import Union - -from setuptools import find_packages, setup - - -def install_dependency(package: str) -> None: - def is_installed(package: str) -> bool: - return importlib.util.find_spec(package) is not None - - if not is_installed(package): - print(f"Installing missing dependency: {package}") - - pip = sys.modules.get("pip") - if pip is None: - import importlib - - pip = importlib.import_module("pip") - pip._internal.main(["install", package]) - else: - print(f"{package} is already installed, skipping installation.") - - -try: - import toml -except ImportError: - install_dependency("toml") - import toml - - -class ProjectVersion: - current: str - major: int - minor: int - patch: int - - def __init__(self, pyproject_file: Union[str, Path]): - self.current = toml.load(pyproject_file)["tool"]["poetry"]["version"] - self.major, self.minor, self.patch = tuple([int(item) for item in self.current.split(".")]) - - def __repr__(self) -> str: - return self.current - - -PROJECT_VERSION = ProjectVersion(Path(os.path.join(os.path.abspath(os.path.dirname(__file__)), "pyproject.toml"))) - - -setup( - name="pyvcell", - version=PROJECT_VERSION.current, - description="This is the python wrapper for vcell modeling and simulation", - author="Jim Schaff", - author_email="fschaff@uchc.edu", - url="https://github.com/virtualcell/pyvcell", - project_urls={ - "Documentation": "https://virtualcell.github.io/pyvcell/", - "Source": "https://github.com/virtualcell/pyvcell", - }, - packages=find_packages(include=["pyvcell", "pyvcell.*", "tests"]), - python_requires=">=3.10,<4.0", - install_requires=[ - "numexpr>=2.10.0", - "zarr>=2.17.2", - "h5py>=3.11.0", - "numpy>=1.26.4", - "orjson>=3.10.3", - "vtk>=9.3.1", - "pyvcell-fvsolver>=0.1.0", - "typer>=0.12.3", - "pydantic>=2.10.5", - "requests-oauth2client>=1.6.0", - "overrides>=7.7.0", - "typing-extensions>=4.12.2", - "urllib3>=2.3.0", - "requests>=2.32.3", - "python-dateutil>=2.9.0.post0", - "pyvista>=0.44.2", - "python-libsbml>=5.20.4", - "matplotlib>=3.10.0", - ], - extras_require={ - "bootstrap": ["setuptools", "ipython"], - "dev": [ - "pytest>=7.2.0", - "pytest-cov>=4.0.0", - "deptry>=0.16.2", - "mypy>=1.5.1", - "pre-commit>=3.8.0", - "tox>=4.11.1", - "types-requests>=2.32.0.20241016", - "notebook>=7.3.2", - ], - "docs": [ - "mkdocs>=1.6.1", - "mkdocs-material>=9.5.50", - "mkdocstrings[python]>=0.27.0", - "griffe>=1.5.5", - ], - }, - classifiers=[ - "Development Status :: 4 - Beta", - "Intended Audience :: Developers", - "License :: OSI Approved :: MIT License", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.12", - "Topic :: Scientific/Engineering :: Bio-Informatics", - ], -) From 98dd17395f374d87e59faf459e26ee9d69788612 Mon Sep 17 00:00:00 2001 From: "spaceBearAmadeus (Alex)" Date: Tue, 25 Feb 2025 12:51:47 -0500 Subject: [PATCH 17/20] removed pyproject comments --- pyproject.toml | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 5773d35..102a302 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,11 +1,11 @@ -# poetry-based config -# -------------------- - [tool.poetry] name = "pyvcell" version = "0.1.1" description = "This is the python wrapper for vcell modeling and simulation" -authors = ["Jim Schaff "] +authors = [ + "Jim Schaff ", + "Alexander Patrie " +] repository = "https://github.com/virtualcell/pyvcell" documentation = "https://virtualcell.github.io/pyvcell/" readme = "README.md" @@ -34,18 +34,6 @@ python-dateutil = "^2.9.0.post0" pyvista = "^0.44.2" python-libsbml = "^5.20.4" matplotlib = "^3.10.0" -# pytest = { version ="^7.2.0", optional = true } -# pytest-cov = { version ="^4.0.0", optional = true } -# deptry = { version ="^0.16.2", optional = true } -# mypy = { version ="^1.5.1", optional = true } -# pre-commit = { version ="^3.8.0", optional = true } -# tox = { version ="^4.11.1", optional = true } -# types-requests = { version ="^2.32.0.20241016", optional = true } -# types-toml = { version ="^0.10.8.20240310", optional = true } -# mkdocs = { version = "^1.6.1", optional = true } -# mkdocs-material = { version = "^9.5.50", optional = true } -# mkdocstrings = { extras = ["python"], version = "^0.27.0", optional = true } -# griffe = { version = "^1.5.5", optional = true } ipython = { version = "*", optional = true } notebook = { version ="^7.3.2", optional = true } @@ -58,7 +46,6 @@ pre-commit = "^3.8.0" tox = "^4.11.1" types-requests = "^2.32.0.20241016" types-toml = "^0.10.8.20240310" -# notebook = { version ="^7.3.2", optional = true } [tool.poetry.group.docs.dependencies] mkdocs = "^1.6.1" @@ -66,12 +53,7 @@ mkdocs-material = "^9.5.50" mkdocstrings = { extras = ["python"], version = "^0.27.0" } griffe = "^1.5.5" -# [tool.poetry.group.bootstrap.dependencies] -# ipython = { version = "*" - [tool.poetry.extras] -# dev = ["pytest", "pytest-cov", "deptry", "mypy", "pre-commit", "tox", "types-requests", "notebook", "types-toml"] -# docs = ["mkdocs", "mkdocs-material", "mkdocstrings", "griffe"] ipython = ["ipython"] notebook = ["ipython", "notebook"] From a9ad7a09dc9206a2b4cd84a21bfac2dc69e94dd1 Mon Sep 17 00:00:00 2001 From: "spaceBearAmadeus (Alex)" Date: Tue, 25 Feb 2025 12:53:44 -0500 Subject: [PATCH 18/20] removed result comments and added new line to pyproject sections --- pyproject.toml | 12 +++ pyvcell/data_model/result.py | 160 ----------------------------------- 2 files changed, 12 insertions(+), 160 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 102a302..4f6f0b2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,6 +14,7 @@ packages = [ {include = "tests"}, ] + [tool.poetry.dependencies] python = ">=3.10,<4.0" numexpr = "^2.10.0" @@ -37,6 +38,7 @@ matplotlib = "^3.10.0" ipython = { version = "*", optional = true } notebook = { version ="^7.3.2", optional = true } + [tool.poetry.group.dev.dependencies] pytest = "^7.2.0" pytest-cov = "^4.0.0" @@ -47,29 +49,35 @@ tox = "^4.11.1" types-requests = "^2.32.0.20241016" types-toml = "^0.10.8.20240310" + [tool.poetry.group.docs.dependencies] mkdocs = "^1.6.1" mkdocs-material = "^9.5.50" mkdocstrings = { extras = ["python"], version = "^0.27.0" } griffe = "^1.5.5" + [tool.poetry.extras] ipython = ["ipython"] notebook = ["ipython", "notebook"] + [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" + [tool.mypy] files = ["pyvcell"] strict = true + [[tool.mypy.overrides]] module = [ "pyvcell.api.*" ] disable_error_code = ["import-not-found", "import-untyped", "no-untyped-def", "no-untyped-call", "attr-defined", "type-arg", "union-attr", "no-any-return", "return"] + [[tool.mypy.overrides]] module = "zarr" ignore_missing_imports = true @@ -79,9 +87,11 @@ disable_error_code = [ "no-any-return", "return" ] + [tool.pytest.ini_options] testpaths = ["tests"] + [tool.ruff] target-version = "py39" line-length = 120 @@ -136,9 +146,11 @@ lint.ignore = [ [tool.ruff.format] preview = true + [tool.coverage.report] skip_empty = true + [tool.coverage.run] branch = true source = ["pyvcell"] diff --git a/pyvcell/data_model/result.py b/pyvcell/data_model/result.py index dc5b07f..96f8719 100644 --- a/pyvcell/data_model/result.py +++ b/pyvcell/data_model/result.py @@ -162,163 +162,3 @@ def slice_dataset(self, time_index: int, channel_index: int, z_index: int) -> ND return slice_dataset( zarr_dataset=self.zarr_dataset, time_index=time_index, channel_index=channel_index, z_index=z_index ) - - -# def plot_concentrations(self) -> None: -# t = self.get_time_axis() -# -# fig, ax = plt.subplots() -# ax.plot(t, self.concentrations.T) -# ax.set(xlabel="time (s)", ylabel="concentration", title="Concentration over time") -# -# y_labels = [c.label for c in self.channels if c.index > 0] -# ax.legend(y_labels) -# ax.grid() -# -# def plot_slice_2d(self, time_index: int, channel_index: int, z_index: int) -> None: -# data_slice = self.slice_dataset(time_index, channel_index, z_index) -# -# t = self.zarr_dataset.attrs.asdict()["metadata"]["times"][time_index] -# channel_label = self.channels[channel_index].label -# channel_domain = self.channels[channel_index].domain_name -# z_coord = self.mesh.origin[2] + z_index * self.mesh.extent[2] / (self.mesh.size[2] - 1) -# title = f"{channel_label} (in {channel_domain}) at t={t}, slice z={z_coord}" -# -# # Display the slice as an image -# plt.imshow(data_slice) -# plt.title(title) -# return plt.show() -# -# def plot_slice_3d(self, time_index: int, channel_index: int) -> None: -# # Select a 3D volume for a single time point and channel, shape is (z, y, x) -# volume = self.zarr_dataset[time_index, channel_index, :, :, :] -# -# # Create a figure for 3D plotting -# fig = plt.figure() -# ax = fig.add_subplot(111, projection="3d") -# -# # Define a mask to display the volume (use 'region_mask' channel) -# mask = np.copy(self.zarr_dataset[3, 0, :, :, :]) -# z, y, x = np.where(mask == 1) -# -# # Get the intensity values for these points -# intensities = volume[z, y, x] -# -# # Create a 3D scatter plot -# scatter = ax.scatter(x, y, z, c=intensities, cmap="viridis") -# -# # Add a color bar to represent intensities -# fig.colorbar(scatter, ax=ax, label="Intensity") -# -# # Set labels for axes -# ax.set_xlabel("X") -# ax.set_ylabel("Y") -# ax.set_zlabel("Z") # type: ignore[attr-defined] -# -# # Show the plot -# return plt.show() -# -# def plot_image(self, image_index: int, time_index: int) -> None: -# # display image dataset "fluor" at time index 4 as an image -# img_metadata = self.post_processing.image_metadata[image_index] -# image_data: np.typing.NDArray[np.float64] = self.post_processing.read_image_data( -# image_metadata=img_metadata, time_index=time_index -# ) -# plt.imshow(image_data) -# plt.title(f"post processing image data '{img_metadata.name}' at time index {time_index}") -# return plt.show() -# -# def _get_mesh(self) -> CartesianMesh: -# mesh = CartesianMesh(mesh_file=self.solver_output_dir / f"SimID_{self.sim_id}_{self.job_id}_.mesh") -# mesh.read() -# return mesh -# -# def get_3d_slice_animation(self, channel_index: int, interval: int = 200) -> animation.FuncAnimation: -# """ -# Animate the 3D scatter plot over time. -# -# Parameters: -# channel_index (int): The index of the channel to visualize. -# interval (int): Time interval between frames in milliseconds. -# """ -# # Extract metadata and the number of time points -# channel_list = self.channels -# channel_domain = channel_list[channel_index - 5].domain_name -# num_timepoints = self.num_timepoints -# -# # Create a figure for 3D plotting -# fig = plt.figure() -# ax = fig.add_subplot(111, projection="3d") -# -# # Set labels for axes -# ax.set_xlabel("X") -# ax.set_ylabel("Y") -# ax.set_zlabel("Z") # type: ignore[attr-defined] -# sc = None -# -# @no_type_check -# def update(frame: int): -# """Update function for animation""" -# # Define a mask to display the volume (use 'region_mask' channel) -# mask = np.copy(self.zarr_dataset[frame, 0, :, :, :]) -# z, y, x = np.where(mask == 1) -# -# volume = self.zarr_dataset[frame, channel_index, :, :, :] -# intensities = volume[z, y, x] -# -# # Initialize the scatter plot with empty data -# scatter = ax.scatter(x, y, z, c=intensities, cmap="viridis") -# ax.set_title(f"Channel: {channel_domain}, Time Index: {frame}") -# return (scatter,) -# -# # Create the animation -# fig.colorbar(sc, ax=ax, label="Intensity") # type: ignore[arg-type] -# ani = animation.FuncAnimation(fig, update, num_timepoints, interval=interval, blit=False) -# -# return ani -# -# @no_type_check -# def render_animation(self, ani: animation.FuncAnimation) -> HTML: -# return HTML(ani.to_jshtml()) -# -# def animate_channel_3d(self, channel_index: int) -> Any: -# ani = self.get_3d_slice_animation(channel_index) -# return self.render_animation(ani) -# -# def get_image_animation(self, image_index: int, interval: int = 200) -> animation.FuncAnimation: -# """ -# Animate the fluorescence image over time. -# -# Parameters: -# image_index (int): The index of the image to visualize. -# interval (int): Time interval between frames in milliseconds. -# """ -# post_processing = self.post_processing -# -# # Create figure and axis for animation -# fig = plt.figure() -# ax = fig.add_subplot() -# -# # Set title -# title = ax.set_title("Post-processing image data 'fluor' at time index 0") -# -# @no_type_check -# def update(frame: int): -# """Update function for animation""" -# img_metadata = post_processing.image_metadata[image_index] -# image_data = post_processing.read_image_data(image_metadata=img_metadata, time_index=frame) -# img_plot = ax.imshow(image_data) -# # img_plot.set_data(image_data) # Update image -# title.set_text(f"Post-processing image data 'fluor' at time index {frame}") -# plt.show() -# return (img_plot,) -# -# # Create the animation -# ani = animation.FuncAnimation(fig, update, frames=self.num_timepoints, interval=interval, blit=False) -# -# return ani -# -# @no_type_check -# def animate_image(self, image_index: int) -> HTML: -# ani = self.get_image_animation(image_index) -# return self.render_animation(ani) From 17d7c5086cd758d512e5614683f2eeb331aa9e69 Mon Sep 17 00:00:00 2001 From: "spaceBearAmadeus (Alex)" Date: Tue, 25 Feb 2025 12:59:21 -0500 Subject: [PATCH 19/20] fix: added ipython extra for import within result in env action --- .github/actions/setup-poetry-env/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/setup-poetry-env/action.yml b/.github/actions/setup-poetry-env/action.yml index 18738ae..08b6e89 100644 --- a/.github/actions/setup-poetry-env/action.yml +++ b/.github/actions/setup-poetry-env/action.yml @@ -38,5 +38,5 @@ runs: - name: Install dependencies if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' - run: poetry install --no-interaction + run: poetry install --no-interaction --extras "ipython" shell: bash From 4a985ae4c4c15f5cc2812ec7d2292aedefc6f1f8 Mon Sep 17 00:00:00 2001 From: "spaceBearAmadeus (Alex)" Date: Tue, 25 Feb 2025 13:19:14 -0500 Subject: [PATCH 20/20] removed extras in place of group --- poetry.lock | 450 ++++++++++++++++++++----------------------------- pyproject.toml | 25 +-- 2 files changed, 193 insertions(+), 282 deletions(-) diff --git a/poetry.lock b/poetry.lock index 5e2e6dc..9d243ae 100644 --- a/poetry.lock +++ b/poetry.lock @@ -16,10 +16,9 @@ files = [ name = "anyio" version = "4.8.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "anyio-4.8.0-py3-none-any.whl", hash = "sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a"}, {file = "anyio-4.8.0.tar.gz", hash = "sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a"}, @@ -40,10 +39,10 @@ trio = ["trio (>=0.26.1)"] name = "appnope" version = "0.1.4" description = "Disable App Nap on macOS >= 10.9" -optional = true +optional = false python-versions = ">=3.6" -groups = ["main"] -markers = "extra == \"notebook\" and platform_system == \"Darwin\"" +groups = ["notebook"] +markers = "platform_system == \"Darwin\"" files = [ {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, @@ -53,10 +52,9 @@ files = [ name = "argon2-cffi" version = "23.1.0" description = "Argon2 for Python" -optional = true +optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"}, {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"}, @@ -75,10 +73,9 @@ typing = ["mypy"] name = "argon2-cffi-bindings" version = "21.2.0" description = "Low-level CFFI bindings for Argon2" -optional = true +optional = false python-versions = ">=3.6" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] 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"}, @@ -114,10 +111,9 @@ tests = ["pytest"] name = "arrow" version = "1.3.0" description = "Better dates & times for Python" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, @@ -146,10 +142,9 @@ files = [ name = "asttokens" version = "3.0.0" description = "Annotate AST trees with source code positions" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"ipython\" or extra == \"notebook\"" +groups = ["main", "ipython", "notebook"] files = [ {file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2"}, {file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7"}, @@ -163,10 +158,9 @@ test = ["astroid (>=2,<4)", "pytest", "pytest-cov", "pytest-xdist"] name = "async-lru" version = "2.0.4" description = "Simple LRU cache for asyncio" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"}, {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"}, @@ -181,7 +175,7 @@ version = "25.1.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.8" -groups = ["main"] +groups = ["main", "notebook"] files = [ {file = "attrs-25.1.0-py3-none-any.whl", hash = "sha256:c75a69e28a550a7e93789579c22aa26b0f5b83b75dc4e08fe092980051e1090a"}, {file = "attrs-25.1.0.tar.gz", hash = "sha256:1c97078a80c814273a76b2a298a932eb681c87415c11dee0a6921de7f1b02c3e"}, @@ -201,12 +195,11 @@ version = "2.17.0" description = "Internationalization utilities" optional = false python-versions = ">=3.8" -groups = ["main", "docs"] +groups = ["docs", "notebook"] files = [ {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, ] -markers = {main = "extra == \"notebook\""} [package.extras] dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata"] @@ -215,10 +208,9 @@ dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest name = "beautifulsoup4" version = "4.13.3" description = "Screen-scraping library" -optional = true +optional = false python-versions = ">=3.7.0" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "beautifulsoup4-4.13.3-py3-none-any.whl", hash = "sha256:99045d7d3f08f91f0d656bc9b7efbae189426cd913d830294a15eefa0ea4df16"}, {file = "beautifulsoup4-4.13.3.tar.gz", hash = "sha256:1bd32405dacc920b42b83ba01644747ed77456a65760e285fbc47633ceddaf8b"}, @@ -254,10 +246,9 @@ typing-extensions = ">=4.3.0" name = "bleach" version = "6.2.0" description = "An easy safelist-based HTML-sanitizing tool." -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e"}, {file = "bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f"}, @@ -288,7 +279,7 @@ version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" -groups = ["main", "docs"] +groups = ["main", "docs", "notebook"] files = [ {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, @@ -300,8 +291,7 @@ version = "1.17.1" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "platform_python_implementation != \"PyPy\" or extra == \"notebook\"" +groups = ["main", "notebook"] 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"}, @@ -371,6 +361,7 @@ files = [ {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] +markers = {main = "platform_python_implementation != \"PyPy\""} [package.dependencies] pycparser = "*" @@ -405,7 +396,7 @@ version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7" -groups = ["main", "docs"] +groups = ["main", "docs", "notebook"] files = [ {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, @@ -522,21 +513,20 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -groups = ["main", "dev", "docs"] +groups = ["main", "dev", "docs", "ipython", "notebook"] files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -markers = {main = "extra == \"ipython\" and sys_platform == \"win32\" or platform_system == \"Windows\" or extra == \"notebook\" and sys_platform == \"win32\""} +markers = {main = "platform_system == \"Windows\" or sys_platform == \"win32\"", ipython = "sys_platform == \"win32\"", notebook = "sys_platform == \"win32\""} [[package]] name = "comm" version = "0.2.2" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, @@ -775,10 +765,9 @@ tests = ["pytest", "pytest-cov", "pytest-xdist"] name = "debugpy" version = "1.8.12" description = "An implementation of the Debug Adapter Protocol for Python" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "debugpy-1.8.12-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:a2ba7ffe58efeae5b8fad1165357edfe01464f9aef25e814e891ec690e7dd82a"}, {file = "debugpy-1.8.12-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbbd4149c4fc5e7d508ece083e78c17442ee13b0e69bfa6bd63003e486770f45"}, @@ -812,10 +801,9 @@ files = [ name = "decorator" version = "5.2.1" description = "Decorators for Humans" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"ipython\" or extra == \"notebook\"" +groups = ["main", "ipython", "notebook"] files = [ {file = "decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a"}, {file = "decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360"}, @@ -825,10 +813,9 @@ files = [ name = "defusedxml" version = "0.7.1" description = "XML bomb protection for Python stdlib modules" -optional = true +optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, @@ -878,12 +865,12 @@ version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" -groups = ["main", "dev"] +groups = ["main", "dev", "ipython", "notebook"] +markers = "python_version < \"3.11\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, ] -markers = {main = "(extra == \"ipython\" or extra == \"notebook\") and python_version < \"3.11\"", dev = "python_version < \"3.11\""} [package.extras] test = ["pytest (>=6)"] @@ -892,10 +879,9 @@ test = ["pytest (>=6)"] name = "executing" version = "2.2.0" description = "Get the currently executing AST node of a frame, and other information" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"ipython\" or extra == \"notebook\"" +groups = ["main", "ipython", "notebook"] files = [ {file = "executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa"}, {file = "executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755"}, @@ -921,10 +907,9 @@ files = [ name = "fastjsonschema" version = "2.21.1" description = "Fastest Python implementation of JSON schema" -optional = true +optional = false python-versions = "*" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667"}, {file = "fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4"}, @@ -1028,10 +1013,9 @@ woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] name = "fqdn" version = "1.5.1" description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers" -optional = true +optional = false python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"}, {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"}, @@ -1090,10 +1074,9 @@ colorama = ">=0.4" name = "h11" version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -optional = true +optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, @@ -1142,10 +1125,9 @@ numpy = ">=1.19.3" name = "httpcore" version = "1.0.7" description = "A minimal low-level HTTP client." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, @@ -1165,10 +1147,9 @@ trio = ["trio (>=0.22.0,<1.0)"] name = "httpx" version = "0.28.1" description = "The next generation HTTP client." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, @@ -1208,7 +1189,7 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" -groups = ["main", "docs"] +groups = ["main", "docs", "notebook"] files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -1233,10 +1214,9 @@ files = [ name = "ipykernel" version = "6.29.5" description = "IPython Kernel for Jupyter" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5"}, {file = "ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215"}, @@ -1268,10 +1248,9 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio name = "ipython" version = "8.32.0" description = "IPython: Productive Interactive Computing" -optional = true +optional = false python-versions = ">=3.10" -groups = ["main"] -markers = "extra == \"ipython\" or extra == \"notebook\"" +groups = ["main", "ipython", "notebook"] files = [ {file = "ipython-8.32.0-py3-none-any.whl", hash = "sha256:cae85b0c61eff1fc48b0a8002de5958b6528fa9c8defb1894da63f42613708aa"}, {file = "ipython-8.32.0.tar.gz", hash = "sha256:be2c91895b0b9ea7ba49d33b23e2040c352b33eb6a519cca7ce6e0c743444251"}, @@ -1308,10 +1287,9 @@ test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "num name = "isoduration" version = "20.11.0" description = "Operations with ISO 8601 durations" -optional = true +optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, @@ -1324,10 +1302,9 @@ arrow = ">=0.15.0" name = "jedi" version = "0.19.2" description = "An autocompletion tool for Python that can be used for text editors." -optional = true +optional = false python-versions = ">=3.6" -groups = ["main"] -markers = "extra == \"ipython\" or extra == \"notebook\"" +groups = ["main", "ipython", "notebook"] files = [ {file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9"}, {file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0"}, @@ -1347,12 +1324,11 @@ version = "3.1.5" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" -groups = ["main", "docs"] +groups = ["docs", "notebook"] files = [ {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"}, ] -markers = {main = "extra == \"notebook\""} [package.dependencies] MarkupSafe = ">=2.0" @@ -1364,10 +1340,9 @@ i18n = ["Babel (>=2.7)"] name = "json5" version = "0.10.0" description = "A Python implementation of the JSON5 data format." -optional = true +optional = false python-versions = ">=3.8.0" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "json5-0.10.0-py3-none-any.whl", hash = "sha256:19b23410220a7271e8377f81ba8aacba2fdd56947fbb137ee5977cbe1f5e8dfa"}, {file = "json5-0.10.0.tar.gz", hash = "sha256:e66941c8f0a02026943c52c2eb34ebeb2a6f819a0be05920a6f5243cd30fd559"}, @@ -1380,10 +1355,9 @@ dev = ["build (==1.2.2.post1)", "coverage (==7.5.3)", "mypy (==1.13.0)", "pip (= name = "jsonpointer" version = "3.0.0" description = "Identify specific nodes in a JSON document (RFC 6901)" -optional = true +optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942"}, {file = "jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef"}, @@ -1393,10 +1367,9 @@ files = [ name = "jsonschema" version = "4.23.0" description = "An implementation of JSON Schema validation for Python" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566"}, {file = "jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4"}, @@ -1424,10 +1397,9 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- name = "jsonschema-specifications" version = "2024.10.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf"}, {file = "jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272"}, @@ -1440,10 +1412,9 @@ referencing = ">=0.31.0" name = "jupyter-client" version = "8.6.3" description = "Jupyter protocol implementation and client libraries" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, @@ -1464,10 +1435,9 @@ test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pyt name = "jupyter-core" version = "5.7.2" description = "Jupyter core package. A base package on which Jupyter projects rely." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, @@ -1486,10 +1456,9 @@ test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout" name = "jupyter-events" version = "0.12.0" description = "Jupyter Event System library" -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb"}, {file = "jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b"}, @@ -1514,10 +1483,9 @@ test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "p name = "jupyter-lsp" version = "2.2.5" description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001"}, {file = "jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da"}, @@ -1530,10 +1498,9 @@ jupyter-server = ">=1.1.2" name = "jupyter-server" version = "2.15.0" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "jupyter_server-2.15.0-py3-none-any.whl", hash = "sha256:872d989becf83517012ee669f09604aa4a28097c0bd90b2f424310156c2cdae3"}, {file = "jupyter_server-2.15.0.tar.gz", hash = "sha256:9d446b8697b4f7337a1b7cdcac40778babdd93ba614b6d68ab1c0c918f1c4084"}, @@ -1568,10 +1535,9 @@ test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0,<9)", "pytest-console name = "jupyter-server-terminals" version = "0.5.3" description = "A Jupyter Server Extension Providing Terminals." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, @@ -1589,10 +1555,9 @@ test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (> name = "jupyterlab" version = "4.3.5" description = "JupyterLab computational environment" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "jupyterlab-4.3.5-py3-none-any.whl", hash = "sha256:571bbdee20e4c5321ab5195bc41cf92a75a5cff886be5e57ce78dfa37a5e9fdb"}, {file = "jupyterlab-4.3.5.tar.gz", hash = "sha256:c779bf72ced007d7d29d5bcef128e7fdda96ea69299e19b04a43635a7d641f9d"}, @@ -1625,10 +1590,9 @@ upgrade-extension = ["copier (>=9,<10)", "jinja2-time (<0.3)", "pydantic (<3.0)" name = "jupyterlab-pygments" version = "0.3.0" description = "Pygments theme using JupyterLab CSS variables" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, @@ -1638,10 +1602,9 @@ files = [ name = "jupyterlab-server" version = "2.27.3" description = "A set of server components for JupyterLab and JupyterLab like applications." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] 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"}, @@ -1815,7 +1778,7 @@ version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" -groups = ["main", "docs"] +groups = ["docs", "notebook"] 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"}, @@ -1879,7 +1842,6 @@ files = [ {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, ] -markers = {main = "extra == \"notebook\""} [[package]] name = "matplotlib" @@ -1943,10 +1905,9 @@ dev = ["meson-python (>=0.13.1,<0.17.0)", "pybind11 (>=2.13.2,!=2.13.3)", "setup name = "matplotlib-inline" version = "0.1.7" description = "Inline Matplotlib backend for Jupyter" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"ipython\" or extra == \"notebook\"" +groups = ["main", "ipython", "notebook"] 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"}, @@ -1983,10 +1944,9 @@ files = [ name = "mistune" version = "3.1.2" description = "A sane and fast Markdown parser with useful plugins and renderers" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "mistune-3.1.2-py3-none-any.whl", hash = "sha256:4b47731332315cdca99e0ded46fc0004001c1299ff773dfb48fbe1fd226de319"}, {file = "mistune-3.1.2.tar.gz", hash = "sha256:733bf018ba007e8b5f2d3a9eb624034f6ee26c4ea769a98ec533ee111d504dff"}, @@ -2217,10 +2177,9 @@ files = [ name = "nbclient" version = "0.10.2" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." -optional = true +optional = false python-versions = ">=3.9.0" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d"}, {file = "nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193"}, @@ -2241,10 +2200,9 @@ test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>= name = "nbconvert" version = "7.16.6" description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b"}, {file = "nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582"}, @@ -2279,10 +2237,9 @@ webpdf = ["playwright"] name = "nbformat" version = "5.10.4" description = "The Jupyter Notebook format" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, @@ -2302,10 +2259,9 @@ test = ["pep440", "pre-commit", "pytest", "testpath"] name = "nest-asyncio" version = "1.6.0" description = "Patch asyncio to allow nested event loops" -optional = true +optional = false python-versions = ">=3.5" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, @@ -2327,10 +2283,9 @@ files = [ name = "notebook" version = "7.3.2" description = "Jupyter Notebook - A web-based notebook environment for interactive computing" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "notebook-7.3.2-py3-none-any.whl", hash = "sha256:e5f85fc59b69d3618d73cf27544418193ff8e8058d5bf61d315ce4f473556288"}, {file = "notebook-7.3.2.tar.gz", hash = "sha256:705e83a1785f45b383bf3ee13cb76680b92d24f56fb0c7d2136fe1d850cd3ca8"}, @@ -2352,10 +2307,9 @@ test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4 name = "notebook-shim" version = "0.2.4" description = "A shim layer for notebook traits and config" -optional = true +optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, @@ -2610,7 +2564,7 @@ version = "7.7.0" description = "A decorator to automatically detect mismatch when overriding a method." optional = false python-versions = ">=3.6" -groups = ["main"] +groups = ["main", "notebook"] files = [ {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, @@ -2622,7 +2576,7 @@ version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" -groups = ["main", "dev", "docs"] +groups = ["main", "dev", "docs", "notebook"] files = [ {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, @@ -2648,10 +2602,9 @@ lint = ["black"] name = "pandocfilters" version = "1.5.1" description = "Utilities for writing pandoc filters in python" -optional = true +optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, @@ -2661,10 +2614,9 @@ files = [ name = "parso" version = "0.8.4" description = "A Python Parser" -optional = true +optional = false python-versions = ">=3.6" -groups = ["main"] -markers = "extra == \"ipython\" or extra == \"notebook\"" +groups = ["main", "ipython", "notebook"] files = [ {file = "parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18"}, {file = "parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d"}, @@ -2690,10 +2642,10 @@ files = [ name = "pexpect" version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." -optional = true +optional = false python-versions = "*" -groups = ["main"] -markers = "extra == \"ipython\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\") or extra == \"notebook\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\")" +groups = ["main", "ipython", "notebook"] +markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\"" files = [ {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, @@ -2797,7 +2749,7 @@ version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" -groups = ["main", "dev", "docs"] +groups = ["main", "dev", "docs", "notebook"] files = [ {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, @@ -2869,10 +2821,9 @@ virtualenv = ">=20.10.0" name = "prometheus-client" version = "0.21.1" description = "Python client for the Prometheus monitoring system." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "prometheus_client-0.21.1-py3-none-any.whl", hash = "sha256:594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301"}, {file = "prometheus_client-0.21.1.tar.gz", hash = "sha256:252505a722ac04b0456be05c05f75f45d760c2911ffc45f2a06bcaed9f3ae3fb"}, @@ -2885,10 +2836,9 @@ twisted = ["twisted"] name = "prompt-toolkit" version = "3.0.50" description = "Library for building powerful interactive command lines in Python" -optional = true +optional = false python-versions = ">=3.8.0" -groups = ["main"] -markers = "extra == \"ipython\" or extra == \"notebook\"" +groups = ["main", "ipython", "notebook"] files = [ {file = "prompt_toolkit-3.0.50-py3-none-any.whl", hash = "sha256:9b6427eb19e479d98acff65196a307c555eb567989e6d88ebbb1b509d9779198"}, {file = "prompt_toolkit-3.0.50.tar.gz", hash = "sha256:544748f3860a2623ca5cd6d2795e7a14f3d0e1c3c9728359013f79877fc89bab"}, @@ -2901,10 +2851,9 @@ wcwidth = "*" 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." -optional = true +optional = false python-versions = ">=3.6" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] 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"}, @@ -2926,23 +2875,22 @@ test = ["pytest", "pytest-xdist", "setuptools"] name = "ptyprocess" version = "0.7.0" description = "Run a subprocess in a pseudo terminal" -optional = true +optional = false python-versions = "*" -groups = ["main"] -markers = "extra == \"ipython\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\") or extra == \"notebook\" and os_name != \"nt\" or extra == \"notebook\" and (sys_platform != \"win32\" and sys_platform != \"emscripten\")" +groups = ["main", "ipython", "notebook"] files = [ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"}, {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"}, ] +markers = {main = "sys_platform != \"win32\" and sys_platform != \"emscripten\"", ipython = "sys_platform != \"win32\" and sys_platform != \"emscripten\"", notebook = "sys_platform != \"win32\" and sys_platform != \"emscripten\" or os_name != \"nt\""} [[package]] name = "pure-eval" version = "0.2.3" description = "Safely evaluate AST nodes without side effects" -optional = true +optional = false python-versions = "*" -groups = ["main"] -markers = "extra == \"ipython\" or extra == \"notebook\"" +groups = ["main", "ipython", "notebook"] files = [ {file = "pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0"}, {file = "pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42"}, @@ -2957,12 +2905,12 @@ version = "2.22" description = "C parser in Python" optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "platform_python_implementation != \"PyPy\" or extra == \"notebook\"" +groups = ["main", "notebook"] files = [ {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] +markers = {main = "platform_python_implementation != \"PyPy\""} [[package]] name = "pydantic" @@ -3104,7 +3052,7 @@ version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.8" -groups = ["main", "docs"] +groups = ["main", "docs", "ipython", "notebook"] files = [ {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, @@ -3215,7 +3163,7 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main", "docs"] +groups = ["main", "docs", "notebook"] files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -3228,10 +3176,9 @@ six = ">=1.5" name = "python-json-logger" version = "3.2.1" description = "JSON Log Formatter for the Python Logging Package" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "python_json_logger-3.2.1-py3-none-any.whl", hash = "sha256:cdc17047eb5374bd311e748b42f99d71223f3b0e186f4206cc5d52aefe85b090"}, {file = "python_json_logger-3.2.1.tar.gz", hash = "sha256:8eb0554ea17cb75b05d2848bc14fb02fbdbd9d6972120781b974380bfa162008"}, @@ -3366,10 +3313,10 @@ jupyter = ["ipywidgets", "jupyter-server-proxy", "nest_asyncio", "trame (>=2.5.2 name = "pywin32" version = "308" description = "Python for Window Extensions" -optional = true +optional = false python-versions = "*" -groups = ["main"] -markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\" and extra == \"notebook\"" +groups = ["notebook"] +markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\"" files = [ {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, {file = "pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e"}, @@ -3395,10 +3342,10 @@ files = [ name = "pywinpty" version = "2.0.15" description = "Pseudo terminal support for Windows from Python." -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"notebook\" and os_name == \"nt\"" +groups = ["notebook"] +markers = "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"}, @@ -3415,7 +3362,7 @@ version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" -groups = ["main", "dev", "docs"] +groups = ["dev", "docs", "notebook"] 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"}, @@ -3471,7 +3418,6 @@ files = [ {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, ] -markers = {main = "extra == \"notebook\""} [[package]] name = "pyyaml-env-tag" @@ -3492,10 +3438,9 @@ pyyaml = "*" name = "pyzmq" version = "26.2.1" description = "Python bindings for 0MQ" -optional = true +optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "pyzmq-26.2.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:f39d1227e8256d19899d953e6e19ed2ccb689102e6d85e024da5acf410f301eb"}, {file = "pyzmq-26.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a23948554c692df95daed595fdd3b76b420a4939d7a8a28d6d7dea9711878641"}, @@ -3615,10 +3560,9 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} name = "referencing" version = "0.36.2" description = "JSON Referencing + Python" -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0"}, {file = "referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa"}, @@ -3739,7 +3683,7 @@ version = "2.32.3" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" -groups = ["main", "docs"] +groups = ["main", "docs", "notebook"] files = [ {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, @@ -3778,10 +3722,9 @@ requests = ">=2.19.0" name = "rfc3339-validator" version = "0.1.4" description = "A pure python RFC3339 validator" -optional = true +optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, @@ -3794,10 +3737,9 @@ six = "*" name = "rfc3986-validator" version = "0.1.1" description = "Pure python rfc3986 validator" -optional = true +optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, @@ -3827,10 +3769,9 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] name = "rpds-py" version = "0.23.1" description = "Python bindings to Rust's persistent data structures (rpds)" -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "rpds_py-0.23.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2a54027554ce9b129fc3d633c92fa33b30de9f08bc61b32c053dc9b537266fed"}, {file = "rpds_py-0.23.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b5ef909a37e9738d146519657a1aab4584018746a18f71c692f2f22168ece40c"}, @@ -3956,10 +3897,9 @@ cpu = ["mkl", "psutil"] name = "send2trash" version = "1.8.3" description = "Send file to trash natively under Mac OS X, Windows and Linux" -optional = true +optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, @@ -3972,15 +3912,14 @@ win32 = ["pywin32"] [[package]] name = "setuptools" -version = "75.8.0" +version = "75.8.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ - {file = "setuptools-75.8.0-py3-none-any.whl", hash = "sha256:e3982f444617239225d675215d51f6ba05f845d4eec313da4418fdbb56fb27e3"}, - {file = "setuptools-75.8.0.tar.gz", hash = "sha256:c5afc8f407c626b8313a86e10311dd3f661c6cd9c09d4bf8c15c0e11f9f2b0e6"}, + {file = "setuptools-75.8.1-py3-none-any.whl", hash = "sha256:3bc32c0b84c643299ca94e77f834730f126efd621de0cc1de64119e0e17dab1f"}, + {file = "setuptools-75.8.1.tar.gz", hash = "sha256:65fb779a8f28895242923582eadca2337285f0891c2c9e160754df917c3d2530"}, ] [package.extras] @@ -4010,7 +3949,7 @@ version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -groups = ["main", "docs"] +groups = ["main", "docs", "notebook"] files = [ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, @@ -4020,10 +3959,9 @@ files = [ name = "sniffio" version = "1.3.1" description = "Sniff out which async library your code is running under" -optional = true +optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, @@ -4033,10 +3971,9 @@ files = [ name = "soupsieve" version = "2.6" description = "A modern CSS selector implementation for Beautiful Soup." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9"}, {file = "soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb"}, @@ -4046,10 +3983,9 @@ files = [ name = "stack-data" version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" -optional = true +optional = false python-versions = "*" -groups = ["main"] -markers = "extra == \"ipython\" or extra == \"notebook\"" +groups = ["main", "ipython", "notebook"] files = [ {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, @@ -4067,10 +4003,9 @@ tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] name = "terminado" version = "0.18.1" description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, @@ -4090,10 +4025,9 @@ typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"] name = "tinycss2" version = "1.4.0" description = "A tiny CSS parser" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289"}, {file = "tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7"}, @@ -4112,7 +4046,7 @@ version = "2.2.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["dev", "notebook"] 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"}, @@ -4147,16 +4081,15 @@ files = [ {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, ] -markers = {main = "extra == \"notebook\" and python_version < \"3.11\"", dev = "python_full_version <= \"3.11.0a6\""} +markers = {dev = "python_full_version <= \"3.11.0a6\"", notebook = "python_version < \"3.11\""} [[package]] name = "tornado" version = "6.4.2" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1"}, {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803"}, @@ -4203,10 +4136,9 @@ test = ["devpi-process (>=1.0.2)", "pytest (>=8.3.3)", "pytest-mock (>=3.14)"] name = "traitlets" version = "5.14.3" description = "Traitlets Python configuration system" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"ipython\" or extra == \"notebook\"" +groups = ["main", "ipython", "notebook"] files = [ {file = "traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f"}, {file = "traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7"}, @@ -4238,10 +4170,9 @@ typing-extensions = ">=3.7.4.3" name = "types-python-dateutil" version = "2.9.0.20241206" description = "Typing stubs for python-dateutil" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] 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"}, @@ -4280,7 +4211,7 @@ version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" -groups = ["main", "dev"] +groups = ["main", "dev", "ipython", "notebook"] files = [ {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, @@ -4290,10 +4221,9 @@ files = [ name = "uri-template" version = "1.3.0" description = "RFC 6570 URI Template Processor" -optional = true +optional = false python-versions = ">=3.7" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, @@ -4308,7 +4238,7 @@ version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.9" -groups = ["main", "dev", "docs"] +groups = ["main", "dev", "docs", "notebook"] files = [ {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, @@ -4430,10 +4360,9 @@ watchmedo = ["PyYAML (>=3.10)"] name = "wcwidth" version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" -optional = true +optional = false python-versions = "*" -groups = ["main"] -markers = "extra == \"ipython\" or extra == \"notebook\"" +groups = ["main", "ipython", "notebook"] files = [ {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, @@ -4443,10 +4372,9 @@ files = [ name = "webcolors" version = "24.11.1" description = "A library for working with the color formats defined by HTML and CSS." -optional = true +optional = false python-versions = ">=3.9" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9"}, {file = "webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6"}, @@ -4456,10 +4384,9 @@ files = [ name = "webencodings" version = "0.5.1" description = "Character encoding aliases for legacy web content" -optional = true +optional = false python-versions = "*" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] files = [ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, @@ -4469,10 +4396,9 @@ files = [ name = "websocket-client" version = "1.8.0" description = "WebSocket client for Python with low level API options" -optional = true +optional = false python-versions = ">=3.8" -groups = ["main"] -markers = "extra == \"notebook\"" +groups = ["notebook"] 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"}, @@ -4505,11 +4431,7 @@ numpy = ">=1.24" docs = ["numcodecs[msgpack]", "numpydoc", "pydata-sphinx-theme", "sphinx", "sphinx-automodapi", "sphinx-copybutton", "sphinx-design", "sphinx-issues"] jupyter = ["ipytree (>=0.2.2)", "ipywidgets (>=8.0.0)", "notebook"] -[extras] -ipython = ["ipython"] -notebook = ["ipython", "notebook"] - [metadata] lock-version = "2.1" python-versions = ">=3.10,<4.0" -content-hash = "92c3689bd470ab8f5c59240ece40251da4417a547b933ec23bb30ba5768f8003" +content-hash = "945aad33eacc7baf59fe8e17d4dd4de2ddcd7a85b5a15285743a3b5139297627" diff --git a/pyproject.toml b/pyproject.toml index 4f6f0b2..c21cc59 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,7 +36,6 @@ pyvista = "^0.44.2" python-libsbml = "^5.20.4" matplotlib = "^3.10.0" ipython = { version = "*", optional = true } -notebook = { version ="^7.3.2", optional = true } [tool.poetry.group.dev.dependencies] @@ -57,11 +56,14 @@ mkdocstrings = { extras = ["python"], version = "^0.27.0" } griffe = "^1.5.5" -[tool.poetry.extras] -ipython = ["ipython"] -notebook = ["ipython", "notebook"] +[tool.poetry.group.ipython.dependencies] +ipython = "^8.32.0" +[tool.poetry.group.notebook.dependencies] +ipython = "^8.32.0" +notebook = "^7.3.2" + [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" @@ -161,19 +163,6 @@ source = ["pyvcell"] [tool.deptry.per_rule_ignores] -DEP002 = [ - "pytest", - "pytest-cov", - "deptry", - "mypy", - "pre-commit", - "tox", - "types-requests", - "notebook", - "types-toml", - "mkdocs", - "mkdocs-material", - "mkdocstrings", - "griffe", +DEP004 = [ "ipython" ]