From 44288100866a3df7c691c75e1b4ee3b1bdea800f Mon Sep 17 00:00:00 2001 From: "Ayres, Andrew" Date: Wed, 5 Feb 2025 12:53:58 -0600 Subject: [PATCH 1/9] Feedback changes from v1 --- code/.gitignore | 0 code/episode_2/nova_tutorial/README.md | 6 + .../nova_tutorial}/poetry.lock | 478 +++- .../{ => nova_tutorial}/pyproject.toml | 6 +- .../src/nova_tutorial/__init__.py} | 0 .../src/nova_tutorial/app/__init__.py | 5 + .../src/nova_tutorial/app}/__main__.py | 0 .../src/nova_tutorial/app/main.py | 17 + .../src/nova_tutorial/app/models/__init__.py} | 0 .../nova_tutorial/app/models/main_model.py | 23 + .../src/nova_tutorial/app/mvvm_factory.py | 14 + .../nova_tutorial/app/view_models/__init__.py | 0 .../src/nova_tutorial/app/view_models/main.py | 30 + .../src/nova_tutorial/app/views/__init__.py | 0 .../src/nova_tutorial/app/views/main.py | 44 + .../nova_tutorial/app/views/sample_tab_1.py | 13 + .../nova_tutorial/app/views/sample_tab_2.py | 13 + .../app/views/tab_content_panel.py | 28 + .../src/nova_tutorial/app/views/tabs_panel.py | 19 + code/episode_2/poetry.lock | 1384 ---------- code/episode_2/src/nova_tutorial/__init__.py | 7 - code/episode_2/src/nova_tutorial/main.py | 5 - code/episode_3/nova_tutorial/README.md | 6 + code/episode_3/nova_tutorial/poetry.lock | 2164 ++++++++++++++++ .../{ => nova_tutorial}/pyproject.toml | 6 +- .../src/nova_tutorial/__init__.py | 0 .../src/nova_tutorial/app/__init__.py | 5 + .../src/nova_tutorial/app}/__main__.py | 0 .../src/nova_tutorial/app/main.py | 25 + .../src/nova_tutorial/app/models/__init__.py | 0 .../src/nova_tutorial/app}/models/fractal.py | 0 .../nova_tutorial/app/models/main_model.py | 23 + .../src/nova_tutorial/app/mvvm_factory.py | 14 + .../nova_tutorial/app/view_models/__init__.py | 0 .../src/nova_tutorial/app/view_models/main.py | 30 + .../src/nova_tutorial/app/views/__init__.py | 0 .../src/nova_tutorial/app/views/main.py | 44 + .../nova_tutorial/app/views/sample_tab_1.py | 13 + .../nova_tutorial/app/views/sample_tab_2.py | 13 + .../app/views/tab_content_panel.py | 28 + .../src/nova_tutorial/app/views/tabs_panel.py | 19 + code/episode_3/src/nova_tutorial/__init__.py | 7 - code/episode_3/src/nova_tutorial/main.py | 13 - code/episode_4/poetry.lock | 376 ++- code/episode_4/pyproject.toml | 7 +- code/episode_4/src/nova_tutorial/__init__.py | 7 - .../src/nova_tutorial/app/__init__.py | 5 + .../src/nova_tutorial/{ => app}/__main__.py | 0 code/episode_4/src/nova_tutorial/app/main.py | 18 + .../src/nova_tutorial/app/models/__init__.py | 0 .../src/nova_tutorial/app}/models/fractal.py | 11 +- .../nova_tutorial/app/models/main_model.py | 25 + .../src/nova_tutorial/app/mvvm_factory.py | 15 + .../nova_tutorial/app/view_models/__init__.py | 0 .../src/nova_tutorial/app/view_models/main.py | 33 + .../src/nova_tutorial/app/views/__init__.py | 0 .../nova_tutorial/app/views/fractal_tab.py | 17 + .../src/nova_tutorial/app/views/main.py | 45 + .../nova_tutorial/app/views/sample_tab_1.py | 13 + .../nova_tutorial/app/views/sample_tab_2.py | 13 + .../app/views/tab_content_panel.py | 31 + .../src/nova_tutorial/app/views/tabs_panel.py | 21 + code/episode_4/src/nova_tutorial/main.py | 18 - .../view_models/fractal_view_model.py | 49 - code/episode_5/poetry.lock | 248 +- code/episode_5/pyproject.toml | 8 +- code/episode_5/src/nova_tutorial/__init__.py | 7 - .../src/nova_tutorial/app/__init__.py | 5 + .../src/nova_tutorial/{ => app}/__main__.py | 0 code/episode_5/src/nova_tutorial/app/main.py | 18 + .../src/nova_tutorial/app/models/__init__.py | 0 .../src/nova_tutorial/app}/models/fractal.py | 11 +- .../nova_tutorial/app/models/main_model.py | 25 + .../src/nova_tutorial/app/mvvm_factory.py | 15 + .../nova_tutorial/app/view_models/__init__.py | 0 .../src/nova_tutorial/app/view_models/main.py | 33 + .../src/nova_tutorial/app/views/__init__.py | 0 .../nova_tutorial/app/views/fractal_tab.py | 25 + .../src/nova_tutorial/app/views/main.py | 45 + .../nova_tutorial/app/views/sample_tab_1.py | 20 + .../nova_tutorial/app/views/sample_tab_2.py | 25 + .../app/views/tab_content_panel.py | 31 + .../src/nova_tutorial/app/views/tabs_panel.py | 21 + code/episode_5/src/nova_tutorial/main.py | 8 - .../view_models/fractal_view_model.py | 60 - .../src/nova_tutorial/views/fractal_view.py | 42 - code/episode_6/README.md | 0 code/episode_6/poetry.lock | 2242 +++++++++++++++++ code/episode_6/pyproject.toml | 91 + code/episode_6/src/nova_tutorial/__init__.py | 0 .../src/nova_tutorial/app/__init__.py | 5 + .../src/nova_tutorial/app/__main__.py | 5 + code/episode_6/src/nova_tutorial/app/main.py | 18 + .../src/nova_tutorial/app/models/__init__.py | 0 .../src/nova_tutorial/app/models/fractal.py | 30 + .../nova_tutorial/app/models/main_model.py | 28 + .../app/models/sample_tab_models.py | 19 + .../src/nova_tutorial/app/mvvm_factory.py | 15 + .../nova_tutorial/app/view_models/__init__.py | 0 .../src/nova_tutorial/app/view_models/main.py | 33 + .../src/nova_tutorial/app/views/__init__.py | 0 .../nova_tutorial/app/views/fractal_tab.py | 25 + .../src/nova_tutorial/app/views/main.py | 45 + .../nova_tutorial/app/views/sample_tab_1.py | 20 + .../nova_tutorial/app/views/sample_tab_2.py | 25 + .../app/views/tab_content_panel.py | 31 + .../src/nova_tutorial/app/views/tabs_panel.py | 21 + code/episode_7/README.md | 0 code/episode_7/pyproject.toml | 0 code/episode_7/src/nova_tutorial/__init__.py | 0 code/episode_7/src/nova_tutorial/__main__.py | 0 code/episode_7/src/nova_tutorial/main.py | 0 .../src/nova_tutorial/models/plotly.py | 0 .../src/nova_tutorial/models/pyvista.py | 0 .../episode_7/src/nova_tutorial/models/vtk.py | 0 .../view_models/visualization.py | 0 .../src/nova_tutorial/views/plotly.py | 0 .../src/nova_tutorial/views/pyvista.py | 0 .../src/nova_tutorial/views/visualization.py | 0 code/episode_7/src/nova_tutorial/views/vtk.py | 0 episodes/01-Introduction.md | 23 +- episodes/02-Copy-Template.md | 89 +- episodes/03-Nova-Galaxy.md | 2 +- episodes/04-MVVM-Deisgn-Pattern.md | 73 +- episodes/05-Working-with-Trame.md | 246 +- episodes/06-Advanced-Data-Modeling.md | 217 +- episodes/08-Next-Steps.md | 2 +- index.md | 30 +- learners/setup.md | 82 +- 129 files changed, 6752 insertions(+), 2518 deletions(-) mode change 100644 => 100755 code/.gitignore create mode 100755 code/episode_2/nova_tutorial/README.md rename code/{episode_3 => episode_2/nova_tutorial}/poetry.lock (86%) rename code/episode_2/{ => nova_tutorial}/pyproject.toml (95%) rename code/episode_2/{README.md => nova_tutorial/src/nova_tutorial/__init__.py} (100%) create mode 100755 code/episode_2/nova_tutorial/src/nova_tutorial/app/__init__.py rename code/episode_2/{src/nova_tutorial => nova_tutorial/src/nova_tutorial/app}/__main__.py (100%) create mode 100755 code/episode_2/nova_tutorial/src/nova_tutorial/app/main.py rename code/{episode_3/README.md => episode_2/nova_tutorial/src/nova_tutorial/app/models/__init__.py} (100%) create mode 100755 code/episode_2/nova_tutorial/src/nova_tutorial/app/models/main_model.py create mode 100755 code/episode_2/nova_tutorial/src/nova_tutorial/app/mvvm_factory.py create mode 100755 code/episode_2/nova_tutorial/src/nova_tutorial/app/view_models/__init__.py create mode 100755 code/episode_2/nova_tutorial/src/nova_tutorial/app/view_models/main.py create mode 100755 code/episode_2/nova_tutorial/src/nova_tutorial/app/views/__init__.py create mode 100755 code/episode_2/nova_tutorial/src/nova_tutorial/app/views/main.py create mode 100755 code/episode_2/nova_tutorial/src/nova_tutorial/app/views/sample_tab_1.py create mode 100755 code/episode_2/nova_tutorial/src/nova_tutorial/app/views/sample_tab_2.py create mode 100755 code/episode_2/nova_tutorial/src/nova_tutorial/app/views/tab_content_panel.py create mode 100755 code/episode_2/nova_tutorial/src/nova_tutorial/app/views/tabs_panel.py delete mode 100644 code/episode_2/poetry.lock delete mode 100755 code/episode_2/src/nova_tutorial/__init__.py delete mode 100755 code/episode_2/src/nova_tutorial/main.py create mode 100755 code/episode_3/nova_tutorial/README.md create mode 100755 code/episode_3/nova_tutorial/poetry.lock rename code/episode_3/{ => nova_tutorial}/pyproject.toml (95%) create mode 100755 code/episode_3/nova_tutorial/src/nova_tutorial/__init__.py create mode 100755 code/episode_3/nova_tutorial/src/nova_tutorial/app/__init__.py rename code/episode_3/{src/nova_tutorial => nova_tutorial/src/nova_tutorial/app}/__main__.py (100%) create mode 100755 code/episode_3/nova_tutorial/src/nova_tutorial/app/main.py create mode 100755 code/episode_3/nova_tutorial/src/nova_tutorial/app/models/__init__.py rename code/episode_3/{src/nova_tutorial => nova_tutorial/src/nova_tutorial/app}/models/fractal.py (100%) create mode 100755 code/episode_3/nova_tutorial/src/nova_tutorial/app/models/main_model.py create mode 100755 code/episode_3/nova_tutorial/src/nova_tutorial/app/mvvm_factory.py create mode 100755 code/episode_3/nova_tutorial/src/nova_tutorial/app/view_models/__init__.py create mode 100755 code/episode_3/nova_tutorial/src/nova_tutorial/app/view_models/main.py create mode 100755 code/episode_3/nova_tutorial/src/nova_tutorial/app/views/__init__.py create mode 100755 code/episode_3/nova_tutorial/src/nova_tutorial/app/views/main.py create mode 100755 code/episode_3/nova_tutorial/src/nova_tutorial/app/views/sample_tab_1.py create mode 100755 code/episode_3/nova_tutorial/src/nova_tutorial/app/views/sample_tab_2.py create mode 100755 code/episode_3/nova_tutorial/src/nova_tutorial/app/views/tab_content_panel.py create mode 100755 code/episode_3/nova_tutorial/src/nova_tutorial/app/views/tabs_panel.py delete mode 100755 code/episode_3/src/nova_tutorial/__init__.py delete mode 100755 code/episode_3/src/nova_tutorial/main.py mode change 100644 => 100755 code/episode_4/poetry.lock create mode 100755 code/episode_4/src/nova_tutorial/app/__init__.py rename code/episode_4/src/nova_tutorial/{ => app}/__main__.py (100%) create mode 100755 code/episode_4/src/nova_tutorial/app/main.py create mode 100755 code/episode_4/src/nova_tutorial/app/models/__init__.py rename code/{episode_5/src/nova_tutorial => episode_4/src/nova_tutorial/app}/models/fractal.py (68%) create mode 100755 code/episode_4/src/nova_tutorial/app/models/main_model.py create mode 100755 code/episode_4/src/nova_tutorial/app/mvvm_factory.py create mode 100755 code/episode_4/src/nova_tutorial/app/view_models/__init__.py create mode 100755 code/episode_4/src/nova_tutorial/app/view_models/main.py create mode 100755 code/episode_4/src/nova_tutorial/app/views/__init__.py create mode 100755 code/episode_4/src/nova_tutorial/app/views/fractal_tab.py create mode 100755 code/episode_4/src/nova_tutorial/app/views/main.py create mode 100755 code/episode_4/src/nova_tutorial/app/views/sample_tab_1.py create mode 100755 code/episode_4/src/nova_tutorial/app/views/sample_tab_2.py create mode 100755 code/episode_4/src/nova_tutorial/app/views/tab_content_panel.py create mode 100755 code/episode_4/src/nova_tutorial/app/views/tabs_panel.py delete mode 100755 code/episode_4/src/nova_tutorial/main.py delete mode 100755 code/episode_4/src/nova_tutorial/view_models/fractal_view_model.py create mode 100755 code/episode_5/src/nova_tutorial/app/__init__.py rename code/episode_5/src/nova_tutorial/{ => app}/__main__.py (100%) create mode 100755 code/episode_5/src/nova_tutorial/app/main.py create mode 100755 code/episode_5/src/nova_tutorial/app/models/__init__.py rename code/{episode_4/src/nova_tutorial => episode_5/src/nova_tutorial/app}/models/fractal.py (68%) create mode 100755 code/episode_5/src/nova_tutorial/app/models/main_model.py create mode 100755 code/episode_5/src/nova_tutorial/app/mvvm_factory.py create mode 100755 code/episode_5/src/nova_tutorial/app/view_models/__init__.py create mode 100755 code/episode_5/src/nova_tutorial/app/view_models/main.py create mode 100755 code/episode_5/src/nova_tutorial/app/views/__init__.py create mode 100755 code/episode_5/src/nova_tutorial/app/views/fractal_tab.py create mode 100755 code/episode_5/src/nova_tutorial/app/views/main.py create mode 100755 code/episode_5/src/nova_tutorial/app/views/sample_tab_1.py create mode 100755 code/episode_5/src/nova_tutorial/app/views/sample_tab_2.py create mode 100755 code/episode_5/src/nova_tutorial/app/views/tab_content_panel.py create mode 100755 code/episode_5/src/nova_tutorial/app/views/tabs_panel.py delete mode 100755 code/episode_5/src/nova_tutorial/main.py delete mode 100755 code/episode_5/src/nova_tutorial/view_models/fractal_view_model.py delete mode 100755 code/episode_5/src/nova_tutorial/views/fractal_view.py create mode 100755 code/episode_6/README.md create mode 100755 code/episode_6/poetry.lock create mode 100755 code/episode_6/pyproject.toml create mode 100755 code/episode_6/src/nova_tutorial/__init__.py create mode 100755 code/episode_6/src/nova_tutorial/app/__init__.py create mode 100755 code/episode_6/src/nova_tutorial/app/__main__.py create mode 100755 code/episode_6/src/nova_tutorial/app/main.py create mode 100755 code/episode_6/src/nova_tutorial/app/models/__init__.py create mode 100755 code/episode_6/src/nova_tutorial/app/models/fractal.py create mode 100755 code/episode_6/src/nova_tutorial/app/models/main_model.py create mode 100755 code/episode_6/src/nova_tutorial/app/models/sample_tab_models.py create mode 100755 code/episode_6/src/nova_tutorial/app/mvvm_factory.py create mode 100755 code/episode_6/src/nova_tutorial/app/view_models/__init__.py create mode 100755 code/episode_6/src/nova_tutorial/app/view_models/main.py create mode 100755 code/episode_6/src/nova_tutorial/app/views/__init__.py create mode 100755 code/episode_6/src/nova_tutorial/app/views/fractal_tab.py create mode 100755 code/episode_6/src/nova_tutorial/app/views/main.py create mode 100755 code/episode_6/src/nova_tutorial/app/views/sample_tab_1.py create mode 100755 code/episode_6/src/nova_tutorial/app/views/sample_tab_2.py create mode 100755 code/episode_6/src/nova_tutorial/app/views/tab_content_panel.py create mode 100755 code/episode_6/src/nova_tutorial/app/views/tabs_panel.py mode change 100644 => 100755 code/episode_7/README.md mode change 100644 => 100755 code/episode_7/pyproject.toml mode change 100644 => 100755 code/episode_7/src/nova_tutorial/__init__.py mode change 100644 => 100755 code/episode_7/src/nova_tutorial/__main__.py mode change 100644 => 100755 code/episode_7/src/nova_tutorial/main.py mode change 100644 => 100755 code/episode_7/src/nova_tutorial/models/plotly.py mode change 100644 => 100755 code/episode_7/src/nova_tutorial/models/pyvista.py mode change 100644 => 100755 code/episode_7/src/nova_tutorial/models/vtk.py mode change 100644 => 100755 code/episode_7/src/nova_tutorial/view_models/visualization.py mode change 100644 => 100755 code/episode_7/src/nova_tutorial/views/plotly.py mode change 100644 => 100755 code/episode_7/src/nova_tutorial/views/pyvista.py mode change 100644 => 100755 code/episode_7/src/nova_tutorial/views/visualization.py mode change 100644 => 100755 code/episode_7/src/nova_tutorial/views/vtk.py diff --git a/code/.gitignore b/code/.gitignore old mode 100644 new mode 100755 diff --git a/code/episode_2/nova_tutorial/README.md b/code/episode_2/nova_tutorial/README.md new file mode 100755 index 00000000..3e5afc50 --- /dev/null +++ b/code/episode_2/nova_tutorial/README.md @@ -0,0 +1,6 @@ +Nova Tutorial +======================= + + + +Developers: please read [this document](DEVELOPMENT.md) diff --git a/code/episode_3/poetry.lock b/code/episode_2/nova_tutorial/poetry.lock similarity index 86% rename from code/episode_3/poetry.lock rename to code/episode_2/nova_tutorial/poetry.lock index 5b007d1c..d2927940 100755 --- a/code/episode_3/poetry.lock +++ b/code/episode_2/nova_tutorial/poetry.lock @@ -158,13 +158,13 @@ files = [ [[package]] name = "attrs" -version = "24.3.0" +version = "25.1.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.8" files = [ - {file = "attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308"}, - {file = "attrs-24.3.0.tar.gz", hash = "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff"}, + {file = "attrs-25.1.0-py3-none-any.whl", hash = "sha256:c75a69e28a550a7e93789579c22aa26b0f5b83b75dc4e08fe092980051e1090a"}, + {file = "attrs-25.1.0.tar.gz", hash = "sha256:1c97078a80c814273a76b2a298a932eb681c87415c11dee0a6921de7f1b02c3e"}, ] [package.extras] @@ -177,46 +177,27 @@ tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] [[package]] name = "babel" -version = "2.16.0" +version = "2.17.0" description = "Internationalization utilities" optional = false python-versions = ">=3.8" files = [ - {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, - {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, + {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, + {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, ] [package.extras] -dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] - -[[package]] -name = "bioblend" -version = "1.4.0" -description = "Library for interacting with the Galaxy API" -optional = false -python-versions = ">=3.8" -files = [ - {file = "bioblend-1.4.0-py3-none-any.whl", hash = "sha256:20886e5f7658e1dc3e025cedb4be88538342374afba583ce4e2acb5c14a25c63"}, - {file = "bioblend-1.4.0.tar.gz", hash = "sha256:175d49d288e27d132ff59c870551c87cd95d7747be55ab94807c563291a3fa1d"}, -] - -[package.dependencies] -requests = ">=2.20.0" -requests-toolbelt = ">=0.5.1,<0.9.0 || >0.9.0" -tuspy = "*" - -[package.extras] -testing = ["pytest"] +dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata"] [[package]] name = "certifi" -version = "2024.12.14" +version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, - {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, + {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, + {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, ] [[package]] @@ -441,6 +422,24 @@ files = [ [package.extras] toml = ["tomli"] +[[package]] +name = "deepdiff" +version = "8.2.0" +description = "Deep Difference and Search of any Python object/data. Recreate objects by adding adding deltas to each other." +optional = false +python-versions = ">=3.8" +files = [ + {file = "deepdiff-8.2.0-py3-none-any.whl", hash = "sha256:5091f2cdfd372b1b9f6bfd8065ba323ae31118dc4e42594371b38c8bea3fd0a4"}, + {file = "deepdiff-8.2.0.tar.gz", hash = "sha256:6ec78f65031485735545ffbe7a61e716c3c2d12ca6416886d5e9291fc76c46c3"}, +] + +[package.dependencies] +orderly-set = ">=5.3.0,<6" + +[package.extras] +cli = ["click (==8.1.8)", "pyyaml (==6.0.2)"] +optimize = ["orjson"] + [[package]] name = "distlib" version = "0.3.9" @@ -704,6 +703,21 @@ PyYAML = "*" [package.extras] test = ["pytest", "pytest-cov"] +[[package]] +name = "libsass" +version = "0.23.0" +description = "Sass for Python: A straightforward binding of libsass for Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "libsass-0.23.0-cp38-abi3-macosx_11_0_x86_64.whl", hash = "sha256:34cae047cbbfc4ffa832a61cbb110f3c95f5471c6170c842d3fed161e40814dc"}, + {file = "libsass-0.23.0-cp38-abi3-macosx_14_0_arm64.whl", hash = "sha256:ea97d1b45cdc2fc3590cb9d7b60f1d8915d3ce17a98c1f2d4dd47ee0d9c68ce6"}, + {file = "libsass-0.23.0-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4a218406d605f325d234e4678bd57126a66a88841cb95bee2caeafdc6f138306"}, + {file = "libsass-0.23.0-cp38-abi3-win32.whl", hash = "sha256:31e86d92a5c7a551df844b72d83fc2b5e50abc6fbbb31e296f7bebd6489ed1b4"}, + {file = "libsass-0.23.0-cp38-abi3-win_amd64.whl", hash = "sha256:a2ec85d819f353cbe807432d7275d653710d12b08ec7ef61c124a580a8352f3c"}, + {file = "libsass-0.23.0.tar.gz", hash = "sha256:6f209955ede26684e76912caf329f4ccb57e4a043fd77fe0e7348dd9574f1880"}, +] + [[package]] name = "markupsafe" version = "3.0.2" @@ -774,6 +788,101 @@ files = [ {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, ] +[[package]] +name = "mergedeep" +version = "1.3.4" +description = "A deep merge function for 🐍." +optional = false +python-versions = ">=3.6" +files = [ + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, +] + +[[package]] +name = "more-itertools" +version = "10.6.0" +description = "More routines for operating on iterables, beyond itertools" +optional = false +python-versions = ">=3.9" +files = [ + {file = "more-itertools-10.6.0.tar.gz", hash = "sha256:2cd7fad1009c31cc9fb6a035108509e6547547a7a738374f10bd49a09eb3ee3b"}, + {file = "more_itertools-10.6.0-py3-none-any.whl", hash = "sha256:6eb054cb4b6db1473f6e15fcc676a08e4732548acd47c708f0e179c2c7c01e89"}, +] + +[[package]] +name = "msgpack" +version = "1.1.0" +description = "MessagePack serializer" +optional = false +python-versions = ">=3.8" +files = [ + {file = "msgpack-1.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7ad442d527a7e358a469faf43fda45aaf4ac3249c8310a82f0ccff9164e5dccd"}, + {file = "msgpack-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:74bed8f63f8f14d75eec75cf3d04ad581da6b914001b474a5d3cd3372c8cc27d"}, + {file = "msgpack-1.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:914571a2a5b4e7606997e169f64ce53a8b1e06f2cf2c3a7273aa106236d43dd5"}, + {file = "msgpack-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c921af52214dcbb75e6bdf6a661b23c3e6417f00c603dd2070bccb5c3ef499f5"}, + {file = "msgpack-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8ce0b22b890be5d252de90d0e0d119f363012027cf256185fc3d474c44b1b9e"}, + {file = "msgpack-1.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:73322a6cc57fcee3c0c57c4463d828e9428275fb85a27aa2aa1a92fdc42afd7b"}, + {file = "msgpack-1.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e1f3c3d21f7cf67bcf2da8e494d30a75e4cf60041d98b3f79875afb5b96f3a3f"}, + {file = "msgpack-1.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:64fc9068d701233effd61b19efb1485587560b66fe57b3e50d29c5d78e7fef68"}, + {file = "msgpack-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:42f754515e0f683f9c79210a5d1cad631ec3d06cea5172214d2176a42e67e19b"}, + {file = "msgpack-1.1.0-cp310-cp310-win32.whl", hash = "sha256:3df7e6b05571b3814361e8464f9304c42d2196808e0119f55d0d3e62cd5ea044"}, + {file = "msgpack-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:685ec345eefc757a7c8af44a3032734a739f8c45d1b0ac45efc5d8977aa4720f"}, + {file = "msgpack-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3d364a55082fb2a7416f6c63ae383fbd903adb5a6cf78c5b96cc6316dc1cedc7"}, + {file = "msgpack-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:79ec007767b9b56860e0372085f8504db5d06bd6a327a335449508bbee9648fa"}, + {file = "msgpack-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6ad622bf7756d5a497d5b6836e7fc3752e2dd6f4c648e24b1803f6048596f701"}, + {file = "msgpack-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e59bca908d9ca0de3dc8684f21ebf9a690fe47b6be93236eb40b99af28b6ea6"}, + {file = "msgpack-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e1da8f11a3dd397f0a32c76165cf0c4eb95b31013a94f6ecc0b280c05c91b59"}, + {file = "msgpack-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:452aff037287acb1d70a804ffd022b21fa2bb7c46bee884dbc864cc9024128a0"}, + {file = "msgpack-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8da4bf6d54ceed70e8861f833f83ce0814a2b72102e890cbdfe4b34764cdd66e"}, + {file = "msgpack-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:41c991beebf175faf352fb940bf2af9ad1fb77fd25f38d9142053914947cdbf6"}, + {file = "msgpack-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a52a1f3a5af7ba1c9ace055b659189f6c669cf3657095b50f9602af3a3ba0fe5"}, + {file = "msgpack-1.1.0-cp311-cp311-win32.whl", hash = "sha256:58638690ebd0a06427c5fe1a227bb6b8b9fdc2bd07701bec13c2335c82131a88"}, + {file = "msgpack-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fd2906780f25c8ed5d7b323379f6138524ba793428db5d0e9d226d3fa6aa1788"}, + {file = "msgpack-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d46cf9e3705ea9485687aa4001a76e44748b609d260af21c4ceea7f2212a501d"}, + {file = "msgpack-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5dbad74103df937e1325cc4bfeaf57713be0b4f15e1c2da43ccdd836393e2ea2"}, + {file = "msgpack-1.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58dfc47f8b102da61e8949708b3eafc3504509a5728f8b4ddef84bd9e16ad420"}, + {file = "msgpack-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676e5be1b472909b2ee6356ff425ebedf5142427842aa06b4dfd5117d1ca8a2"}, + {file = "msgpack-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17fb65dd0bec285907f68b15734a993ad3fc94332b5bb21b0435846228de1f39"}, + {file = "msgpack-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a51abd48c6d8ac89e0cfd4fe177c61481aca2d5e7ba42044fd218cfd8ea9899f"}, + {file = "msgpack-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2137773500afa5494a61b1208619e3871f75f27b03bcfca7b3a7023284140247"}, + {file = "msgpack-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:398b713459fea610861c8a7b62a6fec1882759f308ae0795b5413ff6a160cf3c"}, + {file = "msgpack-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:06f5fd2f6bb2a7914922d935d3b8bb4a7fff3a9a91cfce6d06c13bc42bec975b"}, + {file = "msgpack-1.1.0-cp312-cp312-win32.whl", hash = "sha256:ad33e8400e4ec17ba782f7b9cf868977d867ed784a1f5f2ab46e7ba53b6e1e1b"}, + {file = "msgpack-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:115a7af8ee9e8cddc10f87636767857e7e3717b7a2e97379dc2054712693e90f"}, + {file = "msgpack-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:071603e2f0771c45ad9bc65719291c568d4edf120b44eb36324dcb02a13bfddf"}, + {file = "msgpack-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0f92a83b84e7c0749e3f12821949d79485971f087604178026085f60ce109330"}, + {file = "msgpack-1.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1964df7b81285d00a84da4e70cb1383f2e665e0f1f2a7027e683956d04b734"}, + {file = "msgpack-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59caf6a4ed0d164055ccff8fe31eddc0ebc07cf7326a2aaa0dbf7a4001cd823e"}, + {file = "msgpack-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0907e1a7119b337971a689153665764adc34e89175f9a34793307d9def08e6ca"}, + {file = "msgpack-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65553c9b6da8166e819a6aa90ad15288599b340f91d18f60b2061f402b9a4915"}, + {file = "msgpack-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7a946a8992941fea80ed4beae6bff74ffd7ee129a90b4dd5cf9c476a30e9708d"}, + {file = "msgpack-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4b51405e36e075193bc051315dbf29168d6141ae2500ba8cd80a522964e31434"}, + {file = "msgpack-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4c01941fd2ff87c2a934ee6055bda4ed353a7846b8d4f341c428109e9fcde8c"}, + {file = "msgpack-1.1.0-cp313-cp313-win32.whl", hash = "sha256:7c9a35ce2c2573bada929e0b7b3576de647b0defbd25f5139dcdaba0ae35a4cc"}, + {file = "msgpack-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:bce7d9e614a04d0883af0b3d4d501171fbfca038f12c77fa838d9f198147a23f"}, + {file = "msgpack-1.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c40ffa9a15d74e05ba1fe2681ea33b9caffd886675412612d93ab17b58ea2fec"}, + {file = "msgpack-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1ba6136e650898082d9d5a5217d5906d1e138024f836ff48691784bbe1adf96"}, + {file = "msgpack-1.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0856a2b7e8dcb874be44fea031d22e5b3a19121be92a1e098f46068a11b0870"}, + {file = "msgpack-1.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:471e27a5787a2e3f974ba023f9e265a8c7cfd373632247deb225617e3100a3c7"}, + {file = "msgpack-1.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:646afc8102935a388ffc3914b336d22d1c2d6209c773f3eb5dd4d6d3b6f8c1cb"}, + {file = "msgpack-1.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:13599f8829cfbe0158f6456374e9eea9f44eee08076291771d8ae93eda56607f"}, + {file = "msgpack-1.1.0-cp38-cp38-win32.whl", hash = "sha256:8a84efb768fb968381e525eeeb3d92857e4985aacc39f3c47ffd00eb4509315b"}, + {file = "msgpack-1.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:879a7b7b0ad82481c52d3c7eb99bf6f0645dbdec5134a4bddbd16f3506947feb"}, + {file = "msgpack-1.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:53258eeb7a80fc46f62fd59c876957a2d0e15e6449a9e71842b6d24419d88ca1"}, + {file = "msgpack-1.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7e7b853bbc44fb03fbdba34feb4bd414322180135e2cb5164f20ce1c9795ee48"}, + {file = "msgpack-1.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3e9b4936df53b970513eac1758f3882c88658a220b58dcc1e39606dccaaf01c"}, + {file = "msgpack-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46c34e99110762a76e3911fc923222472c9d681f1094096ac4102c18319e6468"}, + {file = "msgpack-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a706d1e74dd3dea05cb54580d9bd8b2880e9264856ce5068027eed09680aa74"}, + {file = "msgpack-1.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:534480ee5690ab3cbed89d4c8971a5c631b69a8c0883ecfea96c19118510c846"}, + {file = "msgpack-1.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8cf9e8c3a2153934a23ac160cc4cba0ec035f6867c8013cc6077a79823370346"}, + {file = "msgpack-1.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3180065ec2abbe13a4ad37688b61b99d7f9e012a535b930e0e683ad6bc30155b"}, + {file = "msgpack-1.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c5a91481a3cc573ac8c0d9aace09345d989dc4a0202b7fcb312c88c26d4e71a8"}, + {file = "msgpack-1.1.0-cp39-cp39-win32.whl", hash = "sha256:f80bc7d47f76089633763f952e67f8214cb7b3ee6bfa489b3cb6a84cfac114cd"}, + {file = "msgpack-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:4d1b7ff2d6146e16e8bd665ac726a89c74163ef8cd39fa8c1087d4e52d3a2325"}, + {file = "msgpack-1.1.0.tar.gz", hash = "sha256:dd432ccc2c72b914e4cb77afce64aab761c1137cc698be3984eee260bcb2896e"}, +] + [[package]] name = "multidict" version = "6.1.0" @@ -880,49 +989,43 @@ typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} [[package]] name = "mypy" -version = "1.14.1" +version = "1.15.0" description = "Optional static typing for Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "mypy-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:52686e37cf13d559f668aa398dd7ddf1f92c5d613e4f8cb262be2fb4fedb0fcb"}, - {file = "mypy-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1fb545ca340537d4b45d3eecdb3def05e913299ca72c290326be19b3804b39c0"}, - {file = "mypy-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:90716d8b2d1f4cd503309788e51366f07c56635a3309b0f6a32547eaaa36a64d"}, - {file = "mypy-1.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ae753f5c9fef278bcf12e1a564351764f2a6da579d4a81347e1d5a15819997b"}, - {file = "mypy-1.14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e0fe0f5feaafcb04505bcf439e991c6d8f1bf8b15f12b05feeed96e9e7bf1427"}, - {file = "mypy-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:7d54bd85b925e501c555a3227f3ec0cfc54ee8b6930bd6141ec872d1c572f81f"}, - {file = "mypy-1.14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f995e511de847791c3b11ed90084a7a0aafdc074ab88c5a9711622fe4751138c"}, - {file = "mypy-1.14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d64169ec3b8461311f8ce2fd2eb5d33e2d0f2c7b49116259c51d0d96edee48d1"}, - {file = "mypy-1.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ba24549de7b89b6381b91fbc068d798192b1b5201987070319889e93038967a8"}, - {file = "mypy-1.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:183cf0a45457d28ff9d758730cd0210419ac27d4d3f285beda038c9083363b1f"}, - {file = "mypy-1.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f2a0ecc86378f45347f586e4163d1769dd81c5a223d577fe351f26b179e148b1"}, - {file = "mypy-1.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:ad3301ebebec9e8ee7135d8e3109ca76c23752bac1e717bc84cd3836b4bf3eae"}, - {file = "mypy-1.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:30ff5ef8519bbc2e18b3b54521ec319513a26f1bba19a7582e7b1f58a6e69f14"}, - {file = "mypy-1.14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb9f255c18052343c70234907e2e532bc7e55a62565d64536dbc7706a20b78b9"}, - {file = "mypy-1.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b4e3413e0bddea671012b063e27591b953d653209e7a4fa5e48759cda77ca11"}, - {file = "mypy-1.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:553c293b1fbdebb6c3c4030589dab9fafb6dfa768995a453d8a5d3b23784af2e"}, - {file = "mypy-1.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fad79bfe3b65fe6a1efaed97b445c3d37f7be9fdc348bdb2d7cac75579607c89"}, - {file = "mypy-1.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:8fa2220e54d2946e94ab6dbb3ba0a992795bd68b16dc852db33028df2b00191b"}, - {file = "mypy-1.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:92c3ed5afb06c3a8e188cb5da4984cab9ec9a77ba956ee419c68a388b4595255"}, - {file = "mypy-1.14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dbec574648b3e25f43d23577309b16534431db4ddc09fda50841f1e34e64ed34"}, - {file = "mypy-1.14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8c6d94b16d62eb3e947281aa7347d78236688e21081f11de976376cf010eb31a"}, - {file = "mypy-1.14.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d4b19b03fdf54f3c5b2fa474c56b4c13c9dbfb9a2db4370ede7ec11a2c5927d9"}, - {file = "mypy-1.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0c911fde686394753fff899c409fd4e16e9b294c24bfd5e1ea4675deae1ac6fd"}, - {file = "mypy-1.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:8b21525cb51671219f5307be85f7e646a153e5acc656e5cebf64bfa076c50107"}, - {file = "mypy-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7084fb8f1128c76cd9cf68fe5971b37072598e7c31b2f9f95586b65c741a9d31"}, - {file = "mypy-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8f845a00b4f420f693f870eaee5f3e2692fa84cc8514496114649cfa8fd5e2c6"}, - {file = "mypy-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:44bf464499f0e3a2d14d58b54674dee25c031703b2ffc35064bd0df2e0fac319"}, - {file = "mypy-1.14.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c99f27732c0b7dc847adb21c9d47ce57eb48fa33a17bc6d7d5c5e9f9e7ae5bac"}, - {file = "mypy-1.14.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:bce23c7377b43602baa0bd22ea3265c49b9ff0b76eb315d6c34721af4cdf1d9b"}, - {file = "mypy-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:8edc07eeade7ebc771ff9cf6b211b9a7d93687ff892150cb5692e4f4272b0837"}, - {file = "mypy-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3888a1816d69f7ab92092f785a462944b3ca16d7c470d564165fe703b0970c35"}, - {file = "mypy-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:46c756a444117c43ee984bd055db99e498bc613a70bbbc120272bd13ca579fbc"}, - {file = "mypy-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:27fc248022907e72abfd8e22ab1f10e903915ff69961174784a3900a8cba9ad9"}, - {file = "mypy-1.14.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:499d6a72fb7e5de92218db961f1a66d5f11783f9ae549d214617edab5d4dbdbb"}, - {file = "mypy-1.14.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:57961db9795eb566dc1d1b4e9139ebc4c6b0cb6e7254ecde69d1552bf7613f60"}, - {file = "mypy-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:07ba89fdcc9451f2ebb02853deb6aaaa3d2239a236669a63ab3801bbf923ef5c"}, - {file = "mypy-1.14.1-py3-none-any.whl", hash = "sha256:b66a60cc4073aeb8ae00057f9c1f64d49e90f918fbcef9a977eb121da8b8f1d1"}, - {file = "mypy-1.14.1.tar.gz", hash = "sha256:7ec88144fe9b510e8475ec2f5f251992690fcf89ccb4500b214b4226abcd32d6"}, + {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"}, + {file = "mypy-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be68172e9fd9ad8fb876c6389f16d1c1b5f100ffa779f77b1fb2176fcc9ab95b"}, + {file = "mypy-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c7be1e46525adfa0d97681432ee9fcd61a3964c2446795714699a998d193f1a3"}, + {file = "mypy-1.15.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2e2c2e6d3593f6451b18588848e66260ff62ccca522dd231cd4dd59b0160668b"}, + {file = "mypy-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:6983aae8b2f653e098edb77f893f7b6aca69f6cffb19b2cc7443f23cce5f4828"}, + {file = "mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f"}, + {file = "mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5"}, + {file = "mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e"}, + {file = "mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c"}, + {file = "mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f"}, + {file = "mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f"}, + {file = "mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd"}, + {file = "mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f"}, + {file = "mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464"}, + {file = "mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee"}, + {file = "mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e"}, + {file = "mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22"}, + {file = "mypy-1.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445"}, + {file = "mypy-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d"}, + {file = "mypy-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5"}, + {file = "mypy-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036"}, + {file = "mypy-1.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357"}, + {file = "mypy-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf"}, + {file = "mypy-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e601a7fa172c2131bff456bb3ee08a88360760d0d2f8cbd7a75a65497e2df078"}, + {file = "mypy-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:712e962a6357634fef20412699a3655c610110e01cdaa6180acec7fc9f8513ba"}, + {file = "mypy-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f95579473af29ab73a10bada2f9722856792a36ec5af5399b653aa28360290a5"}, + {file = "mypy-1.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f8722560a14cde92fdb1e31597760dc35f9f5524cce17836c0d22841830fd5b"}, + {file = "mypy-1.15.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1fbb8da62dc352133d7d7ca90ed2fb0e9d42bb1a32724c287d3c76c58cbaa9c2"}, + {file = "mypy-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:d10d994b41fb3497719bbf866f227b3489048ea4bbbb5015357db306249f7980"}, + {file = "mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e"}, + {file = "mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43"}, ] [package.dependencies] @@ -960,18 +1063,55 @@ files = [ ] [[package]] -name = "nova-galaxy" -version = "0.4.0" -description = "Utilties for accessing the ORNL Galaxy instance" +name = "nova-mvvm" +version = "0.9.0" +description = "A Python Package for Model-View-ViewModel pattern" +optional = false +python-versions = "<4.0,>=3.10" +files = [ + {file = "nova_mvvm-0.9.0-py3-none-any.whl", hash = "sha256:60c70f8579b155e7081548e8aec9e77de497fa33ac569096015cffe27ef0f796"}, +] + +[package.dependencies] +deepdiff = ">=8.0.1,<9.0.0" +pytest-asyncio = ">=0.25.0,<0.26.0" +trame = ">=3.6.3,<4.0.0" + +[package.extras] +panel = ["panel (>=1.4.4,<2.0.0)"] +pyqt5 = ["pyqt5 (>=5.15.11,<6.0.0)"] +pyqt6 = ["pyqt6 (>=6.7.0,<7.0.0)"] + +[[package]] +name = "nova-trame" +version = "0.14.2" +description = "A Python Package for injecting curated themes and custom components into Trame applications" optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "nova_galaxy-0.4.0-py3-none-any.whl", hash = "sha256:407ae4b272f5386bd23578daf8c0c9c48c3723fd9fd14aa7328ea38532427ab9"}, + {file = "nova_trame-0.14.2-py3-none-any.whl", hash = "sha256:225c97960947e7b107c5ed425213658ab192079253ecd13451cd06af66ef1ca3"}, ] [package.dependencies] -bioblend = ">=1.3.0,<2.0.0" -tomli = ">=2.0.2,<3.0.0" +libsass = "*" +mergedeep = "*" +nova-mvvm = "*" +pydantic = "*" +tomli = "*" +trame = "*" +trame-vega = "*" +trame-vuetify = "*" + +[[package]] +name = "orderly-set" +version = "5.3.0" +description = "Orderly set" +optional = false +python-versions = ">=3.8" +files = [ + {file = "orderly_set-5.3.0-py3-none-any.whl", hash = "sha256:c2c0bfe604f5d3d9b24e8262a06feb612594f37aa3845650548befd7772945d1"}, + {file = "orderly_set-5.3.0.tar.gz", hash = "sha256:80b3d8fdd3d39004d9aad389eaa0eab02c71f0a0511ba3a6d54a935a6c6a0acc"}, +] [[package]] name = "packaging" @@ -1351,6 +1491,24 @@ tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +[[package]] +name = "pytest-asyncio" +version = "0.25.3" +description = "Pytest support for asyncio" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pytest_asyncio-0.25.3-py3-none-any.whl", hash = "sha256:9e89518e0f9bd08928f97a3482fdc4e244df17529460bc038291ccaf8f85c7c3"}, + {file = "pytest_asyncio-0.25.3.tar.gz", hash = "sha256:fc1da2cf9f125ada7e710b4ddad05518d4cee187ae9412e9ac9271003497f07a"}, +] + +[package.dependencies] +pytest = ">=8.2,<9" + +[package.extras] +docs = ["sphinx (>=5.3)", "sphinx-rtd-theme (>=1)"] +testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] + [[package]] name = "pywin32" version = "308" @@ -1475,45 +1633,31 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] -[[package]] -name = "requests-toolbelt" -version = "1.0.0" -description = "A utility belt for advanced users of python-requests" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, - {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, -] - -[package.dependencies] -requests = ">=2.0.1,<3.0.0" - [[package]] name = "ruff" -version = "0.9.3" +version = "0.9.4" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.9.3-py3-none-linux_armv6l.whl", hash = "sha256:7f39b879064c7d9670197d91124a75d118d00b0990586549949aae80cdc16624"}, - {file = "ruff-0.9.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:a187171e7c09efa4b4cc30ee5d0d55a8d6c5311b3e1b74ac5cb96cc89bafc43c"}, - {file = "ruff-0.9.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c59ab92f8e92d6725b7ded9d4a31be3ef42688a115c6d3da9457a5bda140e2b4"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2dc153c25e715be41bb228bc651c1e9b1a88d5c6e5ed0194fa0dfea02b026439"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:646909a1e25e0dc28fbc529eab8eb7bb583079628e8cbe738192853dbbe43af5"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a5a46e09355695fbdbb30ed9889d6cf1c61b77b700a9fafc21b41f097bfbba4"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c4bb09d2bbb394e3730d0918c00276e79b2de70ec2a5231cd4ebb51a57df9ba1"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96a87ec31dc1044d8c2da2ebbed1c456d9b561e7d087734336518181b26b3aa5"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bb7554aca6f842645022fe2d301c264e6925baa708b392867b7a62645304df4"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cabc332b7075a914ecea912cd1f3d4370489c8018f2c945a30bcc934e3bc06a6"}, - {file = "ruff-0.9.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:33866c3cc2a575cbd546f2cd02bdd466fed65118e4365ee538a3deffd6fcb730"}, - {file = "ruff-0.9.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:006e5de2621304c8810bcd2ee101587712fa93b4f955ed0985907a36c427e0c2"}, - {file = "ruff-0.9.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ba6eea4459dbd6b1be4e6bfc766079fb9b8dd2e5a35aff6baee4d9b1514ea519"}, - {file = "ruff-0.9.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:90230a6b8055ad47d3325e9ee8f8a9ae7e273078a66401ac66df68943ced029b"}, - {file = "ruff-0.9.3-py3-none-win32.whl", hash = "sha256:eabe5eb2c19a42f4808c03b82bd313fc84d4e395133fb3fc1b1516170a31213c"}, - {file = "ruff-0.9.3-py3-none-win_amd64.whl", hash = "sha256:040ceb7f20791dfa0e78b4230ee9dce23da3b64dd5848e40e3bf3ab76468dcf4"}, - {file = "ruff-0.9.3-py3-none-win_arm64.whl", hash = "sha256:800d773f6d4d33b0a3c60e2c6ae8f4c202ea2de056365acfa519aa48acf28e0b"}, - {file = "ruff-0.9.3.tar.gz", hash = "sha256:8293f89985a090ebc3ed1064df31f3b4b56320cdfcec8b60d3295bddb955c22a"}, + {file = "ruff-0.9.4-py3-none-linux_armv6l.whl", hash = "sha256:64e73d25b954f71ff100bb70f39f1ee09e880728efb4250c632ceed4e4cdf706"}, + {file = "ruff-0.9.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6ce6743ed64d9afab4fafeaea70d3631b4d4b28b592db21a5c2d1f0ef52934bf"}, + {file = "ruff-0.9.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:54499fb08408e32b57360f6f9de7157a5fec24ad79cb3f42ef2c3f3f728dfe2b"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37c892540108314a6f01f105040b5106aeb829fa5fb0561d2dcaf71485021137"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:de9edf2ce4b9ddf43fd93e20ef635a900e25f622f87ed6e3047a664d0e8f810e"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87c90c32357c74f11deb7fbb065126d91771b207bf9bfaaee01277ca59b574ec"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:56acd6c694da3695a7461cc55775f3a409c3815ac467279dfa126061d84b314b"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0c93e7d47ed951b9394cf352d6695b31498e68fd5782d6cbc282425655f687a"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1d4c8772670aecf037d1bf7a07c39106574d143b26cfe5ed1787d2f31e800214"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfc5f1d7afeda8d5d37660eeca6d389b142d7f2b5a1ab659d9214ebd0e025231"}, + {file = "ruff-0.9.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:faa935fc00ae854d8b638c16a5f1ce881bc3f67446957dd6f2af440a5fc8526b"}, + {file = "ruff-0.9.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a6c634fc6f5a0ceae1ab3e13c58183978185d131a29c425e4eaa9f40afe1e6d6"}, + {file = "ruff-0.9.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:433dedf6ddfdec7f1ac7575ec1eb9844fa60c4c8c2f8887a070672b8d353d34c"}, + {file = "ruff-0.9.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:d612dbd0f3a919a8cc1d12037168bfa536862066808960e0cc901404b77968f0"}, + {file = "ruff-0.9.4-py3-none-win32.whl", hash = "sha256:db1192ddda2200671f9ef61d9597fcef89d934f5d1705e571a93a67fb13a4402"}, + {file = "ruff-0.9.4-py3-none-win_amd64.whl", hash = "sha256:05bebf4cdbe3ef75430d26c375773978950bbf4ee3c95ccb5448940dc092408e"}, + {file = "ruff-0.9.4-py3-none-win_arm64.whl", hash = "sha256:585792f1e81509e38ac5123492f8875fbc36f3ede8185af0a26df348e5154f41"}, + {file = "ruff-0.9.4.tar.gz", hash = "sha256:6907ee3529244bb0ed066683e075f09285b38dd5b4039370df6ff06041ca19e7"}, ] [[package]] @@ -1715,17 +1859,6 @@ lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] standalone = ["Sphinx (>=5)"] test = ["pytest"] -[[package]] -name = "tinydb" -version = "4.8.2" -description = "TinyDB is a tiny, document oriented database optimized for your happiness :)" -optional = false -python-versions = "<4.0,>=3.8" -files = [ - {file = "tinydb-4.8.2-py3-none-any.whl", hash = "sha256:f97030ee5cbc91eeadd1d7af07ab0e48ceb04aa63d4a983adbaca4cba16e86c3"}, - {file = "tinydb-4.8.2.tar.gz", hash = "sha256:f7dfc39b8d7fda7a1ca62a8dbb449ffd340a117c1206b68c50b1a481fb95181d"}, -] - [[package]] name = "tomli" version = "2.2.1" @@ -1768,24 +1901,89 @@ files = [ ] [[package]] -name = "tuspy" -version = "1.1.0" -description = "A Python client for the tus resumable upload protocol -> http://tus.io" +name = "trame" +version = "3.8.0" +description = "Trame, a framework to build applications in plain Python" optional = false -python-versions = ">=3.5.3" +python-versions = ">=3.9" files = [ - {file = "tuspy-1.1.0-py3-none-any.whl", hash = "sha256:7fc5ac8fb25de37c96c90213f83a1ffdede7f48a471cb5a15a2f57846828a79a"}, - {file = "tuspy-1.1.0.tar.gz", hash = "sha256:156734eac5c61a046cfecd70f14119f05be92cce198eb5a1a99a664482bedb89"}, + {file = "trame-3.8.0-py3-none-any.whl", hash = "sha256:e4c9e648938ec0759f6893ba7afd095afaf0c88b4b8202157717691e135e924f"}, + {file = "trame-3.8.0.tar.gz", hash = "sha256:d084942828ac7930e05dbb765468cffe4ef8bd5170dbd48333a930140b540ccd"}, ] [package.dependencies] -aiohttp = ">=3.6.2" -requests = ">=2.18.4" -tinydb = ">=3.5.0" +trame-client = ">=3.4,<4" +trame-server = ">=3.2.3,<4" +wslink = ">=2.1.3" [package.extras] -dev = ["Sphinx (==1.7.1)", "sphinx-autobuild (==2021.3.14)", "tox (>=2.3.1)"] -test = ["aioresponses (>=0.6.2)", "coverage (>=4.2)", "parametrize (>=0.1.1)", "pytest (>=3.0.3)", "pytest-cov (>=2.3.1,<2.6)", "responses (>=0.5.1)"] +app = ["pywebview"] +dev = ["pre-commit", "pytest", "ruff"] +jupyter = ["jupyterlab"] + +[[package]] +name = "trame-client" +version = "3.5.2" +description = "Internal client of trame" +optional = false +python-versions = ">=3.9" +files = [ + {file = "trame_client-3.5.2-py3-none-any.whl", hash = "sha256:8a950482a437c8245b66bfeb00ac5d7b880b9023f32199e28f15d04f29205ee1"}, + {file = "trame_client-3.5.2.tar.gz", hash = "sha256:e46ddb8e3d611bff90803bff176044083ed85095544557a499eae9c231abedc5"}, +] + +[package.extras] +dev = ["pre-commit", "ruff"] +test = ["Pillow", "pixelmatch", "pytest", "pytest-xprocess", "seleniumbase"] + +[[package]] +name = "trame-server" +version = "3.3.0" +description = "Internal server side implementation of trame" +optional = false +python-versions = ">=3.7" +files = [ + {file = "trame_server-3.3.0-py3-none-any.whl", hash = "sha256:7865053d82617c8d435d274ccf917594a2b1c0d90379f9e686cd662c7ee9cf1a"}, + {file = "trame_server-3.3.0.tar.gz", hash = "sha256:b0b1769d9a0eb816c69076188773cb93b0e2f83c27009d8e94d7208e63c33805"}, +] + +[package.dependencies] +more-itertools = "*" +wslink = ">=2.2.2,<3" + +[package.extras] +dev = ["pre-commit", "pytest", "pytest-asyncio", "ruff"] + +[[package]] +name = "trame-vega" +version = "2.1.1" +description = "Vega widget for trame" +optional = false +python-versions = "*" +files = [ + {file = "trame-vega-2.1.1.tar.gz", hash = "sha256:a3d82f7535a66a782262647001987dba3ad0ddc64ce21225a4cfccd351fed8fa"}, + {file = "trame_vega-2.1.1-py3-none-any.whl", hash = "sha256:044ea338f74fe83e7a5eca15fd1723b3b5f2847d5ca0ed2f0325e30d7676b6c9"}, +] + +[package.dependencies] +trame-client = "*" + +[[package]] +name = "trame-vuetify" +version = "2.8.1" +description = "Vuetify widgets for trame" +optional = false +python-versions = ">=3.9" +files = [ + {file = "trame_vuetify-2.8.1-py3-none-any.whl", hash = "sha256:47d35ab4ec6d37ad1ad8e63c0a2de7c25677f62ef383f1b1e06dd74dda8a3767"}, + {file = "trame_vuetify-2.8.1.tar.gz", hash = "sha256:281606797c29b0300ec2b3524c4396ac2b78da1a300d188d603af09eea83bfe2"}, +] + +[package.dependencies] +trame-client = ">=3.4,<4" + +[package.extras] +dev = ["pre-commit", "pytest", "ruff"] [[package]] name = "typing-extensions" @@ -1846,6 +2044,24 @@ files = [ {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, ] +[[package]] +name = "wslink" +version = "2.2.2" +description = "Python/JavaScript library for communicating over WebSocket" +optional = false +python-versions = "*" +files = [ + {file = "wslink-2.2.2-py3-none-any.whl", hash = "sha256:8fbab2fb89d0215b9ac3da0a20d554e6b1e05bab8b97883923e7f7ffeaef43d3"}, + {file = "wslink-2.2.2.tar.gz", hash = "sha256:f9c24c08b89d2bd9bd77951ad0c01da9c28905dda29d7397f7f72b542c496840"}, +] + +[package.dependencies] +aiohttp = "<4" +msgpack = ">=1,<2" + +[package.extras] +ssl = ["cryptography"] + [[package]] name = "yarl" version = "1.18.3" @@ -1945,4 +2161,4 @@ propcache = ">=0.2.0" [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "462c23766473ec3e6e33285c474975c3f25163e5155eb10e15d3921a48922c9b" +content-hash = "1131a1a151f36bbe11b4fc723d87b3b6ff1d523b617c477bea8ff7b11b8c9997" diff --git a/code/episode_2/pyproject.toml b/code/episode_2/nova_tutorial/pyproject.toml similarity index 95% rename from code/episode_2/pyproject.toml rename to code/episode_2/nova_tutorial/pyproject.toml index 79da1b0c..acfaf7b1 100755 --- a/code/episode_2/pyproject.toml +++ b/code/episode_2/nova_tutorial/pyproject.toml @@ -1,7 +1,7 @@ [tool.poetry] name = "nova-tutorial" version = "0.1.0" -description = "Template application" +description = "Nova Tutorial Project" authors = [] readme = "README.md" license = "MIT" @@ -14,7 +14,7 @@ packages = [ [tool.poetry.dependencies] python = "^3.10" - +nova-trame = "*" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" @@ -86,4 +86,4 @@ sphinxcontrib-napoleon ="*" tomli = "*" [tool.poetry.scripts] -app = "nova_tutorial:main" +app = "nova_tutorial.app:main" diff --git a/code/episode_2/README.md b/code/episode_2/nova_tutorial/src/nova_tutorial/__init__.py similarity index 100% rename from code/episode_2/README.md rename to code/episode_2/nova_tutorial/src/nova_tutorial/__init__.py diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/__init__.py b/code/episode_2/nova_tutorial/src/nova_tutorial/app/__init__.py new file mode 100755 index 00000000..2779e152 --- /dev/null +++ b/code/episode_2/nova_tutorial/src/nova_tutorial/app/__init__.py @@ -0,0 +1,5 @@ +from .main import main + +__all__ = [ + "main", +] diff --git a/code/episode_2/src/nova_tutorial/__main__.py b/code/episode_2/nova_tutorial/src/nova_tutorial/app/__main__.py similarity index 100% rename from code/episode_2/src/nova_tutorial/__main__.py rename to code/episode_2/nova_tutorial/src/nova_tutorial/app/__main__.py diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/main.py b/code/episode_2/nova_tutorial/src/nova_tutorial/app/main.py new file mode 100755 index 00000000..2977dbe1 --- /dev/null +++ b/code/episode_2/nova_tutorial/src/nova_tutorial/app/main.py @@ -0,0 +1,17 @@ +"""Main Application.""" + +import sys + + +def main() -> None: + kwargs = {} + from .views.main import MainApp + + app = MainApp() + for arg in sys.argv[2:]: + try: + key, value = arg.split("=") + kwargs[key] = int(value) + except Exception: + pass + app.server.start(**kwargs) diff --git a/code/episode_3/README.md b/code/episode_2/nova_tutorial/src/nova_tutorial/app/models/__init__.py similarity index 100% rename from code/episode_3/README.md rename to code/episode_2/nova_tutorial/src/nova_tutorial/app/models/__init__.py diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/models/main_model.py b/code/episode_2/nova_tutorial/src/nova_tutorial/app/models/main_model.py new file mode 100755 index 00000000..917d32c1 --- /dev/null +++ b/code/episode_2/nova_tutorial/src/nova_tutorial/app/models/main_model.py @@ -0,0 +1,23 @@ +"""Module for the main model.""" + +from pydantic import BaseModel, Field + + +class MainModel(BaseModel): + """ + A model class. + + This class uses Pydantic (https://docs.pydantic.dev/latest/), + which allows for defining data validation rules, + titles, descriptions, and examples that can be used in GUI elements or + other interfaces for improved clarity and usability. + """ + + username: str = Field( + default="test_name", + min_length=1, + title="User Name", + description="Please provide the name of the user", + examples=["user"], + ) + password: str = Field(default="test_password", title="User Password") diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/mvvm_factory.py b/code/episode_2/nova_tutorial/src/nova_tutorial/app/mvvm_factory.py new file mode 100755 index 00000000..d7cf5f4b --- /dev/null +++ b/code/episode_2/nova_tutorial/src/nova_tutorial/app/mvvm_factory.py @@ -0,0 +1,14 @@ +"""Module for the factory that creates viewmodels used in the application.""" + +from nova.mvvm.interface import BindingInterface + +from .models.main_model import MainModel +from .view_models.main import MainViewModel + + +def create_viewmodels(binding: BindingInterface) -> dict: + model = MainModel() + vm: dict = {} + vm["main"] = MainViewModel(model, binding) + + return vm diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/view_models/__init__.py b/code/episode_2/nova_tutorial/src/nova_tutorial/app/view_models/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/view_models/main.py b/code/episode_2/nova_tutorial/src/nova_tutorial/app/view_models/main.py new file mode 100755 index 00000000..5afc3cd0 --- /dev/null +++ b/code/episode_2/nova_tutorial/src/nova_tutorial/app/view_models/main.py @@ -0,0 +1,30 @@ +"""Module for the main ViewModel.""" + +from typing import Any, Dict + +from nova.mvvm.interface import BindingInterface + +from ..models.main_model import MainModel + + +class MainViewModel: + """Viewmodel class, used to create data<->view binding and react on changes from GUI.""" + + def __init__(self, model: MainModel, binding: BindingInterface): + self.model = model + + # here we create a bind that connects ViewModel with View. It returns a communicator object, + # that allows to update View from ViewModel (by calling update_view). + # self.model will be updated automatically on changes of connected fields in View, + # but one also can provide a callback function if they want to react to those events + # and/or process errors. + self.config_bind = binding.new_bind(self.model, callback_after_update=self.change_callback) + + def change_callback(self, results: Dict[str, Any]) -> None: + if results["error"]: + print(f"error in fields {results['errored']}, model not changed") + else: + print(f"model fields updated: {results['updated']}") + + def update_view(self) -> None: + self.config_bind.update_in_view(self.model) diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/__init__.py b/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/main.py b/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/main.py new file mode 100755 index 00000000..c6832686 --- /dev/null +++ b/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/main.py @@ -0,0 +1,44 @@ +"""Main file.""" + +import logging + +from nova.mvvm.trame_binding import TrameBinding +from nova.trame import ThemedApp +from trame.app import get_server + +from ..mvvm_factory import create_viewmodels +from ..view_models.main import MainViewModel +from .tab_content_panel import TabContentPanel +from .tabs_panel import TabsPanel + +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) + + +class MainApp(ThemedApp): + """Main application view class. Calls rendering of nested UI elements.""" + + def __init__(self) -> None: + super().__init__() + self.server = get_server(None, client_type="vue3") + binding = TrameBinding(self.server.state) + self.server.state.trame__title = "Nova Tutorial" + self.view_models = create_viewmodels(binding) + self.view_model: MainViewModel = self.view_models["main"] + self.create_ui() + + def create_ui(self) -> None: + self.state.trame__title = "Nova Tutorial" + + with super().create_ui() as layout: + layout.toolbar_title.set_text("Nova Tutorial") + with layout.pre_content: + TabsPanel(self.view_models["main"]) + with layout.content: + TabContentPanel( + self.server, + self.view_models["main"], + ) + with layout.post_content: + pass + return layout diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/sample_tab_1.py b/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/sample_tab_1.py new file mode 100755 index 00000000..891cdd10 --- /dev/null +++ b/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/sample_tab_1.py @@ -0,0 +1,13 @@ +"""Module for the Sample Tab 1.""" + +from nova.trame.view.components import InputField + + +class SampleTab1: + """Sample tab 1 view class. Renders text input for username.""" + + def __init__(self) -> None: + self.create_ui() + + def create_ui(self) -> None: + InputField(v_model="config.username") diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/sample_tab_2.py b/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/sample_tab_2.py new file mode 100755 index 00000000..46765f0a --- /dev/null +++ b/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/sample_tab_2.py @@ -0,0 +1,13 @@ +"""Module for the Sample Tab 2.""" + +from nova.trame.view.components import InputField + + +class SampleTab2: + """Sample tab 2 view class. Renders text input for user password.""" + + def __init__(self) -> None: + self.create_ui() + + def create_ui(self) -> None: + InputField(v_model="config.password") diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/tab_content_panel.py b/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/tab_content_panel.py new file mode 100755 index 00000000..2f813811 --- /dev/null +++ b/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/tab_content_panel.py @@ -0,0 +1,28 @@ +"""Module for the Tab Content panel.""" + +from trame.widgets import vuetify3 as vuetify +from trame_server import Server + +from ..view_models.main import MainViewModel +from .sample_tab_1 import SampleTab1 +from .sample_tab_2 import SampleTab2 + + +class TabContentPanel: + """View class to render content for a selected tab.""" + + def __init__(self, server: Server, view_model: MainViewModel) -> None: + self.view_model = view_model + self.server = server + self.ctrl = server.controller + self.create_ui() + + def create_ui(self) -> None: + with vuetify.VForm(ref="form") as self.f: + with vuetify.VContainer(classes="pa-0", fluid=True): + with vuetify.VCard(): + with vuetify.VWindow(v_model="active_tab"): + with vuetify.VWindowItem(value=1): + SampleTab1() + with vuetify.VWindowItem(value=2): + SampleTab2() diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/tabs_panel.py b/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/tabs_panel.py new file mode 100755 index 00000000..c36ea880 --- /dev/null +++ b/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/tabs_panel.py @@ -0,0 +1,19 @@ +"""Module for the Tab panel.""" + +from trame.widgets import vuetify3 as vuetify + +from ..view_models.main import MainViewModel + + +class TabsPanel: + """View class to render tabs.""" + + def __init__(self, view_model: MainViewModel): + self.view_model = view_model + self.view_model.config_bind.connect("config") + self.create_ui() + + def create_ui(self) -> None: + with vuetify.VTabs(v_model=("active_tab", 0), classes="pl-5"): + vuetify.VTab("Sample Tab 1", value=1) + vuetify.VTab("Sample Tab 2", value=2) diff --git a/code/episode_2/poetry.lock b/code/episode_2/poetry.lock deleted file mode 100644 index 886a633b..00000000 --- a/code/episode_2/poetry.lock +++ /dev/null @@ -1,1384 +0,0 @@ -# This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand. - -[[package]] -name = "alabaster" -version = "1.0.0" -description = "A light, configurable Sphinx theme" -category = "dev" -optional = false -python-versions = ">=3.10" -files = [ - {file = "alabaster-1.0.0-py3-none-any.whl", hash = "sha256:fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b"}, - {file = "alabaster-1.0.0.tar.gz", hash = "sha256:c00dca57bca26fa62a6d7d0a9fcce65f3e026e9bfe33e9c538fd3fbb2144fd9e"}, -] - -[[package]] -name = "annotated-types" -version = "0.7.0" -description = "Reusable constraint types to use with typing.Annotated" -category = "dev" -optional = false -python-versions = ">=3.8" -files = [ - {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, - {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, -] - -[[package]] -name = "babel" -version = "2.16.0" -description = "Internationalization utilities" -category = "dev" -optional = false -python-versions = ">=3.8" -files = [ - {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, - {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, -] - -[package.extras] -dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] - -[[package]] -name = "certifi" -version = "2024.12.14" -description = "Python package for providing Mozilla's CA Bundle." -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, - {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, -] - -[[package]] -name = "cfgv" -version = "3.4.0" -description = "Validate configuration and produce human readable error messages." -category = "dev" -optional = false -python-versions = ">=3.8" -files = [ - {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, - {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, -] - -[[package]] -name = "charset-normalizer" -version = "3.4.1" -description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "dev" -optional = false -python-versions = ">=3.7" -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"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"}, - {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"}, - {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"}, - {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"}, - {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"}, - {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"}, - {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"}, - {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"}, - {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"}, - {file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"}, -] - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -category = "dev" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, - {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, -] - -[[package]] -name = "copier" -version = "9.4.1" -description = "A library for rendering project templates." -category = "dev" -optional = false -python-versions = ">=3.9" -files = [ - {file = "copier-9.4.1-py3-none-any.whl", hash = "sha256:863385b7ba8a9090c832cd12ca072dba9153397dbe7c5f337bf8c3d8859efa32"}, - {file = "copier-9.4.1.tar.gz", hash = "sha256:cc81d8204cb17fbc8c4a14996a8ce764166c34c77236de38cfbeb960c887b68f"}, -] - -[package.dependencies] -colorama = ">=0.4.6" -dunamai = ">=1.7.0" -funcy = ">=1.17" -jinja2 = ">=3.1.4" -jinja2-ansible-filters = ">=1.3.1" -packaging = ">=23.0" -pathspec = ">=0.9.0" -plumbum = ">=1.6.9" -pydantic = ">=2.4.2" -pygments = ">=2.7.1" -pyyaml = ">=5.3.1" -questionary = ">=1.8.1" - -[[package]] -name = "coverage" -version = "7.6.10" -description = "Code coverage measurement for Python" -category = "dev" -optional = false -python-versions = ">=3.9" -files = [ - {file = "coverage-7.6.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5c912978f7fbf47ef99cec50c4401340436d200d41d714c7a4766f377c5b7b78"}, - {file = "coverage-7.6.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a01ec4af7dfeb96ff0078ad9a48810bb0cc8abcb0115180c6013a6b26237626c"}, - {file = "coverage-7.6.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3b204c11e2b2d883946fe1d97f89403aa1811df28ce0447439178cc7463448a"}, - {file = "coverage-7.6.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32ee6d8491fcfc82652a37109f69dee9a830e9379166cb73c16d8dc5c2915165"}, - {file = "coverage-7.6.10-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675cefc4c06e3b4c876b85bfb7c59c5e2218167bbd4da5075cbe3b5790a28988"}, - {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f4f620668dbc6f5e909a0946a877310fb3d57aea8198bde792aae369ee1c23b5"}, - {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4eea95ef275de7abaef630c9b2c002ffbc01918b726a39f5a4353916ec72d2f3"}, - {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e2f0280519e42b0a17550072861e0bc8a80a0870de260f9796157d3fca2733c5"}, - {file = "coverage-7.6.10-cp310-cp310-win32.whl", hash = "sha256:bc67deb76bc3717f22e765ab3e07ee9c7a5e26b9019ca19a3b063d9f4b874244"}, - {file = "coverage-7.6.10-cp310-cp310-win_amd64.whl", hash = "sha256:0f460286cb94036455e703c66988851d970fdfd8acc2a1122ab7f4f904e4029e"}, - {file = "coverage-7.6.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ea3c8f04b3e4af80e17bab607c386a830ffc2fb88a5484e1df756478cf70d1d3"}, - {file = "coverage-7.6.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:507a20fc863cae1d5720797761b42d2d87a04b3e5aeb682ef3b7332e90598f43"}, - {file = "coverage-7.6.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d37a84878285b903c0fe21ac8794c6dab58150e9359f1aaebbeddd6412d53132"}, - {file = "coverage-7.6.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a534738b47b0de1995f85f582d983d94031dffb48ab86c95bdf88dc62212142f"}, - {file = "coverage-7.6.10-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d7a2bf79378d8fb8afaa994f91bfd8215134f8631d27eba3e0e2c13546ce994"}, - {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6713ba4b4ebc330f3def51df1d5d38fad60b66720948112f114968feb52d3f99"}, - {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab32947f481f7e8c763fa2c92fd9f44eeb143e7610c4ca9ecd6a36adab4081bd"}, - {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7bbd8c8f1b115b892e34ba66a097b915d3871db7ce0e6b9901f462ff3a975377"}, - {file = "coverage-7.6.10-cp311-cp311-win32.whl", hash = "sha256:299e91b274c5c9cdb64cbdf1b3e4a8fe538a7a86acdd08fae52301b28ba297f8"}, - {file = "coverage-7.6.10-cp311-cp311-win_amd64.whl", hash = "sha256:489a01f94aa581dbd961f306e37d75d4ba16104bbfa2b0edb21d29b73be83609"}, - {file = "coverage-7.6.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:27c6e64726b307782fa5cbe531e7647aee385a29b2107cd87ba7c0105a5d3853"}, - {file = "coverage-7.6.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c56e097019e72c373bae32d946ecf9858fda841e48d82df7e81c63ac25554078"}, - {file = "coverage-7.6.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7827a5bc7bdb197b9e066cdf650b2887597ad124dd99777332776f7b7c7d0d0"}, - {file = "coverage-7.6.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:204a8238afe787323a8b47d8be4df89772d5c1e4651b9ffa808552bdf20e1d50"}, - {file = "coverage-7.6.10-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67926f51821b8e9deb6426ff3164870976fe414d033ad90ea75e7ed0c2e5022"}, - {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e78b270eadb5702938c3dbe9367f878249b5ef9a2fcc5360ac7bff694310d17b"}, - {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:714f942b9c15c3a7a5fe6876ce30af831c2ad4ce902410b7466b662358c852c0"}, - {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:abb02e2f5a3187b2ac4cd46b8ced85a0858230b577ccb2c62c81482ca7d18852"}, - {file = "coverage-7.6.10-cp312-cp312-win32.whl", hash = "sha256:55b201b97286cf61f5e76063f9e2a1d8d2972fc2fcfd2c1272530172fd28c359"}, - {file = "coverage-7.6.10-cp312-cp312-win_amd64.whl", hash = "sha256:e4ae5ac5e0d1e4edfc9b4b57b4cbecd5bc266a6915c500f358817a8496739247"}, - {file = "coverage-7.6.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:05fca8ba6a87aabdd2d30d0b6c838b50510b56cdcfc604d40760dae7153b73d9"}, - {file = "coverage-7.6.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9e80eba8801c386f72e0712a0453431259c45c3249f0009aff537a517b52942b"}, - {file = "coverage-7.6.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a372c89c939d57abe09e08c0578c1d212e7a678135d53aa16eec4430adc5e690"}, - {file = "coverage-7.6.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ec22b5e7fe7a0fa8509181c4aac1db48f3dd4d3a566131b313d1efc102892c18"}, - {file = "coverage-7.6.10-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26bcf5c4df41cad1b19c84af71c22cbc9ea9a547fc973f1f2cc9a290002c8b3c"}, - {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e4630c26b6084c9b3cb53b15bd488f30ceb50b73c35c5ad7871b869cb7365fd"}, - {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2396e8116db77789f819d2bc8a7e200232b7a282c66e0ae2d2cd84581a89757e"}, - {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79109c70cc0882e4d2d002fe69a24aa504dec0cc17169b3c7f41a1d341a73694"}, - {file = "coverage-7.6.10-cp313-cp313-win32.whl", hash = "sha256:9e1747bab246d6ff2c4f28b4d186b205adced9f7bd9dc362051cc37c4a0c7bd6"}, - {file = "coverage-7.6.10-cp313-cp313-win_amd64.whl", hash = "sha256:254f1a3b1eef5f7ed23ef265eaa89c65c8c5b6b257327c149db1ca9d4a35f25e"}, - {file = "coverage-7.6.10-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2ccf240eb719789cedbb9fd1338055de2761088202a9a0b73032857e53f612fe"}, - {file = "coverage-7.6.10-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0c807ca74d5a5e64427c8805de15b9ca140bba13572d6d74e262f46f50b13273"}, - {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bcfa46d7709b5a7ffe089075799b902020b62e7ee56ebaed2f4bdac04c508d8"}, - {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e0de1e902669dccbf80b0415fb6b43d27edca2fbd48c74da378923b05316098"}, - {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7b444c42bbc533aaae6b5a2166fd1a797cdb5eb58ee51a92bee1eb94a1e1cb"}, - {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b330368cb99ef72fcd2dc3ed260adf67b31499584dc8a20225e85bfe6f6cfed0"}, - {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9a7cfb50515f87f7ed30bc882f68812fd98bc2852957df69f3003d22a2aa0abf"}, - {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f93531882a5f68c28090f901b1d135de61b56331bba82028489bc51bdd818d2"}, - {file = "coverage-7.6.10-cp313-cp313t-win32.whl", hash = "sha256:89d76815a26197c858f53c7f6a656686ec392b25991f9e409bcef020cd532312"}, - {file = "coverage-7.6.10-cp313-cp313t-win_amd64.whl", hash = "sha256:54a5f0f43950a36312155dae55c505a76cd7f2b12d26abeebbe7a0b36dbc868d"}, - {file = "coverage-7.6.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:656c82b8a0ead8bba147de9a89bda95064874c91a3ed43a00e687f23cc19d53a"}, - {file = "coverage-7.6.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ccc2b70a7ed475c68ceb548bf69cec1e27305c1c2606a5eb7c3afff56a1b3b27"}, - {file = "coverage-7.6.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5e37dc41d57ceba70956fa2fc5b63c26dba863c946ace9705f8eca99daecdc4"}, - {file = "coverage-7.6.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0aa9692b4fdd83a4647eeb7db46410ea1322b5ed94cd1715ef09d1d5922ba87f"}, - {file = "coverage-7.6.10-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa744da1820678b475e4ba3dfd994c321c5b13381d1041fe9c608620e6676e25"}, - {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c0b1818063dc9e9d838c09e3a473c1422f517889436dd980f5d721899e66f315"}, - {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:59af35558ba08b758aec4d56182b222976330ef8d2feacbb93964f576a7e7a90"}, - {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7ed2f37cfce1ce101e6dffdfd1c99e729dd2ffc291d02d3e2d0af8b53d13840d"}, - {file = "coverage-7.6.10-cp39-cp39-win32.whl", hash = "sha256:4bcc276261505d82f0ad426870c3b12cb177752834a633e737ec5ee79bbdff18"}, - {file = "coverage-7.6.10-cp39-cp39-win_amd64.whl", hash = "sha256:457574f4599d2b00f7f637a0700a6422243b3565509457b2dbd3f50703e11f59"}, - {file = "coverage-7.6.10-pp39.pp310-none-any.whl", hash = "sha256:fd34e7b3405f0cc7ab03d54a334c17a9e802897580d964bd8c2001f4b9fd488f"}, - {file = "coverage-7.6.10.tar.gz", hash = "sha256:7fb105327c8f8f0682e29843e2ff96af9dcbe5bab8eeb4b398c6a33a16d80a23"}, -] - -[package.extras] -toml = ["tomli"] - -[[package]] -name = "distlib" -version = "0.3.9" -description = "Distribution utilities" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, - {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, -] - -[[package]] -name = "docutils" -version = "0.21.2" -description = "Docutils -- Python Documentation Utilities" -category = "dev" -optional = false -python-versions = ">=3.9" -files = [ - {file = "docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2"}, - {file = "docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f"}, -] - -[[package]] -name = "dunamai" -version = "1.23.0" -description = "Dynamic version generation" -category = "dev" -optional = false -python-versions = ">=3.5" -files = [ - {file = "dunamai-1.23.0-py3-none-any.whl", hash = "sha256:a0906d876e92441793c6a423e16a4802752e723e9c9a5aabdc5535df02dbe041"}, - {file = "dunamai-1.23.0.tar.gz", hash = "sha256:a163746de7ea5acb6dacdab3a6ad621ebc612ed1e528aaa8beedb8887fccd2c4"}, -] - -[package.dependencies] -packaging = ">=20.9" - -[[package]] -name = "exceptiongroup" -version = "1.2.2" -description = "Backport of PEP 654 (exception groups)" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, - {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, -] - -[package.extras] -test = ["pytest (>=6)"] - -[[package]] -name = "filelock" -version = "3.17.0" -description = "A platform independent file lock." -category = "dev" -optional = false -python-versions = ">=3.9" -files = [ - {file = "filelock-3.17.0-py3-none-any.whl", hash = "sha256:533dc2f7ba78dc2f0f531fc6c4940addf7b70a481e269a5a3b93be94ffbe8338"}, - {file = "filelock-3.17.0.tar.gz", hash = "sha256:ee4e77401ef576ebb38cd7f13b9b28893194acc20a8e68e18730ba9c0e54660e"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] -typing = ["typing-extensions (>=4.12.2)"] - -[[package]] -name = "funcy" -version = "2.0" -description = "A fancy and practical functional tools" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "funcy-2.0-py2.py3-none-any.whl", hash = "sha256:53df23c8bb1651b12f095df764bfb057935d49537a56de211b098f4c79614bb0"}, - {file = "funcy-2.0.tar.gz", hash = "sha256:3963315d59d41c6f30c04bc910e10ab50a3ac4a225868bfa96feed133df075cb"}, -] - -[[package]] -name = "identify" -version = "2.6.6" -description = "File identification library for Python" -category = "dev" -optional = false -python-versions = ">=3.9" -files = [ - {file = "identify-2.6.6-py2.py3-none-any.whl", hash = "sha256:cbd1810bce79f8b671ecb20f53ee0ae8e86ae84b557de31d89709dc2a48ba881"}, - {file = "identify-2.6.6.tar.gz", hash = "sha256:7bec12768ed44ea4761efb47806f0a41f86e7c0a5fdf5950d4648c90eca7e251"}, -] - -[package.extras] -license = ["ukkonen"] - -[[package]] -name = "idna" -version = "3.10" -description = "Internationalized Domain Names in Applications (IDNA)" -category = "dev" -optional = false -python-versions = ">=3.6" -files = [ - {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, - {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, -] - -[package.extras] -all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] - -[[package]] -name = "imagesize" -version = "1.4.1" -description = "Getting image size from png/jpeg/jpeg2000/gif file" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, - {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, -] - -[[package]] -name = "iniconfig" -version = "2.0.0" -description = "brain-dead simple config-ini parsing" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, - {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, -] - -[[package]] -name = "jinja2" -version = "3.1.5" -description = "A very fast and expressive template engine." -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, - {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - -[[package]] -name = "jinja2-ansible-filters" -version = "1.3.2" -description = "A port of Ansible's jinja2 filters without requiring ansible core." -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "jinja2-ansible-filters-1.3.2.tar.gz", hash = "sha256:07c10cf44d7073f4f01102ca12d9a2dc31b41d47e4c61ed92ef6a6d2669b356b"}, - {file = "jinja2_ansible_filters-1.3.2-py3-none-any.whl", hash = "sha256:e1082f5564917649c76fed239117820610516ec10f87735d0338688800a55b34"}, -] - -[package.dependencies] -Jinja2 = "*" -PyYAML = "*" - -[package.extras] -test = ["pytest", "pytest-cov"] - -[[package]] -name = "markupsafe" -version = "3.0.2" -description = "Safely add untrusted strings to HTML/XML markup." -category = "dev" -optional = false -python-versions = ">=3.9" -files = [ - {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, - {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, -] - -[[package]] -name = "mypy" -version = "1.14.1" -description = "Optional static typing for Python" -category = "dev" -optional = false -python-versions = ">=3.8" -files = [ - {file = "mypy-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:52686e37cf13d559f668aa398dd7ddf1f92c5d613e4f8cb262be2fb4fedb0fcb"}, - {file = "mypy-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1fb545ca340537d4b45d3eecdb3def05e913299ca72c290326be19b3804b39c0"}, - {file = "mypy-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:90716d8b2d1f4cd503309788e51366f07c56635a3309b0f6a32547eaaa36a64d"}, - {file = "mypy-1.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ae753f5c9fef278bcf12e1a564351764f2a6da579d4a81347e1d5a15819997b"}, - {file = "mypy-1.14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e0fe0f5feaafcb04505bcf439e991c6d8f1bf8b15f12b05feeed96e9e7bf1427"}, - {file = "mypy-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:7d54bd85b925e501c555a3227f3ec0cfc54ee8b6930bd6141ec872d1c572f81f"}, - {file = "mypy-1.14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f995e511de847791c3b11ed90084a7a0aafdc074ab88c5a9711622fe4751138c"}, - {file = "mypy-1.14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d64169ec3b8461311f8ce2fd2eb5d33e2d0f2c7b49116259c51d0d96edee48d1"}, - {file = "mypy-1.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ba24549de7b89b6381b91fbc068d798192b1b5201987070319889e93038967a8"}, - {file = "mypy-1.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:183cf0a45457d28ff9d758730cd0210419ac27d4d3f285beda038c9083363b1f"}, - {file = "mypy-1.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f2a0ecc86378f45347f586e4163d1769dd81c5a223d577fe351f26b179e148b1"}, - {file = "mypy-1.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:ad3301ebebec9e8ee7135d8e3109ca76c23752bac1e717bc84cd3836b4bf3eae"}, - {file = "mypy-1.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:30ff5ef8519bbc2e18b3b54521ec319513a26f1bba19a7582e7b1f58a6e69f14"}, - {file = "mypy-1.14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb9f255c18052343c70234907e2e532bc7e55a62565d64536dbc7706a20b78b9"}, - {file = "mypy-1.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b4e3413e0bddea671012b063e27591b953d653209e7a4fa5e48759cda77ca11"}, - {file = "mypy-1.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:553c293b1fbdebb6c3c4030589dab9fafb6dfa768995a453d8a5d3b23784af2e"}, - {file = "mypy-1.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fad79bfe3b65fe6a1efaed97b445c3d37f7be9fdc348bdb2d7cac75579607c89"}, - {file = "mypy-1.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:8fa2220e54d2946e94ab6dbb3ba0a992795bd68b16dc852db33028df2b00191b"}, - {file = "mypy-1.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:92c3ed5afb06c3a8e188cb5da4984cab9ec9a77ba956ee419c68a388b4595255"}, - {file = "mypy-1.14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dbec574648b3e25f43d23577309b16534431db4ddc09fda50841f1e34e64ed34"}, - {file = "mypy-1.14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8c6d94b16d62eb3e947281aa7347d78236688e21081f11de976376cf010eb31a"}, - {file = "mypy-1.14.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d4b19b03fdf54f3c5b2fa474c56b4c13c9dbfb9a2db4370ede7ec11a2c5927d9"}, - {file = "mypy-1.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0c911fde686394753fff899c409fd4e16e9b294c24bfd5e1ea4675deae1ac6fd"}, - {file = "mypy-1.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:8b21525cb51671219f5307be85f7e646a153e5acc656e5cebf64bfa076c50107"}, - {file = "mypy-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7084fb8f1128c76cd9cf68fe5971b37072598e7c31b2f9f95586b65c741a9d31"}, - {file = "mypy-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8f845a00b4f420f693f870eaee5f3e2692fa84cc8514496114649cfa8fd5e2c6"}, - {file = "mypy-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:44bf464499f0e3a2d14d58b54674dee25c031703b2ffc35064bd0df2e0fac319"}, - {file = "mypy-1.14.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c99f27732c0b7dc847adb21c9d47ce57eb48fa33a17bc6d7d5c5e9f9e7ae5bac"}, - {file = "mypy-1.14.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:bce23c7377b43602baa0bd22ea3265c49b9ff0b76eb315d6c34721af4cdf1d9b"}, - {file = "mypy-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:8edc07eeade7ebc771ff9cf6b211b9a7d93687ff892150cb5692e4f4272b0837"}, - {file = "mypy-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3888a1816d69f7ab92092f785a462944b3ca16d7c470d564165fe703b0970c35"}, - {file = "mypy-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:46c756a444117c43ee984bd055db99e498bc613a70bbbc120272bd13ca579fbc"}, - {file = "mypy-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:27fc248022907e72abfd8e22ab1f10e903915ff69961174784a3900a8cba9ad9"}, - {file = "mypy-1.14.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:499d6a72fb7e5de92218db961f1a66d5f11783f9ae549d214617edab5d4dbdbb"}, - {file = "mypy-1.14.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:57961db9795eb566dc1d1b4e9139ebc4c6b0cb6e7254ecde69d1552bf7613f60"}, - {file = "mypy-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:07ba89fdcc9451f2ebb02853deb6aaaa3d2239a236669a63ab3801bbf923ef5c"}, - {file = "mypy-1.14.1-py3-none-any.whl", hash = "sha256:b66a60cc4073aeb8ae00057f9c1f64d49e90f918fbcef9a977eb121da8b8f1d1"}, - {file = "mypy-1.14.1.tar.gz", hash = "sha256:7ec88144fe9b510e8475ec2f5f251992690fcf89ccb4500b214b4226abcd32d6"}, -] - -[package.dependencies] -mypy_extensions = ">=1.0.0" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing_extensions = ">=4.6.0" - -[package.extras] -dmypy = ["psutil (>=4.0)"] -faster-cache = ["orjson"] -install-types = ["pip"] -mypyc = ["setuptools (>=50)"] -reports = ["lxml"] - -[[package]] -name = "mypy-extensions" -version = "1.0.0" -description = "Type system extensions for programs checked with the mypy type checker." -category = "dev" -optional = false -python-versions = ">=3.5" -files = [ - {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, -] - -[[package]] -name = "nodeenv" -version = "1.9.1" -description = "Node.js virtual environment builder" -category = "dev" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, - {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, -] - -[[package]] -name = "packaging" -version = "24.2" -description = "Core utilities for Python packages" -category = "dev" -optional = false -python-versions = ">=3.8" -files = [ - {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, - {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, -] - -[[package]] -name = "pathspec" -version = "0.12.1" -description = "Utility library for gitignore style pattern matching of file paths." -category = "dev" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, - {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, -] - -[[package]] -name = "platformdirs" -version = "4.3.6" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -category = "dev" -optional = false -python-versions = ">=3.8" -files = [ - {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, - {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, -] - -[package.extras] -docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] -type = ["mypy (>=1.11.2)"] - -[[package]] -name = "pluggy" -version = "1.5.0" -description = "plugin and hook calling mechanisms for python" -category = "dev" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, - {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, -] - -[package.extras] -dev = ["pre-commit", "tox"] -testing = ["pytest", "pytest-benchmark"] - -[[package]] -name = "plumbum" -version = "1.9.0" -description = "Plumbum: shell combinators library" -category = "dev" -optional = false -python-versions = ">=3.8" -files = [ - {file = "plumbum-1.9.0-py3-none-any.whl", hash = "sha256:9fd0d3b0e8d86e4b581af36edf3f3bbe9d1ae15b45b8caab28de1bcb27aaa7f5"}, - {file = "plumbum-1.9.0.tar.gz", hash = "sha256:e640062b72642c3873bd5bdc3effed75ba4d3c70ef6b6a7b907357a84d909219"}, -] - -[package.dependencies] -pywin32 = {version = "*", markers = "platform_system == \"Windows\" and platform_python_implementation != \"PyPy\""} - -[package.extras] -dev = ["coverage[toml]", "paramiko", "psutil", "pytest (>=6.0)", "pytest-cov", "pytest-mock", "pytest-timeout"] -docs = ["sphinx (>=4.0.0)", "sphinx-rtd-theme (>=1.0.0)"] -ssh = ["paramiko"] -test = ["coverage[toml]", "paramiko", "psutil", "pytest (>=6.0)", "pytest-cov", "pytest-mock", "pytest-timeout"] - -[[package]] -name = "pockets" -version = "0.9.1" -description = "A collection of helpful Python tools!" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "pockets-0.9.1-py2.py3-none-any.whl", hash = "sha256:68597934193c08a08eb2bf6a1d85593f627c22f9b065cc727a4f03f669d96d86"}, - {file = "pockets-0.9.1.tar.gz", hash = "sha256:9320f1a3c6f7a9133fe3b571f283bcf3353cd70249025ae8d618e40e9f7e92b3"}, -] - -[package.dependencies] -six = ">=1.5.2" - -[[package]] -name = "pre-commit" -version = "4.1.0" -description = "A framework for managing and maintaining multi-language pre-commit hooks." -category = "dev" -optional = false -python-versions = ">=3.9" -files = [ - {file = "pre_commit-4.1.0-py2.py3-none-any.whl", hash = "sha256:d29e7cb346295bcc1cc75fc3e92e343495e3ea0196c9ec6ba53f49f10ab6ae7b"}, - {file = "pre_commit-4.1.0.tar.gz", hash = "sha256:ae3f018575a588e30dfddfab9a05448bfbd6b73d78709617b5a2b853549716d4"}, -] - -[package.dependencies] -cfgv = ">=2.0.0" -identify = ">=1.0.0" -nodeenv = ">=0.11.1" -pyyaml = ">=5.1" -virtualenv = ">=20.10.0" - -[[package]] -name = "prompt-toolkit" -version = "3.0.50" -description = "Library for building powerful interactive command lines in Python" -category = "dev" -optional = false -python-versions = ">=3.8.0" -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"}, -] - -[package.dependencies] -wcwidth = "*" - -[[package]] -name = "pydantic" -version = "2.10.6" -description = "Data validation using Python type hints" -category = "dev" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584"}, - {file = "pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236"}, -] - -[package.dependencies] -annotated-types = ">=0.6.0" -pydantic-core = "2.27.2" -typing-extensions = ">=4.12.2" - -[package.extras] -email = ["email-validator (>=2.0.0)"] -timezone = ["tzdata"] - -[[package]] -name = "pydantic-core" -version = "2.27.2" -description = "Core functionality for Pydantic validation and serialization" -category = "dev" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"}, - {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"}, - {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"}, - {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"}, - {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"}, - {file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"}, - {file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"}, - {file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"}, - {file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"}, - {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"}, - {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"}, - {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"}, - {file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"}, - {file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"}, - {file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"}, - {file = "pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0"}, - {file = "pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4"}, - {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3"}, - {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4"}, - {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57"}, - {file = "pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc"}, - {file = "pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9"}, - {file = "pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b"}, - {file = "pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b"}, - {file = "pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4"}, - {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27"}, - {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee"}, - {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1"}, - {file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"}, - {file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"}, - {file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"}, - {file = "pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506"}, - {file = "pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a"}, - {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d"}, - {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9"}, - {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da"}, - {file = "pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b"}, - {file = "pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"}, - {file = "pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993"}, - {file = "pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54"}, - {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f"}, - {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362"}, - {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96"}, - {file = "pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e"}, - {file = "pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35"}, - {file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"}, -] - -[package.dependencies] -typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" - -[[package]] -name = "pygments" -version = "2.19.1" -description = "Pygments is a syntax highlighting package written in Python." -category = "dev" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, - {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, -] - -[package.extras] -windows-terminal = ["colorama (>=0.4.6)"] - -[[package]] -name = "pytest" -version = "8.3.4" -description = "pytest: simple powerful testing with Python" -category = "dev" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, - {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=1.5,<2" -tomli = {version = ">=1", markers = "python_version < \"3.11\""} - -[package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] - -[[package]] -name = "pywin32" -version = "308" -description = "Python for Window Extensions" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, - {file = "pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e"}, - {file = "pywin32-308-cp310-cp310-win_arm64.whl", hash = "sha256:a5ab5381813b40f264fa3495b98af850098f814a25a63589a8e9eb12560f450c"}, - {file = "pywin32-308-cp311-cp311-win32.whl", hash = "sha256:5d8c8015b24a7d6855b1550d8e660d8daa09983c80e5daf89a273e5c6fb5095a"}, - {file = "pywin32-308-cp311-cp311-win_amd64.whl", hash = "sha256:575621b90f0dc2695fec346b2d6302faebd4f0f45c05ea29404cefe35d89442b"}, - {file = "pywin32-308-cp311-cp311-win_arm64.whl", hash = "sha256:100a5442b7332070983c4cd03f2e906a5648a5104b8a7f50175f7906efd16bb6"}, - {file = "pywin32-308-cp312-cp312-win32.whl", hash = "sha256:587f3e19696f4bf96fde9d8a57cec74a57021ad5f204c9e627e15c33ff568897"}, - {file = "pywin32-308-cp312-cp312-win_amd64.whl", hash = "sha256:00b3e11ef09ede56c6a43c71f2d31857cf7c54b0ab6e78ac659497abd2834f47"}, - {file = "pywin32-308-cp312-cp312-win_arm64.whl", hash = "sha256:9b4de86c8d909aed15b7011182c8cab38c8850de36e6afb1f0db22b8959e3091"}, - {file = "pywin32-308-cp313-cp313-win32.whl", hash = "sha256:1c44539a37a5b7b21d02ab34e6a4d314e0788f1690d65b48e9b0b89f31abbbed"}, - {file = "pywin32-308-cp313-cp313-win_amd64.whl", hash = "sha256:fd380990e792eaf6827fcb7e187b2b4b1cede0585e3d0c9e84201ec27b9905e4"}, - {file = "pywin32-308-cp313-cp313-win_arm64.whl", hash = "sha256:ef313c46d4c18dfb82a2431e3051ac8f112ccee1a34f29c263c583c568db63cd"}, - {file = "pywin32-308-cp37-cp37m-win32.whl", hash = "sha256:1f696ab352a2ddd63bd07430080dd598e6369152ea13a25ebcdd2f503a38f1ff"}, - {file = "pywin32-308-cp37-cp37m-win_amd64.whl", hash = "sha256:13dcb914ed4347019fbec6697a01a0aec61019c1046c2b905410d197856326a6"}, - {file = "pywin32-308-cp38-cp38-win32.whl", hash = "sha256:5794e764ebcabf4ff08c555b31bd348c9025929371763b2183172ff4708152f0"}, - {file = "pywin32-308-cp38-cp38-win_amd64.whl", hash = "sha256:3b92622e29d651c6b783e368ba7d6722b1634b8e70bd376fd7610fe1992e19de"}, - {file = "pywin32-308-cp39-cp39-win32.whl", hash = "sha256:7873ca4dc60ab3287919881a7d4f88baee4a6e639aa6962de25a98ba6b193341"}, - {file = "pywin32-308-cp39-cp39-win_amd64.whl", hash = "sha256:71b3322d949b4cc20776436a9c9ba0eeedcbc9c650daa536df63f0ff111bb920"}, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -description = "YAML parser and emitter for Python" -category = "dev" -optional = false -python-versions = ">=3.8" -files = [ - {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, - {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, - {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, - {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, - {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, - {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, - {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, - {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, - {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, - {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, - {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, - {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, - {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, - {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, - {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, - {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, - {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, - {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, - {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, - {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, - {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, - {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, - {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, - {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, - {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, - {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, - {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, - {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, - {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, - {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, - {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, - {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, -] - -[[package]] -name = "questionary" -version = "2.1.0" -description = "Python library to build pretty command line user prompts ⭐️" -category = "dev" -optional = false -python-versions = ">=3.8" -files = [ - {file = "questionary-2.1.0-py3-none-any.whl", hash = "sha256:44174d237b68bc828e4878c763a9ad6790ee61990e0ae72927694ead57bab8ec"}, - {file = "questionary-2.1.0.tar.gz", hash = "sha256:6302cdd645b19667d8f6e6634774e9538bfcd1aad9be287e743d96cacaf95587"}, -] - -[package.dependencies] -prompt_toolkit = ">=2.0,<4.0" - -[[package]] -name = "requests" -version = "2.32.3" -description = "Python HTTP for Humans." -category = "dev" -optional = false -python-versions = ">=3.8" -files = [ - {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, - {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, -] - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "ruff" -version = "0.9.3" -description = "An extremely fast Python linter and code formatter, written in Rust." -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "ruff-0.9.3-py3-none-linux_armv6l.whl", hash = "sha256:7f39b879064c7d9670197d91124a75d118d00b0990586549949aae80cdc16624"}, - {file = "ruff-0.9.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:a187171e7c09efa4b4cc30ee5d0d55a8d6c5311b3e1b74ac5cb96cc89bafc43c"}, - {file = "ruff-0.9.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c59ab92f8e92d6725b7ded9d4a31be3ef42688a115c6d3da9457a5bda140e2b4"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2dc153c25e715be41bb228bc651c1e9b1a88d5c6e5ed0194fa0dfea02b026439"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:646909a1e25e0dc28fbc529eab8eb7bb583079628e8cbe738192853dbbe43af5"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a5a46e09355695fbdbb30ed9889d6cf1c61b77b700a9fafc21b41f097bfbba4"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c4bb09d2bbb394e3730d0918c00276e79b2de70ec2a5231cd4ebb51a57df9ba1"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96a87ec31dc1044d8c2da2ebbed1c456d9b561e7d087734336518181b26b3aa5"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bb7554aca6f842645022fe2d301c264e6925baa708b392867b7a62645304df4"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cabc332b7075a914ecea912cd1f3d4370489c8018f2c945a30bcc934e3bc06a6"}, - {file = "ruff-0.9.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:33866c3cc2a575cbd546f2cd02bdd466fed65118e4365ee538a3deffd6fcb730"}, - {file = "ruff-0.9.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:006e5de2621304c8810bcd2ee101587712fa93b4f955ed0985907a36c427e0c2"}, - {file = "ruff-0.9.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ba6eea4459dbd6b1be4e6bfc766079fb9b8dd2e5a35aff6baee4d9b1514ea519"}, - {file = "ruff-0.9.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:90230a6b8055ad47d3325e9ee8f8a9ae7e273078a66401ac66df68943ced029b"}, - {file = "ruff-0.9.3-py3-none-win32.whl", hash = "sha256:eabe5eb2c19a42f4808c03b82bd313fc84d4e395133fb3fc1b1516170a31213c"}, - {file = "ruff-0.9.3-py3-none-win_amd64.whl", hash = "sha256:040ceb7f20791dfa0e78b4230ee9dce23da3b64dd5848e40e3bf3ab76468dcf4"}, - {file = "ruff-0.9.3-py3-none-win_arm64.whl", hash = "sha256:800d773f6d4d33b0a3c60e2c6ae8f4c202ea2de056365acfa519aa48acf28e0b"}, - {file = "ruff-0.9.3.tar.gz", hash = "sha256:8293f89985a090ebc3ed1064df31f3b4b56320cdfcec8b60d3295bddb955c22a"}, -] - -[[package]] -name = "six" -version = "1.17.0" -description = "Python 2 and 3 compatibility utilities" -category = "dev" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, - {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, -] - -[[package]] -name = "snowballstemmer" -version = "2.2.0" -description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, - {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, -] - -[[package]] -name = "sphinx" -version = "8.1.3" -description = "Python documentation generator" -category = "dev" -optional = false -python-versions = ">=3.10" -files = [ - {file = "sphinx-8.1.3-py3-none-any.whl", hash = "sha256:09719015511837b76bf6e03e42eb7595ac8c2e41eeb9c29c5b755c6b677992a2"}, - {file = "sphinx-8.1.3.tar.gz", hash = "sha256:43c1911eecb0d3e161ad78611bc905d1ad0e523e4ddc202a58a821773dc4c927"}, -] - -[package.dependencies] -alabaster = ">=0.7.14" -babel = ">=2.13" -colorama = {version = ">=0.4.6", markers = "sys_platform == \"win32\""} -docutils = ">=0.20,<0.22" -imagesize = ">=1.3" -Jinja2 = ">=3.1" -packaging = ">=23.0" -Pygments = ">=2.17" -requests = ">=2.30.0" -snowballstemmer = ">=2.2" -sphinxcontrib-applehelp = ">=1.0.7" -sphinxcontrib-devhelp = ">=1.0.6" -sphinxcontrib-htmlhelp = ">=2.0.6" -sphinxcontrib-jsmath = ">=1.0.1" -sphinxcontrib-qthelp = ">=1.0.6" -sphinxcontrib-serializinghtml = ">=1.1.9" -tomli = {version = ">=2", markers = "python_version < \"3.11\""} - -[package.extras] -docs = ["sphinxcontrib-websupport"] -lint = ["flake8 (>=6.0)", "mypy (==1.11.1)", "pyright (==1.1.384)", "pytest (>=6.0)", "ruff (==0.6.9)", "sphinx-lint (>=0.9)", "tomli (>=2)", "types-Pillow (==10.2.0.20240822)", "types-Pygments (==2.18.0.20240506)", "types-colorama (==0.4.15.20240311)", "types-defusedxml (==0.7.0.20240218)", "types-docutils (==0.21.0.20241005)", "types-requests (==2.32.0.20240914)", "types-urllib3 (==1.26.25.14)"] -test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=8.0)", "setuptools (>=70.0)", "typing_extensions (>=4.9)"] - -[[package]] -name = "sphinx-rtd-theme" -version = "3.0.2" -description = "Read the Docs theme for Sphinx" -category = "dev" -optional = false -python-versions = ">=3.8" -files = [ - {file = "sphinx_rtd_theme-3.0.2-py2.py3-none-any.whl", hash = "sha256:422ccc750c3a3a311de4ae327e82affdaf59eb695ba4936538552f3b00f4ee13"}, - {file = "sphinx_rtd_theme-3.0.2.tar.gz", hash = "sha256:b7457bc25dda723b20b086a670b9953c859eab60a2a03ee8eb2bb23e176e5f85"}, -] - -[package.dependencies] -docutils = ">0.18,<0.22" -sphinx = ">=6,<9" -sphinxcontrib-jquery = ">=4,<5" - -[package.extras] -dev = ["bump2version", "transifex-client", "twine", "wheel"] - -[[package]] -name = "sphinxcontrib-applehelp" -version = "2.0.0" -description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" -category = "dev" -optional = false -python-versions = ">=3.9" -files = [ - {file = "sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5"}, - {file = "sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1"}, -] - -[package.extras] -lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] -standalone = ["Sphinx (>=5)"] -test = ["pytest"] - -[[package]] -name = "sphinxcontrib-devhelp" -version = "2.0.0" -description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" -category = "dev" -optional = false -python-versions = ">=3.9" -files = [ - {file = "sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2"}, - {file = "sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad"}, -] - -[package.extras] -lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] -standalone = ["Sphinx (>=5)"] -test = ["pytest"] - -[[package]] -name = "sphinxcontrib-htmlhelp" -version = "2.1.0" -description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" -category = "dev" -optional = false -python-versions = ">=3.9" -files = [ - {file = "sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8"}, - {file = "sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9"}, -] - -[package.extras] -lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] -standalone = ["Sphinx (>=5)"] -test = ["html5lib", "pytest"] - -[[package]] -name = "sphinxcontrib-jquery" -version = "4.1" -description = "Extension to include jQuery on newer Sphinx releases" -category = "dev" -optional = false -python-versions = ">=2.7" -files = [ - {file = "sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a"}, - {file = "sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae"}, -] - -[package.dependencies] -Sphinx = ">=1.8" - -[[package]] -name = "sphinxcontrib-jsmath" -version = "1.0.1" -description = "A sphinx extension which renders display math in HTML via JavaScript" -category = "dev" -optional = false -python-versions = ">=3.5" -files = [ - {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, - {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, -] - -[package.extras] -test = ["flake8", "mypy", "pytest"] - -[[package]] -name = "sphinxcontrib-napoleon" -version = "0.7" -description = "Sphinx \"napoleon\" extension." -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "sphinxcontrib-napoleon-0.7.tar.gz", hash = "sha256:407382beed396e9f2d7f3043fad6afda95719204a1e1a231ac865f40abcbfcf8"}, - {file = "sphinxcontrib_napoleon-0.7-py2.py3-none-any.whl", hash = "sha256:711e41a3974bdf110a484aec4c1a556799eb0b3f3b897521a018ad7e2db13fef"}, -] - -[package.dependencies] -pockets = ">=0.3" -six = ">=1.5.2" - -[[package]] -name = "sphinxcontrib-qthelp" -version = "2.0.0" -description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" -category = "dev" -optional = false -python-versions = ">=3.9" -files = [ - {file = "sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb"}, - {file = "sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab"}, -] - -[package.extras] -lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] -standalone = ["Sphinx (>=5)"] -test = ["defusedxml (>=0.7.1)", "pytest"] - -[[package]] -name = "sphinxcontrib-serializinghtml" -version = "2.0.0" -description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" -category = "dev" -optional = false -python-versions = ">=3.9" -files = [ - {file = "sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331"}, - {file = "sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d"}, -] - -[package.extras] -lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] -standalone = ["Sphinx (>=5)"] -test = ["pytest"] - -[[package]] -name = "tomli" -version = "2.2.1" -description = "A lil' TOML parser" -category = "dev" -optional = false -python-versions = ">=3.8" -files = [ - {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, - {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, - {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, - {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, - {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, - {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, - {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, - {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, - {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, - {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, - {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, - {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, - {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, - {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, - {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, - {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, - {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, - {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, - {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, - {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, -] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -description = "Backported and Experimental Type Hints for Python 3.8+" -category = "dev" -optional = false -python-versions = ">=3.8" -files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, -] - -[[package]] -name = "urllib3" -version = "2.3.0" -description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "dev" -optional = false -python-versions = ">=3.9" -files = [ - {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, - {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, -] - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -h2 = ["h2 (>=4,<5)"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "virtualenv" -version = "20.29.1" -description = "Virtual Python Environment builder" -category = "dev" -optional = false -python-versions = ">=3.8" -files = [ - {file = "virtualenv-20.29.1-py3-none-any.whl", hash = "sha256:4e4cb403c0b0da39e13b46b1b2476e505cb0046b25f242bee80f62bf990b2779"}, - {file = "virtualenv-20.29.1.tar.gz", hash = "sha256:b8b8970138d32fb606192cb97f6cd4bb644fa486be9308fb9b63f81091b5dc35"}, -] - -[package.dependencies] -distlib = ">=0.3.7,<1" -filelock = ">=3.12.2,<4" -platformdirs = ">=3.9.1,<5" - -[package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] - -[[package]] -name = "wcwidth" -version = "0.2.13" -description = "Measures the displayed width of unicode strings in a terminal" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, - {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, -] - -[metadata] -lock-version = "2.0" -python-versions = "^3.10" -content-hash = "83c6bee0f0f6fd1dcc8920fa8ddad6236b0007c677cd62abecee7e90d8c3e911" diff --git a/code/episode_2/src/nova_tutorial/__init__.py b/code/episode_2/src/nova_tutorial/__init__.py deleted file mode 100755 index 1a91a49b..00000000 --- a/code/episode_2/src/nova_tutorial/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -import importlib.metadata - -from .main import main - -__all__ = ["main"] - -__version__ = importlib.metadata.version(__package__) diff --git a/code/episode_2/src/nova_tutorial/main.py b/code/episode_2/src/nova_tutorial/main.py deleted file mode 100755 index 014f69f1..00000000 --- a/code/episode_2/src/nova_tutorial/main.py +++ /dev/null @@ -1,5 +0,0 @@ -"""Main Application.""" - - -def main() -> None: - print("Hello from the main function!") diff --git a/code/episode_3/nova_tutorial/README.md b/code/episode_3/nova_tutorial/README.md new file mode 100755 index 00000000..3e5afc50 --- /dev/null +++ b/code/episode_3/nova_tutorial/README.md @@ -0,0 +1,6 @@ +Nova Tutorial +======================= + + + +Developers: please read [this document](DEVELOPMENT.md) diff --git a/code/episode_3/nova_tutorial/poetry.lock b/code/episode_3/nova_tutorial/poetry.lock new file mode 100755 index 00000000..d2927940 --- /dev/null +++ b/code/episode_3/nova_tutorial/poetry.lock @@ -0,0 +1,2164 @@ +# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. + +[[package]] +name = "aiohappyeyeballs" +version = "2.4.4" +description = "Happy Eyeballs for asyncio" +optional = false +python-versions = ">=3.8" +files = [ + {file = "aiohappyeyeballs-2.4.4-py3-none-any.whl", hash = "sha256:a980909d50efcd44795c4afeca523296716d50cd756ddca6af8c65b996e27de8"}, + {file = "aiohappyeyeballs-2.4.4.tar.gz", hash = "sha256:5fdd7d87889c63183afc18ce9271f9b0a7d32c2303e394468dd45d514a757745"}, +] + +[[package]] +name = "aiohttp" +version = "3.11.11" +description = "Async http client/server framework (asyncio)" +optional = false +python-versions = ">=3.9" +files = [ + {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a60804bff28662cbcf340a4d61598891f12eea3a66af48ecfdc975ceec21e3c8"}, + {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4b4fa1cb5f270fb3eab079536b764ad740bb749ce69a94d4ec30ceee1b5940d5"}, + {file = "aiohttp-3.11.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:731468f555656767cda219ab42e033355fe48c85fbe3ba83a349631541715ba2"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb23d8bb86282b342481cad4370ea0853a39e4a32a0042bb52ca6bdde132df43"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f047569d655f81cb70ea5be942ee5d4421b6219c3f05d131f64088c73bb0917f"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd7659baae9ccf94ae5fe8bfaa2c7bc2e94d24611528395ce88d009107e00c6d"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af01e42ad87ae24932138f154105e88da13ce7d202a6de93fafdafb2883a00ef"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5854be2f3e5a729800bac57a8d76af464e160f19676ab6aea74bde18ad19d438"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6526e5fb4e14f4bbf30411216780c9967c20c5a55f2f51d3abd6de68320cc2f3"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:85992ee30a31835fc482468637b3e5bd085fa8fe9392ba0bdcbdc1ef5e9e3c55"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:88a12ad8ccf325a8a5ed80e6d7c3bdc247d66175afedbe104ee2aaca72960d8e"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0a6d3fbf2232e3a08c41eca81ae4f1dff3d8f1a30bae415ebe0af2d2458b8a33"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84a585799c58b795573c7fa9b84c455adf3e1d72f19a2bf498b54a95ae0d194c"}, + {file = "aiohttp-3.11.11-cp310-cp310-win32.whl", hash = "sha256:bfde76a8f430cf5c5584553adf9926534352251d379dcb266ad2b93c54a29745"}, + {file = "aiohttp-3.11.11-cp310-cp310-win_amd64.whl", hash = "sha256:0fd82b8e9c383af11d2b26f27a478640b6b83d669440c0a71481f7c865a51da9"}, + {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ba74ec819177af1ef7f59063c6d35a214a8fde6f987f7661f4f0eecc468a8f76"}, + {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4af57160800b7a815f3fe0eba9b46bf28aafc195555f1824555fa2cfab6c1538"}, + {file = "aiohttp-3.11.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffa336210cf9cd8ed117011085817d00abe4c08f99968deef0013ea283547204"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81b8fe282183e4a3c7a1b72f5ade1094ed1c6345a8f153506d114af5bf8accd9"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af41686ccec6a0f2bdc66686dc0f403c41ac2089f80e2214a0f82d001052c03"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70d1f9dde0e5dd9e292a6d4d00058737052b01f3532f69c0c65818dac26dc287"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:249cc6912405917344192b9f9ea5cd5b139d49e0d2f5c7f70bdfaf6b4dbf3a2e"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0eb98d90b6690827dcc84c246811feeb4e1eea683c0eac6caed7549be9c84665"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec82bf1fda6cecce7f7b915f9196601a1bd1a3079796b76d16ae4cce6d0ef89b"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9fd46ce0845cfe28f108888b3ab17abff84ff695e01e73657eec3f96d72eef34"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bd176afcf8f5d2aed50c3647d4925d0db0579d96f75a31e77cbaf67d8a87742d"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ec2aa89305006fba9ffb98970db6c8221541be7bee4c1d027421d6f6df7d1ce2"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:92cde43018a2e17d48bb09c79e4d4cb0e236de5063ce897a5e40ac7cb4878773"}, + {file = "aiohttp-3.11.11-cp311-cp311-win32.whl", hash = "sha256:aba807f9569455cba566882c8938f1a549f205ee43c27b126e5450dc9f83cc62"}, + {file = "aiohttp-3.11.11-cp311-cp311-win_amd64.whl", hash = "sha256:ae545f31489548c87b0cced5755cfe5a5308d00407000e72c4fa30b19c3220ac"}, + {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e595c591a48bbc295ebf47cb91aebf9bd32f3ff76749ecf282ea7f9f6bb73886"}, + {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3ea1b59dc06396b0b424740a10a0a63974c725b1c64736ff788a3689d36c02d2"}, + {file = "aiohttp-3.11.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8811f3f098a78ffa16e0ea36dffd577eb031aea797cbdba81be039a4169e242c"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7227b87a355ce1f4bf83bfae4399b1f5bb42e0259cb9405824bd03d2f4336a"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d40f9da8cabbf295d3a9dae1295c69975b86d941bc20f0a087f0477fa0a66231"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffb3dc385f6bb1568aa974fe65da84723210e5d9707e360e9ecb51f59406cd2e"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8f5f7515f3552d899c61202d99dcb17d6e3b0de777900405611cd747cecd1b8"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3499c7ffbfd9c6a3d8d6a2b01c26639da7e43d47c7b4f788016226b1e711caa8"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8e2bf8029dbf0810c7bfbc3e594b51c4cc9101fbffb583a3923aea184724203c"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b6212a60e5c482ef90f2d788835387070a88d52cf6241d3916733c9176d39eab"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d119fafe7b634dbfa25a8c597718e69a930e4847f0b88e172744be24515140da"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:6fba278063559acc730abf49845d0e9a9e1ba74f85f0ee6efd5803f08b285853"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:92fc484e34b733704ad77210c7957679c5c3877bd1e6b6d74b185e9320cc716e"}, + {file = "aiohttp-3.11.11-cp312-cp312-win32.whl", hash = "sha256:9f5b3c1ed63c8fa937a920b6c1bec78b74ee09593b3f5b979ab2ae5ef60d7600"}, + {file = "aiohttp-3.11.11-cp312-cp312-win_amd64.whl", hash = "sha256:1e69966ea6ef0c14ee53ef7a3d68b564cc408121ea56c0caa2dc918c1b2f553d"}, + {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:541d823548ab69d13d23730a06f97460f4238ad2e5ed966aaf850d7c369782d9"}, + {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:929f3ed33743a49ab127c58c3e0a827de0664bfcda566108989a14068f820194"}, + {file = "aiohttp-3.11.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0882c2820fd0132240edbb4a51eb8ceb6eef8181db9ad5291ab3332e0d71df5f"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b63de12e44935d5aca7ed7ed98a255a11e5cb47f83a9fded7a5e41c40277d104"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa54f8ef31d23c506910c21163f22b124facb573bff73930735cf9fe38bf7dff"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a344d5dc18074e3872777b62f5f7d584ae4344cd6006c17ba12103759d407af3"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7fb429ab1aafa1f48578eb315ca45bd46e9c37de11fe45c7f5f4138091e2f1"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c341c7d868750e31961d6d8e60ff040fb9d3d3a46d77fd85e1ab8e76c3e9a5c4"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed9ee95614a71e87f1a70bc81603f6c6760128b140bc4030abe6abaa988f1c3d"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:de8d38f1c2810fa2a4f1d995a2e9c70bb8737b18da04ac2afbf3971f65781d87"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a9b7371665d4f00deb8f32208c7c5e652059b0fda41cf6dbcac6114a041f1cc2"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:620598717fce1b3bd14dd09947ea53e1ad510317c85dda2c9c65b622edc96b12"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf8d9bfee991d8acc72d060d53860f356e07a50f0e0d09a8dfedea1c554dd0d5"}, + {file = "aiohttp-3.11.11-cp313-cp313-win32.whl", hash = "sha256:9d73ee3725b7a737ad86c2eac5c57a4a97793d9f442599bea5ec67ac9f4bdc3d"}, + {file = "aiohttp-3.11.11-cp313-cp313-win_amd64.whl", hash = "sha256:c7a06301c2fb096bdb0bd25fe2011531c1453b9f2c163c8031600ec73af1cc99"}, + {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3e23419d832d969f659c208557de4a123e30a10d26e1e14b73431d3c13444c2e"}, + {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21fef42317cf02e05d3b09c028712e1d73a9606f02467fd803f7c1f39cc59add"}, + {file = "aiohttp-3.11.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1f21bb8d0235fc10c09ce1d11ffbd40fc50d3f08a89e4cf3a0c503dc2562247a"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1642eceeaa5ab6c9b6dfeaaa626ae314d808188ab23ae196a34c9d97efb68350"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2170816e34e10f2fd120f603e951630f8a112e1be3b60963a1f159f5699059a6"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8be8508d110d93061197fd2d6a74f7401f73b6d12f8822bbcd6d74f2b55d71b1"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4eed954b161e6b9b65f6be446ed448ed3921763cc432053ceb606f89d793927e"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6c9af134da4bc9b3bd3e6a70072509f295d10ee60c697826225b60b9959acdd"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:44167fc6a763d534a6908bdb2592269b4bf30a03239bcb1654781adf5e49caf1"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:479b8c6ebd12aedfe64563b85920525d05d394b85f166b7873c8bde6da612f9c"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:10b4ff0ad793d98605958089fabfa350e8e62bd5d40aa65cdc69d6785859f94e"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:b540bd67cfb54e6f0865ceccd9979687210d7ed1a1cc8c01f8e67e2f1e883d28"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1dac54e8ce2ed83b1f6b1a54005c87dfed139cf3f777fdc8afc76e7841101226"}, + {file = "aiohttp-3.11.11-cp39-cp39-win32.whl", hash = "sha256:568c1236b2fde93b7720f95a890741854c1200fba4a3471ff48b2934d2d93fd3"}, + {file = "aiohttp-3.11.11-cp39-cp39-win_amd64.whl", hash = "sha256:943a8b052e54dfd6439fd7989f67fc6a7f2138d0a2cf0a7de5f18aa4fe7eb3b1"}, + {file = "aiohttp-3.11.11.tar.gz", hash = "sha256:bb49c7f1e6ebf3821a42d81d494f538107610c3a705987f53068546b0e90303e"}, +] + +[package.dependencies] +aiohappyeyeballs = ">=2.3.0" +aiosignal = ">=1.1.2" +async-timeout = {version = ">=4.0,<6.0", markers = "python_version < \"3.11\""} +attrs = ">=17.3.0" +frozenlist = ">=1.1.1" +multidict = ">=4.5,<7.0" +propcache = ">=0.2.0" +yarl = ">=1.17.0,<2.0" + +[package.extras] +speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] + +[[package]] +name = "aiosignal" +version = "1.3.2" +description = "aiosignal: a list of registered asynchronous callbacks" +optional = false +python-versions = ">=3.9" +files = [ + {file = "aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5"}, + {file = "aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54"}, +] + +[package.dependencies] +frozenlist = ">=1.1.0" + +[[package]] +name = "alabaster" +version = "1.0.0" +description = "A light, configurable Sphinx theme" +optional = false +python-versions = ">=3.10" +files = [ + {file = "alabaster-1.0.0-py3-none-any.whl", hash = "sha256:fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b"}, + {file = "alabaster-1.0.0.tar.gz", hash = "sha256:c00dca57bca26fa62a6d7d0a9fcce65f3e026e9bfe33e9c538fd3fbb2144fd9e"}, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +files = [ + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, +] + +[[package]] +name = "async-timeout" +version = "5.0.1" +description = "Timeout context manager for asyncio programs" +optional = false +python-versions = ">=3.8" +files = [ + {file = "async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c"}, + {file = "async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3"}, +] + +[[package]] +name = "attrs" +version = "25.1.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.8" +files = [ + {file = "attrs-25.1.0-py3-none-any.whl", hash = "sha256:c75a69e28a550a7e93789579c22aa26b0f5b83b75dc4e08fe092980051e1090a"}, + {file = "attrs-25.1.0.tar.gz", hash = "sha256:1c97078a80c814273a76b2a298a932eb681c87415c11dee0a6921de7f1b02c3e"}, +] + +[package.extras] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] + +[[package]] +name = "babel" +version = "2.17.0" +description = "Internationalization utilities" +optional = false +python-versions = ">=3.8" +files = [ + {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, + {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, +] + +[package.extras] +dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata"] + +[[package]] +name = "certifi" +version = "2025.1.31" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, + {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, +] + +[[package]] +name = "cfgv" +version = "3.4.0" +description = "Validate configuration and produce human readable error messages." +optional = false +python-versions = ">=3.8" +files = [ + {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, + {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.1" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7" +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"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"}, + {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"}, + {file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"}, +] + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "copier" +version = "9.4.1" +description = "A library for rendering project templates." +optional = false +python-versions = ">=3.9" +files = [ + {file = "copier-9.4.1-py3-none-any.whl", hash = "sha256:863385b7ba8a9090c832cd12ca072dba9153397dbe7c5f337bf8c3d8859efa32"}, + {file = "copier-9.4.1.tar.gz", hash = "sha256:cc81d8204cb17fbc8c4a14996a8ce764166c34c77236de38cfbeb960c887b68f"}, +] + +[package.dependencies] +colorama = ">=0.4.6" +dunamai = ">=1.7.0" +funcy = ">=1.17" +jinja2 = ">=3.1.4" +jinja2-ansible-filters = ">=1.3.1" +packaging = ">=23.0" +pathspec = ">=0.9.0" +plumbum = ">=1.6.9" +pydantic = ">=2.4.2" +pygments = ">=2.7.1" +pyyaml = ">=5.3.1" +questionary = ">=1.8.1" + +[[package]] +name = "coverage" +version = "7.6.10" +description = "Code coverage measurement for Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "coverage-7.6.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5c912978f7fbf47ef99cec50c4401340436d200d41d714c7a4766f377c5b7b78"}, + {file = "coverage-7.6.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a01ec4af7dfeb96ff0078ad9a48810bb0cc8abcb0115180c6013a6b26237626c"}, + {file = "coverage-7.6.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3b204c11e2b2d883946fe1d97f89403aa1811df28ce0447439178cc7463448a"}, + {file = "coverage-7.6.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32ee6d8491fcfc82652a37109f69dee9a830e9379166cb73c16d8dc5c2915165"}, + {file = "coverage-7.6.10-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675cefc4c06e3b4c876b85bfb7c59c5e2218167bbd4da5075cbe3b5790a28988"}, + {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f4f620668dbc6f5e909a0946a877310fb3d57aea8198bde792aae369ee1c23b5"}, + {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4eea95ef275de7abaef630c9b2c002ffbc01918b726a39f5a4353916ec72d2f3"}, + {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e2f0280519e42b0a17550072861e0bc8a80a0870de260f9796157d3fca2733c5"}, + {file = "coverage-7.6.10-cp310-cp310-win32.whl", hash = "sha256:bc67deb76bc3717f22e765ab3e07ee9c7a5e26b9019ca19a3b063d9f4b874244"}, + {file = "coverage-7.6.10-cp310-cp310-win_amd64.whl", hash = "sha256:0f460286cb94036455e703c66988851d970fdfd8acc2a1122ab7f4f904e4029e"}, + {file = "coverage-7.6.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ea3c8f04b3e4af80e17bab607c386a830ffc2fb88a5484e1df756478cf70d1d3"}, + {file = "coverage-7.6.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:507a20fc863cae1d5720797761b42d2d87a04b3e5aeb682ef3b7332e90598f43"}, + {file = "coverage-7.6.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d37a84878285b903c0fe21ac8794c6dab58150e9359f1aaebbeddd6412d53132"}, + {file = "coverage-7.6.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a534738b47b0de1995f85f582d983d94031dffb48ab86c95bdf88dc62212142f"}, + {file = "coverage-7.6.10-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d7a2bf79378d8fb8afaa994f91bfd8215134f8631d27eba3e0e2c13546ce994"}, + {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6713ba4b4ebc330f3def51df1d5d38fad60b66720948112f114968feb52d3f99"}, + {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab32947f481f7e8c763fa2c92fd9f44eeb143e7610c4ca9ecd6a36adab4081bd"}, + {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7bbd8c8f1b115b892e34ba66a097b915d3871db7ce0e6b9901f462ff3a975377"}, + {file = "coverage-7.6.10-cp311-cp311-win32.whl", hash = "sha256:299e91b274c5c9cdb64cbdf1b3e4a8fe538a7a86acdd08fae52301b28ba297f8"}, + {file = "coverage-7.6.10-cp311-cp311-win_amd64.whl", hash = "sha256:489a01f94aa581dbd961f306e37d75d4ba16104bbfa2b0edb21d29b73be83609"}, + {file = "coverage-7.6.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:27c6e64726b307782fa5cbe531e7647aee385a29b2107cd87ba7c0105a5d3853"}, + {file = "coverage-7.6.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c56e097019e72c373bae32d946ecf9858fda841e48d82df7e81c63ac25554078"}, + {file = "coverage-7.6.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7827a5bc7bdb197b9e066cdf650b2887597ad124dd99777332776f7b7c7d0d0"}, + {file = "coverage-7.6.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:204a8238afe787323a8b47d8be4df89772d5c1e4651b9ffa808552bdf20e1d50"}, + {file = "coverage-7.6.10-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67926f51821b8e9deb6426ff3164870976fe414d033ad90ea75e7ed0c2e5022"}, + {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e78b270eadb5702938c3dbe9367f878249b5ef9a2fcc5360ac7bff694310d17b"}, + {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:714f942b9c15c3a7a5fe6876ce30af831c2ad4ce902410b7466b662358c852c0"}, + {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:abb02e2f5a3187b2ac4cd46b8ced85a0858230b577ccb2c62c81482ca7d18852"}, + {file = "coverage-7.6.10-cp312-cp312-win32.whl", hash = "sha256:55b201b97286cf61f5e76063f9e2a1d8d2972fc2fcfd2c1272530172fd28c359"}, + {file = "coverage-7.6.10-cp312-cp312-win_amd64.whl", hash = "sha256:e4ae5ac5e0d1e4edfc9b4b57b4cbecd5bc266a6915c500f358817a8496739247"}, + {file = "coverage-7.6.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:05fca8ba6a87aabdd2d30d0b6c838b50510b56cdcfc604d40760dae7153b73d9"}, + {file = "coverage-7.6.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9e80eba8801c386f72e0712a0453431259c45c3249f0009aff537a517b52942b"}, + {file = "coverage-7.6.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a372c89c939d57abe09e08c0578c1d212e7a678135d53aa16eec4430adc5e690"}, + {file = "coverage-7.6.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ec22b5e7fe7a0fa8509181c4aac1db48f3dd4d3a566131b313d1efc102892c18"}, + {file = "coverage-7.6.10-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26bcf5c4df41cad1b19c84af71c22cbc9ea9a547fc973f1f2cc9a290002c8b3c"}, + {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e4630c26b6084c9b3cb53b15bd488f30ceb50b73c35c5ad7871b869cb7365fd"}, + {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2396e8116db77789f819d2bc8a7e200232b7a282c66e0ae2d2cd84581a89757e"}, + {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79109c70cc0882e4d2d002fe69a24aa504dec0cc17169b3c7f41a1d341a73694"}, + {file = "coverage-7.6.10-cp313-cp313-win32.whl", hash = "sha256:9e1747bab246d6ff2c4f28b4d186b205adced9f7bd9dc362051cc37c4a0c7bd6"}, + {file = "coverage-7.6.10-cp313-cp313-win_amd64.whl", hash = "sha256:254f1a3b1eef5f7ed23ef265eaa89c65c8c5b6b257327c149db1ca9d4a35f25e"}, + {file = "coverage-7.6.10-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2ccf240eb719789cedbb9fd1338055de2761088202a9a0b73032857e53f612fe"}, + {file = "coverage-7.6.10-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0c807ca74d5a5e64427c8805de15b9ca140bba13572d6d74e262f46f50b13273"}, + {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bcfa46d7709b5a7ffe089075799b902020b62e7ee56ebaed2f4bdac04c508d8"}, + {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e0de1e902669dccbf80b0415fb6b43d27edca2fbd48c74da378923b05316098"}, + {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7b444c42bbc533aaae6b5a2166fd1a797cdb5eb58ee51a92bee1eb94a1e1cb"}, + {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b330368cb99ef72fcd2dc3ed260adf67b31499584dc8a20225e85bfe6f6cfed0"}, + {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9a7cfb50515f87f7ed30bc882f68812fd98bc2852957df69f3003d22a2aa0abf"}, + {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f93531882a5f68c28090f901b1d135de61b56331bba82028489bc51bdd818d2"}, + {file = "coverage-7.6.10-cp313-cp313t-win32.whl", hash = "sha256:89d76815a26197c858f53c7f6a656686ec392b25991f9e409bcef020cd532312"}, + {file = "coverage-7.6.10-cp313-cp313t-win_amd64.whl", hash = "sha256:54a5f0f43950a36312155dae55c505a76cd7f2b12d26abeebbe7a0b36dbc868d"}, + {file = "coverage-7.6.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:656c82b8a0ead8bba147de9a89bda95064874c91a3ed43a00e687f23cc19d53a"}, + {file = "coverage-7.6.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ccc2b70a7ed475c68ceb548bf69cec1e27305c1c2606a5eb7c3afff56a1b3b27"}, + {file = "coverage-7.6.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5e37dc41d57ceba70956fa2fc5b63c26dba863c946ace9705f8eca99daecdc4"}, + {file = "coverage-7.6.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0aa9692b4fdd83a4647eeb7db46410ea1322b5ed94cd1715ef09d1d5922ba87f"}, + {file = "coverage-7.6.10-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa744da1820678b475e4ba3dfd994c321c5b13381d1041fe9c608620e6676e25"}, + {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c0b1818063dc9e9d838c09e3a473c1422f517889436dd980f5d721899e66f315"}, + {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:59af35558ba08b758aec4d56182b222976330ef8d2feacbb93964f576a7e7a90"}, + {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7ed2f37cfce1ce101e6dffdfd1c99e729dd2ffc291d02d3e2d0af8b53d13840d"}, + {file = "coverage-7.6.10-cp39-cp39-win32.whl", hash = "sha256:4bcc276261505d82f0ad426870c3b12cb177752834a633e737ec5ee79bbdff18"}, + {file = "coverage-7.6.10-cp39-cp39-win_amd64.whl", hash = "sha256:457574f4599d2b00f7f637a0700a6422243b3565509457b2dbd3f50703e11f59"}, + {file = "coverage-7.6.10-pp39.pp310-none-any.whl", hash = "sha256:fd34e7b3405f0cc7ab03d54a334c17a9e802897580d964bd8c2001f4b9fd488f"}, + {file = "coverage-7.6.10.tar.gz", hash = "sha256:7fb105327c8f8f0682e29843e2ff96af9dcbe5bab8eeb4b398c6a33a16d80a23"}, +] + +[package.extras] +toml = ["tomli"] + +[[package]] +name = "deepdiff" +version = "8.2.0" +description = "Deep Difference and Search of any Python object/data. Recreate objects by adding adding deltas to each other." +optional = false +python-versions = ">=3.8" +files = [ + {file = "deepdiff-8.2.0-py3-none-any.whl", hash = "sha256:5091f2cdfd372b1b9f6bfd8065ba323ae31118dc4e42594371b38c8bea3fd0a4"}, + {file = "deepdiff-8.2.0.tar.gz", hash = "sha256:6ec78f65031485735545ffbe7a61e716c3c2d12ca6416886d5e9291fc76c46c3"}, +] + +[package.dependencies] +orderly-set = ">=5.3.0,<6" + +[package.extras] +cli = ["click (==8.1.8)", "pyyaml (==6.0.2)"] +optimize = ["orjson"] + +[[package]] +name = "distlib" +version = "0.3.9" +description = "Distribution utilities" +optional = false +python-versions = "*" +files = [ + {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, + {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, +] + +[[package]] +name = "docutils" +version = "0.21.2" +description = "Docutils -- Python Documentation Utilities" +optional = false +python-versions = ">=3.9" +files = [ + {file = "docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2"}, + {file = "docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f"}, +] + +[[package]] +name = "dunamai" +version = "1.23.0" +description = "Dynamic version generation" +optional = false +python-versions = ">=3.5" +files = [ + {file = "dunamai-1.23.0-py3-none-any.whl", hash = "sha256:a0906d876e92441793c6a423e16a4802752e723e9c9a5aabdc5535df02dbe041"}, + {file = "dunamai-1.23.0.tar.gz", hash = "sha256:a163746de7ea5acb6dacdab3a6ad621ebc612ed1e528aaa8beedb8887fccd2c4"}, +] + +[package.dependencies] +packaging = ">=20.9" + +[[package]] +name = "exceptiongroup" +version = "1.2.2" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, +] + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "filelock" +version = "3.17.0" +description = "A platform independent file lock." +optional = false +python-versions = ">=3.9" +files = [ + {file = "filelock-3.17.0-py3-none-any.whl", hash = "sha256:533dc2f7ba78dc2f0f531fc6c4940addf7b70a481e269a5a3b93be94ffbe8338"}, + {file = "filelock-3.17.0.tar.gz", hash = "sha256:ee4e77401ef576ebb38cd7f13b9b28893194acc20a8e68e18730ba9c0e54660e"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] +typing = ["typing-extensions (>=4.12.2)"] + +[[package]] +name = "frozenlist" +version = "1.5.0" +description = "A list-like structure which implements collections.abc.MutableSequence" +optional = false +python-versions = ">=3.8" +files = [ + {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5b6a66c18b5b9dd261ca98dffcb826a525334b2f29e7caa54e182255c5f6a65a"}, + {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d1b3eb7b05ea246510b43a7e53ed1653e55c2121019a97e60cad7efb881a97bb"}, + {file = "frozenlist-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:15538c0cbf0e4fa11d1e3a71f823524b0c46299aed6e10ebb4c2089abd8c3bec"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e79225373c317ff1e35f210dd5f1344ff31066ba8067c307ab60254cd3a78ad5"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9272fa73ca71266702c4c3e2d4a28553ea03418e591e377a03b8e3659d94fa76"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:498524025a5b8ba81695761d78c8dd7382ac0b052f34e66939c42df860b8ff17"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92b5278ed9d50fe610185ecd23c55d8b307d75ca18e94c0e7de328089ac5dcba"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f3c8c1dacd037df16e85227bac13cca58c30da836c6f936ba1df0c05d046d8d"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f2ac49a9bedb996086057b75bf93538240538c6d9b38e57c82d51f75a73409d2"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e66cc454f97053b79c2ab09c17fbe3c825ea6b4de20baf1be28919460dd7877f"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:5a3ba5f9a0dfed20337d3e966dc359784c9f96503674c2faf015f7fe8e96798c"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6321899477db90bdeb9299ac3627a6a53c7399c8cd58d25da094007402b039ab"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:76e4753701248476e6286f2ef492af900ea67d9706a0155335a40ea21bf3b2f5"}, + {file = "frozenlist-1.5.0-cp310-cp310-win32.whl", hash = "sha256:977701c081c0241d0955c9586ffdd9ce44f7a7795df39b9151cd9a6fd0ce4cfb"}, + {file = "frozenlist-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:189f03b53e64144f90990d29a27ec4f7997d91ed3d01b51fa39d2dbe77540fd4"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fd74520371c3c4175142d02a976aee0b4cb4a7cc912a60586ffd8d5929979b30"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2f3f7a0fbc219fb4455264cae4d9f01ad41ae6ee8524500f381de64ffaa077d5"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f47c9c9028f55a04ac254346e92977bf0f166c483c74b4232bee19a6697e4778"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0996c66760924da6e88922756d99b47512a71cfd45215f3570bf1e0b694c206a"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2fe128eb4edeabe11896cb6af88fca5346059f6c8d807e3b910069f39157869"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a8ea951bbb6cacd492e3948b8da8c502a3f814f5d20935aae74b5df2b19cf3d"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de537c11e4aa01d37db0d403b57bd6f0546e71a82347a97c6a9f0dcc532b3a45"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c2623347b933fcb9095841f1cc5d4ff0b278addd743e0e966cb3d460278840d"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cee6798eaf8b1416ef6909b06f7dc04b60755206bddc599f52232606e18179d3"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f5f9da7f5dbc00a604fe74aa02ae7c98bcede8a3b8b9666f9f86fc13993bc71a"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:90646abbc7a5d5c7c19461d2e3eeb76eb0b204919e6ece342feb6032c9325ae9"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:bdac3c7d9b705d253b2ce370fde941836a5f8b3c5c2b8fd70940a3ea3af7f4f2"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03d33c2ddbc1816237a67f66336616416e2bbb6beb306e5f890f2eb22b959cdf"}, + {file = "frozenlist-1.5.0-cp311-cp311-win32.whl", hash = "sha256:237f6b23ee0f44066219dae14c70ae38a63f0440ce6750f868ee08775073f942"}, + {file = "frozenlist-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:0cc974cc93d32c42e7b0f6cf242a6bd941c57c61b618e78b6c0a96cb72788c1d"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f"}, + {file = "frozenlist-1.5.0-cp312-cp312-win32.whl", hash = "sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8"}, + {file = "frozenlist-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a1a048f9215c90973402e26c01d1cff8a209e1f1b53f72b95c13db61b00f953"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dd47a5181ce5fcb463b5d9e17ecfdb02b678cca31280639255ce9d0e5aa67af0"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1431d60b36d15cda188ea222033eec8e0eab488f39a272461f2e6d9e1a8e63c2"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6482a5851f5d72767fbd0e507e80737f9c8646ae7fd303def99bfe813f76cf7f"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44c49271a937625619e862baacbd037a7ef86dd1ee215afc298a417ff3270608"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12f78f98c2f1c2429d42e6a485f433722b0061d5c0b0139efa64f396efb5886b"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce3aa154c452d2467487765e3adc730a8c153af77ad84096bc19ce19a2400840"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b7dc0c4338e6b8b091e8faf0db3168a37101943e687f373dce00959583f7439"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:45e0896250900b5aa25180f9aec243e84e92ac84bd4a74d9ad4138ef3f5c97de"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:561eb1c9579d495fddb6da8959fd2a1fca2c6d060d4113f5844b433fc02f2641"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:df6e2f325bfee1f49f81aaac97d2aa757c7646534a06f8f577ce184afe2f0a9e"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:140228863501b44b809fb39ec56b5d4071f4d0aa6d216c19cbb08b8c5a7eadb9"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7707a25d6a77f5d27ea7dc7d1fc608aa0a478193823f88511ef5e6b8a48f9d03"}, + {file = "frozenlist-1.5.0-cp313-cp313-win32.whl", hash = "sha256:31a9ac2b38ab9b5a8933b693db4939764ad3f299fcaa931a3e605bc3460e693c"}, + {file = "frozenlist-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:11aabdd62b8b9c4b84081a3c246506d1cddd2dd93ff0ad53ede5defec7886b28"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:dd94994fc91a6177bfaafd7d9fd951bc8689b0a98168aa26b5f543868548d3ca"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0da8bbec082bf6bf18345b180958775363588678f64998c2b7609e34719b10"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:73f2e31ea8dd7df61a359b731716018c2be196e5bb3b74ddba107f694fbd7604"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:828afae9f17e6de596825cf4228ff28fbdf6065974e5ac1410cecc22f699d2b3"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1577515d35ed5649d52ab4319db757bb881ce3b2b796d7283e6634d99ace307"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2150cc6305a2c2ab33299453e2968611dacb970d2283a14955923062c8d00b10"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a72b7a6e3cd2725eff67cd64c8f13335ee18fc3c7befc05aed043d24c7b9ccb9"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c16d2fa63e0800723139137d667e1056bee1a1cf7965153d2d104b62855e9b99"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:17dcc32fc7bda7ce5875435003220a457bcfa34ab7924a49a1c19f55b6ee185c"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:97160e245ea33d8609cd2b8fd997c850b56db147a304a262abc2b3be021a9171"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f1e6540b7fa044eee0bb5111ada694cf3dc15f2b0347ca125ee9ca984d5e9e6e"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:91d6c171862df0a6c61479d9724f22efb6109111017c87567cfeb7b5d1449fdf"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c1fac3e2ace2eb1052e9f7c7db480818371134410e1f5c55d65e8f3ac6d1407e"}, + {file = "frozenlist-1.5.0-cp38-cp38-win32.whl", hash = "sha256:b97f7b575ab4a8af9b7bc1d2ef7f29d3afee2226bd03ca3875c16451ad5a7723"}, + {file = "frozenlist-1.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:374ca2dabdccad8e2a76d40b1d037f5bd16824933bf7bcea3e59c891fd4a0923"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9bbcdfaf4af7ce002694a4e10a0159d5a8d20056a12b05b45cea944a4953f972"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1893f948bf6681733aaccf36c5232c231e3b5166d607c5fa77773611df6dc336"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2b5e23253bb709ef57a8e95e6ae48daa9ac5f265637529e4ce6b003a37b2621f"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f253985bb515ecd89629db13cb58d702035ecd8cfbca7d7a7e29a0e6d39af5f"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04a5c6babd5e8fb7d3c871dc8b321166b80e41b637c31a995ed844a6139942b6"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9fe0f1c29ba24ba6ff6abf688cb0b7cf1efab6b6aa6adc55441773c252f7411"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:226d72559fa19babe2ccd920273e767c96a49b9d3d38badd7c91a0fdeda8ea08"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b731db116ab3aedec558573c1a5eec78822b32292fe4f2f0345b7f697745c2"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:366d8f93e3edfe5a918c874702f78faac300209a4d5bf38352b2c1bdc07a766d"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1b96af8c582b94d381a1c1f51ffaedeb77c821c690ea5f01da3d70a487dd0a9b"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c03eff4a41bd4e38415cbed054bbaff4a075b093e2394b6915dca34a40d1e38b"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:50cf5e7ee9b98f22bdecbabf3800ae78ddcc26e4a435515fc72d97903e8488e0"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1e76bfbc72353269c44e0bc2cfe171900fbf7f722ad74c9a7b638052afe6a00c"}, + {file = "frozenlist-1.5.0-cp39-cp39-win32.whl", hash = "sha256:666534d15ba8f0fda3f53969117383d5dc021266b3c1a42c9ec4855e4b58b9d3"}, + {file = "frozenlist-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:5c28f4b5dbef8a0d8aad0d4de24d1e9e981728628afaf4ea0792f5d0939372f0"}, + {file = "frozenlist-1.5.0-py3-none-any.whl", hash = "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3"}, + {file = "frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817"}, +] + +[[package]] +name = "funcy" +version = "2.0" +description = "A fancy and practical functional tools" +optional = false +python-versions = "*" +files = [ + {file = "funcy-2.0-py2.py3-none-any.whl", hash = "sha256:53df23c8bb1651b12f095df764bfb057935d49537a56de211b098f4c79614bb0"}, + {file = "funcy-2.0.tar.gz", hash = "sha256:3963315d59d41c6f30c04bc910e10ab50a3ac4a225868bfa96feed133df075cb"}, +] + +[[package]] +name = "identify" +version = "2.6.6" +description = "File identification library for Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "identify-2.6.6-py2.py3-none-any.whl", hash = "sha256:cbd1810bce79f8b671ecb20f53ee0ae8e86ae84b557de31d89709dc2a48ba881"}, + {file = "identify-2.6.6.tar.gz", hash = "sha256:7bec12768ed44ea4761efb47806f0a41f86e7c0a5fdf5950d4648c90eca7e251"}, +] + +[package.extras] +license = ["ukkonen"] + +[[package]] +name = "idna" +version = "3.10" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.6" +files = [ + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, +] + +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + +[[package]] +name = "imagesize" +version = "1.4.1" +description = "Getting image size from png/jpeg/jpeg2000/gif file" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, + {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, +] + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "jinja2" +version = "3.1.5" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +files = [ + {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, + {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "jinja2-ansible-filters" +version = "1.3.2" +description = "A port of Ansible's jinja2 filters without requiring ansible core." +optional = false +python-versions = "*" +files = [ + {file = "jinja2-ansible-filters-1.3.2.tar.gz", hash = "sha256:07c10cf44d7073f4f01102ca12d9a2dc31b41d47e4c61ed92ef6a6d2669b356b"}, + {file = "jinja2_ansible_filters-1.3.2-py3-none-any.whl", hash = "sha256:e1082f5564917649c76fed239117820610516ec10f87735d0338688800a55b34"}, +] + +[package.dependencies] +Jinja2 = "*" +PyYAML = "*" + +[package.extras] +test = ["pytest", "pytest-cov"] + +[[package]] +name = "libsass" +version = "0.23.0" +description = "Sass for Python: A straightforward binding of libsass for Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "libsass-0.23.0-cp38-abi3-macosx_11_0_x86_64.whl", hash = "sha256:34cae047cbbfc4ffa832a61cbb110f3c95f5471c6170c842d3fed161e40814dc"}, + {file = "libsass-0.23.0-cp38-abi3-macosx_14_0_arm64.whl", hash = "sha256:ea97d1b45cdc2fc3590cb9d7b60f1d8915d3ce17a98c1f2d4dd47ee0d9c68ce6"}, + {file = "libsass-0.23.0-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4a218406d605f325d234e4678bd57126a66a88841cb95bee2caeafdc6f138306"}, + {file = "libsass-0.23.0-cp38-abi3-win32.whl", hash = "sha256:31e86d92a5c7a551df844b72d83fc2b5e50abc6fbbb31e296f7bebd6489ed1b4"}, + {file = "libsass-0.23.0-cp38-abi3-win_amd64.whl", hash = "sha256:a2ec85d819f353cbe807432d7275d653710d12b08ec7ef61c124a580a8352f3c"}, + {file = "libsass-0.23.0.tar.gz", hash = "sha256:6f209955ede26684e76912caf329f4ccb57e4a043fd77fe0e7348dd9574f1880"}, +] + +[[package]] +name = "markupsafe" +version = "3.0.2" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.9" +files = [ + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, + {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, +] + +[[package]] +name = "mergedeep" +version = "1.3.4" +description = "A deep merge function for 🐍." +optional = false +python-versions = ">=3.6" +files = [ + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, +] + +[[package]] +name = "more-itertools" +version = "10.6.0" +description = "More routines for operating on iterables, beyond itertools" +optional = false +python-versions = ">=3.9" +files = [ + {file = "more-itertools-10.6.0.tar.gz", hash = "sha256:2cd7fad1009c31cc9fb6a035108509e6547547a7a738374f10bd49a09eb3ee3b"}, + {file = "more_itertools-10.6.0-py3-none-any.whl", hash = "sha256:6eb054cb4b6db1473f6e15fcc676a08e4732548acd47c708f0e179c2c7c01e89"}, +] + +[[package]] +name = "msgpack" +version = "1.1.0" +description = "MessagePack serializer" +optional = false +python-versions = ">=3.8" +files = [ + {file = "msgpack-1.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7ad442d527a7e358a469faf43fda45aaf4ac3249c8310a82f0ccff9164e5dccd"}, + {file = "msgpack-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:74bed8f63f8f14d75eec75cf3d04ad581da6b914001b474a5d3cd3372c8cc27d"}, + {file = "msgpack-1.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:914571a2a5b4e7606997e169f64ce53a8b1e06f2cf2c3a7273aa106236d43dd5"}, + {file = "msgpack-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c921af52214dcbb75e6bdf6a661b23c3e6417f00c603dd2070bccb5c3ef499f5"}, + {file = "msgpack-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8ce0b22b890be5d252de90d0e0d119f363012027cf256185fc3d474c44b1b9e"}, + {file = "msgpack-1.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:73322a6cc57fcee3c0c57c4463d828e9428275fb85a27aa2aa1a92fdc42afd7b"}, + {file = "msgpack-1.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e1f3c3d21f7cf67bcf2da8e494d30a75e4cf60041d98b3f79875afb5b96f3a3f"}, + {file = "msgpack-1.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:64fc9068d701233effd61b19efb1485587560b66fe57b3e50d29c5d78e7fef68"}, + {file = "msgpack-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:42f754515e0f683f9c79210a5d1cad631ec3d06cea5172214d2176a42e67e19b"}, + {file = "msgpack-1.1.0-cp310-cp310-win32.whl", hash = "sha256:3df7e6b05571b3814361e8464f9304c42d2196808e0119f55d0d3e62cd5ea044"}, + {file = "msgpack-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:685ec345eefc757a7c8af44a3032734a739f8c45d1b0ac45efc5d8977aa4720f"}, + {file = "msgpack-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3d364a55082fb2a7416f6c63ae383fbd903adb5a6cf78c5b96cc6316dc1cedc7"}, + {file = "msgpack-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:79ec007767b9b56860e0372085f8504db5d06bd6a327a335449508bbee9648fa"}, + {file = "msgpack-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6ad622bf7756d5a497d5b6836e7fc3752e2dd6f4c648e24b1803f6048596f701"}, + {file = "msgpack-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e59bca908d9ca0de3dc8684f21ebf9a690fe47b6be93236eb40b99af28b6ea6"}, + {file = "msgpack-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e1da8f11a3dd397f0a32c76165cf0c4eb95b31013a94f6ecc0b280c05c91b59"}, + {file = "msgpack-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:452aff037287acb1d70a804ffd022b21fa2bb7c46bee884dbc864cc9024128a0"}, + {file = "msgpack-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8da4bf6d54ceed70e8861f833f83ce0814a2b72102e890cbdfe4b34764cdd66e"}, + {file = "msgpack-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:41c991beebf175faf352fb940bf2af9ad1fb77fd25f38d9142053914947cdbf6"}, + {file = "msgpack-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a52a1f3a5af7ba1c9ace055b659189f6c669cf3657095b50f9602af3a3ba0fe5"}, + {file = "msgpack-1.1.0-cp311-cp311-win32.whl", hash = "sha256:58638690ebd0a06427c5fe1a227bb6b8b9fdc2bd07701bec13c2335c82131a88"}, + {file = "msgpack-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fd2906780f25c8ed5d7b323379f6138524ba793428db5d0e9d226d3fa6aa1788"}, + {file = "msgpack-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d46cf9e3705ea9485687aa4001a76e44748b609d260af21c4ceea7f2212a501d"}, + {file = "msgpack-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5dbad74103df937e1325cc4bfeaf57713be0b4f15e1c2da43ccdd836393e2ea2"}, + {file = "msgpack-1.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58dfc47f8b102da61e8949708b3eafc3504509a5728f8b4ddef84bd9e16ad420"}, + {file = "msgpack-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676e5be1b472909b2ee6356ff425ebedf5142427842aa06b4dfd5117d1ca8a2"}, + {file = "msgpack-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17fb65dd0bec285907f68b15734a993ad3fc94332b5bb21b0435846228de1f39"}, + {file = "msgpack-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a51abd48c6d8ac89e0cfd4fe177c61481aca2d5e7ba42044fd218cfd8ea9899f"}, + {file = "msgpack-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2137773500afa5494a61b1208619e3871f75f27b03bcfca7b3a7023284140247"}, + {file = "msgpack-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:398b713459fea610861c8a7b62a6fec1882759f308ae0795b5413ff6a160cf3c"}, + {file = "msgpack-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:06f5fd2f6bb2a7914922d935d3b8bb4a7fff3a9a91cfce6d06c13bc42bec975b"}, + {file = "msgpack-1.1.0-cp312-cp312-win32.whl", hash = "sha256:ad33e8400e4ec17ba782f7b9cf868977d867ed784a1f5f2ab46e7ba53b6e1e1b"}, + {file = "msgpack-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:115a7af8ee9e8cddc10f87636767857e7e3717b7a2e97379dc2054712693e90f"}, + {file = "msgpack-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:071603e2f0771c45ad9bc65719291c568d4edf120b44eb36324dcb02a13bfddf"}, + {file = "msgpack-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0f92a83b84e7c0749e3f12821949d79485971f087604178026085f60ce109330"}, + {file = "msgpack-1.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1964df7b81285d00a84da4e70cb1383f2e665e0f1f2a7027e683956d04b734"}, + {file = "msgpack-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59caf6a4ed0d164055ccff8fe31eddc0ebc07cf7326a2aaa0dbf7a4001cd823e"}, + {file = "msgpack-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0907e1a7119b337971a689153665764adc34e89175f9a34793307d9def08e6ca"}, + {file = "msgpack-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65553c9b6da8166e819a6aa90ad15288599b340f91d18f60b2061f402b9a4915"}, + {file = "msgpack-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7a946a8992941fea80ed4beae6bff74ffd7ee129a90b4dd5cf9c476a30e9708d"}, + {file = "msgpack-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4b51405e36e075193bc051315dbf29168d6141ae2500ba8cd80a522964e31434"}, + {file = "msgpack-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4c01941fd2ff87c2a934ee6055bda4ed353a7846b8d4f341c428109e9fcde8c"}, + {file = "msgpack-1.1.0-cp313-cp313-win32.whl", hash = "sha256:7c9a35ce2c2573bada929e0b7b3576de647b0defbd25f5139dcdaba0ae35a4cc"}, + {file = "msgpack-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:bce7d9e614a04d0883af0b3d4d501171fbfca038f12c77fa838d9f198147a23f"}, + {file = "msgpack-1.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c40ffa9a15d74e05ba1fe2681ea33b9caffd886675412612d93ab17b58ea2fec"}, + {file = "msgpack-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1ba6136e650898082d9d5a5217d5906d1e138024f836ff48691784bbe1adf96"}, + {file = "msgpack-1.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0856a2b7e8dcb874be44fea031d22e5b3a19121be92a1e098f46068a11b0870"}, + {file = "msgpack-1.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:471e27a5787a2e3f974ba023f9e265a8c7cfd373632247deb225617e3100a3c7"}, + {file = "msgpack-1.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:646afc8102935a388ffc3914b336d22d1c2d6209c773f3eb5dd4d6d3b6f8c1cb"}, + {file = "msgpack-1.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:13599f8829cfbe0158f6456374e9eea9f44eee08076291771d8ae93eda56607f"}, + {file = "msgpack-1.1.0-cp38-cp38-win32.whl", hash = "sha256:8a84efb768fb968381e525eeeb3d92857e4985aacc39f3c47ffd00eb4509315b"}, + {file = "msgpack-1.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:879a7b7b0ad82481c52d3c7eb99bf6f0645dbdec5134a4bddbd16f3506947feb"}, + {file = "msgpack-1.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:53258eeb7a80fc46f62fd59c876957a2d0e15e6449a9e71842b6d24419d88ca1"}, + {file = "msgpack-1.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7e7b853bbc44fb03fbdba34feb4bd414322180135e2cb5164f20ce1c9795ee48"}, + {file = "msgpack-1.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3e9b4936df53b970513eac1758f3882c88658a220b58dcc1e39606dccaaf01c"}, + {file = "msgpack-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46c34e99110762a76e3911fc923222472c9d681f1094096ac4102c18319e6468"}, + {file = "msgpack-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a706d1e74dd3dea05cb54580d9bd8b2880e9264856ce5068027eed09680aa74"}, + {file = "msgpack-1.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:534480ee5690ab3cbed89d4c8971a5c631b69a8c0883ecfea96c19118510c846"}, + {file = "msgpack-1.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8cf9e8c3a2153934a23ac160cc4cba0ec035f6867c8013cc6077a79823370346"}, + {file = "msgpack-1.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3180065ec2abbe13a4ad37688b61b99d7f9e012a535b930e0e683ad6bc30155b"}, + {file = "msgpack-1.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c5a91481a3cc573ac8c0d9aace09345d989dc4a0202b7fcb312c88c26d4e71a8"}, + {file = "msgpack-1.1.0-cp39-cp39-win32.whl", hash = "sha256:f80bc7d47f76089633763f952e67f8214cb7b3ee6bfa489b3cb6a84cfac114cd"}, + {file = "msgpack-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:4d1b7ff2d6146e16e8bd665ac726a89c74163ef8cd39fa8c1087d4e52d3a2325"}, + {file = "msgpack-1.1.0.tar.gz", hash = "sha256:dd432ccc2c72b914e4cb77afce64aab761c1137cc698be3984eee260bcb2896e"}, +] + +[[package]] +name = "multidict" +version = "6.1.0" +description = "multidict implementation" +optional = false +python-versions = ">=3.8" +files = [ + {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7"}, + {file = "multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0"}, + {file = "multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753"}, + {file = "multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80"}, + {file = "multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3"}, + {file = "multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133"}, + {file = "multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6"}, + {file = "multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81"}, + {file = "multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:db7457bac39421addd0c8449933ac32d8042aae84a14911a757ae6ca3eef1392"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d094ddec350a2fb899fec68d8353c78233debde9b7d8b4beeafa70825f1c281a"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5845c1fd4866bb5dd3125d89b90e57ed3138241540897de748cdf19de8a2fca2"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9079dfc6a70abe341f521f78405b8949f96db48da98aeb43f9907f342f627cdc"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3914f5aaa0f36d5d60e8ece6a308ee1c9784cd75ec8151062614657a114c4478"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c08be4f460903e5a9d0f76818db3250f12e9c344e79314d1d570fc69d7f4eae4"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d093be959277cb7dee84b801eb1af388b6ad3ca6a6b6bf1ed7585895789d027d"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3702ea6872c5a2a4eeefa6ffd36b042e9773f05b1f37ae3ef7264b1163c2dcf6"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2090f6a85cafc5b2db085124d752757c9d251548cedabe9bd31afe6363e0aff2"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f67f217af4b1ff66c68a87318012de788dd95fcfeb24cc889011f4e1c7454dfd"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:189f652a87e876098bbc67b4da1049afb5f5dfbaa310dd67c594b01c10388db6"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:6bb5992037f7a9eff7991ebe4273ea7f51f1c1c511e6a2ce511d0e7bdb754492"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f4c2b9e770c4e393876e35a7046879d195cd123b4f116d299d442b335bcd"}, + {file = "multidict-6.1.0-cp38-cp38-win32.whl", hash = "sha256:e27bbb6d14416713a8bd7aaa1313c0fc8d44ee48d74497a0ff4c3a1b6ccb5167"}, + {file = "multidict-6.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:22f3105d4fb15c8f57ff3959a58fcab6ce36814486500cd7485651230ad4d4ef"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43"}, + {file = "multidict-6.1.0-cp39-cp39-win32.whl", hash = "sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada"}, + {file = "multidict-6.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a"}, + {file = "multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506"}, + {file = "multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a"}, +] + +[package.dependencies] +typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} + +[[package]] +name = "mypy" +version = "1.15.0" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.9" +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"}, + {file = "mypy-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be68172e9fd9ad8fb876c6389f16d1c1b5f100ffa779f77b1fb2176fcc9ab95b"}, + {file = "mypy-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c7be1e46525adfa0d97681432ee9fcd61a3964c2446795714699a998d193f1a3"}, + {file = "mypy-1.15.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2e2c2e6d3593f6451b18588848e66260ff62ccca522dd231cd4dd59b0160668b"}, + {file = "mypy-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:6983aae8b2f653e098edb77f893f7b6aca69f6cffb19b2cc7443f23cce5f4828"}, + {file = "mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f"}, + {file = "mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5"}, + {file = "mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e"}, + {file = "mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c"}, + {file = "mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f"}, + {file = "mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f"}, + {file = "mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd"}, + {file = "mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f"}, + {file = "mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464"}, + {file = "mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee"}, + {file = "mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e"}, + {file = "mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22"}, + {file = "mypy-1.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445"}, + {file = "mypy-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d"}, + {file = "mypy-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5"}, + {file = "mypy-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036"}, + {file = "mypy-1.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357"}, + {file = "mypy-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf"}, + {file = "mypy-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e601a7fa172c2131bff456bb3ee08a88360760d0d2f8cbd7a75a65497e2df078"}, + {file = "mypy-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:712e962a6357634fef20412699a3655c610110e01cdaa6180acec7fc9f8513ba"}, + {file = "mypy-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f95579473af29ab73a10bada2f9722856792a36ec5af5399b653aa28360290a5"}, + {file = "mypy-1.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f8722560a14cde92fdb1e31597760dc35f9f5524cce17836c0d22841830fd5b"}, + {file = "mypy-1.15.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1fbb8da62dc352133d7d7ca90ed2fb0e9d42bb1a32724c287d3c76c58cbaa9c2"}, + {file = "mypy-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:d10d994b41fb3497719bbf866f227b3489048ea4bbbb5015357db306249f7980"}, + {file = "mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e"}, + {file = "mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43"}, +] + +[package.dependencies] +mypy_extensions = ">=1.0.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing_extensions = ">=4.6.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +faster-cache = ["orjson"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[package]] +name = "nodeenv" +version = "1.9.1" +description = "Node.js virtual environment builder" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, +] + +[[package]] +name = "nova-mvvm" +version = "0.9.0" +description = "A Python Package for Model-View-ViewModel pattern" +optional = false +python-versions = "<4.0,>=3.10" +files = [ + {file = "nova_mvvm-0.9.0-py3-none-any.whl", hash = "sha256:60c70f8579b155e7081548e8aec9e77de497fa33ac569096015cffe27ef0f796"}, +] + +[package.dependencies] +deepdiff = ">=8.0.1,<9.0.0" +pytest-asyncio = ">=0.25.0,<0.26.0" +trame = ">=3.6.3,<4.0.0" + +[package.extras] +panel = ["panel (>=1.4.4,<2.0.0)"] +pyqt5 = ["pyqt5 (>=5.15.11,<6.0.0)"] +pyqt6 = ["pyqt6 (>=6.7.0,<7.0.0)"] + +[[package]] +name = "nova-trame" +version = "0.14.2" +description = "A Python Package for injecting curated themes and custom components into Trame applications" +optional = false +python-versions = "<4.0,>=3.10" +files = [ + {file = "nova_trame-0.14.2-py3-none-any.whl", hash = "sha256:225c97960947e7b107c5ed425213658ab192079253ecd13451cd06af66ef1ca3"}, +] + +[package.dependencies] +libsass = "*" +mergedeep = "*" +nova-mvvm = "*" +pydantic = "*" +tomli = "*" +trame = "*" +trame-vega = "*" +trame-vuetify = "*" + +[[package]] +name = "orderly-set" +version = "5.3.0" +description = "Orderly set" +optional = false +python-versions = ">=3.8" +files = [ + {file = "orderly_set-5.3.0-py3-none-any.whl", hash = "sha256:c2c0bfe604f5d3d9b24e8262a06feb612594f37aa3845650548befd7772945d1"}, + {file = "orderly_set-5.3.0.tar.gz", hash = "sha256:80b3d8fdd3d39004d9aad389eaa0eab02c71f0a0511ba3a6d54a935a6c6a0acc"}, +] + +[[package]] +name = "packaging" +version = "24.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, +] + +[[package]] +name = "platformdirs" +version = "4.3.6" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +optional = false +python-versions = ">=3.8" +files = [ + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] + +[[package]] +name = "pluggy" +version = "1.5.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "plumbum" +version = "1.9.0" +description = "Plumbum: shell combinators library" +optional = false +python-versions = ">=3.8" +files = [ + {file = "plumbum-1.9.0-py3-none-any.whl", hash = "sha256:9fd0d3b0e8d86e4b581af36edf3f3bbe9d1ae15b45b8caab28de1bcb27aaa7f5"}, + {file = "plumbum-1.9.0.tar.gz", hash = "sha256:e640062b72642c3873bd5bdc3effed75ba4d3c70ef6b6a7b907357a84d909219"}, +] + +[package.dependencies] +pywin32 = {version = "*", markers = "platform_system == \"Windows\" and platform_python_implementation != \"PyPy\""} + +[package.extras] +dev = ["coverage[toml]", "paramiko", "psutil", "pytest (>=6.0)", "pytest-cov", "pytest-mock", "pytest-timeout"] +docs = ["sphinx (>=4.0.0)", "sphinx-rtd-theme (>=1.0.0)"] +ssh = ["paramiko"] +test = ["coverage[toml]", "paramiko", "psutil", "pytest (>=6.0)", "pytest-cov", "pytest-mock", "pytest-timeout"] + +[[package]] +name = "pockets" +version = "0.9.1" +description = "A collection of helpful Python tools!" +optional = false +python-versions = "*" +files = [ + {file = "pockets-0.9.1-py2.py3-none-any.whl", hash = "sha256:68597934193c08a08eb2bf6a1d85593f627c22f9b065cc727a4f03f669d96d86"}, + {file = "pockets-0.9.1.tar.gz", hash = "sha256:9320f1a3c6f7a9133fe3b571f283bcf3353cd70249025ae8d618e40e9f7e92b3"}, +] + +[package.dependencies] +six = ">=1.5.2" + +[[package]] +name = "pre-commit" +version = "4.1.0" +description = "A framework for managing and maintaining multi-language pre-commit hooks." +optional = false +python-versions = ">=3.9" +files = [ + {file = "pre_commit-4.1.0-py2.py3-none-any.whl", hash = "sha256:d29e7cb346295bcc1cc75fc3e92e343495e3ea0196c9ec6ba53f49f10ab6ae7b"}, + {file = "pre_commit-4.1.0.tar.gz", hash = "sha256:ae3f018575a588e30dfddfab9a05448bfbd6b73d78709617b5a2b853549716d4"}, +] + +[package.dependencies] +cfgv = ">=2.0.0" +identify = ">=1.0.0" +nodeenv = ">=0.11.1" +pyyaml = ">=5.1" +virtualenv = ">=20.10.0" + +[[package]] +name = "prompt-toolkit" +version = "3.0.50" +description = "Library for building powerful interactive command lines in Python" +optional = false +python-versions = ">=3.8.0" +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"}, +] + +[package.dependencies] +wcwidth = "*" + +[[package]] +name = "propcache" +version = "0.2.1" +description = "Accelerated property cache" +optional = false +python-versions = ">=3.9" +files = [ + {file = "propcache-0.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6b3f39a85d671436ee3d12c017f8fdea38509e4f25b28eb25877293c98c243f6"}, + {file = "propcache-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d51fbe4285d5db5d92a929e3e21536ea3dd43732c5b177c7ef03f918dff9f2"}, + {file = "propcache-0.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6445804cf4ec763dc70de65a3b0d9954e868609e83850a47ca4f0cb64bd79fea"}, + {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9479aa06a793c5aeba49ce5c5692ffb51fcd9a7016e017d555d5e2b0045d212"}, + {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9631c5e8b5b3a0fda99cb0d29c18133bca1e18aea9effe55adb3da1adef80d3"}, + {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3156628250f46a0895f1f36e1d4fbe062a1af8718ec3ebeb746f1d23f0c5dc4d"}, + {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b6fb63ae352e13748289f04f37868099e69dba4c2b3e271c46061e82c745634"}, + {file = "propcache-0.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:887d9b0a65404929641a9fabb6452b07fe4572b269d901d622d8a34a4e9043b2"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a96dc1fa45bd8c407a0af03b2d5218392729e1822b0c32e62c5bf7eeb5fb3958"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a7e65eb5c003a303b94aa2c3852ef130230ec79e349632d030e9571b87c4698c"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:999779addc413181912e984b942fbcc951be1f5b3663cd80b2687758f434c583"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:19a0f89a7bb9d8048d9c4370c9c543c396e894c76be5525f5e1ad287f1750ddf"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1ac2f5fe02fa75f56e1ad473f1175e11f475606ec9bd0be2e78e4734ad575034"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:574faa3b79e8ebac7cb1d7930f51184ba1ccf69adfdec53a12f319a06030a68b"}, + {file = "propcache-0.2.1-cp310-cp310-win32.whl", hash = "sha256:03ff9d3f665769b2a85e6157ac8b439644f2d7fd17615a82fa55739bc97863f4"}, + {file = "propcache-0.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:2d3af2e79991102678f53e0dbf4c35de99b6b8b58f29a27ca0325816364caaba"}, + {file = "propcache-0.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ffc3cca89bb438fb9c95c13fc874012f7b9466b89328c3c8b1aa93cdcfadd16"}, + {file = "propcache-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f174bbd484294ed9fdf09437f889f95807e5f229d5d93588d34e92106fbf6717"}, + {file = "propcache-0.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:70693319e0b8fd35dd863e3e29513875eb15c51945bf32519ef52927ca883bc3"}, + {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b480c6a4e1138e1aa137c0079b9b6305ec6dcc1098a8ca5196283e8a49df95a9"}, + {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d27b84d5880f6d8aa9ae3edb253c59d9f6642ffbb2c889b78b60361eed449787"}, + {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:857112b22acd417c40fa4595db2fe28ab900c8c5fe4670c7989b1c0230955465"}, + {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf6c4150f8c0e32d241436526f3c3f9cbd34429492abddbada2ffcff506c51af"}, + {file = "propcache-0.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66d4cfda1d8ed687daa4bc0274fcfd5267873db9a5bc0418c2da19273040eeb7"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c2f992c07c0fca81655066705beae35fc95a2fa7366467366db627d9f2ee097f"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:4a571d97dbe66ef38e472703067021b1467025ec85707d57e78711c085984e54"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bb6178c241278d5fe853b3de743087be7f5f4c6f7d6d22a3b524d323eecec505"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ad1af54a62ffe39cf34db1aa6ed1a1873bd548f6401db39d8e7cd060b9211f82"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e7048abd75fe40712005bcfc06bb44b9dfcd8e101dda2ecf2f5aa46115ad07ca"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:160291c60081f23ee43d44b08a7e5fb76681221a8e10b3139618c5a9a291b84e"}, + {file = "propcache-0.2.1-cp311-cp311-win32.whl", hash = "sha256:819ce3b883b7576ca28da3861c7e1a88afd08cc8c96908e08a3f4dd64a228034"}, + {file = "propcache-0.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:edc9fc7051e3350643ad929df55c451899bb9ae6d24998a949d2e4c87fb596d3"}, + {file = "propcache-0.2.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:081a430aa8d5e8876c6909b67bd2d937bfd531b0382d3fdedb82612c618bc41a"}, + {file = "propcache-0.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2ccec9ac47cf4e04897619c0e0c1a48c54a71bdf045117d3a26f80d38ab1fb0"}, + {file = "propcache-0.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:14d86fe14b7e04fa306e0c43cdbeebe6b2c2156a0c9ce56b815faacc193e320d"}, + {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:049324ee97bb67285b49632132db351b41e77833678432be52bdd0289c0e05e4"}, + {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cd9a1d071158de1cc1c71a26014dcdfa7dd3d5f4f88c298c7f90ad6f27bb46d"}, + {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98110aa363f1bb4c073e8dcfaefd3a5cea0f0834c2aab23dda657e4dab2f53b5"}, + {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:647894f5ae99c4cf6bb82a1bb3a796f6e06af3caa3d32e26d2350d0e3e3faf24"}, + {file = "propcache-0.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfd3223c15bebe26518d58ccf9a39b93948d3dcb3e57a20480dfdd315356baff"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d71264a80f3fcf512eb4f18f59423fe82d6e346ee97b90625f283df56aee103f"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e73091191e4280403bde6c9a52a6999d69cdfde498f1fdf629105247599b57ec"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3935bfa5fede35fb202c4b569bb9c042f337ca4ff7bd540a0aa5e37131659348"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f508b0491767bb1f2b87fdfacaba5f7eddc2f867740ec69ece6d1946d29029a6"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1672137af7c46662a1c2be1e8dc78cb6d224319aaa40271c9257d886be4363a6"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b74c261802d3d2b85c9df2dfb2fa81b6f90deeef63c2db9f0e029a3cac50b518"}, + {file = "propcache-0.2.1-cp312-cp312-win32.whl", hash = "sha256:d09c333d36c1409d56a9d29b3a1b800a42c76a57a5a8907eacdbce3f18768246"}, + {file = "propcache-0.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:c214999039d4f2a5b2073ac506bba279945233da8c786e490d411dfc30f855c1"}, + {file = "propcache-0.2.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aca405706e0b0a44cc6bfd41fbe89919a6a56999157f6de7e182a990c36e37bc"}, + {file = "propcache-0.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:12d1083f001ace206fe34b6bdc2cb94be66d57a850866f0b908972f90996b3e9"}, + {file = "propcache-0.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d93f3307ad32a27bda2e88ec81134b823c240aa3abb55821a8da553eed8d9439"}, + {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba278acf14471d36316159c94a802933d10b6a1e117b8554fe0d0d9b75c9d536"}, + {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e6281aedfca15301c41f74d7005e6e3f4ca143584ba696ac69df4f02f40d629"}, + {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b750a8e5a1262434fb1517ddf64b5de58327f1adc3524a5e44c2ca43305eb0b"}, + {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf72af5e0fb40e9babf594308911436c8efde3cb5e75b6f206c34ad18be5c052"}, + {file = "propcache-0.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2d0a12018b04f4cb820781ec0dffb5f7c7c1d2a5cd22bff7fb055a2cb19ebce"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e800776a79a5aabdb17dcc2346a7d66d0777e942e4cd251defeb084762ecd17d"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:4160d9283bd382fa6c0c2b5e017acc95bc183570cd70968b9202ad6d8fc48dce"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:30b43e74f1359353341a7adb783c8f1b1c676367b011709f466f42fda2045e95"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:58791550b27d5488b1bb52bc96328456095d96206a250d28d874fafe11b3dfaf"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0f022d381747f0dfe27e99d928e31bc51a18b65bb9e481ae0af1380a6725dd1f"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:297878dc9d0a334358f9b608b56d02e72899f3b8499fc6044133f0d319e2ec30"}, + {file = "propcache-0.2.1-cp313-cp313-win32.whl", hash = "sha256:ddfab44e4489bd79bda09d84c430677fc7f0a4939a73d2bba3073036f487a0a6"}, + {file = "propcache-0.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:556fc6c10989f19a179e4321e5d678db8eb2924131e64652a51fe83e4c3db0e1"}, + {file = "propcache-0.2.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6a9a8c34fb7bb609419a211e59da8887eeca40d300b5ea8e56af98f6fbbb1541"}, + {file = "propcache-0.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ae1aa1cd222c6d205853b3013c69cd04515f9d6ab6de4b0603e2e1c33221303e"}, + {file = "propcache-0.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:accb6150ce61c9c4b7738d45550806aa2b71c7668c6942f17b0ac182b6142fd4"}, + {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5eee736daafa7af6d0a2dc15cc75e05c64f37fc37bafef2e00d77c14171c2097"}, + {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7a31fc1e1bd362874863fdeed71aed92d348f5336fd84f2197ba40c59f061bd"}, + {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba4cfa1052819d16699e1d55d18c92b6e094d4517c41dd231a8b9f87b6fa681"}, + {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f089118d584e859c62b3da0892b88a83d611c2033ac410e929cb6754eec0ed16"}, + {file = "propcache-0.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:781e65134efaf88feb447e8c97a51772aa75e48b794352f94cb7ea717dedda0d"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31f5af773530fd3c658b32b6bdc2d0838543de70eb9a2156c03e410f7b0d3aae"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:a7a078f5d37bee6690959c813977da5291b24286e7b962e62a94cec31aa5188b"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:cea7daf9fc7ae6687cf1e2c049752f19f146fdc37c2cc376e7d0032cf4f25347"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:8b3489ff1ed1e8315674d0775dc7d2195fb13ca17b3808721b54dbe9fd020faf"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9403db39be1393618dd80c746cb22ccda168efce239c73af13c3763ef56ffc04"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5d97151bc92d2b2578ff7ce779cdb9174337390a535953cbb9452fb65164c587"}, + {file = "propcache-0.2.1-cp39-cp39-win32.whl", hash = "sha256:9caac6b54914bdf41bcc91e7eb9147d331d29235a7c967c150ef5df6464fd1bb"}, + {file = "propcache-0.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:92fc4500fcb33899b05ba73276dfb684a20d31caa567b7cb5252d48f896a91b1"}, + {file = "propcache-0.2.1-py3-none-any.whl", hash = "sha256:52277518d6aae65536e9cea52d4e7fd2f7a66f4aa2d30ed3f2fcea620ace3c54"}, + {file = "propcache-0.2.1.tar.gz", hash = "sha256:3f77ce728b19cb537714499928fe800c3dda29e8d9428778fc7c186da4c09a64"}, +] + +[[package]] +name = "pydantic" +version = "2.10.6" +description = "Data validation using Python type hints" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584"}, + {file = "pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236"}, +] + +[package.dependencies] +annotated-types = ">=0.6.0" +pydantic-core = "2.27.2" +typing-extensions = ">=4.12.2" + +[package.extras] +email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata"] + +[[package]] +name = "pydantic-core" +version = "2.27.2" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"}, + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35"}, + {file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + +[[package]] +name = "pygments" +version = "2.19.1" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, + {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, +] + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "pytest" +version = "8.3.4" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, + {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=1.5,<2" +tomli = {version = ">=1", markers = "python_version < \"3.11\""} + +[package.extras] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "pytest-asyncio" +version = "0.25.3" +description = "Pytest support for asyncio" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pytest_asyncio-0.25.3-py3-none-any.whl", hash = "sha256:9e89518e0f9bd08928f97a3482fdc4e244df17529460bc038291ccaf8f85c7c3"}, + {file = "pytest_asyncio-0.25.3.tar.gz", hash = "sha256:fc1da2cf9f125ada7e710b4ddad05518d4cee187ae9412e9ac9271003497f07a"}, +] + +[package.dependencies] +pytest = ">=8.2,<9" + +[package.extras] +docs = ["sphinx (>=5.3)", "sphinx-rtd-theme (>=1)"] +testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] + +[[package]] +name = "pywin32" +version = "308" +description = "Python for Window Extensions" +optional = false +python-versions = "*" +files = [ + {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, + {file = "pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e"}, + {file = "pywin32-308-cp310-cp310-win_arm64.whl", hash = "sha256:a5ab5381813b40f264fa3495b98af850098f814a25a63589a8e9eb12560f450c"}, + {file = "pywin32-308-cp311-cp311-win32.whl", hash = "sha256:5d8c8015b24a7d6855b1550d8e660d8daa09983c80e5daf89a273e5c6fb5095a"}, + {file = "pywin32-308-cp311-cp311-win_amd64.whl", hash = "sha256:575621b90f0dc2695fec346b2d6302faebd4f0f45c05ea29404cefe35d89442b"}, + {file = "pywin32-308-cp311-cp311-win_arm64.whl", hash = "sha256:100a5442b7332070983c4cd03f2e906a5648a5104b8a7f50175f7906efd16bb6"}, + {file = "pywin32-308-cp312-cp312-win32.whl", hash = "sha256:587f3e19696f4bf96fde9d8a57cec74a57021ad5f204c9e627e15c33ff568897"}, + {file = "pywin32-308-cp312-cp312-win_amd64.whl", hash = "sha256:00b3e11ef09ede56c6a43c71f2d31857cf7c54b0ab6e78ac659497abd2834f47"}, + {file = "pywin32-308-cp312-cp312-win_arm64.whl", hash = "sha256:9b4de86c8d909aed15b7011182c8cab38c8850de36e6afb1f0db22b8959e3091"}, + {file = "pywin32-308-cp313-cp313-win32.whl", hash = "sha256:1c44539a37a5b7b21d02ab34e6a4d314e0788f1690d65b48e9b0b89f31abbbed"}, + {file = "pywin32-308-cp313-cp313-win_amd64.whl", hash = "sha256:fd380990e792eaf6827fcb7e187b2b4b1cede0585e3d0c9e84201ec27b9905e4"}, + {file = "pywin32-308-cp313-cp313-win_arm64.whl", hash = "sha256:ef313c46d4c18dfb82a2431e3051ac8f112ccee1a34f29c263c583c568db63cd"}, + {file = "pywin32-308-cp37-cp37m-win32.whl", hash = "sha256:1f696ab352a2ddd63bd07430080dd598e6369152ea13a25ebcdd2f503a38f1ff"}, + {file = "pywin32-308-cp37-cp37m-win_amd64.whl", hash = "sha256:13dcb914ed4347019fbec6697a01a0aec61019c1046c2b905410d197856326a6"}, + {file = "pywin32-308-cp38-cp38-win32.whl", hash = "sha256:5794e764ebcabf4ff08c555b31bd348c9025929371763b2183172ff4708152f0"}, + {file = "pywin32-308-cp38-cp38-win_amd64.whl", hash = "sha256:3b92622e29d651c6b783e368ba7d6722b1634b8e70bd376fd7610fe1992e19de"}, + {file = "pywin32-308-cp39-cp39-win32.whl", hash = "sha256:7873ca4dc60ab3287919881a7d4f88baee4a6e639aa6962de25a98ba6b193341"}, + {file = "pywin32-308-cp39-cp39-win_amd64.whl", hash = "sha256:71b3322d949b4cc20776436a9c9ba0eeedcbc9c650daa536df63f0ff111bb920"}, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, +] + +[[package]] +name = "questionary" +version = "2.1.0" +description = "Python library to build pretty command line user prompts ⭐️" +optional = false +python-versions = ">=3.8" +files = [ + {file = "questionary-2.1.0-py3-none-any.whl", hash = "sha256:44174d237b68bc828e4878c763a9ad6790ee61990e0ae72927694ead57bab8ec"}, + {file = "questionary-2.1.0.tar.gz", hash = "sha256:6302cdd645b19667d8f6e6634774e9538bfcd1aad9be287e743d96cacaf95587"}, +] + +[package.dependencies] +prompt_toolkit = ">=2.0,<4.0" + +[[package]] +name = "requests" +version = "2.32.3" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.8" +files = [ + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "ruff" +version = "0.9.4" +description = "An extremely fast Python linter and code formatter, written in Rust." +optional = false +python-versions = ">=3.7" +files = [ + {file = "ruff-0.9.4-py3-none-linux_armv6l.whl", hash = "sha256:64e73d25b954f71ff100bb70f39f1ee09e880728efb4250c632ceed4e4cdf706"}, + {file = "ruff-0.9.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6ce6743ed64d9afab4fafeaea70d3631b4d4b28b592db21a5c2d1f0ef52934bf"}, + {file = "ruff-0.9.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:54499fb08408e32b57360f6f9de7157a5fec24ad79cb3f42ef2c3f3f728dfe2b"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37c892540108314a6f01f105040b5106aeb829fa5fb0561d2dcaf71485021137"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:de9edf2ce4b9ddf43fd93e20ef635a900e25f622f87ed6e3047a664d0e8f810e"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87c90c32357c74f11deb7fbb065126d91771b207bf9bfaaee01277ca59b574ec"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:56acd6c694da3695a7461cc55775f3a409c3815ac467279dfa126061d84b314b"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0c93e7d47ed951b9394cf352d6695b31498e68fd5782d6cbc282425655f687a"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1d4c8772670aecf037d1bf7a07c39106574d143b26cfe5ed1787d2f31e800214"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfc5f1d7afeda8d5d37660eeca6d389b142d7f2b5a1ab659d9214ebd0e025231"}, + {file = "ruff-0.9.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:faa935fc00ae854d8b638c16a5f1ce881bc3f67446957dd6f2af440a5fc8526b"}, + {file = "ruff-0.9.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a6c634fc6f5a0ceae1ab3e13c58183978185d131a29c425e4eaa9f40afe1e6d6"}, + {file = "ruff-0.9.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:433dedf6ddfdec7f1ac7575ec1eb9844fa60c4c8c2f8887a070672b8d353d34c"}, + {file = "ruff-0.9.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:d612dbd0f3a919a8cc1d12037168bfa536862066808960e0cc901404b77968f0"}, + {file = "ruff-0.9.4-py3-none-win32.whl", hash = "sha256:db1192ddda2200671f9ef61d9597fcef89d934f5d1705e571a93a67fb13a4402"}, + {file = "ruff-0.9.4-py3-none-win_amd64.whl", hash = "sha256:05bebf4cdbe3ef75430d26c375773978950bbf4ee3c95ccb5448940dc092408e"}, + {file = "ruff-0.9.4-py3-none-win_arm64.whl", hash = "sha256:585792f1e81509e38ac5123492f8875fbc36f3ede8185af0a26df348e5154f41"}, + {file = "ruff-0.9.4.tar.gz", hash = "sha256:6907ee3529244bb0ed066683e075f09285b38dd5b4039370df6ff06041ca19e7"}, +] + +[[package]] +name = "six" +version = "1.17.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, +] + +[[package]] +name = "snowballstemmer" +version = "2.2.0" +description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +optional = false +python-versions = "*" +files = [ + {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, + {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, +] + +[[package]] +name = "sphinx" +version = "8.1.3" +description = "Python documentation generator" +optional = false +python-versions = ">=3.10" +files = [ + {file = "sphinx-8.1.3-py3-none-any.whl", hash = "sha256:09719015511837b76bf6e03e42eb7595ac8c2e41eeb9c29c5b755c6b677992a2"}, + {file = "sphinx-8.1.3.tar.gz", hash = "sha256:43c1911eecb0d3e161ad78611bc905d1ad0e523e4ddc202a58a821773dc4c927"}, +] + +[package.dependencies] +alabaster = ">=0.7.14" +babel = ">=2.13" +colorama = {version = ">=0.4.6", markers = "sys_platform == \"win32\""} +docutils = ">=0.20,<0.22" +imagesize = ">=1.3" +Jinja2 = ">=3.1" +packaging = ">=23.0" +Pygments = ">=2.17" +requests = ">=2.30.0" +snowballstemmer = ">=2.2" +sphinxcontrib-applehelp = ">=1.0.7" +sphinxcontrib-devhelp = ">=1.0.6" +sphinxcontrib-htmlhelp = ">=2.0.6" +sphinxcontrib-jsmath = ">=1.0.1" +sphinxcontrib-qthelp = ">=1.0.6" +sphinxcontrib-serializinghtml = ">=1.1.9" +tomli = {version = ">=2", markers = "python_version < \"3.11\""} + +[package.extras] +docs = ["sphinxcontrib-websupport"] +lint = ["flake8 (>=6.0)", "mypy (==1.11.1)", "pyright (==1.1.384)", "pytest (>=6.0)", "ruff (==0.6.9)", "sphinx-lint (>=0.9)", "tomli (>=2)", "types-Pillow (==10.2.0.20240822)", "types-Pygments (==2.18.0.20240506)", "types-colorama (==0.4.15.20240311)", "types-defusedxml (==0.7.0.20240218)", "types-docutils (==0.21.0.20241005)", "types-requests (==2.32.0.20240914)", "types-urllib3 (==1.26.25.14)"] +test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=8.0)", "setuptools (>=70.0)", "typing_extensions (>=4.9)"] + +[[package]] +name = "sphinx-rtd-theme" +version = "3.0.2" +description = "Read the Docs theme for Sphinx" +optional = false +python-versions = ">=3.8" +files = [ + {file = "sphinx_rtd_theme-3.0.2-py2.py3-none-any.whl", hash = "sha256:422ccc750c3a3a311de4ae327e82affdaf59eb695ba4936538552f3b00f4ee13"}, + {file = "sphinx_rtd_theme-3.0.2.tar.gz", hash = "sha256:b7457bc25dda723b20b086a670b9953c859eab60a2a03ee8eb2bb23e176e5f85"}, +] + +[package.dependencies] +docutils = ">0.18,<0.22" +sphinx = ">=6,<9" +sphinxcontrib-jquery = ">=4,<5" + +[package.extras] +dev = ["bump2version", "transifex-client", "twine", "wheel"] + +[[package]] +name = "sphinxcontrib-applehelp" +version = "2.0.0" +description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5"}, + {file = "sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1"}, +] + +[package.extras] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-devhelp" +version = "2.0.0" +description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2"}, + {file = "sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad"}, +] + +[package.extras] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-htmlhelp" +version = "2.1.0" +description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8"}, + {file = "sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9"}, +] + +[package.extras] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] +test = ["html5lib", "pytest"] + +[[package]] +name = "sphinxcontrib-jquery" +version = "4.1" +description = "Extension to include jQuery on newer Sphinx releases" +optional = false +python-versions = ">=2.7" +files = [ + {file = "sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a"}, + {file = "sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae"}, +] + +[package.dependencies] +Sphinx = ">=1.8" + +[[package]] +name = "sphinxcontrib-jsmath" +version = "1.0.1" +description = "A sphinx extension which renders display math in HTML via JavaScript" +optional = false +python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, + {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, +] + +[package.extras] +test = ["flake8", "mypy", "pytest"] + +[[package]] +name = "sphinxcontrib-napoleon" +version = "0.7" +description = "Sphinx \"napoleon\" extension." +optional = false +python-versions = "*" +files = [ + {file = "sphinxcontrib-napoleon-0.7.tar.gz", hash = "sha256:407382beed396e9f2d7f3043fad6afda95719204a1e1a231ac865f40abcbfcf8"}, + {file = "sphinxcontrib_napoleon-0.7-py2.py3-none-any.whl", hash = "sha256:711e41a3974bdf110a484aec4c1a556799eb0b3f3b897521a018ad7e2db13fef"}, +] + +[package.dependencies] +pockets = ">=0.3" +six = ">=1.5.2" + +[[package]] +name = "sphinxcontrib-qthelp" +version = "2.0.0" +description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb"}, + {file = "sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab"}, +] + +[package.extras] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] +test = ["defusedxml (>=0.7.1)", "pytest"] + +[[package]] +name = "sphinxcontrib-serializinghtml" +version = "2.0.0" +description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331"}, + {file = "sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d"}, +] + +[package.extras] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] +test = ["pytest"] + +[[package]] +name = "tomli" +version = "2.2.1" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, + {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, + {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, + {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, + {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, + {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, + {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, + {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, + {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, +] + +[[package]] +name = "trame" +version = "3.8.0" +description = "Trame, a framework to build applications in plain Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "trame-3.8.0-py3-none-any.whl", hash = "sha256:e4c9e648938ec0759f6893ba7afd095afaf0c88b4b8202157717691e135e924f"}, + {file = "trame-3.8.0.tar.gz", hash = "sha256:d084942828ac7930e05dbb765468cffe4ef8bd5170dbd48333a930140b540ccd"}, +] + +[package.dependencies] +trame-client = ">=3.4,<4" +trame-server = ">=3.2.3,<4" +wslink = ">=2.1.3" + +[package.extras] +app = ["pywebview"] +dev = ["pre-commit", "pytest", "ruff"] +jupyter = ["jupyterlab"] + +[[package]] +name = "trame-client" +version = "3.5.2" +description = "Internal client of trame" +optional = false +python-versions = ">=3.9" +files = [ + {file = "trame_client-3.5.2-py3-none-any.whl", hash = "sha256:8a950482a437c8245b66bfeb00ac5d7b880b9023f32199e28f15d04f29205ee1"}, + {file = "trame_client-3.5.2.tar.gz", hash = "sha256:e46ddb8e3d611bff90803bff176044083ed85095544557a499eae9c231abedc5"}, +] + +[package.extras] +dev = ["pre-commit", "ruff"] +test = ["Pillow", "pixelmatch", "pytest", "pytest-xprocess", "seleniumbase"] + +[[package]] +name = "trame-server" +version = "3.3.0" +description = "Internal server side implementation of trame" +optional = false +python-versions = ">=3.7" +files = [ + {file = "trame_server-3.3.0-py3-none-any.whl", hash = "sha256:7865053d82617c8d435d274ccf917594a2b1c0d90379f9e686cd662c7ee9cf1a"}, + {file = "trame_server-3.3.0.tar.gz", hash = "sha256:b0b1769d9a0eb816c69076188773cb93b0e2f83c27009d8e94d7208e63c33805"}, +] + +[package.dependencies] +more-itertools = "*" +wslink = ">=2.2.2,<3" + +[package.extras] +dev = ["pre-commit", "pytest", "pytest-asyncio", "ruff"] + +[[package]] +name = "trame-vega" +version = "2.1.1" +description = "Vega widget for trame" +optional = false +python-versions = "*" +files = [ + {file = "trame-vega-2.1.1.tar.gz", hash = "sha256:a3d82f7535a66a782262647001987dba3ad0ddc64ce21225a4cfccd351fed8fa"}, + {file = "trame_vega-2.1.1-py3-none-any.whl", hash = "sha256:044ea338f74fe83e7a5eca15fd1723b3b5f2847d5ca0ed2f0325e30d7676b6c9"}, +] + +[package.dependencies] +trame-client = "*" + +[[package]] +name = "trame-vuetify" +version = "2.8.1" +description = "Vuetify widgets for trame" +optional = false +python-versions = ">=3.9" +files = [ + {file = "trame_vuetify-2.8.1-py3-none-any.whl", hash = "sha256:47d35ab4ec6d37ad1ad8e63c0a2de7c25677f62ef383f1b1e06dd74dda8a3767"}, + {file = "trame_vuetify-2.8.1.tar.gz", hash = "sha256:281606797c29b0300ec2b3524c4396ac2b78da1a300d188d603af09eea83bfe2"}, +] + +[package.dependencies] +trame-client = ">=3.4,<4" + +[package.extras] +dev = ["pre-commit", "pytest", "ruff"] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, +] + +[[package]] +name = "urllib3" +version = "2.3.0" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.9" +files = [ + {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, + {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "virtualenv" +version = "20.29.1" +description = "Virtual Python Environment builder" +optional = false +python-versions = ">=3.8" +files = [ + {file = "virtualenv-20.29.1-py3-none-any.whl", hash = "sha256:4e4cb403c0b0da39e13b46b1b2476e505cb0046b25f242bee80f62bf990b2779"}, + {file = "virtualenv-20.29.1.tar.gz", hash = "sha256:b8b8970138d32fb606192cb97f6cd4bb644fa486be9308fb9b63f81091b5dc35"}, +] + +[package.dependencies] +distlib = ">=0.3.7,<1" +filelock = ">=3.12.2,<4" +platformdirs = ">=3.9.1,<5" + +[package.extras] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] + +[[package]] +name = "wcwidth" +version = "0.2.13" +description = "Measures the displayed width of unicode strings in a terminal" +optional = false +python-versions = "*" +files = [ + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, +] + +[[package]] +name = "wslink" +version = "2.2.2" +description = "Python/JavaScript library for communicating over WebSocket" +optional = false +python-versions = "*" +files = [ + {file = "wslink-2.2.2-py3-none-any.whl", hash = "sha256:8fbab2fb89d0215b9ac3da0a20d554e6b1e05bab8b97883923e7f7ffeaef43d3"}, + {file = "wslink-2.2.2.tar.gz", hash = "sha256:f9c24c08b89d2bd9bd77951ad0c01da9c28905dda29d7397f7f72b542c496840"}, +] + +[package.dependencies] +aiohttp = "<4" +msgpack = ">=1,<2" + +[package.extras] +ssl = ["cryptography"] + +[[package]] +name = "yarl" +version = "1.18.3" +description = "Yet another URL library" +optional = false +python-versions = ">=3.9" +files = [ + {file = "yarl-1.18.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7df647e8edd71f000a5208fe6ff8c382a1de8edfbccdbbfe649d263de07d8c34"}, + {file = "yarl-1.18.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c69697d3adff5aa4f874b19c0e4ed65180ceed6318ec856ebc423aa5850d84f7"}, + {file = "yarl-1.18.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:602d98f2c2d929f8e697ed274fbadc09902c4025c5a9963bf4e9edfc3ab6f7ed"}, + {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c654d5207c78e0bd6d749f6dae1dcbbfde3403ad3a4b11f3c5544d9906969dde"}, + {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5094d9206c64181d0f6e76ebd8fb2f8fe274950a63890ee9e0ebfd58bf9d787b"}, + {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35098b24e0327fc4ebdc8ffe336cee0a87a700c24ffed13161af80124b7dc8e5"}, + {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3236da9272872443f81fedc389bace88408f64f89f75d1bdb2256069a8730ccc"}, + {file = "yarl-1.18.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2c08cc9b16f4f4bc522771d96734c7901e7ebef70c6c5c35dd0f10845270bcd"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80316a8bd5109320d38eef8833ccf5f89608c9107d02d2a7f985f98ed6876990"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:c1e1cc06da1491e6734f0ea1e6294ce00792193c463350626571c287c9a704db"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fea09ca13323376a2fdfb353a5fa2e59f90cd18d7ca4eaa1fd31f0a8b4f91e62"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e3b9fd71836999aad54084906f8663dffcd2a7fb5cdafd6c37713b2e72be1760"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:757e81cae69244257d125ff31663249b3013b5dc0a8520d73694aed497fb195b"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b1771de9944d875f1b98a745bc547e684b863abf8f8287da8466cf470ef52690"}, + {file = "yarl-1.18.3-cp310-cp310-win32.whl", hash = "sha256:8874027a53e3aea659a6d62751800cf6e63314c160fd607489ba5c2edd753cf6"}, + {file = "yarl-1.18.3-cp310-cp310-win_amd64.whl", hash = "sha256:93b2e109287f93db79210f86deb6b9bbb81ac32fc97236b16f7433db7fc437d8"}, + {file = "yarl-1.18.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8503ad47387b8ebd39cbbbdf0bf113e17330ffd339ba1144074da24c545f0069"}, + {file = "yarl-1.18.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02ddb6756f8f4517a2d5e99d8b2f272488e18dd0bfbc802f31c16c6c20f22193"}, + {file = "yarl-1.18.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:67a283dd2882ac98cc6318384f565bffc751ab564605959df4752d42483ad889"}, + {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d980e0325b6eddc81331d3f4551e2a333999fb176fd153e075c6d1c2530aa8a8"}, + {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b643562c12680b01e17239be267bc306bbc6aac1f34f6444d1bded0c5ce438ca"}, + {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c017a3b6df3a1bd45b9fa49a0f54005e53fbcad16633870104b66fa1a30a29d8"}, + {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75674776d96d7b851b6498f17824ba17849d790a44d282929c42dbb77d4f17ae"}, + {file = "yarl-1.18.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccaa3a4b521b780a7e771cc336a2dba389a0861592bbce09a476190bb0c8b4b3"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2d06d3005e668744e11ed80812e61efd77d70bb7f03e33c1598c301eea20efbb"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9d41beda9dc97ca9ab0b9888cb71f7539124bc05df02c0cff6e5acc5a19dcc6e"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ba23302c0c61a9999784e73809427c9dbedd79f66a13d84ad1b1943802eaaf59"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6748dbf9bfa5ba1afcc7556b71cda0d7ce5f24768043a02a58846e4a443d808d"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0b0cad37311123211dc91eadcb322ef4d4a66008d3e1bdc404808992260e1a0e"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0fb2171a4486bb075316ee754c6d8382ea6eb8b399d4ec62fde2b591f879778a"}, + {file = "yarl-1.18.3-cp311-cp311-win32.whl", hash = "sha256:61b1a825a13bef4a5f10b1885245377d3cd0bf87cba068e1d9a88c2ae36880e1"}, + {file = "yarl-1.18.3-cp311-cp311-win_amd64.whl", hash = "sha256:b9d60031cf568c627d028239693fd718025719c02c9f55df0a53e587aab951b5"}, + {file = "yarl-1.18.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1dd4bdd05407ced96fed3d7f25dbbf88d2ffb045a0db60dbc247f5b3c5c25d50"}, + {file = "yarl-1.18.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7c33dd1931a95e5d9a772d0ac5e44cac8957eaf58e3c8da8c1414de7dd27c576"}, + {file = "yarl-1.18.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25b411eddcfd56a2f0cd6a384e9f4f7aa3efee14b188de13048c25b5e91f1640"}, + {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:436c4fc0a4d66b2badc6c5fc5ef4e47bb10e4fd9bf0c79524ac719a01f3607c2"}, + {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e35ef8683211db69ffe129a25d5634319a677570ab6b2eba4afa860f54eeaf75"}, + {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84b2deecba4a3f1a398df819151eb72d29bfeb3b69abb145a00ddc8d30094512"}, + {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e5a1fea0fd4f5bfa7440a47eff01d9822a65b4488f7cff83155a0f31a2ecba"}, + {file = "yarl-1.18.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0e883008013c0e4aef84dcfe2a0b172c4d23c2669412cf5b3371003941f72bb"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5a3f356548e34a70b0172d8890006c37be92995f62d95a07b4a42e90fba54272"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ccd17349166b1bee6e529b4add61727d3f55edb7babbe4069b5764c9587a8cc6"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b958ddd075ddba5b09bb0be8a6d9906d2ce933aee81100db289badbeb966f54e"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d79f7d9aabd6011004e33b22bc13056a3e3fb54794d138af57f5ee9d9032cb"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4891ed92157e5430874dad17b15eb1fda57627710756c27422200c52d8a4e393"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ce1af883b94304f493698b00d0f006d56aea98aeb49d75ec7d98cd4a777e9285"}, + {file = "yarl-1.18.3-cp312-cp312-win32.whl", hash = "sha256:f91c4803173928a25e1a55b943c81f55b8872f0018be83e3ad4938adffb77dd2"}, + {file = "yarl-1.18.3-cp312-cp312-win_amd64.whl", hash = "sha256:7e2ee16578af3b52ac2f334c3b1f92262f47e02cc6193c598502bd46f5cd1477"}, + {file = "yarl-1.18.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:90adb47ad432332d4f0bc28f83a5963f426ce9a1a8809f5e584e704b82685dcb"}, + {file = "yarl-1.18.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:913829534200eb0f789d45349e55203a091f45c37a2674678744ae52fae23efa"}, + {file = "yarl-1.18.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ef9f7768395923c3039055c14334ba4d926f3baf7b776c923c93d80195624782"}, + {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a19f62ff30117e706ebc9090b8ecc79aeb77d0b1f5ec10d2d27a12bc9f66d0"}, + {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e17c9361d46a4d5addf777c6dd5eab0715a7684c2f11b88c67ac37edfba6c482"}, + {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a74a13a4c857a84a845505fd2d68e54826a2cd01935a96efb1e9d86c728e186"}, + {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f7ce59d6ee7741af71d82020346af364949314ed3d87553763a2df1829cc58"}, + {file = "yarl-1.18.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f52a265001d830bc425f82ca9eabda94a64a4d753b07d623a9f2863fde532b53"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:82123d0c954dc58db301f5021a01854a85bf1f3bb7d12ae0c01afc414a882ca2"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2ec9bbba33b2d00999af4631a3397d1fd78290c48e2a3e52d8dd72db3a067ac8"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:fbd6748e8ab9b41171bb95c6142faf068f5ef1511935a0aa07025438dd9a9bc1"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:877d209b6aebeb5b16c42cbb377f5f94d9e556626b1bfff66d7b0d115be88d0a"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b464c4ab4bfcb41e3bfd3f1c26600d038376c2de3297760dfe064d2cb7ea8e10"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8d39d351e7faf01483cc7ff7c0213c412e38e5a340238826be7e0e4da450fdc8"}, + {file = "yarl-1.18.3-cp313-cp313-win32.whl", hash = "sha256:61ee62ead9b68b9123ec24bc866cbef297dd266175d53296e2db5e7f797f902d"}, + {file = "yarl-1.18.3-cp313-cp313-win_amd64.whl", hash = "sha256:578e281c393af575879990861823ef19d66e2b1d0098414855dd367e234f5b3c"}, + {file = "yarl-1.18.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:61e5e68cb65ac8f547f6b5ef933f510134a6bf31bb178be428994b0cb46c2a04"}, + {file = "yarl-1.18.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fe57328fbc1bfd0bd0514470ac692630f3901c0ee39052ae47acd1d90a436719"}, + {file = "yarl-1.18.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a440a2a624683108a1b454705ecd7afc1c3438a08e890a1513d468671d90a04e"}, + {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c7907c8548bcd6ab860e5f513e727c53b4a714f459b084f6580b49fa1b9cee"}, + {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4f6450109834af88cb4cc5ecddfc5380ebb9c228695afc11915a0bf82116789"}, + {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9ca04806f3be0ac6d558fffc2fdf8fcef767e0489d2684a21912cc4ed0cd1b8"}, + {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77a6e85b90a7641d2e07184df5557132a337f136250caafc9ccaa4a2a998ca2c"}, + {file = "yarl-1.18.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6333c5a377c8e2f5fae35e7b8f145c617b02c939d04110c76f29ee3676b5f9a5"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0b3c92fa08759dbf12b3a59579a4096ba9af8dd344d9a813fc7f5070d86bbab1"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4ac515b860c36becb81bb84b667466885096b5fc85596948548b667da3bf9f24"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:045b8482ce9483ada4f3f23b3774f4e1bf4f23a2d5c912ed5170f68efb053318"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:a4bb030cf46a434ec0225bddbebd4b89e6471814ca851abb8696170adb163985"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:54d6921f07555713b9300bee9c50fb46e57e2e639027089b1d795ecd9f7fa910"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1d407181cfa6e70077df3377938c08012d18893f9f20e92f7d2f314a437c30b1"}, + {file = "yarl-1.18.3-cp39-cp39-win32.whl", hash = "sha256:ac36703a585e0929b032fbaab0707b75dc12703766d0b53486eabd5139ebadd5"}, + {file = "yarl-1.18.3-cp39-cp39-win_amd64.whl", hash = "sha256:ba87babd629f8af77f557b61e49e7c7cac36f22f871156b91e10a6e9d4f829e9"}, + {file = "yarl-1.18.3-py3-none-any.whl", hash = "sha256:b57f4f58099328dfb26c6a771d09fb20dbbae81d20cfb66141251ea063bd101b"}, + {file = "yarl-1.18.3.tar.gz", hash = "sha256:ac1801c45cbf77b6c99242eeff4fffb5e4e73a800b5c4ad4fc0be5def634d2e1"}, +] + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" +propcache = ">=0.2.0" + +[metadata] +lock-version = "2.0" +python-versions = "^3.10" +content-hash = "1131a1a151f36bbe11b4fc723d87b3b6ff1d523b617c477bea8ff7b11b8c9997" diff --git a/code/episode_3/pyproject.toml b/code/episode_3/nova_tutorial/pyproject.toml similarity index 95% rename from code/episode_3/pyproject.toml rename to code/episode_3/nova_tutorial/pyproject.toml index e5c54e53..13d8b571 100755 --- a/code/episode_3/pyproject.toml +++ b/code/episode_3/nova_tutorial/pyproject.toml @@ -1,7 +1,7 @@ [tool.poetry] name = "nova-tutorial" version = "0.1.0" -description = "Template application" +description = "Nova Tutorial Project" authors = [] readme = "README.md" license = "MIT" @@ -14,9 +14,9 @@ packages = [ [tool.poetry.dependencies] python = "^3.10" +nova-trame = "*" nova-galaxy = "^0.4.0" - [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" @@ -88,4 +88,4 @@ sphinxcontrib-napoleon ="*" tomli = "*" [tool.poetry.scripts] -app = "nova_tutorial:main" +app = "nova_tutorial.app:main" diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/__init__.py b/code/episode_3/nova_tutorial/src/nova_tutorial/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/__init__.py b/code/episode_3/nova_tutorial/src/nova_tutorial/app/__init__.py new file mode 100755 index 00000000..2779e152 --- /dev/null +++ b/code/episode_3/nova_tutorial/src/nova_tutorial/app/__init__.py @@ -0,0 +1,5 @@ +from .main import main + +__all__ = [ + "main", +] diff --git a/code/episode_3/src/nova_tutorial/__main__.py b/code/episode_3/nova_tutorial/src/nova_tutorial/app/__main__.py similarity index 100% rename from code/episode_3/src/nova_tutorial/__main__.py rename to code/episode_3/nova_tutorial/src/nova_tutorial/app/__main__.py diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/main.py b/code/episode_3/nova_tutorial/src/nova_tutorial/app/main.py new file mode 100755 index 00000000..d77c9da4 --- /dev/null +++ b/code/episode_3/nova_tutorial/src/nova_tutorial/app/main.py @@ -0,0 +1,25 @@ +"""Main Application.""" + +import sys +from .models.fractal import Fractal + + +def main() -> None: + fractal = Fractal() + try: + fractal.run_fractal_tool() + except Exception as e: + print(f"Error running fractal tool: {e}") + + + kwargs = {} + from .views.main import MainApp + + app = MainApp() + for arg in sys.argv[2:]: + try: + key, value = arg.split("=") + kwargs[key] = int(value) + except Exception: + pass + app.server.start(**kwargs) diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/models/__init__.py b/code/episode_3/nova_tutorial/src/nova_tutorial/app/models/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/code/episode_3/src/nova_tutorial/models/fractal.py b/code/episode_3/nova_tutorial/src/nova_tutorial/app/models/fractal.py similarity index 100% rename from code/episode_3/src/nova_tutorial/models/fractal.py rename to code/episode_3/nova_tutorial/src/nova_tutorial/app/models/fractal.py diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/models/main_model.py b/code/episode_3/nova_tutorial/src/nova_tutorial/app/models/main_model.py new file mode 100755 index 00000000..917d32c1 --- /dev/null +++ b/code/episode_3/nova_tutorial/src/nova_tutorial/app/models/main_model.py @@ -0,0 +1,23 @@ +"""Module for the main model.""" + +from pydantic import BaseModel, Field + + +class MainModel(BaseModel): + """ + A model class. + + This class uses Pydantic (https://docs.pydantic.dev/latest/), + which allows for defining data validation rules, + titles, descriptions, and examples that can be used in GUI elements or + other interfaces for improved clarity and usability. + """ + + username: str = Field( + default="test_name", + min_length=1, + title="User Name", + description="Please provide the name of the user", + examples=["user"], + ) + password: str = Field(default="test_password", title="User Password") diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/mvvm_factory.py b/code/episode_3/nova_tutorial/src/nova_tutorial/app/mvvm_factory.py new file mode 100755 index 00000000..d7cf5f4b --- /dev/null +++ b/code/episode_3/nova_tutorial/src/nova_tutorial/app/mvvm_factory.py @@ -0,0 +1,14 @@ +"""Module for the factory that creates viewmodels used in the application.""" + +from nova.mvvm.interface import BindingInterface + +from .models.main_model import MainModel +from .view_models.main import MainViewModel + + +def create_viewmodels(binding: BindingInterface) -> dict: + model = MainModel() + vm: dict = {} + vm["main"] = MainViewModel(model, binding) + + return vm diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/view_models/__init__.py b/code/episode_3/nova_tutorial/src/nova_tutorial/app/view_models/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/view_models/main.py b/code/episode_3/nova_tutorial/src/nova_tutorial/app/view_models/main.py new file mode 100755 index 00000000..5afc3cd0 --- /dev/null +++ b/code/episode_3/nova_tutorial/src/nova_tutorial/app/view_models/main.py @@ -0,0 +1,30 @@ +"""Module for the main ViewModel.""" + +from typing import Any, Dict + +from nova.mvvm.interface import BindingInterface + +from ..models.main_model import MainModel + + +class MainViewModel: + """Viewmodel class, used to create data<->view binding and react on changes from GUI.""" + + def __init__(self, model: MainModel, binding: BindingInterface): + self.model = model + + # here we create a bind that connects ViewModel with View. It returns a communicator object, + # that allows to update View from ViewModel (by calling update_view). + # self.model will be updated automatically on changes of connected fields in View, + # but one also can provide a callback function if they want to react to those events + # and/or process errors. + self.config_bind = binding.new_bind(self.model, callback_after_update=self.change_callback) + + def change_callback(self, results: Dict[str, Any]) -> None: + if results["error"]: + print(f"error in fields {results['errored']}, model not changed") + else: + print(f"model fields updated: {results['updated']}") + + def update_view(self) -> None: + self.config_bind.update_in_view(self.model) diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/__init__.py b/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/main.py b/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/main.py new file mode 100755 index 00000000..c6832686 --- /dev/null +++ b/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/main.py @@ -0,0 +1,44 @@ +"""Main file.""" + +import logging + +from nova.mvvm.trame_binding import TrameBinding +from nova.trame import ThemedApp +from trame.app import get_server + +from ..mvvm_factory import create_viewmodels +from ..view_models.main import MainViewModel +from .tab_content_panel import TabContentPanel +from .tabs_panel import TabsPanel + +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) + + +class MainApp(ThemedApp): + """Main application view class. Calls rendering of nested UI elements.""" + + def __init__(self) -> None: + super().__init__() + self.server = get_server(None, client_type="vue3") + binding = TrameBinding(self.server.state) + self.server.state.trame__title = "Nova Tutorial" + self.view_models = create_viewmodels(binding) + self.view_model: MainViewModel = self.view_models["main"] + self.create_ui() + + def create_ui(self) -> None: + self.state.trame__title = "Nova Tutorial" + + with super().create_ui() as layout: + layout.toolbar_title.set_text("Nova Tutorial") + with layout.pre_content: + TabsPanel(self.view_models["main"]) + with layout.content: + TabContentPanel( + self.server, + self.view_models["main"], + ) + with layout.post_content: + pass + return layout diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/sample_tab_1.py b/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/sample_tab_1.py new file mode 100755 index 00000000..891cdd10 --- /dev/null +++ b/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/sample_tab_1.py @@ -0,0 +1,13 @@ +"""Module for the Sample Tab 1.""" + +from nova.trame.view.components import InputField + + +class SampleTab1: + """Sample tab 1 view class. Renders text input for username.""" + + def __init__(self) -> None: + self.create_ui() + + def create_ui(self) -> None: + InputField(v_model="config.username") diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/sample_tab_2.py b/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/sample_tab_2.py new file mode 100755 index 00000000..46765f0a --- /dev/null +++ b/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/sample_tab_2.py @@ -0,0 +1,13 @@ +"""Module for the Sample Tab 2.""" + +from nova.trame.view.components import InputField + + +class SampleTab2: + """Sample tab 2 view class. Renders text input for user password.""" + + def __init__(self) -> None: + self.create_ui() + + def create_ui(self) -> None: + InputField(v_model="config.password") diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/tab_content_panel.py b/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/tab_content_panel.py new file mode 100755 index 00000000..2f813811 --- /dev/null +++ b/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/tab_content_panel.py @@ -0,0 +1,28 @@ +"""Module for the Tab Content panel.""" + +from trame.widgets import vuetify3 as vuetify +from trame_server import Server + +from ..view_models.main import MainViewModel +from .sample_tab_1 import SampleTab1 +from .sample_tab_2 import SampleTab2 + + +class TabContentPanel: + """View class to render content for a selected tab.""" + + def __init__(self, server: Server, view_model: MainViewModel) -> None: + self.view_model = view_model + self.server = server + self.ctrl = server.controller + self.create_ui() + + def create_ui(self) -> None: + with vuetify.VForm(ref="form") as self.f: + with vuetify.VContainer(classes="pa-0", fluid=True): + with vuetify.VCard(): + with vuetify.VWindow(v_model="active_tab"): + with vuetify.VWindowItem(value=1): + SampleTab1() + with vuetify.VWindowItem(value=2): + SampleTab2() diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/tabs_panel.py b/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/tabs_panel.py new file mode 100755 index 00000000..c36ea880 --- /dev/null +++ b/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/tabs_panel.py @@ -0,0 +1,19 @@ +"""Module for the Tab panel.""" + +from trame.widgets import vuetify3 as vuetify + +from ..view_models.main import MainViewModel + + +class TabsPanel: + """View class to render tabs.""" + + def __init__(self, view_model: MainViewModel): + self.view_model = view_model + self.view_model.config_bind.connect("config") + self.create_ui() + + def create_ui(self) -> None: + with vuetify.VTabs(v_model=("active_tab", 0), classes="pl-5"): + vuetify.VTab("Sample Tab 1", value=1) + vuetify.VTab("Sample Tab 2", value=2) diff --git a/code/episode_3/src/nova_tutorial/__init__.py b/code/episode_3/src/nova_tutorial/__init__.py deleted file mode 100755 index 1a91a49b..00000000 --- a/code/episode_3/src/nova_tutorial/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -import importlib.metadata - -from .main import main - -__all__ = ["main"] - -__version__ = importlib.metadata.version(__package__) diff --git a/code/episode_3/src/nova_tutorial/main.py b/code/episode_3/src/nova_tutorial/main.py deleted file mode 100755 index fb122cd6..00000000 --- a/code/episode_3/src/nova_tutorial/main.py +++ /dev/null @@ -1,13 +0,0 @@ -"""Main Application.""" - -from nova_tutorial.models.fractal import Fractal - -def main(): - fractal = Fractal() - try: - fractal.run_fractal_tool() - except Exception as e: - print(f"Error running fractal tool: {e}") - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/code/episode_4/poetry.lock b/code/episode_4/poetry.lock old mode 100644 new mode 100755 index 41e491dc..d2927940 --- a/code/episode_4/poetry.lock +++ b/code/episode_4/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" version = "2.4.4" description = "Happy Eyeballs for asyncio" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -16,7 +15,6 @@ files = [ name = "aiohttp" version = "3.11.11" description = "Async http client/server framework (asyncio)" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -115,7 +113,6 @@ speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] name = "aiosignal" version = "1.3.2" description = "aiosignal: a list of registered asynchronous callbacks" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -130,7 +127,6 @@ frozenlist = ">=1.1.0" name = "alabaster" version = "1.0.0" description = "A light, configurable Sphinx theme" -category = "dev" optional = false python-versions = ">=3.10" files = [ @@ -142,7 +138,6 @@ files = [ name = "annotated-types" version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -154,7 +149,6 @@ files = [ name = "async-timeout" version = "5.0.1" description = "Timeout context manager for asyncio programs" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -166,7 +160,6 @@ files = [ name = "attrs" version = "25.1.0" description = "Classes Without Boilerplate" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -184,56 +177,33 @@ tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] [[package]] name = "babel" -version = "2.16.0" +version = "2.17.0" description = "Internationalization utilities" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, - {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, + {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, + {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, ] [package.extras] -dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] - -[[package]] -name = "bioblend" -version = "1.4.0" -description = "Library for interacting with the Galaxy API" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "bioblend-1.4.0-py3-none-any.whl", hash = "sha256:20886e5f7658e1dc3e025cedb4be88538342374afba583ce4e2acb5c14a25c63"}, - {file = "bioblend-1.4.0.tar.gz", hash = "sha256:175d49d288e27d132ff59c870551c87cd95d7747be55ab94807c563291a3fa1d"}, -] - -[package.dependencies] -requests = ">=2.20.0" -requests-toolbelt = ">=0.5.1,<0.9.0 || >0.9.0" -tuspy = "*" - -[package.extras] -testing = ["pytest"] +dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata"] [[package]] name = "certifi" -version = "2024.12.14" +version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, - {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, + {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, + {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, ] [[package]] name = "cfgv" version = "3.4.0" description = "Validate configuration and produce human readable error messages." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -245,7 +215,6 @@ files = [ name = "charset-normalizer" version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -347,7 +316,6 @@ files = [ name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -359,7 +327,6 @@ files = [ name = "copier" version = "9.4.1" description = "A library for rendering project templates." -category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -385,7 +352,6 @@ questionary = ">=1.8.1" name = "coverage" version = "7.6.10" description = "Code coverage measurement for Python" -category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -458,28 +424,26 @@ toml = ["tomli"] [[package]] name = "deepdiff" -version = "8.1.1" +version = "8.2.0" description = "Deep Difference and Search of any Python object/data. Recreate objects by adding adding deltas to each other." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "deepdiff-8.1.1-py3-none-any.whl", hash = "sha256:b0231fa3afb0f7184e82535f2b4a36636442ed21e94a0cf3aaa7982157e7ebca"}, - {file = "deepdiff-8.1.1.tar.gz", hash = "sha256:dd7bc7d5c8b51b5b90f01b0e2fe23c801fd8b4c6a7ee7e31c5a3c3663fcc7ceb"}, + {file = "deepdiff-8.2.0-py3-none-any.whl", hash = "sha256:5091f2cdfd372b1b9f6bfd8065ba323ae31118dc4e42594371b38c8bea3fd0a4"}, + {file = "deepdiff-8.2.0.tar.gz", hash = "sha256:6ec78f65031485735545ffbe7a61e716c3c2d12ca6416886d5e9291fc76c46c3"}, ] [package.dependencies] -orderly-set = ">=5.2.3,<6" +orderly-set = ">=5.3.0,<6" [package.extras] -cli = ["click (==8.1.7)", "pyyaml (==6.0.2)"] +cli = ["click (==8.1.8)", "pyyaml (==6.0.2)"] optimize = ["orjson"] [[package]] name = "distlib" version = "0.3.9" description = "Distribution utilities" -category = "dev" optional = false python-versions = "*" files = [ @@ -491,7 +455,6 @@ files = [ name = "docutils" version = "0.21.2" description = "Docutils -- Python Documentation Utilities" -category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -503,7 +466,6 @@ files = [ name = "dunamai" version = "1.23.0" description = "Dynamic version generation" -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -518,7 +480,6 @@ packaging = ">=20.9" name = "exceptiongroup" version = "1.2.2" description = "Backport of PEP 654 (exception groups)" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -533,7 +494,6 @@ test = ["pytest (>=6)"] name = "filelock" version = "3.17.0" description = "A platform independent file lock." -category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -550,7 +510,6 @@ typing = ["typing-extensions (>=4.12.2)"] name = "frozenlist" version = "1.5.0" description = "A list-like structure which implements collections.abc.MutableSequence" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -652,7 +611,6 @@ files = [ name = "funcy" version = "2.0" description = "A fancy and practical functional tools" -category = "dev" optional = false python-versions = "*" files = [ @@ -664,7 +622,6 @@ files = [ name = "identify" version = "2.6.6" description = "File identification library for Python" -category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -679,7 +636,6 @@ license = ["ukkonen"] name = "idna" version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -694,7 +650,6 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -706,7 +661,6 @@ files = [ name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -718,7 +672,6 @@ files = [ name = "jinja2" version = "3.1.5" description = "A very fast and expressive template engine." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -736,7 +689,6 @@ i18n = ["Babel (>=2.7)"] name = "jinja2-ansible-filters" version = "1.3.2" description = "A port of Ansible's jinja2 filters without requiring ansible core." -category = "dev" optional = false python-versions = "*" files = [ @@ -751,11 +703,25 @@ PyYAML = "*" [package.extras] test = ["pytest", "pytest-cov"] +[[package]] +name = "libsass" +version = "0.23.0" +description = "Sass for Python: A straightforward binding of libsass for Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "libsass-0.23.0-cp38-abi3-macosx_11_0_x86_64.whl", hash = "sha256:34cae047cbbfc4ffa832a61cbb110f3c95f5471c6170c842d3fed161e40814dc"}, + {file = "libsass-0.23.0-cp38-abi3-macosx_14_0_arm64.whl", hash = "sha256:ea97d1b45cdc2fc3590cb9d7b60f1d8915d3ce17a98c1f2d4dd47ee0d9c68ce6"}, + {file = "libsass-0.23.0-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4a218406d605f325d234e4678bd57126a66a88841cb95bee2caeafdc6f138306"}, + {file = "libsass-0.23.0-cp38-abi3-win32.whl", hash = "sha256:31e86d92a5c7a551df844b72d83fc2b5e50abc6fbbb31e296f7bebd6489ed1b4"}, + {file = "libsass-0.23.0-cp38-abi3-win_amd64.whl", hash = "sha256:a2ec85d819f353cbe807432d7275d653710d12b08ec7ef61c124a580a8352f3c"}, + {file = "libsass-0.23.0.tar.gz", hash = "sha256:6f209955ede26684e76912caf329f4ccb57e4a043fd77fe0e7348dd9574f1880"}, +] + [[package]] name = "markupsafe" version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." -category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -822,11 +788,21 @@ files = [ {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, ] +[[package]] +name = "mergedeep" +version = "1.3.4" +description = "A deep merge function for 🐍." +optional = false +python-versions = ">=3.6" +files = [ + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, +] + [[package]] name = "more-itertools" version = "10.6.0" description = "More routines for operating on iterables, beyond itertools" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -838,7 +814,6 @@ files = [ name = "msgpack" version = "1.1.0" description = "MessagePack serializer" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -912,7 +887,6 @@ files = [ name = "multidict" version = "6.1.0" description = "multidict implementation" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1015,50 +989,43 @@ typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} [[package]] name = "mypy" -version = "1.14.1" +version = "1.15.0" description = "Optional static typing for Python" -category = "dev" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "mypy-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:52686e37cf13d559f668aa398dd7ddf1f92c5d613e4f8cb262be2fb4fedb0fcb"}, - {file = "mypy-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1fb545ca340537d4b45d3eecdb3def05e913299ca72c290326be19b3804b39c0"}, - {file = "mypy-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:90716d8b2d1f4cd503309788e51366f07c56635a3309b0f6a32547eaaa36a64d"}, - {file = "mypy-1.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ae753f5c9fef278bcf12e1a564351764f2a6da579d4a81347e1d5a15819997b"}, - {file = "mypy-1.14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e0fe0f5feaafcb04505bcf439e991c6d8f1bf8b15f12b05feeed96e9e7bf1427"}, - {file = "mypy-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:7d54bd85b925e501c555a3227f3ec0cfc54ee8b6930bd6141ec872d1c572f81f"}, - {file = "mypy-1.14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f995e511de847791c3b11ed90084a7a0aafdc074ab88c5a9711622fe4751138c"}, - {file = "mypy-1.14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d64169ec3b8461311f8ce2fd2eb5d33e2d0f2c7b49116259c51d0d96edee48d1"}, - {file = "mypy-1.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ba24549de7b89b6381b91fbc068d798192b1b5201987070319889e93038967a8"}, - {file = "mypy-1.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:183cf0a45457d28ff9d758730cd0210419ac27d4d3f285beda038c9083363b1f"}, - {file = "mypy-1.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f2a0ecc86378f45347f586e4163d1769dd81c5a223d577fe351f26b179e148b1"}, - {file = "mypy-1.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:ad3301ebebec9e8ee7135d8e3109ca76c23752bac1e717bc84cd3836b4bf3eae"}, - {file = "mypy-1.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:30ff5ef8519bbc2e18b3b54521ec319513a26f1bba19a7582e7b1f58a6e69f14"}, - {file = "mypy-1.14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb9f255c18052343c70234907e2e532bc7e55a62565d64536dbc7706a20b78b9"}, - {file = "mypy-1.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b4e3413e0bddea671012b063e27591b953d653209e7a4fa5e48759cda77ca11"}, - {file = "mypy-1.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:553c293b1fbdebb6c3c4030589dab9fafb6dfa768995a453d8a5d3b23784af2e"}, - {file = "mypy-1.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fad79bfe3b65fe6a1efaed97b445c3d37f7be9fdc348bdb2d7cac75579607c89"}, - {file = "mypy-1.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:8fa2220e54d2946e94ab6dbb3ba0a992795bd68b16dc852db33028df2b00191b"}, - {file = "mypy-1.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:92c3ed5afb06c3a8e188cb5da4984cab9ec9a77ba956ee419c68a388b4595255"}, - {file = "mypy-1.14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dbec574648b3e25f43d23577309b16534431db4ddc09fda50841f1e34e64ed34"}, - {file = "mypy-1.14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8c6d94b16d62eb3e947281aa7347d78236688e21081f11de976376cf010eb31a"}, - {file = "mypy-1.14.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d4b19b03fdf54f3c5b2fa474c56b4c13c9dbfb9a2db4370ede7ec11a2c5927d9"}, - {file = "mypy-1.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0c911fde686394753fff899c409fd4e16e9b294c24bfd5e1ea4675deae1ac6fd"}, - {file = "mypy-1.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:8b21525cb51671219f5307be85f7e646a153e5acc656e5cebf64bfa076c50107"}, - {file = "mypy-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7084fb8f1128c76cd9cf68fe5971b37072598e7c31b2f9f95586b65c741a9d31"}, - {file = "mypy-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8f845a00b4f420f693f870eaee5f3e2692fa84cc8514496114649cfa8fd5e2c6"}, - {file = "mypy-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:44bf464499f0e3a2d14d58b54674dee25c031703b2ffc35064bd0df2e0fac319"}, - {file = "mypy-1.14.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c99f27732c0b7dc847adb21c9d47ce57eb48fa33a17bc6d7d5c5e9f9e7ae5bac"}, - {file = "mypy-1.14.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:bce23c7377b43602baa0bd22ea3265c49b9ff0b76eb315d6c34721af4cdf1d9b"}, - {file = "mypy-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:8edc07eeade7ebc771ff9cf6b211b9a7d93687ff892150cb5692e4f4272b0837"}, - {file = "mypy-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3888a1816d69f7ab92092f785a462944b3ca16d7c470d564165fe703b0970c35"}, - {file = "mypy-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:46c756a444117c43ee984bd055db99e498bc613a70bbbc120272bd13ca579fbc"}, - {file = "mypy-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:27fc248022907e72abfd8e22ab1f10e903915ff69961174784a3900a8cba9ad9"}, - {file = "mypy-1.14.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:499d6a72fb7e5de92218db961f1a66d5f11783f9ae549d214617edab5d4dbdbb"}, - {file = "mypy-1.14.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:57961db9795eb566dc1d1b4e9139ebc4c6b0cb6e7254ecde69d1552bf7613f60"}, - {file = "mypy-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:07ba89fdcc9451f2ebb02853deb6aaaa3d2239a236669a63ab3801bbf923ef5c"}, - {file = "mypy-1.14.1-py3-none-any.whl", hash = "sha256:b66a60cc4073aeb8ae00057f9c1f64d49e90f918fbcef9a977eb121da8b8f1d1"}, - {file = "mypy-1.14.1.tar.gz", hash = "sha256:7ec88144fe9b510e8475ec2f5f251992690fcf89ccb4500b214b4226abcd32d6"}, + {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"}, + {file = "mypy-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be68172e9fd9ad8fb876c6389f16d1c1b5f100ffa779f77b1fb2176fcc9ab95b"}, + {file = "mypy-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c7be1e46525adfa0d97681432ee9fcd61a3964c2446795714699a998d193f1a3"}, + {file = "mypy-1.15.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2e2c2e6d3593f6451b18588848e66260ff62ccca522dd231cd4dd59b0160668b"}, + {file = "mypy-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:6983aae8b2f653e098edb77f893f7b6aca69f6cffb19b2cc7443f23cce5f4828"}, + {file = "mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f"}, + {file = "mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5"}, + {file = "mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e"}, + {file = "mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c"}, + {file = "mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f"}, + {file = "mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f"}, + {file = "mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd"}, + {file = "mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f"}, + {file = "mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464"}, + {file = "mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee"}, + {file = "mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e"}, + {file = "mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22"}, + {file = "mypy-1.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445"}, + {file = "mypy-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d"}, + {file = "mypy-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5"}, + {file = "mypy-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036"}, + {file = "mypy-1.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357"}, + {file = "mypy-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf"}, + {file = "mypy-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e601a7fa172c2131bff456bb3ee08a88360760d0d2f8cbd7a75a65497e2df078"}, + {file = "mypy-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:712e962a6357634fef20412699a3655c610110e01cdaa6180acec7fc9f8513ba"}, + {file = "mypy-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f95579473af29ab73a10bada2f9722856792a36ec5af5399b653aa28360290a5"}, + {file = "mypy-1.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f8722560a14cde92fdb1e31597760dc35f9f5524cce17836c0d22841830fd5b"}, + {file = "mypy-1.15.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1fbb8da62dc352133d7d7ca90ed2fb0e9d42bb1a32724c287d3c76c58cbaa9c2"}, + {file = "mypy-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:d10d994b41fb3497719bbf866f227b3489048ea4bbbb5015357db306249f7980"}, + {file = "mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e"}, + {file = "mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43"}, ] [package.dependencies] @@ -1077,7 +1044,6 @@ reports = ["lxml"] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1089,7 +1055,6 @@ files = [ name = "nodeenv" version = "1.9.1" description = "Node.js virtual environment builder" -category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -1097,30 +1062,14 @@ files = [ {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] -[[package]] -name = "nova-galaxy" -version = "0.4.0" -description = "Utilties for accessing the ORNL Galaxy instance" -category = "main" -optional = false -python-versions = "<4.0,>=3.10" -files = [ - {file = "nova_galaxy-0.4.0-py3-none-any.whl", hash = "sha256:407ae4b272f5386bd23578daf8c0c9c48c3723fd9fd14aa7328ea38532427ab9"}, -] - -[package.dependencies] -bioblend = ">=1.3.0,<2.0.0" -tomli = ">=2.0.2,<3.0.0" - [[package]] name = "nova-mvvm" -version = "0.8.0" +version = "0.9.0" description = "A Python Package for Model-View-ViewModel pattern" -category = "main" optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "nova_mvvm-0.8.0-py3-none-any.whl", hash = "sha256:494e87915785dee46f01d06bc723dd29fba1724042fdf7fa102789a2e524d055"}, + {file = "nova_mvvm-0.9.0-py3-none-any.whl", hash = "sha256:60c70f8579b155e7081548e8aec9e77de497fa33ac569096015cffe27ef0f796"}, ] [package.dependencies] @@ -1133,23 +1082,41 @@ panel = ["panel (>=1.4.4,<2.0.0)"] pyqt5 = ["pyqt5 (>=5.15.11,<6.0.0)"] pyqt6 = ["pyqt6 (>=6.7.0,<7.0.0)"] +[[package]] +name = "nova-trame" +version = "0.14.2" +description = "A Python Package for injecting curated themes and custom components into Trame applications" +optional = false +python-versions = "<4.0,>=3.10" +files = [ + {file = "nova_trame-0.14.2-py3-none-any.whl", hash = "sha256:225c97960947e7b107c5ed425213658ab192079253ecd13451cd06af66ef1ca3"}, +] + +[package.dependencies] +libsass = "*" +mergedeep = "*" +nova-mvvm = "*" +pydantic = "*" +tomli = "*" +trame = "*" +trame-vega = "*" +trame-vuetify = "*" + [[package]] name = "orderly-set" -version = "5.2.3" +version = "5.3.0" description = "Orderly set" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "orderly_set-5.2.3-py3-none-any.whl", hash = "sha256:d357cedcf67f4ebff0d4cbd5b0997e98eeb65dd24fdf5c990a501ae9e82c7d34"}, - {file = "orderly_set-5.2.3.tar.gz", hash = "sha256:571ed97c5a5fca7ddeb6b2d26c19aca896b0ed91f334d9c109edd2f265fb3017"}, + {file = "orderly_set-5.3.0-py3-none-any.whl", hash = "sha256:c2c0bfe604f5d3d9b24e8262a06feb612594f37aa3845650548befd7772945d1"}, + {file = "orderly_set-5.3.0.tar.gz", hash = "sha256:80b3d8fdd3d39004d9aad389eaa0eab02c71f0a0511ba3a6d54a935a6c6a0acc"}, ] [[package]] name = "packaging" version = "24.2" description = "Core utilities for Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1161,7 +1128,6 @@ files = [ name = "pathspec" version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1173,7 +1139,6 @@ files = [ name = "platformdirs" version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1190,7 +1155,6 @@ type = ["mypy (>=1.11.2)"] name = "pluggy" version = "1.5.0" description = "plugin and hook calling mechanisms for python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1206,7 +1170,6 @@ testing = ["pytest", "pytest-benchmark"] name = "plumbum" version = "1.9.0" description = "Plumbum: shell combinators library" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1227,7 +1190,6 @@ test = ["coverage[toml]", "paramiko", "psutil", "pytest (>=6.0)", "pytest-cov", name = "pockets" version = "0.9.1" description = "A collection of helpful Python tools!" -category = "dev" optional = false python-versions = "*" files = [ @@ -1242,7 +1204,6 @@ six = ">=1.5.2" name = "pre-commit" version = "4.1.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." -category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1261,7 +1222,6 @@ virtualenv = ">=20.10.0" name = "prompt-toolkit" version = "3.0.50" description = "Library for building powerful interactive command lines in Python" -category = "dev" optional = false python-versions = ">=3.8.0" files = [ @@ -1276,7 +1236,6 @@ wcwidth = "*" name = "propcache" version = "0.2.1" description = "Accelerated property cache" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1368,7 +1327,6 @@ files = [ name = "pydantic" version = "2.10.6" description = "Data validation using Python type hints" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1389,7 +1347,6 @@ timezone = ["tzdata"] name = "pydantic-core" version = "2.27.2" description = "Core functionality for Pydantic validation and serialization" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1502,7 +1459,6 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" name = "pygments" version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1517,7 +1473,6 @@ windows-terminal = ["colorama (>=0.4.6)"] name = "pytest" version = "8.3.4" description = "pytest: simple powerful testing with Python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1540,7 +1495,6 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments name = "pytest-asyncio" version = "0.25.3" description = "Pytest support for asyncio" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1559,7 +1513,6 @@ testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] name = "pywin32" version = "308" description = "Python for Window Extensions" -category = "dev" optional = false python-versions = "*" files = [ @@ -1587,7 +1540,6 @@ files = [ name = "pyyaml" version = "6.0.2" description = "YAML parser and emitter for Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1650,7 +1602,6 @@ files = [ name = "questionary" version = "2.1.0" description = "Python library to build pretty command line user prompts ⭐️" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1665,7 +1616,6 @@ prompt_toolkit = ">=2.0,<4.0" name = "requests" version = "2.32.3" description = "Python HTTP for Humans." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1683,54 +1633,37 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] -[[package]] -name = "requests-toolbelt" -version = "1.0.0" -description = "A utility belt for advanced users of python-requests" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, - {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, -] - -[package.dependencies] -requests = ">=2.0.1,<3.0.0" - [[package]] name = "ruff" -version = "0.9.3" +version = "0.9.4" description = "An extremely fast Python linter and code formatter, written in Rust." -category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.9.3-py3-none-linux_armv6l.whl", hash = "sha256:7f39b879064c7d9670197d91124a75d118d00b0990586549949aae80cdc16624"}, - {file = "ruff-0.9.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:a187171e7c09efa4b4cc30ee5d0d55a8d6c5311b3e1b74ac5cb96cc89bafc43c"}, - {file = "ruff-0.9.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c59ab92f8e92d6725b7ded9d4a31be3ef42688a115c6d3da9457a5bda140e2b4"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2dc153c25e715be41bb228bc651c1e9b1a88d5c6e5ed0194fa0dfea02b026439"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:646909a1e25e0dc28fbc529eab8eb7bb583079628e8cbe738192853dbbe43af5"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a5a46e09355695fbdbb30ed9889d6cf1c61b77b700a9fafc21b41f097bfbba4"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c4bb09d2bbb394e3730d0918c00276e79b2de70ec2a5231cd4ebb51a57df9ba1"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96a87ec31dc1044d8c2da2ebbed1c456d9b561e7d087734336518181b26b3aa5"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bb7554aca6f842645022fe2d301c264e6925baa708b392867b7a62645304df4"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cabc332b7075a914ecea912cd1f3d4370489c8018f2c945a30bcc934e3bc06a6"}, - {file = "ruff-0.9.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:33866c3cc2a575cbd546f2cd02bdd466fed65118e4365ee538a3deffd6fcb730"}, - {file = "ruff-0.9.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:006e5de2621304c8810bcd2ee101587712fa93b4f955ed0985907a36c427e0c2"}, - {file = "ruff-0.9.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ba6eea4459dbd6b1be4e6bfc766079fb9b8dd2e5a35aff6baee4d9b1514ea519"}, - {file = "ruff-0.9.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:90230a6b8055ad47d3325e9ee8f8a9ae7e273078a66401ac66df68943ced029b"}, - {file = "ruff-0.9.3-py3-none-win32.whl", hash = "sha256:eabe5eb2c19a42f4808c03b82bd313fc84d4e395133fb3fc1b1516170a31213c"}, - {file = "ruff-0.9.3-py3-none-win_amd64.whl", hash = "sha256:040ceb7f20791dfa0e78b4230ee9dce23da3b64dd5848e40e3bf3ab76468dcf4"}, - {file = "ruff-0.9.3-py3-none-win_arm64.whl", hash = "sha256:800d773f6d4d33b0a3c60e2c6ae8f4c202ea2de056365acfa519aa48acf28e0b"}, - {file = "ruff-0.9.3.tar.gz", hash = "sha256:8293f89985a090ebc3ed1064df31f3b4b56320cdfcec8b60d3295bddb955c22a"}, + {file = "ruff-0.9.4-py3-none-linux_armv6l.whl", hash = "sha256:64e73d25b954f71ff100bb70f39f1ee09e880728efb4250c632ceed4e4cdf706"}, + {file = "ruff-0.9.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6ce6743ed64d9afab4fafeaea70d3631b4d4b28b592db21a5c2d1f0ef52934bf"}, + {file = "ruff-0.9.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:54499fb08408e32b57360f6f9de7157a5fec24ad79cb3f42ef2c3f3f728dfe2b"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37c892540108314a6f01f105040b5106aeb829fa5fb0561d2dcaf71485021137"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:de9edf2ce4b9ddf43fd93e20ef635a900e25f622f87ed6e3047a664d0e8f810e"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87c90c32357c74f11deb7fbb065126d91771b207bf9bfaaee01277ca59b574ec"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:56acd6c694da3695a7461cc55775f3a409c3815ac467279dfa126061d84b314b"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0c93e7d47ed951b9394cf352d6695b31498e68fd5782d6cbc282425655f687a"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1d4c8772670aecf037d1bf7a07c39106574d143b26cfe5ed1787d2f31e800214"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfc5f1d7afeda8d5d37660eeca6d389b142d7f2b5a1ab659d9214ebd0e025231"}, + {file = "ruff-0.9.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:faa935fc00ae854d8b638c16a5f1ce881bc3f67446957dd6f2af440a5fc8526b"}, + {file = "ruff-0.9.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a6c634fc6f5a0ceae1ab3e13c58183978185d131a29c425e4eaa9f40afe1e6d6"}, + {file = "ruff-0.9.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:433dedf6ddfdec7f1ac7575ec1eb9844fa60c4c8c2f8887a070672b8d353d34c"}, + {file = "ruff-0.9.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:d612dbd0f3a919a8cc1d12037168bfa536862066808960e0cc901404b77968f0"}, + {file = "ruff-0.9.4-py3-none-win32.whl", hash = "sha256:db1192ddda2200671f9ef61d9597fcef89d934f5d1705e571a93a67fb13a4402"}, + {file = "ruff-0.9.4-py3-none-win_amd64.whl", hash = "sha256:05bebf4cdbe3ef75430d26c375773978950bbf4ee3c95ccb5448940dc092408e"}, + {file = "ruff-0.9.4-py3-none-win_arm64.whl", hash = "sha256:585792f1e81509e38ac5123492f8875fbc36f3ede8185af0a26df348e5154f41"}, + {file = "ruff-0.9.4.tar.gz", hash = "sha256:6907ee3529244bb0ed066683e075f09285b38dd5b4039370df6ff06041ca19e7"}, ] [[package]] name = "six" version = "1.17.0" description = "Python 2 and 3 compatibility utilities" -category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -1742,7 +1675,6 @@ files = [ name = "snowballstemmer" version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." -category = "dev" optional = false python-versions = "*" files = [ @@ -1754,7 +1686,6 @@ files = [ name = "sphinx" version = "8.1.3" description = "Python documentation generator" -category = "dev" optional = false python-versions = ">=3.10" files = [ @@ -1790,7 +1721,6 @@ test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=8.0)", "setuptools name = "sphinx-rtd-theme" version = "3.0.2" description = "Read the Docs theme for Sphinx" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1810,7 +1740,6 @@ dev = ["bump2version", "transifex-client", "twine", "wheel"] name = "sphinxcontrib-applehelp" version = "2.0.0" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" -category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1827,7 +1756,6 @@ test = ["pytest"] name = "sphinxcontrib-devhelp" version = "2.0.0" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" -category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1844,7 +1772,6 @@ test = ["pytest"] name = "sphinxcontrib-htmlhelp" version = "2.1.0" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" -category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1861,7 +1788,6 @@ test = ["html5lib", "pytest"] name = "sphinxcontrib-jquery" version = "4.1" description = "Extension to include jQuery on newer Sphinx releases" -category = "dev" optional = false python-versions = ">=2.7" files = [ @@ -1876,7 +1802,6 @@ Sphinx = ">=1.8" name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1891,7 +1816,6 @@ test = ["flake8", "mypy", "pytest"] name = "sphinxcontrib-napoleon" version = "0.7" description = "Sphinx \"napoleon\" extension." -category = "dev" optional = false python-versions = "*" files = [ @@ -1907,7 +1831,6 @@ six = ">=1.5.2" name = "sphinxcontrib-qthelp" version = "2.0.0" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" -category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1924,7 +1847,6 @@ test = ["defusedxml (>=0.7.1)", "pytest"] name = "sphinxcontrib-serializinghtml" version = "2.0.0" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" -category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1937,23 +1859,10 @@ lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] standalone = ["Sphinx (>=5)"] test = ["pytest"] -[[package]] -name = "tinydb" -version = "4.8.2" -description = "TinyDB is a tiny, document oriented database optimized for your happiness :)" -category = "main" -optional = false -python-versions = "<4.0,>=3.8" -files = [ - {file = "tinydb-4.8.2-py3-none-any.whl", hash = "sha256:f97030ee5cbc91eeadd1d7af07ab0e48ceb04aa63d4a983adbaca4cba16e86c3"}, - {file = "tinydb-4.8.2.tar.gz", hash = "sha256:f7dfc39b8d7fda7a1ca62a8dbb449ffd340a117c1206b68c50b1a481fb95181d"}, -] - [[package]] name = "tomli" version = "2.2.1" description = "A lil' TOML parser" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1993,14 +1902,13 @@ files = [ [[package]] name = "trame" -version = "3.7.6" +version = "3.8.0" description = "Trame, a framework to build applications in plain Python" -category = "main" optional = false python-versions = ">=3.9" files = [ - {file = "trame-3.7.6-py3-none-any.whl", hash = "sha256:17d765630404ee7e25667aa0fcf48495df040338d4daebffa9bae9adf2412491"}, - {file = "trame-3.7.6.tar.gz", hash = "sha256:683dbc88a843570ded3ae60ee610053c730c78f90899c9c0dab5fe54ad1f530b"}, + {file = "trame-3.8.0-py3-none-any.whl", hash = "sha256:e4c9e648938ec0759f6893ba7afd095afaf0c88b4b8202157717691e135e924f"}, + {file = "trame-3.8.0.tar.gz", hash = "sha256:d084942828ac7930e05dbb765468cffe4ef8bd5170dbd48333a930140b540ccd"}, ] [package.dependencies] @@ -2017,7 +1925,6 @@ jupyter = ["jupyterlab"] name = "trame-client" version = "3.5.2" description = "Internal client of trame" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -2033,7 +1940,6 @@ test = ["Pillow", "pixelmatch", "pytest", "pytest-xprocess", "seleniumbase"] name = "trame-server" version = "3.3.0" description = "Internal server side implementation of trame" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2049,31 +1955,40 @@ wslink = ">=2.2.2,<3" dev = ["pre-commit", "pytest", "pytest-asyncio", "ruff"] [[package]] -name = "tuspy" -version = "1.1.0" -description = "A Python client for the tus resumable upload protocol -> http://tus.io" -category = "main" +name = "trame-vega" +version = "2.1.1" +description = "Vega widget for trame" +optional = false +python-versions = "*" +files = [ + {file = "trame-vega-2.1.1.tar.gz", hash = "sha256:a3d82f7535a66a782262647001987dba3ad0ddc64ce21225a4cfccd351fed8fa"}, + {file = "trame_vega-2.1.1-py3-none-any.whl", hash = "sha256:044ea338f74fe83e7a5eca15fd1723b3b5f2847d5ca0ed2f0325e30d7676b6c9"}, +] + +[package.dependencies] +trame-client = "*" + +[[package]] +name = "trame-vuetify" +version = "2.8.1" +description = "Vuetify widgets for trame" optional = false -python-versions = ">=3.5.3" +python-versions = ">=3.9" files = [ - {file = "tuspy-1.1.0-py3-none-any.whl", hash = "sha256:7fc5ac8fb25de37c96c90213f83a1ffdede7f48a471cb5a15a2f57846828a79a"}, - {file = "tuspy-1.1.0.tar.gz", hash = "sha256:156734eac5c61a046cfecd70f14119f05be92cce198eb5a1a99a664482bedb89"}, + {file = "trame_vuetify-2.8.1-py3-none-any.whl", hash = "sha256:47d35ab4ec6d37ad1ad8e63c0a2de7c25677f62ef383f1b1e06dd74dda8a3767"}, + {file = "trame_vuetify-2.8.1.tar.gz", hash = "sha256:281606797c29b0300ec2b3524c4396ac2b78da1a300d188d603af09eea83bfe2"}, ] [package.dependencies] -aiohttp = ">=3.6.2" -requests = ">=2.18.4" -tinydb = ">=3.5.0" +trame-client = ">=3.4,<4" [package.extras] -dev = ["Sphinx (==1.7.1)", "sphinx-autobuild (==2021.3.14)", "tox (>=2.3.1)"] -test = ["aioresponses (>=0.6.2)", "coverage (>=4.2)", "parametrize (>=0.1.1)", "pytest (>=3.0.3)", "pytest-cov (>=2.3.1,<2.6)", "responses (>=0.5.1)"] +dev = ["pre-commit", "pytest", "ruff"] [[package]] name = "typing-extensions" version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2085,7 +2000,6 @@ files = [ name = "urllib3" version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -2103,7 +2017,6 @@ zstd = ["zstandard (>=0.18.0)"] name = "virtualenv" version = "20.29.1" description = "Virtual Python Environment builder" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2124,7 +2037,6 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess name = "wcwidth" version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" -category = "dev" optional = false python-versions = "*" files = [ @@ -2136,7 +2048,6 @@ files = [ name = "wslink" version = "2.2.2" description = "Python/JavaScript library for communicating over WebSocket" -category = "main" optional = false python-versions = "*" files = [ @@ -2155,7 +2066,6 @@ ssl = ["cryptography"] name = "yarl" version = "1.18.3" description = "Yet another URL library" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -2251,4 +2161,4 @@ propcache = ">=0.2.0" [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "5ab47085430602c49c1f67bf8020a089a1c4187893c608858932d7d4f2523445" +content-hash = "1131a1a151f36bbe11b4fc723d87b3b6ff1d523b617c477bea8ff7b11b8c9997" diff --git a/code/episode_4/pyproject.toml b/code/episode_4/pyproject.toml index eda09534..13d8b571 100755 --- a/code/episode_4/pyproject.toml +++ b/code/episode_4/pyproject.toml @@ -1,7 +1,7 @@ [tool.poetry] name = "nova-tutorial" version = "0.1.0" -description = "Template application" +description = "Nova Tutorial Project" authors = [] readme = "README.md" license = "MIT" @@ -14,9 +14,8 @@ packages = [ [tool.poetry.dependencies] python = "^3.10" +nova-trame = "*" nova-galaxy = "^0.4.0" -nova-mvvm = "0.8.0" - [build-system] requires = ["poetry-core"] @@ -89,4 +88,4 @@ sphinxcontrib-napoleon ="*" tomli = "*" [tool.poetry.scripts] -app = "nova_tutorial:main" +app = "nova_tutorial.app:main" diff --git a/code/episode_4/src/nova_tutorial/__init__.py b/code/episode_4/src/nova_tutorial/__init__.py index 1a91a49b..e69de29b 100755 --- a/code/episode_4/src/nova_tutorial/__init__.py +++ b/code/episode_4/src/nova_tutorial/__init__.py @@ -1,7 +0,0 @@ -import importlib.metadata - -from .main import main - -__all__ = ["main"] - -__version__ = importlib.metadata.version(__package__) diff --git a/code/episode_4/src/nova_tutorial/app/__init__.py b/code/episode_4/src/nova_tutorial/app/__init__.py new file mode 100755 index 00000000..2779e152 --- /dev/null +++ b/code/episode_4/src/nova_tutorial/app/__init__.py @@ -0,0 +1,5 @@ +from .main import main + +__all__ = [ + "main", +] diff --git a/code/episode_4/src/nova_tutorial/__main__.py b/code/episode_4/src/nova_tutorial/app/__main__.py similarity index 100% rename from code/episode_4/src/nova_tutorial/__main__.py rename to code/episode_4/src/nova_tutorial/app/__main__.py diff --git a/code/episode_4/src/nova_tutorial/app/main.py b/code/episode_4/src/nova_tutorial/app/main.py new file mode 100755 index 00000000..add49c11 --- /dev/null +++ b/code/episode_4/src/nova_tutorial/app/main.py @@ -0,0 +1,18 @@ +"""Main Application.""" + +import sys +from .models.fractal import Fractal + + +def main() -> None: + kwargs = {} + from .views.main import MainApp + + app = MainApp() + for arg in sys.argv[2:]: + try: + key, value = arg.split("=") + kwargs[key] = int(value) + except Exception: + pass + app.server.start(**kwargs) diff --git a/code/episode_4/src/nova_tutorial/app/models/__init__.py b/code/episode_4/src/nova_tutorial/app/models/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/code/episode_5/src/nova_tutorial/models/fractal.py b/code/episode_4/src/nova_tutorial/app/models/fractal.py similarity index 68% rename from code/episode_5/src/nova_tutorial/models/fractal.py rename to code/episode_4/src/nova_tutorial/app/models/fractal.py index d46e1d59..7c5a5e5c 100755 --- a/code/episode_5/src/nova_tutorial/models/fractal.py +++ b/code/episode_4/src/nova_tutorial/app/models/fractal.py @@ -1,12 +1,12 @@ import os +from pydantic import BaseModel, Field from nova.galaxy import Nova, Parameters, Tool -class Fractal: - def __init__(self): - self.fractal_type = "mandelbrot" # Default fractal type - self.galaxy_url = os.getenv("GALAXY_URL") - self.galaxy_key = os.getenv("GALAXY_API_KEY") +class Fractal(BaseModel): + fractal_type: str = Field(default="mandelbrot", description="Type of fractal to generate") + galaxy_url: str = Field(default_factory=lambda: os.getenv("GALAXY_URL"), description="NDIP Galaxy URL") + galaxy_key: str = Field(default_factory=lambda: os.getenv("GALAXY_API_KEY"), description="NDIP Galaxy API Key") def set_fractal_type(self, fractal_type: str): self.fractal_type = fractal_type @@ -21,7 +21,6 @@ class Fractal: nova = Nova(galaxy_url=self.galaxy_url, galaxy_key=self.galaxy_key) tool = Tool(id="neutrons_fractal") params = Parameters() - params.add_input(name="option", value=self.fractal_type) with nova.connect() as galaxy_connection: data_store = galaxy_connection.create_data_store(name="fractal_store") diff --git a/code/episode_4/src/nova_tutorial/app/models/main_model.py b/code/episode_4/src/nova_tutorial/app/models/main_model.py new file mode 100755 index 00000000..1aa45abc --- /dev/null +++ b/code/episode_4/src/nova_tutorial/app/models/main_model.py @@ -0,0 +1,25 @@ +"""Module for the main model.""" + +from pydantic import BaseModel, Field +from .fractal import Fractal + + +class MainModel(BaseModel): + """ + A model class. + + This class uses Pydantic (https://docs.pydantic.dev/latest/), + which allows for defining data validation rules, + titles, descriptions, and examples that can be used in GUI elements or + other interfaces for improved clarity and usability. + """ + + username: str = Field( + default="test_name", + min_length=1, + title="User Name", + description="Please provide the name of the user", + examples=["user"], + ) + password: str = Field(default="test_password", title="User Password") + fractal: Fractal = Field(default_factory=Fractal) diff --git a/code/episode_4/src/nova_tutorial/app/mvvm_factory.py b/code/episode_4/src/nova_tutorial/app/mvvm_factory.py new file mode 100755 index 00000000..3b56e2b6 --- /dev/null +++ b/code/episode_4/src/nova_tutorial/app/mvvm_factory.py @@ -0,0 +1,15 @@ +"""Module for the factory that creates viewmodels used in the application.""" + +from nova.mvvm.interface import BindingInterface + +from .models.main_model import MainModel +from .view_models.main import MainViewModel + + +def create_viewmodels(binding: BindingInterface) -> dict: + model = MainModel() + vm: dict = {} + vm["main"] = MainViewModel(model, binding) + print(vm["main"].model.fractal.galaxy_key) + + return vm diff --git a/code/episode_4/src/nova_tutorial/app/view_models/__init__.py b/code/episode_4/src/nova_tutorial/app/view_models/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/code/episode_4/src/nova_tutorial/app/view_models/main.py b/code/episode_4/src/nova_tutorial/app/view_models/main.py new file mode 100755 index 00000000..1bceca83 --- /dev/null +++ b/code/episode_4/src/nova_tutorial/app/view_models/main.py @@ -0,0 +1,33 @@ +"""Module for the main ViewModel.""" + +from typing import Any, Dict + +from nova.mvvm.interface import BindingInterface + +from ..models.main_model import MainModel + + +class MainViewModel: + """Viewmodel class, used to create data<->view binding and react on changes from GUI.""" + + def __init__(self, model: MainModel, binding: BindingInterface): + self.model = model + + # here we create a bind that connects ViewModel with View. It returns a communicator object, + # that allows to update View from ViewModel (by calling update_view). + # self.model will be updated automatically on changes of connected fields in View, + # but one also can provide a callback function if they want to react to those events + # and/or process errors. + self.config_bind = binding.new_bind(self.model, callback_after_update=self.change_callback) + + def change_callback(self, results: Dict[str, Any]) -> None: + if results["error"]: + print(f"error in fields {results['errored']}, model not changed") + else: + print(f"model fields updated: {results['updated']}") + + def update_view(self) -> None: + self.config_bind.update_in_view(self.model) + + def run_fractal(self) -> None: + self.model.fractal.run_fractal_tool() diff --git a/code/episode_4/src/nova_tutorial/app/views/__init__.py b/code/episode_4/src/nova_tutorial/app/views/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/code/episode_4/src/nova_tutorial/app/views/fractal_tab.py b/code/episode_4/src/nova_tutorial/app/views/fractal_tab.py new file mode 100755 index 00000000..950a12bf --- /dev/null +++ b/code/episode_4/src/nova_tutorial/app/views/fractal_tab.py @@ -0,0 +1,17 @@ +from trame.widgets import vuetify3 as vuetify + +from nova.trame.view.components import InputField +from nova_tutorial.app.view_models.main import MainViewModel + +class FractalTab: + + def __init__(self, view_model: MainViewModel) -> None: + self.view_model = view_model + self.create_ui() + + def create_ui(self) -> None: + InputField(v_model="config.fractal.fractal_type") + vuetify.VBtn( + "Run Fractal", + click=self.view_model.run_fractal # calls the run_fractal_tool method + ) \ No newline at end of file diff --git a/code/episode_4/src/nova_tutorial/app/views/main.py b/code/episode_4/src/nova_tutorial/app/views/main.py new file mode 100755 index 00000000..2000c009 --- /dev/null +++ b/code/episode_4/src/nova_tutorial/app/views/main.py @@ -0,0 +1,45 @@ +"""Main file.""" + +import logging + +from nova.mvvm.trame_binding import TrameBinding +from nova.trame import ThemedApp +from trame.app import get_server + +from ..mvvm_factory import create_viewmodels +from ..view_models.main import MainViewModel +from .tab_content_panel import TabContentPanel +from .tabs_panel import TabsPanel + + +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) + + +class MainApp(ThemedApp): + """Main application view class. Calls rendering of nested UI elements.""" + + def __init__(self) -> None: + super().__init__() + self.server = get_server(None, client_type="vue3") + binding = TrameBinding(self.server.state) + self.server.state.trame__title = "Nova Tutorial" + self.view_models = create_viewmodels(binding) + self.view_model: MainViewModel = self.view_models["main"] + self.create_ui() + + def create_ui(self) -> None: + self.state.trame__title = "Nova Tutorial" + + with super().create_ui() as layout: + layout.toolbar_title.set_text("Nova Tutorial") + with layout.pre_content: + TabsPanel(self.view_models["main"]) + with layout.content: + TabContentPanel( + self.server, + self.view_models["main"], + ) + with layout.post_content: + pass + return layout diff --git a/code/episode_4/src/nova_tutorial/app/views/sample_tab_1.py b/code/episode_4/src/nova_tutorial/app/views/sample_tab_1.py new file mode 100755 index 00000000..891cdd10 --- /dev/null +++ b/code/episode_4/src/nova_tutorial/app/views/sample_tab_1.py @@ -0,0 +1,13 @@ +"""Module for the Sample Tab 1.""" + +from nova.trame.view.components import InputField + + +class SampleTab1: + """Sample tab 1 view class. Renders text input for username.""" + + def __init__(self) -> None: + self.create_ui() + + def create_ui(self) -> None: + InputField(v_model="config.username") diff --git a/code/episode_4/src/nova_tutorial/app/views/sample_tab_2.py b/code/episode_4/src/nova_tutorial/app/views/sample_tab_2.py new file mode 100755 index 00000000..46765f0a --- /dev/null +++ b/code/episode_4/src/nova_tutorial/app/views/sample_tab_2.py @@ -0,0 +1,13 @@ +"""Module for the Sample Tab 2.""" + +from nova.trame.view.components import InputField + + +class SampleTab2: + """Sample tab 2 view class. Renders text input for user password.""" + + def __init__(self) -> None: + self.create_ui() + + def create_ui(self) -> None: + InputField(v_model="config.password") diff --git a/code/episode_4/src/nova_tutorial/app/views/tab_content_panel.py b/code/episode_4/src/nova_tutorial/app/views/tab_content_panel.py new file mode 100755 index 00000000..ab67bd63 --- /dev/null +++ b/code/episode_4/src/nova_tutorial/app/views/tab_content_panel.py @@ -0,0 +1,31 @@ +"""Module for the Tab Content panel.""" + +from trame.widgets import vuetify3 as vuetify +from trame_server import Server + +from ..view_models.main import MainViewModel +from .sample_tab_1 import SampleTab1 +from .sample_tab_2 import SampleTab2 +from .fractal_tab import FractalTab # Import the FractalTab + +class TabContentPanel: + """View class to render content for a selected tab.""" + + def __init__(self, server: Server, view_model: MainViewModel) -> None: + self.view_model = view_model + self.server = server + self.ctrl = server.controller + self.create_ui() + + def create_ui(self) -> None: + with vuetify.VForm(ref="form") as self.f: + with vuetify.VContainer(classes="pa-0", fluid=True): + with vuetify.VCard(): + with vuetify.VWindow(v_model="active_tab"): + with vuetify.VWindowItem(value=1): + FractalTab(self.view_model) # Add FractalTab + with vuetify.VWindowItem(value=2): + SampleTab1() + with vuetify.VWindowItem(value=3): + SampleTab2() + diff --git a/code/episode_4/src/nova_tutorial/app/views/tabs_panel.py b/code/episode_4/src/nova_tutorial/app/views/tabs_panel.py new file mode 100755 index 00000000..ac1f6ab3 --- /dev/null +++ b/code/episode_4/src/nova_tutorial/app/views/tabs_panel.py @@ -0,0 +1,21 @@ +"""Module for the Tab panel.""" + +from trame.widgets import vuetify3 as vuetify + +from ..view_models.main import MainViewModel + + +class TabsPanel: + """View class to render tabs.""" + + def __init__(self, view_model: MainViewModel): + self.view_model = view_model + self.view_model.config_bind.connect("config") + #self.view_model.fractal_bind.connect("fractal") + self.create_ui() + + def create_ui(self) -> None: + with vuetify.VTabs(v_model=("active_tab", 0), classes="pl-5"): + vuetify.VTab("Fractal", value=1) # Add Fractal Tab + vuetify.VTab("Sample Tab 1", value=2) + vuetify.VTab("Sample Tab 2", value=3) diff --git a/code/episode_4/src/nova_tutorial/main.py b/code/episode_4/src/nova_tutorial/main.py deleted file mode 100755 index 6f8a28a9..00000000 --- a/code/episode_4/src/nova_tutorial/main.py +++ /dev/null @@ -1,18 +0,0 @@ -"""Main Application.""" - -from nova.mvvm.trame_binding import TrameBinding -from nova_tutorial.view_models.fractal_view_model import FractalViewModel -from trame.app import get_server - -def main(): - server = get_server(None, client_type="vue3") - binding = TrameBinding(server.state) - fractal_vm = FractalViewModel(binding) - try: - fractal_vm.run_fractal_tool() - except Exception as e: - print(f"Error running fractal tool: {e}") - - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/code/episode_4/src/nova_tutorial/view_models/fractal_view_model.py b/code/episode_4/src/nova_tutorial/view_models/fractal_view_model.py deleted file mode 100755 index 2ad67689..00000000 --- a/code/episode_4/src/nova_tutorial/view_models/fractal_view_model.py +++ /dev/null @@ -1,49 +0,0 @@ -import os -from nova.mvvm.interface import BindingInterface -from pydantic import BaseModel, Field,ValidationError -from typing import Literal - -from ..models.fractal import Fractal - - -class FractalToolInput(BaseModel): - fractal_type: Literal["mandelbrot", "julia", "random", "markus"] = Field(default="mandelbrot") - - -class FractalViewModel(): - def __init__(self, binding: BindingInterface): - super().__init__() - self.fractal = Fractal() - - self._fractal_type = FractalToolInput() - self._job_status:dict[str, Any] = {} - self._message: str = "" - - self.job_status_bind = binding.new_bind( - linked_object=self._job_status - ) - self.message_bind = binding.new_bind( - linked_object=self._message, - ) - self.fractal_type_bind = binding.new_bind( - linked_object=self._fractal_type, - ) - - def set_fractal_type(self, fractal_type: str): - try: - FractalToolInput(fractal_type=fractal_type) - except ValidationError as e: - self._message = f"Validation Error: {e}" - return - self._fractal_type = fractal_type - print(f"Set new fractal type to: {self._fractal_type}") - - def run_fractal_tool(self): - self._job_status["fractal"] = "Starting" - try: - self.fractal.set_fractal_type(self._fractal_type.fractal_type) - self.fractal.run_fractal_tool() - self._message = "Fractal tool finished successfully." - except Exception as e: - self._message = f"Error running fractal tool: {e}" - raise e \ No newline at end of file diff --git a/code/episode_5/poetry.lock b/code/episode_5/poetry.lock index b8349c09..d2927940 100755 --- a/code/episode_5/poetry.lock +++ b/code/episode_5/poetry.lock @@ -158,13 +158,13 @@ files = [ [[package]] name = "attrs" -version = "24.3.0" +version = "25.1.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.8" files = [ - {file = "attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308"}, - {file = "attrs-24.3.0.tar.gz", hash = "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff"}, + {file = "attrs-25.1.0-py3-none-any.whl", hash = "sha256:c75a69e28a550a7e93789579c22aa26b0f5b83b75dc4e08fe092980051e1090a"}, + {file = "attrs-25.1.0.tar.gz", hash = "sha256:1c97078a80c814273a76b2a298a932eb681c87415c11dee0a6921de7f1b02c3e"}, ] [package.extras] @@ -177,46 +177,27 @@ tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] [[package]] name = "babel" -version = "2.16.0" +version = "2.17.0" description = "Internationalization utilities" optional = false python-versions = ">=3.8" files = [ - {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, - {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, + {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, + {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, ] [package.extras] -dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] - -[[package]] -name = "bioblend" -version = "1.4.0" -description = "Library for interacting with the Galaxy API" -optional = false -python-versions = ">=3.8" -files = [ - {file = "bioblend-1.4.0-py3-none-any.whl", hash = "sha256:20886e5f7658e1dc3e025cedb4be88538342374afba583ce4e2acb5c14a25c63"}, - {file = "bioblend-1.4.0.tar.gz", hash = "sha256:175d49d288e27d132ff59c870551c87cd95d7747be55ab94807c563291a3fa1d"}, -] - -[package.dependencies] -requests = ">=2.20.0" -requests-toolbelt = ">=0.5.1,<0.9.0 || >0.9.0" -tuspy = "*" - -[package.extras] -testing = ["pytest"] +dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata"] [[package]] name = "certifi" -version = "2024.12.14" +version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, - {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, + {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, + {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, ] [[package]] @@ -443,20 +424,20 @@ toml = ["tomli"] [[package]] name = "deepdiff" -version = "8.1.1" +version = "8.2.0" description = "Deep Difference and Search of any Python object/data. Recreate objects by adding adding deltas to each other." optional = false python-versions = ">=3.8" files = [ - {file = "deepdiff-8.1.1-py3-none-any.whl", hash = "sha256:b0231fa3afb0f7184e82535f2b4a36636442ed21e94a0cf3aaa7982157e7ebca"}, - {file = "deepdiff-8.1.1.tar.gz", hash = "sha256:dd7bc7d5c8b51b5b90f01b0e2fe23c801fd8b4c6a7ee7e31c5a3c3663fcc7ceb"}, + {file = "deepdiff-8.2.0-py3-none-any.whl", hash = "sha256:5091f2cdfd372b1b9f6bfd8065ba323ae31118dc4e42594371b38c8bea3fd0a4"}, + {file = "deepdiff-8.2.0.tar.gz", hash = "sha256:6ec78f65031485735545ffbe7a61e716c3c2d12ca6416886d5e9291fc76c46c3"}, ] [package.dependencies] -orderly-set = ">=5.2.3,<6" +orderly-set = ">=5.3.0,<6" [package.extras] -cli = ["click (==8.1.7)", "pyyaml (==6.0.2)"] +cli = ["click (==8.1.8)", "pyyaml (==6.0.2)"] optimize = ["orjson"] [[package]] @@ -1008,49 +989,43 @@ typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} [[package]] name = "mypy" -version = "1.14.1" +version = "1.15.0" description = "Optional static typing for Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "mypy-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:52686e37cf13d559f668aa398dd7ddf1f92c5d613e4f8cb262be2fb4fedb0fcb"}, - {file = "mypy-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1fb545ca340537d4b45d3eecdb3def05e913299ca72c290326be19b3804b39c0"}, - {file = "mypy-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:90716d8b2d1f4cd503309788e51366f07c56635a3309b0f6a32547eaaa36a64d"}, - {file = "mypy-1.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ae753f5c9fef278bcf12e1a564351764f2a6da579d4a81347e1d5a15819997b"}, - {file = "mypy-1.14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e0fe0f5feaafcb04505bcf439e991c6d8f1bf8b15f12b05feeed96e9e7bf1427"}, - {file = "mypy-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:7d54bd85b925e501c555a3227f3ec0cfc54ee8b6930bd6141ec872d1c572f81f"}, - {file = "mypy-1.14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f995e511de847791c3b11ed90084a7a0aafdc074ab88c5a9711622fe4751138c"}, - {file = "mypy-1.14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d64169ec3b8461311f8ce2fd2eb5d33e2d0f2c7b49116259c51d0d96edee48d1"}, - {file = "mypy-1.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ba24549de7b89b6381b91fbc068d798192b1b5201987070319889e93038967a8"}, - {file = "mypy-1.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:183cf0a45457d28ff9d758730cd0210419ac27d4d3f285beda038c9083363b1f"}, - {file = "mypy-1.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f2a0ecc86378f45347f586e4163d1769dd81c5a223d577fe351f26b179e148b1"}, - {file = "mypy-1.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:ad3301ebebec9e8ee7135d8e3109ca76c23752bac1e717bc84cd3836b4bf3eae"}, - {file = "mypy-1.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:30ff5ef8519bbc2e18b3b54521ec319513a26f1bba19a7582e7b1f58a6e69f14"}, - {file = "mypy-1.14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb9f255c18052343c70234907e2e532bc7e55a62565d64536dbc7706a20b78b9"}, - {file = "mypy-1.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b4e3413e0bddea671012b063e27591b953d653209e7a4fa5e48759cda77ca11"}, - {file = "mypy-1.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:553c293b1fbdebb6c3c4030589dab9fafb6dfa768995a453d8a5d3b23784af2e"}, - {file = "mypy-1.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fad79bfe3b65fe6a1efaed97b445c3d37f7be9fdc348bdb2d7cac75579607c89"}, - {file = "mypy-1.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:8fa2220e54d2946e94ab6dbb3ba0a992795bd68b16dc852db33028df2b00191b"}, - {file = "mypy-1.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:92c3ed5afb06c3a8e188cb5da4984cab9ec9a77ba956ee419c68a388b4595255"}, - {file = "mypy-1.14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dbec574648b3e25f43d23577309b16534431db4ddc09fda50841f1e34e64ed34"}, - {file = "mypy-1.14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8c6d94b16d62eb3e947281aa7347d78236688e21081f11de976376cf010eb31a"}, - {file = "mypy-1.14.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d4b19b03fdf54f3c5b2fa474c56b4c13c9dbfb9a2db4370ede7ec11a2c5927d9"}, - {file = "mypy-1.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0c911fde686394753fff899c409fd4e16e9b294c24bfd5e1ea4675deae1ac6fd"}, - {file = "mypy-1.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:8b21525cb51671219f5307be85f7e646a153e5acc656e5cebf64bfa076c50107"}, - {file = "mypy-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7084fb8f1128c76cd9cf68fe5971b37072598e7c31b2f9f95586b65c741a9d31"}, - {file = "mypy-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8f845a00b4f420f693f870eaee5f3e2692fa84cc8514496114649cfa8fd5e2c6"}, - {file = "mypy-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:44bf464499f0e3a2d14d58b54674dee25c031703b2ffc35064bd0df2e0fac319"}, - {file = "mypy-1.14.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c99f27732c0b7dc847adb21c9d47ce57eb48fa33a17bc6d7d5c5e9f9e7ae5bac"}, - {file = "mypy-1.14.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:bce23c7377b43602baa0bd22ea3265c49b9ff0b76eb315d6c34721af4cdf1d9b"}, - {file = "mypy-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:8edc07eeade7ebc771ff9cf6b211b9a7d93687ff892150cb5692e4f4272b0837"}, - {file = "mypy-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3888a1816d69f7ab92092f785a462944b3ca16d7c470d564165fe703b0970c35"}, - {file = "mypy-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:46c756a444117c43ee984bd055db99e498bc613a70bbbc120272bd13ca579fbc"}, - {file = "mypy-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:27fc248022907e72abfd8e22ab1f10e903915ff69961174784a3900a8cba9ad9"}, - {file = "mypy-1.14.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:499d6a72fb7e5de92218db961f1a66d5f11783f9ae549d214617edab5d4dbdbb"}, - {file = "mypy-1.14.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:57961db9795eb566dc1d1b4e9139ebc4c6b0cb6e7254ecde69d1552bf7613f60"}, - {file = "mypy-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:07ba89fdcc9451f2ebb02853deb6aaaa3d2239a236669a63ab3801bbf923ef5c"}, - {file = "mypy-1.14.1-py3-none-any.whl", hash = "sha256:b66a60cc4073aeb8ae00057f9c1f64d49e90f918fbcef9a977eb121da8b8f1d1"}, - {file = "mypy-1.14.1.tar.gz", hash = "sha256:7ec88144fe9b510e8475ec2f5f251992690fcf89ccb4500b214b4226abcd32d6"}, + {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"}, + {file = "mypy-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be68172e9fd9ad8fb876c6389f16d1c1b5f100ffa779f77b1fb2176fcc9ab95b"}, + {file = "mypy-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c7be1e46525adfa0d97681432ee9fcd61a3964c2446795714699a998d193f1a3"}, + {file = "mypy-1.15.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2e2c2e6d3593f6451b18588848e66260ff62ccca522dd231cd4dd59b0160668b"}, + {file = "mypy-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:6983aae8b2f653e098edb77f893f7b6aca69f6cffb19b2cc7443f23cce5f4828"}, + {file = "mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f"}, + {file = "mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5"}, + {file = "mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e"}, + {file = "mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c"}, + {file = "mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f"}, + {file = "mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f"}, + {file = "mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd"}, + {file = "mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f"}, + {file = "mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464"}, + {file = "mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee"}, + {file = "mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e"}, + {file = "mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22"}, + {file = "mypy-1.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445"}, + {file = "mypy-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d"}, + {file = "mypy-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5"}, + {file = "mypy-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036"}, + {file = "mypy-1.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357"}, + {file = "mypy-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf"}, + {file = "mypy-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e601a7fa172c2131bff456bb3ee08a88360760d0d2f8cbd7a75a65497e2df078"}, + {file = "mypy-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:712e962a6357634fef20412699a3655c610110e01cdaa6180acec7fc9f8513ba"}, + {file = "mypy-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f95579473af29ab73a10bada2f9722856792a36ec5af5399b653aa28360290a5"}, + {file = "mypy-1.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f8722560a14cde92fdb1e31597760dc35f9f5524cce17836c0d22841830fd5b"}, + {file = "mypy-1.15.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1fbb8da62dc352133d7d7ca90ed2fb0e9d42bb1a32724c287d3c76c58cbaa9c2"}, + {file = "mypy-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:d10d994b41fb3497719bbf866f227b3489048ea4bbbb5015357db306249f7980"}, + {file = "mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e"}, + {file = "mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43"}, ] [package.dependencies] @@ -1087,28 +1062,14 @@ files = [ {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] -[[package]] -name = "nova-galaxy" -version = "0.4.0" -description = "Utilties for accessing the ORNL Galaxy instance" -optional = false -python-versions = "<4.0,>=3.10" -files = [ - {file = "nova_galaxy-0.4.0-py3-none-any.whl", hash = "sha256:407ae4b272f5386bd23578daf8c0c9c48c3723fd9fd14aa7328ea38532427ab9"}, -] - -[package.dependencies] -bioblend = ">=1.3.0,<2.0.0" -tomli = ">=2.0.2,<3.0.0" - [[package]] name = "nova-mvvm" -version = "0.8.0" +version = "0.9.0" description = "A Python Package for Model-View-ViewModel pattern" optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "nova_mvvm-0.8.0-py3-none-any.whl", hash = "sha256:494e87915785dee46f01d06bc723dd29fba1724042fdf7fa102789a2e524d055"}, + {file = "nova_mvvm-0.9.0-py3-none-any.whl", hash = "sha256:60c70f8579b155e7081548e8aec9e77de497fa33ac569096015cffe27ef0f796"}, ] [package.dependencies] @@ -1123,12 +1084,12 @@ pyqt6 = ["pyqt6 (>=6.7.0,<7.0.0)"] [[package]] name = "nova-trame" -version = "0.14.0" +version = "0.14.2" description = "A Python Package for injecting curated themes and custom components into Trame applications" optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "nova_trame-0.14.0-py3-none-any.whl", hash = "sha256:a104529d1cc4e0c9c08277c547b672555e01eb38b1eeea36cb331fb765a3dacb"}, + {file = "nova_trame-0.14.2-py3-none-any.whl", hash = "sha256:225c97960947e7b107c5ed425213658ab192079253ecd13451cd06af66ef1ca3"}, ] [package.dependencies] @@ -1143,13 +1104,13 @@ trame-vuetify = "*" [[package]] name = "orderly-set" -version = "5.2.3" +version = "5.3.0" description = "Orderly set" optional = false python-versions = ">=3.8" files = [ - {file = "orderly_set-5.2.3-py3-none-any.whl", hash = "sha256:d357cedcf67f4ebff0d4cbd5b0997e98eeb65dd24fdf5c990a501ae9e82c7d34"}, - {file = "orderly_set-5.2.3.tar.gz", hash = "sha256:571ed97c5a5fca7ddeb6b2d26c19aca896b0ed91f334d9c109edd2f265fb3017"}, + {file = "orderly_set-5.3.0-py3-none-any.whl", hash = "sha256:c2c0bfe604f5d3d9b24e8262a06feb612594f37aa3845650548befd7772945d1"}, + {file = "orderly_set-5.3.0.tar.gz", hash = "sha256:80b3d8fdd3d39004d9aad389eaa0eab02c71f0a0511ba3a6d54a935a6c6a0acc"}, ] [[package]] @@ -1532,13 +1493,13 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments [[package]] name = "pytest-asyncio" -version = "0.25.2" +version = "0.25.3" description = "Pytest support for asyncio" optional = false python-versions = ">=3.9" files = [ - {file = "pytest_asyncio-0.25.2-py3-none-any.whl", hash = "sha256:0d0bb693f7b99da304a0634afc0a4b19e49d5e0de2d670f38dc4bfa5727c5075"}, - {file = "pytest_asyncio-0.25.2.tar.gz", hash = "sha256:3f8ef9a98f45948ea91a0ed3dc4268b5326c0e7bce73892acc654df4262ad45f"}, + {file = "pytest_asyncio-0.25.3-py3-none-any.whl", hash = "sha256:9e89518e0f9bd08928f97a3482fdc4e244df17529460bc038291ccaf8f85c7c3"}, + {file = "pytest_asyncio-0.25.3.tar.gz", hash = "sha256:fc1da2cf9f125ada7e710b4ddad05518d4cee187ae9412e9ac9271003497f07a"}, ] [package.dependencies] @@ -1672,45 +1633,31 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] -[[package]] -name = "requests-toolbelt" -version = "1.0.0" -description = "A utility belt for advanced users of python-requests" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, - {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, -] - -[package.dependencies] -requests = ">=2.0.1,<3.0.0" - [[package]] name = "ruff" -version = "0.9.3" +version = "0.9.4" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.9.3-py3-none-linux_armv6l.whl", hash = "sha256:7f39b879064c7d9670197d91124a75d118d00b0990586549949aae80cdc16624"}, - {file = "ruff-0.9.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:a187171e7c09efa4b4cc30ee5d0d55a8d6c5311b3e1b74ac5cb96cc89bafc43c"}, - {file = "ruff-0.9.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c59ab92f8e92d6725b7ded9d4a31be3ef42688a115c6d3da9457a5bda140e2b4"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2dc153c25e715be41bb228bc651c1e9b1a88d5c6e5ed0194fa0dfea02b026439"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:646909a1e25e0dc28fbc529eab8eb7bb583079628e8cbe738192853dbbe43af5"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5a5a46e09355695fbdbb30ed9889d6cf1c61b77b700a9fafc21b41f097bfbba4"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:c4bb09d2bbb394e3730d0918c00276e79b2de70ec2a5231cd4ebb51a57df9ba1"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96a87ec31dc1044d8c2da2ebbed1c456d9b561e7d087734336518181b26b3aa5"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bb7554aca6f842645022fe2d301c264e6925baa708b392867b7a62645304df4"}, - {file = "ruff-0.9.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cabc332b7075a914ecea912cd1f3d4370489c8018f2c945a30bcc934e3bc06a6"}, - {file = "ruff-0.9.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:33866c3cc2a575cbd546f2cd02bdd466fed65118e4365ee538a3deffd6fcb730"}, - {file = "ruff-0.9.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:006e5de2621304c8810bcd2ee101587712fa93b4f955ed0985907a36c427e0c2"}, - {file = "ruff-0.9.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ba6eea4459dbd6b1be4e6bfc766079fb9b8dd2e5a35aff6baee4d9b1514ea519"}, - {file = "ruff-0.9.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:90230a6b8055ad47d3325e9ee8f8a9ae7e273078a66401ac66df68943ced029b"}, - {file = "ruff-0.9.3-py3-none-win32.whl", hash = "sha256:eabe5eb2c19a42f4808c03b82bd313fc84d4e395133fb3fc1b1516170a31213c"}, - {file = "ruff-0.9.3-py3-none-win_amd64.whl", hash = "sha256:040ceb7f20791dfa0e78b4230ee9dce23da3b64dd5848e40e3bf3ab76468dcf4"}, - {file = "ruff-0.9.3-py3-none-win_arm64.whl", hash = "sha256:800d773f6d4d33b0a3c60e2c6ae8f4c202ea2de056365acfa519aa48acf28e0b"}, - {file = "ruff-0.9.3.tar.gz", hash = "sha256:8293f89985a090ebc3ed1064df31f3b4b56320cdfcec8b60d3295bddb955c22a"}, + {file = "ruff-0.9.4-py3-none-linux_armv6l.whl", hash = "sha256:64e73d25b954f71ff100bb70f39f1ee09e880728efb4250c632ceed4e4cdf706"}, + {file = "ruff-0.9.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6ce6743ed64d9afab4fafeaea70d3631b4d4b28b592db21a5c2d1f0ef52934bf"}, + {file = "ruff-0.9.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:54499fb08408e32b57360f6f9de7157a5fec24ad79cb3f42ef2c3f3f728dfe2b"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37c892540108314a6f01f105040b5106aeb829fa5fb0561d2dcaf71485021137"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:de9edf2ce4b9ddf43fd93e20ef635a900e25f622f87ed6e3047a664d0e8f810e"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87c90c32357c74f11deb7fbb065126d91771b207bf9bfaaee01277ca59b574ec"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:56acd6c694da3695a7461cc55775f3a409c3815ac467279dfa126061d84b314b"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0c93e7d47ed951b9394cf352d6695b31498e68fd5782d6cbc282425655f687a"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1d4c8772670aecf037d1bf7a07c39106574d143b26cfe5ed1787d2f31e800214"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfc5f1d7afeda8d5d37660eeca6d389b142d7f2b5a1ab659d9214ebd0e025231"}, + {file = "ruff-0.9.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:faa935fc00ae854d8b638c16a5f1ce881bc3f67446957dd6f2af440a5fc8526b"}, + {file = "ruff-0.9.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a6c634fc6f5a0ceae1ab3e13c58183978185d131a29c425e4eaa9f40afe1e6d6"}, + {file = "ruff-0.9.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:433dedf6ddfdec7f1ac7575ec1eb9844fa60c4c8c2f8887a070672b8d353d34c"}, + {file = "ruff-0.9.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:d612dbd0f3a919a8cc1d12037168bfa536862066808960e0cc901404b77968f0"}, + {file = "ruff-0.9.4-py3-none-win32.whl", hash = "sha256:db1192ddda2200671f9ef61d9597fcef89d934f5d1705e571a93a67fb13a4402"}, + {file = "ruff-0.9.4-py3-none-win_amd64.whl", hash = "sha256:05bebf4cdbe3ef75430d26c375773978950bbf4ee3c95ccb5448940dc092408e"}, + {file = "ruff-0.9.4-py3-none-win_arm64.whl", hash = "sha256:585792f1e81509e38ac5123492f8875fbc36f3ede8185af0a26df348e5154f41"}, + {file = "ruff-0.9.4.tar.gz", hash = "sha256:6907ee3529244bb0ed066683e075f09285b38dd5b4039370df6ff06041ca19e7"}, ] [[package]] @@ -1912,17 +1859,6 @@ lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] standalone = ["Sphinx (>=5)"] test = ["pytest"] -[[package]] -name = "tinydb" -version = "4.8.2" -description = "TinyDB is a tiny, document oriented database optimized for your happiness :)" -optional = false -python-versions = "<4.0,>=3.8" -files = [ - {file = "tinydb-4.8.2-py3-none-any.whl", hash = "sha256:f97030ee5cbc91eeadd1d7af07ab0e48ceb04aa63d4a983adbaca4cba16e86c3"}, - {file = "tinydb-4.8.2.tar.gz", hash = "sha256:f7dfc39b8d7fda7a1ca62a8dbb449ffd340a117c1206b68c50b1a481fb95181d"}, -] - [[package]] name = "tomli" version = "2.2.1" @@ -1966,13 +1902,13 @@ files = [ [[package]] name = "trame" -version = "3.7.6" +version = "3.8.0" description = "Trame, a framework to build applications in plain Python" optional = false python-versions = ">=3.9" files = [ - {file = "trame-3.7.6-py3-none-any.whl", hash = "sha256:17d765630404ee7e25667aa0fcf48495df040338d4daebffa9bae9adf2412491"}, - {file = "trame-3.7.6.tar.gz", hash = "sha256:683dbc88a843570ded3ae60ee610053c730c78f90899c9c0dab5fe54ad1f530b"}, + {file = "trame-3.8.0-py3-none-any.whl", hash = "sha256:e4c9e648938ec0759f6893ba7afd095afaf0c88b4b8202157717691e135e924f"}, + {file = "trame-3.8.0.tar.gz", hash = "sha256:d084942828ac7930e05dbb765468cffe4ef8bd5170dbd48333a930140b540ccd"}, ] [package.dependencies] @@ -2049,26 +1985,6 @@ trame-client = ">=3.4,<4" [package.extras] dev = ["pre-commit", "pytest", "ruff"] -[[package]] -name = "tuspy" -version = "1.1.0" -description = "A Python client for the tus resumable upload protocol -> http://tus.io" -optional = false -python-versions = ">=3.5.3" -files = [ - {file = "tuspy-1.1.0-py3-none-any.whl", hash = "sha256:7fc5ac8fb25de37c96c90213f83a1ffdede7f48a471cb5a15a2f57846828a79a"}, - {file = "tuspy-1.1.0.tar.gz", hash = "sha256:156734eac5c61a046cfecd70f14119f05be92cce198eb5a1a99a664482bedb89"}, -] - -[package.dependencies] -aiohttp = ">=3.6.2" -requests = ">=2.18.4" -tinydb = ">=3.5.0" - -[package.extras] -dev = ["Sphinx (==1.7.1)", "sphinx-autobuild (==2021.3.14)", "tox (>=2.3.1)"] -test = ["aioresponses (>=0.6.2)", "coverage (>=4.2)", "parametrize (>=0.1.1)", "pytest (>=3.0.3)", "pytest-cov (>=2.3.1,<2.6)", "responses (>=0.5.1)"] - [[package]] name = "typing-extensions" version = "4.12.2" @@ -2245,4 +2161,4 @@ propcache = ">=0.2.0" [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "bb19761e97e1c45c99e257a2f3599594aebab6bc06a0ba1951a6ad1727c31d62" +content-hash = "1131a1a151f36bbe11b4fc723d87b3b6ff1d523b617c477bea8ff7b11b8c9997" diff --git a/code/episode_5/pyproject.toml b/code/episode_5/pyproject.toml index 5eacd65a..13d8b571 100755 --- a/code/episode_5/pyproject.toml +++ b/code/episode_5/pyproject.toml @@ -1,7 +1,7 @@ [tool.poetry] name = "nova-tutorial" version = "0.1.0" -description = "Template application" +description = "Nova Tutorial Project" authors = [] readme = "README.md" license = "MIT" @@ -14,10 +14,8 @@ packages = [ [tool.poetry.dependencies] python = "^3.10" +nova-trame = "*" nova-galaxy = "^0.4.0" -nova-mvvm = "0.8.0" -nova-trame = "0.14.0" - [build-system] requires = ["poetry-core"] @@ -90,4 +88,4 @@ sphinxcontrib-napoleon ="*" tomli = "*" [tool.poetry.scripts] -app = "nova_tutorial:main" +app = "nova_tutorial.app:main" diff --git a/code/episode_5/src/nova_tutorial/__init__.py b/code/episode_5/src/nova_tutorial/__init__.py index 1a91a49b..e69de29b 100755 --- a/code/episode_5/src/nova_tutorial/__init__.py +++ b/code/episode_5/src/nova_tutorial/__init__.py @@ -1,7 +0,0 @@ -import importlib.metadata - -from .main import main - -__all__ = ["main"] - -__version__ = importlib.metadata.version(__package__) diff --git a/code/episode_5/src/nova_tutorial/app/__init__.py b/code/episode_5/src/nova_tutorial/app/__init__.py new file mode 100755 index 00000000..2779e152 --- /dev/null +++ b/code/episode_5/src/nova_tutorial/app/__init__.py @@ -0,0 +1,5 @@ +from .main import main + +__all__ = [ + "main", +] diff --git a/code/episode_5/src/nova_tutorial/__main__.py b/code/episode_5/src/nova_tutorial/app/__main__.py similarity index 100% rename from code/episode_5/src/nova_tutorial/__main__.py rename to code/episode_5/src/nova_tutorial/app/__main__.py diff --git a/code/episode_5/src/nova_tutorial/app/main.py b/code/episode_5/src/nova_tutorial/app/main.py new file mode 100755 index 00000000..add49c11 --- /dev/null +++ b/code/episode_5/src/nova_tutorial/app/main.py @@ -0,0 +1,18 @@ +"""Main Application.""" + +import sys +from .models.fractal import Fractal + + +def main() -> None: + kwargs = {} + from .views.main import MainApp + + app = MainApp() + for arg in sys.argv[2:]: + try: + key, value = arg.split("=") + kwargs[key] = int(value) + except Exception: + pass + app.server.start(**kwargs) diff --git a/code/episode_5/src/nova_tutorial/app/models/__init__.py b/code/episode_5/src/nova_tutorial/app/models/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/code/episode_4/src/nova_tutorial/models/fractal.py b/code/episode_5/src/nova_tutorial/app/models/fractal.py similarity index 68% rename from code/episode_4/src/nova_tutorial/models/fractal.py rename to code/episode_5/src/nova_tutorial/app/models/fractal.py index d46e1d59..7c5a5e5c 100755 --- a/code/episode_4/src/nova_tutorial/models/fractal.py +++ b/code/episode_5/src/nova_tutorial/app/models/fractal.py @@ -1,12 +1,12 @@ import os +from pydantic import BaseModel, Field from nova.galaxy import Nova, Parameters, Tool -class Fractal: - def __init__(self): - self.fractal_type = "mandelbrot" # Default fractal type - self.galaxy_url = os.getenv("GALAXY_URL") - self.galaxy_key = os.getenv("GALAXY_API_KEY") +class Fractal(BaseModel): + fractal_type: str = Field(default="mandelbrot", description="Type of fractal to generate") + galaxy_url: str = Field(default_factory=lambda: os.getenv("GALAXY_URL"), description="NDIP Galaxy URL") + galaxy_key: str = Field(default_factory=lambda: os.getenv("GALAXY_API_KEY"), description="NDIP Galaxy API Key") def set_fractal_type(self, fractal_type: str): self.fractal_type = fractal_type @@ -21,7 +21,6 @@ class Fractal: nova = Nova(galaxy_url=self.galaxy_url, galaxy_key=self.galaxy_key) tool = Tool(id="neutrons_fractal") params = Parameters() - params.add_input(name="option", value=self.fractal_type) with nova.connect() as galaxy_connection: data_store = galaxy_connection.create_data_store(name="fractal_store") diff --git a/code/episode_5/src/nova_tutorial/app/models/main_model.py b/code/episode_5/src/nova_tutorial/app/models/main_model.py new file mode 100755 index 00000000..1aa45abc --- /dev/null +++ b/code/episode_5/src/nova_tutorial/app/models/main_model.py @@ -0,0 +1,25 @@ +"""Module for the main model.""" + +from pydantic import BaseModel, Field +from .fractal import Fractal + + +class MainModel(BaseModel): + """ + A model class. + + This class uses Pydantic (https://docs.pydantic.dev/latest/), + which allows for defining data validation rules, + titles, descriptions, and examples that can be used in GUI elements or + other interfaces for improved clarity and usability. + """ + + username: str = Field( + default="test_name", + min_length=1, + title="User Name", + description="Please provide the name of the user", + examples=["user"], + ) + password: str = Field(default="test_password", title="User Password") + fractal: Fractal = Field(default_factory=Fractal) diff --git a/code/episode_5/src/nova_tutorial/app/mvvm_factory.py b/code/episode_5/src/nova_tutorial/app/mvvm_factory.py new file mode 100755 index 00000000..3b56e2b6 --- /dev/null +++ b/code/episode_5/src/nova_tutorial/app/mvvm_factory.py @@ -0,0 +1,15 @@ +"""Module for the factory that creates viewmodels used in the application.""" + +from nova.mvvm.interface import BindingInterface + +from .models.main_model import MainModel +from .view_models.main import MainViewModel + + +def create_viewmodels(binding: BindingInterface) -> dict: + model = MainModel() + vm: dict = {} + vm["main"] = MainViewModel(model, binding) + print(vm["main"].model.fractal.galaxy_key) + + return vm diff --git a/code/episode_5/src/nova_tutorial/app/view_models/__init__.py b/code/episode_5/src/nova_tutorial/app/view_models/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/code/episode_5/src/nova_tutorial/app/view_models/main.py b/code/episode_5/src/nova_tutorial/app/view_models/main.py new file mode 100755 index 00000000..1bceca83 --- /dev/null +++ b/code/episode_5/src/nova_tutorial/app/view_models/main.py @@ -0,0 +1,33 @@ +"""Module for the main ViewModel.""" + +from typing import Any, Dict + +from nova.mvvm.interface import BindingInterface + +from ..models.main_model import MainModel + + +class MainViewModel: + """Viewmodel class, used to create data<->view binding and react on changes from GUI.""" + + def __init__(self, model: MainModel, binding: BindingInterface): + self.model = model + + # here we create a bind that connects ViewModel with View. It returns a communicator object, + # that allows to update View from ViewModel (by calling update_view). + # self.model will be updated automatically on changes of connected fields in View, + # but one also can provide a callback function if they want to react to those events + # and/or process errors. + self.config_bind = binding.new_bind(self.model, callback_after_update=self.change_callback) + + def change_callback(self, results: Dict[str, Any]) -> None: + if results["error"]: + print(f"error in fields {results['errored']}, model not changed") + else: + print(f"model fields updated: {results['updated']}") + + def update_view(self) -> None: + self.config_bind.update_in_view(self.model) + + def run_fractal(self) -> None: + self.model.fractal.run_fractal_tool() diff --git a/code/episode_5/src/nova_tutorial/app/views/__init__.py b/code/episode_5/src/nova_tutorial/app/views/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/code/episode_5/src/nova_tutorial/app/views/fractal_tab.py b/code/episode_5/src/nova_tutorial/app/views/fractal_tab.py new file mode 100755 index 00000000..465deb9b --- /dev/null +++ b/code/episode_5/src/nova_tutorial/app/views/fractal_tab.py @@ -0,0 +1,25 @@ +from trame.widgets import vuetify3 as vuetify + +from nova.trame.view.components import InputField +from nova_tutorial.app.view_models.main import MainViewModel +from nova.trame.view import layouts + +class FractalTab: + + def __init__(self, view_model: MainViewModel) -> None: + self.view_model = view_model + self.create_ui() + + def create_ui(self) -> None: + with layouts.VBoxLayout(classes="ma-4"): + with vuetify.VCard(classes="pa-4"): + InputField( + v_model=("config.fractal.fractal_type", "mandelbrot"), + label="Fractal Type", + ) + vuetify.VBtn( + "Run Fractal", + click=self.view_model.run_fractal, + classes="mt-2", + ) + vuetify.VCardText(v_text="config.status_message", classes="mt-2") \ No newline at end of file diff --git a/code/episode_5/src/nova_tutorial/app/views/main.py b/code/episode_5/src/nova_tutorial/app/views/main.py new file mode 100755 index 00000000..2000c009 --- /dev/null +++ b/code/episode_5/src/nova_tutorial/app/views/main.py @@ -0,0 +1,45 @@ +"""Main file.""" + +import logging + +from nova.mvvm.trame_binding import TrameBinding +from nova.trame import ThemedApp +from trame.app import get_server + +from ..mvvm_factory import create_viewmodels +from ..view_models.main import MainViewModel +from .tab_content_panel import TabContentPanel +from .tabs_panel import TabsPanel + + +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) + + +class MainApp(ThemedApp): + """Main application view class. Calls rendering of nested UI elements.""" + + def __init__(self) -> None: + super().__init__() + self.server = get_server(None, client_type="vue3") + binding = TrameBinding(self.server.state) + self.server.state.trame__title = "Nova Tutorial" + self.view_models = create_viewmodels(binding) + self.view_model: MainViewModel = self.view_models["main"] + self.create_ui() + + def create_ui(self) -> None: + self.state.trame__title = "Nova Tutorial" + + with super().create_ui() as layout: + layout.toolbar_title.set_text("Nova Tutorial") + with layout.pre_content: + TabsPanel(self.view_models["main"]) + with layout.content: + TabContentPanel( + self.server, + self.view_models["main"], + ) + with layout.post_content: + pass + return layout diff --git a/code/episode_5/src/nova_tutorial/app/views/sample_tab_1.py b/code/episode_5/src/nova_tutorial/app/views/sample_tab_1.py new file mode 100755 index 00000000..517ee236 --- /dev/null +++ b/code/episode_5/src/nova_tutorial/app/views/sample_tab_1.py @@ -0,0 +1,20 @@ +"""Module for the Sample Tab 1.""" + +from nova.trame.view.components import InputField +from nova.trame.view import layouts +from trame.widgets import vuetify3 as vuetify + +class SampleTab1: + """Sample tab 1 view class. Renders text input for username.""" + + def __init__(self) -> None: + self.create_ui() + + def create_ui(self) -> None: + with layouts.VBoxLayout(classes="ma-2"): # Overall vertical layout + InputField(v_model="config.username", label="Username") + with layouts.HBoxLayout(): # Horizontal layout for first and last name + InputField(v_model="config.firstName", label="First Name") + InputField(v_model="config.lastName", label="Last Name") + vuetify.VCheckbox(label="Remember me") + vuetify.VSwitch(label="Enable Notifications") \ No newline at end of file diff --git a/code/episode_5/src/nova_tutorial/app/views/sample_tab_2.py b/code/episode_5/src/nova_tutorial/app/views/sample_tab_2.py new file mode 100755 index 00000000..da4746cf --- /dev/null +++ b/code/episode_5/src/nova_tutorial/app/views/sample_tab_2.py @@ -0,0 +1,25 @@ +"""Module for the Sample Tab 2.""" + +from nova.trame.view.components import InputField +from nova.trame.view import layouts +from trame.widgets import vuetify3 as vuetify + + +class SampleTab2: + """Sample tab 2 view class. Renders text input for user password.""" + + def __init__(self) -> None: + self.create_ui() + + def create_ui(self) -> None: + with layouts.VBoxLayout(classes="ma-2"): # Parent vertical layout + with layouts.HBoxLayout(): # Horizontal layout for email and phone + InputField(v_model="config.email", label="Email", type="email") + InputField(v_model="config.phoneNumber", label="Phone Number", type="tel") + with layouts.GridLayout(columns=2): # Two column grid layout for remaining fields + vuetify.VSlider(label="Volume") + with layouts.VBoxLayout(classes="ma-2"): # Overall vertical layout + vuetify.VLabel("Item 1", classes="bg-primary h-100 w-100 justify-center") + vuetify.VLabel("Item 2", classes="bg-secondary h-100 w-100 justify-center") + InputField(v_model="config.address", label="Address") + InputField(v_model="config.comments", label="Comments") diff --git a/code/episode_5/src/nova_tutorial/app/views/tab_content_panel.py b/code/episode_5/src/nova_tutorial/app/views/tab_content_panel.py new file mode 100755 index 00000000..ab67bd63 --- /dev/null +++ b/code/episode_5/src/nova_tutorial/app/views/tab_content_panel.py @@ -0,0 +1,31 @@ +"""Module for the Tab Content panel.""" + +from trame.widgets import vuetify3 as vuetify +from trame_server import Server + +from ..view_models.main import MainViewModel +from .sample_tab_1 import SampleTab1 +from .sample_tab_2 import SampleTab2 +from .fractal_tab import FractalTab # Import the FractalTab + +class TabContentPanel: + """View class to render content for a selected tab.""" + + def __init__(self, server: Server, view_model: MainViewModel) -> None: + self.view_model = view_model + self.server = server + self.ctrl = server.controller + self.create_ui() + + def create_ui(self) -> None: + with vuetify.VForm(ref="form") as self.f: + with vuetify.VContainer(classes="pa-0", fluid=True): + with vuetify.VCard(): + with vuetify.VWindow(v_model="active_tab"): + with vuetify.VWindowItem(value=1): + FractalTab(self.view_model) # Add FractalTab + with vuetify.VWindowItem(value=2): + SampleTab1() + with vuetify.VWindowItem(value=3): + SampleTab2() + diff --git a/code/episode_5/src/nova_tutorial/app/views/tabs_panel.py b/code/episode_5/src/nova_tutorial/app/views/tabs_panel.py new file mode 100755 index 00000000..ac1f6ab3 --- /dev/null +++ b/code/episode_5/src/nova_tutorial/app/views/tabs_panel.py @@ -0,0 +1,21 @@ +"""Module for the Tab panel.""" + +from trame.widgets import vuetify3 as vuetify + +from ..view_models.main import MainViewModel + + +class TabsPanel: + """View class to render tabs.""" + + def __init__(self, view_model: MainViewModel): + self.view_model = view_model + self.view_model.config_bind.connect("config") + #self.view_model.fractal_bind.connect("fractal") + self.create_ui() + + def create_ui(self) -> None: + with vuetify.VTabs(v_model=("active_tab", 0), classes="pl-5"): + vuetify.VTab("Fractal", value=1) # Add Fractal Tab + vuetify.VTab("Sample Tab 1", value=2) + vuetify.VTab("Sample Tab 2", value=3) diff --git a/code/episode_5/src/nova_tutorial/main.py b/code/episode_5/src/nova_tutorial/main.py deleted file mode 100755 index 0567ffc8..00000000 --- a/code/episode_5/src/nova_tutorial/main.py +++ /dev/null @@ -1,8 +0,0 @@ -from nova_tutorial.views.fractal_view import FractalApp - -def main(): - app = FractalApp() - app.server.start() - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/code/episode_5/src/nova_tutorial/view_models/fractal_view_model.py b/code/episode_5/src/nova_tutorial/view_models/fractal_view_model.py deleted file mode 100755 index 850d4f9f..00000000 --- a/code/episode_5/src/nova_tutorial/view_models/fractal_view_model.py +++ /dev/null @@ -1,60 +0,0 @@ -import os -from nova.mvvm.interface import BindingInterface -from pydantic import BaseModel, Field,ValidationError -from typing import Literal - -from ..models.fractal import Fractal - - -class FractalToolInput(BaseModel): - fractal_type: Literal["mandelbrot", "julia", "random", "markus"] = Field(default="mandelbrot") - - -class FractalViewModel(): - def __init__(self, binding: BindingInterface): - super().__init__() - self.fractal = Fractal() - - self._fractal_type = FractalToolInput() - self._job_status:dict[str, Any] = {} - self._message: str = "" - - self.job_status_bind = binding.new_bind( - linked_object=self._job_status - ) - self.message_bind = binding.new_bind( - linked_object=self._message, - ) - self.fractal_type_bind = binding.new_bind( - linked_object=self._fractal_type, - ) - - - def init_view(self): - self._job_status["fractal"] = "Starting" - self.job_status_bind.update_in_view(self._job_status) - - def set_fractal_type(self, fractal_type: str): - try: - FractalToolInput(fractal_type=fractal_type) - except ValidationError as e: - self._message = f"Validation Error: {e}" - self.message_bind.update_in_view(self) - return - self._fractal_type = fractal_type - print(f"Set new fractal type to: {self._fractal_type}") - - def run_fractal_tool(self): - self._job_status["fractal"] = "Starting" - self.fractal_type_bind.update_in_view(self._fractal_type) - self.job_status_bind.update_in_view(self._job_status) - try: - self.fractal.set_fractal_type(self._fractal_type.fractal_type) - self.fractal.run_fractal_tool() - self._message = "Fractal tool finished successfully." - except Exception as e: - self._message = f"Error running fractal tool: {e}" - raise e - finally: - self._job_status["fractal"] = "" - self.job_status_bind.update_in_view(self._job_status) \ No newline at end of file diff --git a/code/episode_5/src/nova_tutorial/views/fractal_view.py b/code/episode_5/src/nova_tutorial/views/fractal_view.py deleted file mode 100755 index 819d5bdb..00000000 --- a/code/episode_5/src/nova_tutorial/views/fractal_view.py +++ /dev/null @@ -1,42 +0,0 @@ -from nova.mvvm.trame_binding import TrameBinding -from nova.trame import ThemedApp -from nova.trame.view import layouts -from trame.app import get_server -from trame.widgets import vuetify3 as vuetify -from nova_tutorial.view_models.fractal_view_model import FractalViewModel - -class FractalApp(ThemedApp): # Inherits from nova.trame.ThemedApp for consistent styling - def __init__(self) -> None: - super().__init__() - self.server = get_server(None, client_type="vue3") - self.fractal_vm = FractalViewModel(TrameBinding(self.server.state)) - self.fractal_vm.fractal_type_bind.connect("fractal_type") - self.fractal_vm.message_bind.connect("fractal_message") - self.fractal_vm.job_status_bind.connect("job_status") - #self.fractal_vm.init_view() - self.create_ui() - - def create_ui(self) -> None: - self.state.trame__title = "NOVA Tutorial" - with super().create_ui() as layout: - with layout.content: - with layouts.VBoxLayout(classes="ma-2"): - with vuetify.VCard(classes="pa-2"): - with vuetify.VRadioGroup( - v_model=("fractal_type"), - classes="mb-2", - #update_modelValue=self.fractal_vm.set_fractal_type(model_value) - ): - vuetify.VRadio(label="Mandelbrot", value="mandelbrot") - vuetify.VRadio(label="Julia", value="julia") - vuetify.VRadio(label="Random", value="random") - vuetify.VRadio(label="Markus", value="markus") - vuetify.VBtn( - "Run Fractal Tool", - v_model="job_status", - click=self.fractal_vm.run_fractal_tool, - #disabled=("job_status['fractal'] == 'Starting'"), - classes="mb-2" - ) - vuetify.VCardText(v_model=("fractal_message")) - return layout \ No newline at end of file diff --git a/code/episode_6/README.md b/code/episode_6/README.md new file mode 100755 index 00000000..e69de29b diff --git a/code/episode_6/poetry.lock b/code/episode_6/poetry.lock new file mode 100755 index 00000000..a938063c --- /dev/null +++ b/code/episode_6/poetry.lock @@ -0,0 +1,2242 @@ +# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. + +[[package]] +name = "aiohappyeyeballs" +version = "2.4.4" +description = "Happy Eyeballs for asyncio" +optional = false +python-versions = ">=3.8" +files = [ + {file = "aiohappyeyeballs-2.4.4-py3-none-any.whl", hash = "sha256:a980909d50efcd44795c4afeca523296716d50cd756ddca6af8c65b996e27de8"}, + {file = "aiohappyeyeballs-2.4.4.tar.gz", hash = "sha256:5fdd7d87889c63183afc18ce9271f9b0a7d32c2303e394468dd45d514a757745"}, +] + +[[package]] +name = "aiohttp" +version = "3.11.11" +description = "Async http client/server framework (asyncio)" +optional = false +python-versions = ">=3.9" +files = [ + {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a60804bff28662cbcf340a4d61598891f12eea3a66af48ecfdc975ceec21e3c8"}, + {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4b4fa1cb5f270fb3eab079536b764ad740bb749ce69a94d4ec30ceee1b5940d5"}, + {file = "aiohttp-3.11.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:731468f555656767cda219ab42e033355fe48c85fbe3ba83a349631541715ba2"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb23d8bb86282b342481cad4370ea0853a39e4a32a0042bb52ca6bdde132df43"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f047569d655f81cb70ea5be942ee5d4421b6219c3f05d131f64088c73bb0917f"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd7659baae9ccf94ae5fe8bfaa2c7bc2e94d24611528395ce88d009107e00c6d"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af01e42ad87ae24932138f154105e88da13ce7d202a6de93fafdafb2883a00ef"}, + {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5854be2f3e5a729800bac57a8d76af464e160f19676ab6aea74bde18ad19d438"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6526e5fb4e14f4bbf30411216780c9967c20c5a55f2f51d3abd6de68320cc2f3"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:85992ee30a31835fc482468637b3e5bd085fa8fe9392ba0bdcbdc1ef5e9e3c55"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:88a12ad8ccf325a8a5ed80e6d7c3bdc247d66175afedbe104ee2aaca72960d8e"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0a6d3fbf2232e3a08c41eca81ae4f1dff3d8f1a30bae415ebe0af2d2458b8a33"}, + {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84a585799c58b795573c7fa9b84c455adf3e1d72f19a2bf498b54a95ae0d194c"}, + {file = "aiohttp-3.11.11-cp310-cp310-win32.whl", hash = "sha256:bfde76a8f430cf5c5584553adf9926534352251d379dcb266ad2b93c54a29745"}, + {file = "aiohttp-3.11.11-cp310-cp310-win_amd64.whl", hash = "sha256:0fd82b8e9c383af11d2b26f27a478640b6b83d669440c0a71481f7c865a51da9"}, + {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ba74ec819177af1ef7f59063c6d35a214a8fde6f987f7661f4f0eecc468a8f76"}, + {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4af57160800b7a815f3fe0eba9b46bf28aafc195555f1824555fa2cfab6c1538"}, + {file = "aiohttp-3.11.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffa336210cf9cd8ed117011085817d00abe4c08f99968deef0013ea283547204"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81b8fe282183e4a3c7a1b72f5ade1094ed1c6345a8f153506d114af5bf8accd9"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af41686ccec6a0f2bdc66686dc0f403c41ac2089f80e2214a0f82d001052c03"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70d1f9dde0e5dd9e292a6d4d00058737052b01f3532f69c0c65818dac26dc287"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:249cc6912405917344192b9f9ea5cd5b139d49e0d2f5c7f70bdfaf6b4dbf3a2e"}, + {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0eb98d90b6690827dcc84c246811feeb4e1eea683c0eac6caed7549be9c84665"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec82bf1fda6cecce7f7b915f9196601a1bd1a3079796b76d16ae4cce6d0ef89b"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9fd46ce0845cfe28f108888b3ab17abff84ff695e01e73657eec3f96d72eef34"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bd176afcf8f5d2aed50c3647d4925d0db0579d96f75a31e77cbaf67d8a87742d"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ec2aa89305006fba9ffb98970db6c8221541be7bee4c1d027421d6f6df7d1ce2"}, + {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:92cde43018a2e17d48bb09c79e4d4cb0e236de5063ce897a5e40ac7cb4878773"}, + {file = "aiohttp-3.11.11-cp311-cp311-win32.whl", hash = "sha256:aba807f9569455cba566882c8938f1a549f205ee43c27b126e5450dc9f83cc62"}, + {file = "aiohttp-3.11.11-cp311-cp311-win_amd64.whl", hash = "sha256:ae545f31489548c87b0cced5755cfe5a5308d00407000e72c4fa30b19c3220ac"}, + {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e595c591a48bbc295ebf47cb91aebf9bd32f3ff76749ecf282ea7f9f6bb73886"}, + {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3ea1b59dc06396b0b424740a10a0a63974c725b1c64736ff788a3689d36c02d2"}, + {file = "aiohttp-3.11.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8811f3f098a78ffa16e0ea36dffd577eb031aea797cbdba81be039a4169e242c"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7227b87a355ce1f4bf83bfae4399b1f5bb42e0259cb9405824bd03d2f4336a"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d40f9da8cabbf295d3a9dae1295c69975b86d941bc20f0a087f0477fa0a66231"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffb3dc385f6bb1568aa974fe65da84723210e5d9707e360e9ecb51f59406cd2e"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8f5f7515f3552d899c61202d99dcb17d6e3b0de777900405611cd747cecd1b8"}, + {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3499c7ffbfd9c6a3d8d6a2b01c26639da7e43d47c7b4f788016226b1e711caa8"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8e2bf8029dbf0810c7bfbc3e594b51c4cc9101fbffb583a3923aea184724203c"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b6212a60e5c482ef90f2d788835387070a88d52cf6241d3916733c9176d39eab"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d119fafe7b634dbfa25a8c597718e69a930e4847f0b88e172744be24515140da"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:6fba278063559acc730abf49845d0e9a9e1ba74f85f0ee6efd5803f08b285853"}, + {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:92fc484e34b733704ad77210c7957679c5c3877bd1e6b6d74b185e9320cc716e"}, + {file = "aiohttp-3.11.11-cp312-cp312-win32.whl", hash = "sha256:9f5b3c1ed63c8fa937a920b6c1bec78b74ee09593b3f5b979ab2ae5ef60d7600"}, + {file = "aiohttp-3.11.11-cp312-cp312-win_amd64.whl", hash = "sha256:1e69966ea6ef0c14ee53ef7a3d68b564cc408121ea56c0caa2dc918c1b2f553d"}, + {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:541d823548ab69d13d23730a06f97460f4238ad2e5ed966aaf850d7c369782d9"}, + {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:929f3ed33743a49ab127c58c3e0a827de0664bfcda566108989a14068f820194"}, + {file = "aiohttp-3.11.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0882c2820fd0132240edbb4a51eb8ceb6eef8181db9ad5291ab3332e0d71df5f"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b63de12e44935d5aca7ed7ed98a255a11e5cb47f83a9fded7a5e41c40277d104"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa54f8ef31d23c506910c21163f22b124facb573bff73930735cf9fe38bf7dff"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a344d5dc18074e3872777b62f5f7d584ae4344cd6006c17ba12103759d407af3"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7fb429ab1aafa1f48578eb315ca45bd46e9c37de11fe45c7f5f4138091e2f1"}, + {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c341c7d868750e31961d6d8e60ff040fb9d3d3a46d77fd85e1ab8e76c3e9a5c4"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed9ee95614a71e87f1a70bc81603f6c6760128b140bc4030abe6abaa988f1c3d"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:de8d38f1c2810fa2a4f1d995a2e9c70bb8737b18da04ac2afbf3971f65781d87"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a9b7371665d4f00deb8f32208c7c5e652059b0fda41cf6dbcac6114a041f1cc2"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:620598717fce1b3bd14dd09947ea53e1ad510317c85dda2c9c65b622edc96b12"}, + {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf8d9bfee991d8acc72d060d53860f356e07a50f0e0d09a8dfedea1c554dd0d5"}, + {file = "aiohttp-3.11.11-cp313-cp313-win32.whl", hash = "sha256:9d73ee3725b7a737ad86c2eac5c57a4a97793d9f442599bea5ec67ac9f4bdc3d"}, + {file = "aiohttp-3.11.11-cp313-cp313-win_amd64.whl", hash = "sha256:c7a06301c2fb096bdb0bd25fe2011531c1453b9f2c163c8031600ec73af1cc99"}, + {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3e23419d832d969f659c208557de4a123e30a10d26e1e14b73431d3c13444c2e"}, + {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21fef42317cf02e05d3b09c028712e1d73a9606f02467fd803f7c1f39cc59add"}, + {file = "aiohttp-3.11.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1f21bb8d0235fc10c09ce1d11ffbd40fc50d3f08a89e4cf3a0c503dc2562247a"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1642eceeaa5ab6c9b6dfeaaa626ae314d808188ab23ae196a34c9d97efb68350"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2170816e34e10f2fd120f603e951630f8a112e1be3b60963a1f159f5699059a6"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8be8508d110d93061197fd2d6a74f7401f73b6d12f8822bbcd6d74f2b55d71b1"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4eed954b161e6b9b65f6be446ed448ed3921763cc432053ceb606f89d793927e"}, + {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6c9af134da4bc9b3bd3e6a70072509f295d10ee60c697826225b60b9959acdd"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:44167fc6a763d534a6908bdb2592269b4bf30a03239bcb1654781adf5e49caf1"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:479b8c6ebd12aedfe64563b85920525d05d394b85f166b7873c8bde6da612f9c"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:10b4ff0ad793d98605958089fabfa350e8e62bd5d40aa65cdc69d6785859f94e"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:b540bd67cfb54e6f0865ceccd9979687210d7ed1a1cc8c01f8e67e2f1e883d28"}, + {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1dac54e8ce2ed83b1f6b1a54005c87dfed139cf3f777fdc8afc76e7841101226"}, + {file = "aiohttp-3.11.11-cp39-cp39-win32.whl", hash = "sha256:568c1236b2fde93b7720f95a890741854c1200fba4a3471ff48b2934d2d93fd3"}, + {file = "aiohttp-3.11.11-cp39-cp39-win_amd64.whl", hash = "sha256:943a8b052e54dfd6439fd7989f67fc6a7f2138d0a2cf0a7de5f18aa4fe7eb3b1"}, + {file = "aiohttp-3.11.11.tar.gz", hash = "sha256:bb49c7f1e6ebf3821a42d81d494f538107610c3a705987f53068546b0e90303e"}, +] + +[package.dependencies] +aiohappyeyeballs = ">=2.3.0" +aiosignal = ">=1.1.2" +async-timeout = {version = ">=4.0,<6.0", markers = "python_version < \"3.11\""} +attrs = ">=17.3.0" +frozenlist = ">=1.1.1" +multidict = ">=4.5,<7.0" +propcache = ">=0.2.0" +yarl = ">=1.17.0,<2.0" + +[package.extras] +speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] + +[[package]] +name = "aiosignal" +version = "1.3.2" +description = "aiosignal: a list of registered asynchronous callbacks" +optional = false +python-versions = ">=3.9" +files = [ + {file = "aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5"}, + {file = "aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54"}, +] + +[package.dependencies] +frozenlist = ">=1.1.0" + +[[package]] +name = "alabaster" +version = "1.0.0" +description = "A light, configurable Sphinx theme" +optional = false +python-versions = ">=3.10" +files = [ + {file = "alabaster-1.0.0-py3-none-any.whl", hash = "sha256:fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b"}, + {file = "alabaster-1.0.0.tar.gz", hash = "sha256:c00dca57bca26fa62a6d7d0a9fcce65f3e026e9bfe33e9c538fd3fbb2144fd9e"}, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +files = [ + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, +] + +[[package]] +name = "async-timeout" +version = "5.0.1" +description = "Timeout context manager for asyncio programs" +optional = false +python-versions = ">=3.8" +files = [ + {file = "async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c"}, + {file = "async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3"}, +] + +[[package]] +name = "attrs" +version = "25.1.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.8" +files = [ + {file = "attrs-25.1.0-py3-none-any.whl", hash = "sha256:c75a69e28a550a7e93789579c22aa26b0f5b83b75dc4e08fe092980051e1090a"}, + {file = "attrs-25.1.0.tar.gz", hash = "sha256:1c97078a80c814273a76b2a298a932eb681c87415c11dee0a6921de7f1b02c3e"}, +] + +[package.extras] +benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"] +tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] + +[[package]] +name = "babel" +version = "2.17.0" +description = "Internationalization utilities" +optional = false +python-versions = ">=3.8" +files = [ + {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, + {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, +] + +[package.extras] +dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata"] + +[[package]] +name = "bioblend" +version = "1.4.0" +description = "Library for interacting with the Galaxy API" +optional = false +python-versions = ">=3.8" +files = [ + {file = "bioblend-1.4.0-py3-none-any.whl", hash = "sha256:20886e5f7658e1dc3e025cedb4be88538342374afba583ce4e2acb5c14a25c63"}, + {file = "bioblend-1.4.0.tar.gz", hash = "sha256:175d49d288e27d132ff59c870551c87cd95d7747be55ab94807c563291a3fa1d"}, +] + +[package.dependencies] +requests = ">=2.20.0" +requests-toolbelt = ">=0.5.1,<0.9.0 || >0.9.0" +tuspy = "*" + +[package.extras] +testing = ["pytest"] + +[[package]] +name = "certifi" +version = "2025.1.31" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, + {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, +] + +[[package]] +name = "cfgv" +version = "3.4.0" +description = "Validate configuration and produce human readable error messages." +optional = false +python-versions = ">=3.8" +files = [ + {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, + {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.1" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7" +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"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"}, + {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"}, + {file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"}, +] + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "copier" +version = "9.4.1" +description = "A library for rendering project templates." +optional = false +python-versions = ">=3.9" +files = [ + {file = "copier-9.4.1-py3-none-any.whl", hash = "sha256:863385b7ba8a9090c832cd12ca072dba9153397dbe7c5f337bf8c3d8859efa32"}, + {file = "copier-9.4.1.tar.gz", hash = "sha256:cc81d8204cb17fbc8c4a14996a8ce764166c34c77236de38cfbeb960c887b68f"}, +] + +[package.dependencies] +colorama = ">=0.4.6" +dunamai = ">=1.7.0" +funcy = ">=1.17" +jinja2 = ">=3.1.4" +jinja2-ansible-filters = ">=1.3.1" +packaging = ">=23.0" +pathspec = ">=0.9.0" +plumbum = ">=1.6.9" +pydantic = ">=2.4.2" +pygments = ">=2.7.1" +pyyaml = ">=5.3.1" +questionary = ">=1.8.1" + +[[package]] +name = "coverage" +version = "7.6.10" +description = "Code coverage measurement for Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "coverage-7.6.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5c912978f7fbf47ef99cec50c4401340436d200d41d714c7a4766f377c5b7b78"}, + {file = "coverage-7.6.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a01ec4af7dfeb96ff0078ad9a48810bb0cc8abcb0115180c6013a6b26237626c"}, + {file = "coverage-7.6.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3b204c11e2b2d883946fe1d97f89403aa1811df28ce0447439178cc7463448a"}, + {file = "coverage-7.6.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32ee6d8491fcfc82652a37109f69dee9a830e9379166cb73c16d8dc5c2915165"}, + {file = "coverage-7.6.10-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675cefc4c06e3b4c876b85bfb7c59c5e2218167bbd4da5075cbe3b5790a28988"}, + {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f4f620668dbc6f5e909a0946a877310fb3d57aea8198bde792aae369ee1c23b5"}, + {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:4eea95ef275de7abaef630c9b2c002ffbc01918b726a39f5a4353916ec72d2f3"}, + {file = "coverage-7.6.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e2f0280519e42b0a17550072861e0bc8a80a0870de260f9796157d3fca2733c5"}, + {file = "coverage-7.6.10-cp310-cp310-win32.whl", hash = "sha256:bc67deb76bc3717f22e765ab3e07ee9c7a5e26b9019ca19a3b063d9f4b874244"}, + {file = "coverage-7.6.10-cp310-cp310-win_amd64.whl", hash = "sha256:0f460286cb94036455e703c66988851d970fdfd8acc2a1122ab7f4f904e4029e"}, + {file = "coverage-7.6.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ea3c8f04b3e4af80e17bab607c386a830ffc2fb88a5484e1df756478cf70d1d3"}, + {file = "coverage-7.6.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:507a20fc863cae1d5720797761b42d2d87a04b3e5aeb682ef3b7332e90598f43"}, + {file = "coverage-7.6.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d37a84878285b903c0fe21ac8794c6dab58150e9359f1aaebbeddd6412d53132"}, + {file = "coverage-7.6.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a534738b47b0de1995f85f582d983d94031dffb48ab86c95bdf88dc62212142f"}, + {file = "coverage-7.6.10-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d7a2bf79378d8fb8afaa994f91bfd8215134f8631d27eba3e0e2c13546ce994"}, + {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6713ba4b4ebc330f3def51df1d5d38fad60b66720948112f114968feb52d3f99"}, + {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab32947f481f7e8c763fa2c92fd9f44eeb143e7610c4ca9ecd6a36adab4081bd"}, + {file = "coverage-7.6.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7bbd8c8f1b115b892e34ba66a097b915d3871db7ce0e6b9901f462ff3a975377"}, + {file = "coverage-7.6.10-cp311-cp311-win32.whl", hash = "sha256:299e91b274c5c9cdb64cbdf1b3e4a8fe538a7a86acdd08fae52301b28ba297f8"}, + {file = "coverage-7.6.10-cp311-cp311-win_amd64.whl", hash = "sha256:489a01f94aa581dbd961f306e37d75d4ba16104bbfa2b0edb21d29b73be83609"}, + {file = "coverage-7.6.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:27c6e64726b307782fa5cbe531e7647aee385a29b2107cd87ba7c0105a5d3853"}, + {file = "coverage-7.6.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c56e097019e72c373bae32d946ecf9858fda841e48d82df7e81c63ac25554078"}, + {file = "coverage-7.6.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7827a5bc7bdb197b9e066cdf650b2887597ad124dd99777332776f7b7c7d0d0"}, + {file = "coverage-7.6.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:204a8238afe787323a8b47d8be4df89772d5c1e4651b9ffa808552bdf20e1d50"}, + {file = "coverage-7.6.10-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67926f51821b8e9deb6426ff3164870976fe414d033ad90ea75e7ed0c2e5022"}, + {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e78b270eadb5702938c3dbe9367f878249b5ef9a2fcc5360ac7bff694310d17b"}, + {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:714f942b9c15c3a7a5fe6876ce30af831c2ad4ce902410b7466b662358c852c0"}, + {file = "coverage-7.6.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:abb02e2f5a3187b2ac4cd46b8ced85a0858230b577ccb2c62c81482ca7d18852"}, + {file = "coverage-7.6.10-cp312-cp312-win32.whl", hash = "sha256:55b201b97286cf61f5e76063f9e2a1d8d2972fc2fcfd2c1272530172fd28c359"}, + {file = "coverage-7.6.10-cp312-cp312-win_amd64.whl", hash = "sha256:e4ae5ac5e0d1e4edfc9b4b57b4cbecd5bc266a6915c500f358817a8496739247"}, + {file = "coverage-7.6.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:05fca8ba6a87aabdd2d30d0b6c838b50510b56cdcfc604d40760dae7153b73d9"}, + {file = "coverage-7.6.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9e80eba8801c386f72e0712a0453431259c45c3249f0009aff537a517b52942b"}, + {file = "coverage-7.6.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a372c89c939d57abe09e08c0578c1d212e7a678135d53aa16eec4430adc5e690"}, + {file = "coverage-7.6.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ec22b5e7fe7a0fa8509181c4aac1db48f3dd4d3a566131b313d1efc102892c18"}, + {file = "coverage-7.6.10-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26bcf5c4df41cad1b19c84af71c22cbc9ea9a547fc973f1f2cc9a290002c8b3c"}, + {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4e4630c26b6084c9b3cb53b15bd488f30ceb50b73c35c5ad7871b869cb7365fd"}, + {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2396e8116db77789f819d2bc8a7e200232b7a282c66e0ae2d2cd84581a89757e"}, + {file = "coverage-7.6.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79109c70cc0882e4d2d002fe69a24aa504dec0cc17169b3c7f41a1d341a73694"}, + {file = "coverage-7.6.10-cp313-cp313-win32.whl", hash = "sha256:9e1747bab246d6ff2c4f28b4d186b205adced9f7bd9dc362051cc37c4a0c7bd6"}, + {file = "coverage-7.6.10-cp313-cp313-win_amd64.whl", hash = "sha256:254f1a3b1eef5f7ed23ef265eaa89c65c8c5b6b257327c149db1ca9d4a35f25e"}, + {file = "coverage-7.6.10-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2ccf240eb719789cedbb9fd1338055de2761088202a9a0b73032857e53f612fe"}, + {file = "coverage-7.6.10-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0c807ca74d5a5e64427c8805de15b9ca140bba13572d6d74e262f46f50b13273"}, + {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2bcfa46d7709b5a7ffe089075799b902020b62e7ee56ebaed2f4bdac04c508d8"}, + {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e0de1e902669dccbf80b0415fb6b43d27edca2fbd48c74da378923b05316098"}, + {file = "coverage-7.6.10-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7b444c42bbc533aaae6b5a2166fd1a797cdb5eb58ee51a92bee1eb94a1e1cb"}, + {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b330368cb99ef72fcd2dc3ed260adf67b31499584dc8a20225e85bfe6f6cfed0"}, + {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9a7cfb50515f87f7ed30bc882f68812fd98bc2852957df69f3003d22a2aa0abf"}, + {file = "coverage-7.6.10-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6f93531882a5f68c28090f901b1d135de61b56331bba82028489bc51bdd818d2"}, + {file = "coverage-7.6.10-cp313-cp313t-win32.whl", hash = "sha256:89d76815a26197c858f53c7f6a656686ec392b25991f9e409bcef020cd532312"}, + {file = "coverage-7.6.10-cp313-cp313t-win_amd64.whl", hash = "sha256:54a5f0f43950a36312155dae55c505a76cd7f2b12d26abeebbe7a0b36dbc868d"}, + {file = "coverage-7.6.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:656c82b8a0ead8bba147de9a89bda95064874c91a3ed43a00e687f23cc19d53a"}, + {file = "coverage-7.6.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ccc2b70a7ed475c68ceb548bf69cec1e27305c1c2606a5eb7c3afff56a1b3b27"}, + {file = "coverage-7.6.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5e37dc41d57ceba70956fa2fc5b63c26dba863c946ace9705f8eca99daecdc4"}, + {file = "coverage-7.6.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0aa9692b4fdd83a4647eeb7db46410ea1322b5ed94cd1715ef09d1d5922ba87f"}, + {file = "coverage-7.6.10-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa744da1820678b475e4ba3dfd994c321c5b13381d1041fe9c608620e6676e25"}, + {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c0b1818063dc9e9d838c09e3a473c1422f517889436dd980f5d721899e66f315"}, + {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:59af35558ba08b758aec4d56182b222976330ef8d2feacbb93964f576a7e7a90"}, + {file = "coverage-7.6.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7ed2f37cfce1ce101e6dffdfd1c99e729dd2ffc291d02d3e2d0af8b53d13840d"}, + {file = "coverage-7.6.10-cp39-cp39-win32.whl", hash = "sha256:4bcc276261505d82f0ad426870c3b12cb177752834a633e737ec5ee79bbdff18"}, + {file = "coverage-7.6.10-cp39-cp39-win_amd64.whl", hash = "sha256:457574f4599d2b00f7f637a0700a6422243b3565509457b2dbd3f50703e11f59"}, + {file = "coverage-7.6.10-pp39.pp310-none-any.whl", hash = "sha256:fd34e7b3405f0cc7ab03d54a334c17a9e802897580d964bd8c2001f4b9fd488f"}, + {file = "coverage-7.6.10.tar.gz", hash = "sha256:7fb105327c8f8f0682e29843e2ff96af9dcbe5bab8eeb4b398c6a33a16d80a23"}, +] + +[package.extras] +toml = ["tomli"] + +[[package]] +name = "deepdiff" +version = "8.2.0" +description = "Deep Difference and Search of any Python object/data. Recreate objects by adding adding deltas to each other." +optional = false +python-versions = ">=3.8" +files = [ + {file = "deepdiff-8.2.0-py3-none-any.whl", hash = "sha256:5091f2cdfd372b1b9f6bfd8065ba323ae31118dc4e42594371b38c8bea3fd0a4"}, + {file = "deepdiff-8.2.0.tar.gz", hash = "sha256:6ec78f65031485735545ffbe7a61e716c3c2d12ca6416886d5e9291fc76c46c3"}, +] + +[package.dependencies] +orderly-set = ">=5.3.0,<6" + +[package.extras] +cli = ["click (==8.1.8)", "pyyaml (==6.0.2)"] +optimize = ["orjson"] + +[[package]] +name = "distlib" +version = "0.3.9" +description = "Distribution utilities" +optional = false +python-versions = "*" +files = [ + {file = "distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87"}, + {file = "distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403"}, +] + +[[package]] +name = "docutils" +version = "0.21.2" +description = "Docutils -- Python Documentation Utilities" +optional = false +python-versions = ">=3.9" +files = [ + {file = "docutils-0.21.2-py3-none-any.whl", hash = "sha256:dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2"}, + {file = "docutils-0.21.2.tar.gz", hash = "sha256:3a6b18732edf182daa3cd12775bbb338cf5691468f91eeeb109deff6ebfa986f"}, +] + +[[package]] +name = "dunamai" +version = "1.23.0" +description = "Dynamic version generation" +optional = false +python-versions = ">=3.5" +files = [ + {file = "dunamai-1.23.0-py3-none-any.whl", hash = "sha256:a0906d876e92441793c6a423e16a4802752e723e9c9a5aabdc5535df02dbe041"}, + {file = "dunamai-1.23.0.tar.gz", hash = "sha256:a163746de7ea5acb6dacdab3a6ad621ebc612ed1e528aaa8beedb8887fccd2c4"}, +] + +[package.dependencies] +packaging = ">=20.9" + +[[package]] +name = "exceptiongroup" +version = "1.2.2" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, +] + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "filelock" +version = "3.17.0" +description = "A platform independent file lock." +optional = false +python-versions = ">=3.9" +files = [ + {file = "filelock-3.17.0-py3-none-any.whl", hash = "sha256:533dc2f7ba78dc2f0f531fc6c4940addf7b70a481e269a5a3b93be94ffbe8338"}, + {file = "filelock-3.17.0.tar.gz", hash = "sha256:ee4e77401ef576ebb38cd7f13b9b28893194acc20a8e68e18730ba9c0e54660e"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.1.3)", "sphinx-autodoc-typehints (>=3)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.10)", "diff-cover (>=9.2.1)", "pytest (>=8.3.4)", "pytest-asyncio (>=0.25.2)", "pytest-cov (>=6)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.28.1)"] +typing = ["typing-extensions (>=4.12.2)"] + +[[package]] +name = "frozenlist" +version = "1.5.0" +description = "A list-like structure which implements collections.abc.MutableSequence" +optional = false +python-versions = ">=3.8" +files = [ + {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5b6a66c18b5b9dd261ca98dffcb826a525334b2f29e7caa54e182255c5f6a65a"}, + {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d1b3eb7b05ea246510b43a7e53ed1653e55c2121019a97e60cad7efb881a97bb"}, + {file = "frozenlist-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:15538c0cbf0e4fa11d1e3a71f823524b0c46299aed6e10ebb4c2089abd8c3bec"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e79225373c317ff1e35f210dd5f1344ff31066ba8067c307ab60254cd3a78ad5"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9272fa73ca71266702c4c3e2d4a28553ea03418e591e377a03b8e3659d94fa76"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:498524025a5b8ba81695761d78c8dd7382ac0b052f34e66939c42df860b8ff17"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92b5278ed9d50fe610185ecd23c55d8b307d75ca18e94c0e7de328089ac5dcba"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f3c8c1dacd037df16e85227bac13cca58c30da836c6f936ba1df0c05d046d8d"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f2ac49a9bedb996086057b75bf93538240538c6d9b38e57c82d51f75a73409d2"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e66cc454f97053b79c2ab09c17fbe3c825ea6b4de20baf1be28919460dd7877f"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:5a3ba5f9a0dfed20337d3e966dc359784c9f96503674c2faf015f7fe8e96798c"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6321899477db90bdeb9299ac3627a6a53c7399c8cd58d25da094007402b039ab"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:76e4753701248476e6286f2ef492af900ea67d9706a0155335a40ea21bf3b2f5"}, + {file = "frozenlist-1.5.0-cp310-cp310-win32.whl", hash = "sha256:977701c081c0241d0955c9586ffdd9ce44f7a7795df39b9151cd9a6fd0ce4cfb"}, + {file = "frozenlist-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:189f03b53e64144f90990d29a27ec4f7997d91ed3d01b51fa39d2dbe77540fd4"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fd74520371c3c4175142d02a976aee0b4cb4a7cc912a60586ffd8d5929979b30"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2f3f7a0fbc219fb4455264cae4d9f01ad41ae6ee8524500f381de64ffaa077d5"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f47c9c9028f55a04ac254346e92977bf0f166c483c74b4232bee19a6697e4778"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0996c66760924da6e88922756d99b47512a71cfd45215f3570bf1e0b694c206a"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2fe128eb4edeabe11896cb6af88fca5346059f6c8d807e3b910069f39157869"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a8ea951bbb6cacd492e3948b8da8c502a3f814f5d20935aae74b5df2b19cf3d"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de537c11e4aa01d37db0d403b57bd6f0546e71a82347a97c6a9f0dcc532b3a45"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c2623347b933fcb9095841f1cc5d4ff0b278addd743e0e966cb3d460278840d"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cee6798eaf8b1416ef6909b06f7dc04b60755206bddc599f52232606e18179d3"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f5f9da7f5dbc00a604fe74aa02ae7c98bcede8a3b8b9666f9f86fc13993bc71a"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:90646abbc7a5d5c7c19461d2e3eeb76eb0b204919e6ece342feb6032c9325ae9"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:bdac3c7d9b705d253b2ce370fde941836a5f8b3c5c2b8fd70940a3ea3af7f4f2"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03d33c2ddbc1816237a67f66336616416e2bbb6beb306e5f890f2eb22b959cdf"}, + {file = "frozenlist-1.5.0-cp311-cp311-win32.whl", hash = "sha256:237f6b23ee0f44066219dae14c70ae38a63f0440ce6750f868ee08775073f942"}, + {file = "frozenlist-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:0cc974cc93d32c42e7b0f6cf242a6bd941c57c61b618e78b6c0a96cb72788c1d"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f"}, + {file = "frozenlist-1.5.0-cp312-cp312-win32.whl", hash = "sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8"}, + {file = "frozenlist-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a1a048f9215c90973402e26c01d1cff8a209e1f1b53f72b95c13db61b00f953"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dd47a5181ce5fcb463b5d9e17ecfdb02b678cca31280639255ce9d0e5aa67af0"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1431d60b36d15cda188ea222033eec8e0eab488f39a272461f2e6d9e1a8e63c2"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6482a5851f5d72767fbd0e507e80737f9c8646ae7fd303def99bfe813f76cf7f"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44c49271a937625619e862baacbd037a7ef86dd1ee215afc298a417ff3270608"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12f78f98c2f1c2429d42e6a485f433722b0061d5c0b0139efa64f396efb5886b"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce3aa154c452d2467487765e3adc730a8c153af77ad84096bc19ce19a2400840"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b7dc0c4338e6b8b091e8faf0db3168a37101943e687f373dce00959583f7439"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:45e0896250900b5aa25180f9aec243e84e92ac84bd4a74d9ad4138ef3f5c97de"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:561eb1c9579d495fddb6da8959fd2a1fca2c6d060d4113f5844b433fc02f2641"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:df6e2f325bfee1f49f81aaac97d2aa757c7646534a06f8f577ce184afe2f0a9e"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:140228863501b44b809fb39ec56b5d4071f4d0aa6d216c19cbb08b8c5a7eadb9"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7707a25d6a77f5d27ea7dc7d1fc608aa0a478193823f88511ef5e6b8a48f9d03"}, + {file = "frozenlist-1.5.0-cp313-cp313-win32.whl", hash = "sha256:31a9ac2b38ab9b5a8933b693db4939764ad3f299fcaa931a3e605bc3460e693c"}, + {file = "frozenlist-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:11aabdd62b8b9c4b84081a3c246506d1cddd2dd93ff0ad53ede5defec7886b28"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:dd94994fc91a6177bfaafd7d9fd951bc8689b0a98168aa26b5f543868548d3ca"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0da8bbec082bf6bf18345b180958775363588678f64998c2b7609e34719b10"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:73f2e31ea8dd7df61a359b731716018c2be196e5bb3b74ddba107f694fbd7604"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:828afae9f17e6de596825cf4228ff28fbdf6065974e5ac1410cecc22f699d2b3"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1577515d35ed5649d52ab4319db757bb881ce3b2b796d7283e6634d99ace307"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2150cc6305a2c2ab33299453e2968611dacb970d2283a14955923062c8d00b10"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a72b7a6e3cd2725eff67cd64c8f13335ee18fc3c7befc05aed043d24c7b9ccb9"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c16d2fa63e0800723139137d667e1056bee1a1cf7965153d2d104b62855e9b99"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:17dcc32fc7bda7ce5875435003220a457bcfa34ab7924a49a1c19f55b6ee185c"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:97160e245ea33d8609cd2b8fd997c850b56db147a304a262abc2b3be021a9171"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f1e6540b7fa044eee0bb5111ada694cf3dc15f2b0347ca125ee9ca984d5e9e6e"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:91d6c171862df0a6c61479d9724f22efb6109111017c87567cfeb7b5d1449fdf"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c1fac3e2ace2eb1052e9f7c7db480818371134410e1f5c55d65e8f3ac6d1407e"}, + {file = "frozenlist-1.5.0-cp38-cp38-win32.whl", hash = "sha256:b97f7b575ab4a8af9b7bc1d2ef7f29d3afee2226bd03ca3875c16451ad5a7723"}, + {file = "frozenlist-1.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:374ca2dabdccad8e2a76d40b1d037f5bd16824933bf7bcea3e59c891fd4a0923"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9bbcdfaf4af7ce002694a4e10a0159d5a8d20056a12b05b45cea944a4953f972"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1893f948bf6681733aaccf36c5232c231e3b5166d607c5fa77773611df6dc336"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2b5e23253bb709ef57a8e95e6ae48daa9ac5f265637529e4ce6b003a37b2621f"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f253985bb515ecd89629db13cb58d702035ecd8cfbca7d7a7e29a0e6d39af5f"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04a5c6babd5e8fb7d3c871dc8b321166b80e41b637c31a995ed844a6139942b6"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9fe0f1c29ba24ba6ff6abf688cb0b7cf1efab6b6aa6adc55441773c252f7411"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:226d72559fa19babe2ccd920273e767c96a49b9d3d38badd7c91a0fdeda8ea08"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b731db116ab3aedec558573c1a5eec78822b32292fe4f2f0345b7f697745c2"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:366d8f93e3edfe5a918c874702f78faac300209a4d5bf38352b2c1bdc07a766d"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1b96af8c582b94d381a1c1f51ffaedeb77c821c690ea5f01da3d70a487dd0a9b"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c03eff4a41bd4e38415cbed054bbaff4a075b093e2394b6915dca34a40d1e38b"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:50cf5e7ee9b98f22bdecbabf3800ae78ddcc26e4a435515fc72d97903e8488e0"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1e76bfbc72353269c44e0bc2cfe171900fbf7f722ad74c9a7b638052afe6a00c"}, + {file = "frozenlist-1.5.0-cp39-cp39-win32.whl", hash = "sha256:666534d15ba8f0fda3f53969117383d5dc021266b3c1a42c9ec4855e4b58b9d3"}, + {file = "frozenlist-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:5c28f4b5dbef8a0d8aad0d4de24d1e9e981728628afaf4ea0792f5d0939372f0"}, + {file = "frozenlist-1.5.0-py3-none-any.whl", hash = "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3"}, + {file = "frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817"}, +] + +[[package]] +name = "funcy" +version = "2.0" +description = "A fancy and practical functional tools" +optional = false +python-versions = "*" +files = [ + {file = "funcy-2.0-py2.py3-none-any.whl", hash = "sha256:53df23c8bb1651b12f095df764bfb057935d49537a56de211b098f4c79614bb0"}, + {file = "funcy-2.0.tar.gz", hash = "sha256:3963315d59d41c6f30c04bc910e10ab50a3ac4a225868bfa96feed133df075cb"}, +] + +[[package]] +name = "identify" +version = "2.6.6" +description = "File identification library for Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "identify-2.6.6-py2.py3-none-any.whl", hash = "sha256:cbd1810bce79f8b671ecb20f53ee0ae8e86ae84b557de31d89709dc2a48ba881"}, + {file = "identify-2.6.6.tar.gz", hash = "sha256:7bec12768ed44ea4761efb47806f0a41f86e7c0a5fdf5950d4648c90eca7e251"}, +] + +[package.extras] +license = ["ukkonen"] + +[[package]] +name = "idna" +version = "3.10" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.6" +files = [ + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, +] + +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + +[[package]] +name = "imagesize" +version = "1.4.1" +description = "Getting image size from png/jpeg/jpeg2000/gif file" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, + {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, +] + +[[package]] +name = "iniconfig" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" +optional = false +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] + +[[package]] +name = "jinja2" +version = "3.1.5" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +files = [ + {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"}, + {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "jinja2-ansible-filters" +version = "1.3.2" +description = "A port of Ansible's jinja2 filters without requiring ansible core." +optional = false +python-versions = "*" +files = [ + {file = "jinja2-ansible-filters-1.3.2.tar.gz", hash = "sha256:07c10cf44d7073f4f01102ca12d9a2dc31b41d47e4c61ed92ef6a6d2669b356b"}, + {file = "jinja2_ansible_filters-1.3.2-py3-none-any.whl", hash = "sha256:e1082f5564917649c76fed239117820610516ec10f87735d0338688800a55b34"}, +] + +[package.dependencies] +Jinja2 = "*" +PyYAML = "*" + +[package.extras] +test = ["pytest", "pytest-cov"] + +[[package]] +name = "libsass" +version = "0.23.0" +description = "Sass for Python: A straightforward binding of libsass for Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "libsass-0.23.0-cp38-abi3-macosx_11_0_x86_64.whl", hash = "sha256:34cae047cbbfc4ffa832a61cbb110f3c95f5471c6170c842d3fed161e40814dc"}, + {file = "libsass-0.23.0-cp38-abi3-macosx_14_0_arm64.whl", hash = "sha256:ea97d1b45cdc2fc3590cb9d7b60f1d8915d3ce17a98c1f2d4dd47ee0d9c68ce6"}, + {file = "libsass-0.23.0-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4a218406d605f325d234e4678bd57126a66a88841cb95bee2caeafdc6f138306"}, + {file = "libsass-0.23.0-cp38-abi3-win32.whl", hash = "sha256:31e86d92a5c7a551df844b72d83fc2b5e50abc6fbbb31e296f7bebd6489ed1b4"}, + {file = "libsass-0.23.0-cp38-abi3-win_amd64.whl", hash = "sha256:a2ec85d819f353cbe807432d7275d653710d12b08ec7ef61c124a580a8352f3c"}, + {file = "libsass-0.23.0.tar.gz", hash = "sha256:6f209955ede26684e76912caf329f4ccb57e4a043fd77fe0e7348dd9574f1880"}, +] + +[[package]] +name = "markupsafe" +version = "3.0.2" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.9" +files = [ + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, + {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, +] + +[[package]] +name = "mergedeep" +version = "1.3.4" +description = "A deep merge function for 🐍." +optional = false +python-versions = ">=3.6" +files = [ + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, +] + +[[package]] +name = "more-itertools" +version = "10.6.0" +description = "More routines for operating on iterables, beyond itertools" +optional = false +python-versions = ">=3.9" +files = [ + {file = "more-itertools-10.6.0.tar.gz", hash = "sha256:2cd7fad1009c31cc9fb6a035108509e6547547a7a738374f10bd49a09eb3ee3b"}, + {file = "more_itertools-10.6.0-py3-none-any.whl", hash = "sha256:6eb054cb4b6db1473f6e15fcc676a08e4732548acd47c708f0e179c2c7c01e89"}, +] + +[[package]] +name = "msgpack" +version = "1.1.0" +description = "MessagePack serializer" +optional = false +python-versions = ">=3.8" +files = [ + {file = "msgpack-1.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7ad442d527a7e358a469faf43fda45aaf4ac3249c8310a82f0ccff9164e5dccd"}, + {file = "msgpack-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:74bed8f63f8f14d75eec75cf3d04ad581da6b914001b474a5d3cd3372c8cc27d"}, + {file = "msgpack-1.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:914571a2a5b4e7606997e169f64ce53a8b1e06f2cf2c3a7273aa106236d43dd5"}, + {file = "msgpack-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c921af52214dcbb75e6bdf6a661b23c3e6417f00c603dd2070bccb5c3ef499f5"}, + {file = "msgpack-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8ce0b22b890be5d252de90d0e0d119f363012027cf256185fc3d474c44b1b9e"}, + {file = "msgpack-1.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:73322a6cc57fcee3c0c57c4463d828e9428275fb85a27aa2aa1a92fdc42afd7b"}, + {file = "msgpack-1.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e1f3c3d21f7cf67bcf2da8e494d30a75e4cf60041d98b3f79875afb5b96f3a3f"}, + {file = "msgpack-1.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:64fc9068d701233effd61b19efb1485587560b66fe57b3e50d29c5d78e7fef68"}, + {file = "msgpack-1.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:42f754515e0f683f9c79210a5d1cad631ec3d06cea5172214d2176a42e67e19b"}, + {file = "msgpack-1.1.0-cp310-cp310-win32.whl", hash = "sha256:3df7e6b05571b3814361e8464f9304c42d2196808e0119f55d0d3e62cd5ea044"}, + {file = "msgpack-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:685ec345eefc757a7c8af44a3032734a739f8c45d1b0ac45efc5d8977aa4720f"}, + {file = "msgpack-1.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3d364a55082fb2a7416f6c63ae383fbd903adb5a6cf78c5b96cc6316dc1cedc7"}, + {file = "msgpack-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:79ec007767b9b56860e0372085f8504db5d06bd6a327a335449508bbee9648fa"}, + {file = "msgpack-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6ad622bf7756d5a497d5b6836e7fc3752e2dd6f4c648e24b1803f6048596f701"}, + {file = "msgpack-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e59bca908d9ca0de3dc8684f21ebf9a690fe47b6be93236eb40b99af28b6ea6"}, + {file = "msgpack-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e1da8f11a3dd397f0a32c76165cf0c4eb95b31013a94f6ecc0b280c05c91b59"}, + {file = "msgpack-1.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:452aff037287acb1d70a804ffd022b21fa2bb7c46bee884dbc864cc9024128a0"}, + {file = "msgpack-1.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8da4bf6d54ceed70e8861f833f83ce0814a2b72102e890cbdfe4b34764cdd66e"}, + {file = "msgpack-1.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:41c991beebf175faf352fb940bf2af9ad1fb77fd25f38d9142053914947cdbf6"}, + {file = "msgpack-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a52a1f3a5af7ba1c9ace055b659189f6c669cf3657095b50f9602af3a3ba0fe5"}, + {file = "msgpack-1.1.0-cp311-cp311-win32.whl", hash = "sha256:58638690ebd0a06427c5fe1a227bb6b8b9fdc2bd07701bec13c2335c82131a88"}, + {file = "msgpack-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fd2906780f25c8ed5d7b323379f6138524ba793428db5d0e9d226d3fa6aa1788"}, + {file = "msgpack-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d46cf9e3705ea9485687aa4001a76e44748b609d260af21c4ceea7f2212a501d"}, + {file = "msgpack-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5dbad74103df937e1325cc4bfeaf57713be0b4f15e1c2da43ccdd836393e2ea2"}, + {file = "msgpack-1.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58dfc47f8b102da61e8949708b3eafc3504509a5728f8b4ddef84bd9e16ad420"}, + {file = "msgpack-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676e5be1b472909b2ee6356ff425ebedf5142427842aa06b4dfd5117d1ca8a2"}, + {file = "msgpack-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17fb65dd0bec285907f68b15734a993ad3fc94332b5bb21b0435846228de1f39"}, + {file = "msgpack-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a51abd48c6d8ac89e0cfd4fe177c61481aca2d5e7ba42044fd218cfd8ea9899f"}, + {file = "msgpack-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2137773500afa5494a61b1208619e3871f75f27b03bcfca7b3a7023284140247"}, + {file = "msgpack-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:398b713459fea610861c8a7b62a6fec1882759f308ae0795b5413ff6a160cf3c"}, + {file = "msgpack-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:06f5fd2f6bb2a7914922d935d3b8bb4a7fff3a9a91cfce6d06c13bc42bec975b"}, + {file = "msgpack-1.1.0-cp312-cp312-win32.whl", hash = "sha256:ad33e8400e4ec17ba782f7b9cf868977d867ed784a1f5f2ab46e7ba53b6e1e1b"}, + {file = "msgpack-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:115a7af8ee9e8cddc10f87636767857e7e3717b7a2e97379dc2054712693e90f"}, + {file = "msgpack-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:071603e2f0771c45ad9bc65719291c568d4edf120b44eb36324dcb02a13bfddf"}, + {file = "msgpack-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0f92a83b84e7c0749e3f12821949d79485971f087604178026085f60ce109330"}, + {file = "msgpack-1.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1964df7b81285d00a84da4e70cb1383f2e665e0f1f2a7027e683956d04b734"}, + {file = "msgpack-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59caf6a4ed0d164055ccff8fe31eddc0ebc07cf7326a2aaa0dbf7a4001cd823e"}, + {file = "msgpack-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0907e1a7119b337971a689153665764adc34e89175f9a34793307d9def08e6ca"}, + {file = "msgpack-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65553c9b6da8166e819a6aa90ad15288599b340f91d18f60b2061f402b9a4915"}, + {file = "msgpack-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7a946a8992941fea80ed4beae6bff74ffd7ee129a90b4dd5cf9c476a30e9708d"}, + {file = "msgpack-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4b51405e36e075193bc051315dbf29168d6141ae2500ba8cd80a522964e31434"}, + {file = "msgpack-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4c01941fd2ff87c2a934ee6055bda4ed353a7846b8d4f341c428109e9fcde8c"}, + {file = "msgpack-1.1.0-cp313-cp313-win32.whl", hash = "sha256:7c9a35ce2c2573bada929e0b7b3576de647b0defbd25f5139dcdaba0ae35a4cc"}, + {file = "msgpack-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:bce7d9e614a04d0883af0b3d4d501171fbfca038f12c77fa838d9f198147a23f"}, + {file = "msgpack-1.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c40ffa9a15d74e05ba1fe2681ea33b9caffd886675412612d93ab17b58ea2fec"}, + {file = "msgpack-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f1ba6136e650898082d9d5a5217d5906d1e138024f836ff48691784bbe1adf96"}, + {file = "msgpack-1.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0856a2b7e8dcb874be44fea031d22e5b3a19121be92a1e098f46068a11b0870"}, + {file = "msgpack-1.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:471e27a5787a2e3f974ba023f9e265a8c7cfd373632247deb225617e3100a3c7"}, + {file = "msgpack-1.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:646afc8102935a388ffc3914b336d22d1c2d6209c773f3eb5dd4d6d3b6f8c1cb"}, + {file = "msgpack-1.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:13599f8829cfbe0158f6456374e9eea9f44eee08076291771d8ae93eda56607f"}, + {file = "msgpack-1.1.0-cp38-cp38-win32.whl", hash = "sha256:8a84efb768fb968381e525eeeb3d92857e4985aacc39f3c47ffd00eb4509315b"}, + {file = "msgpack-1.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:879a7b7b0ad82481c52d3c7eb99bf6f0645dbdec5134a4bddbd16f3506947feb"}, + {file = "msgpack-1.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:53258eeb7a80fc46f62fd59c876957a2d0e15e6449a9e71842b6d24419d88ca1"}, + {file = "msgpack-1.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7e7b853bbc44fb03fbdba34feb4bd414322180135e2cb5164f20ce1c9795ee48"}, + {file = "msgpack-1.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3e9b4936df53b970513eac1758f3882c88658a220b58dcc1e39606dccaaf01c"}, + {file = "msgpack-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46c34e99110762a76e3911fc923222472c9d681f1094096ac4102c18319e6468"}, + {file = "msgpack-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a706d1e74dd3dea05cb54580d9bd8b2880e9264856ce5068027eed09680aa74"}, + {file = "msgpack-1.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:534480ee5690ab3cbed89d4c8971a5c631b69a8c0883ecfea96c19118510c846"}, + {file = "msgpack-1.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8cf9e8c3a2153934a23ac160cc4cba0ec035f6867c8013cc6077a79823370346"}, + {file = "msgpack-1.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3180065ec2abbe13a4ad37688b61b99d7f9e012a535b930e0e683ad6bc30155b"}, + {file = "msgpack-1.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c5a91481a3cc573ac8c0d9aace09345d989dc4a0202b7fcb312c88c26d4e71a8"}, + {file = "msgpack-1.1.0-cp39-cp39-win32.whl", hash = "sha256:f80bc7d47f76089633763f952e67f8214cb7b3ee6bfa489b3cb6a84cfac114cd"}, + {file = "msgpack-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:4d1b7ff2d6146e16e8bd665ac726a89c74163ef8cd39fa8c1087d4e52d3a2325"}, + {file = "msgpack-1.1.0.tar.gz", hash = "sha256:dd432ccc2c72b914e4cb77afce64aab761c1137cc698be3984eee260bcb2896e"}, +] + +[[package]] +name = "multidict" +version = "6.1.0" +description = "multidict implementation" +optional = false +python-versions = ">=3.8" +files = [ + {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1"}, + {file = "multidict-6.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429"}, + {file = "multidict-6.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160"}, + {file = "multidict-6.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7"}, + {file = "multidict-6.1.0-cp310-cp310-win32.whl", hash = "sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0"}, + {file = "multidict-6.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156"}, + {file = "multidict-6.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351"}, + {file = "multidict-6.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3"}, + {file = "multidict-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753"}, + {file = "multidict-6.1.0-cp311-cp311-win32.whl", hash = "sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80"}, + {file = "multidict-6.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436"}, + {file = "multidict-6.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925"}, + {file = "multidict-6.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6"}, + {file = "multidict-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3"}, + {file = "multidict-6.1.0-cp312-cp312-win32.whl", hash = "sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133"}, + {file = "multidict-6.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f"}, + {file = "multidict-6.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44"}, + {file = "multidict-6.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4"}, + {file = "multidict-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6"}, + {file = "multidict-6.1.0-cp313-cp313-win32.whl", hash = "sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81"}, + {file = "multidict-6.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:db7457bac39421addd0c8449933ac32d8042aae84a14911a757ae6ca3eef1392"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d094ddec350a2fb899fec68d8353c78233debde9b7d8b4beeafa70825f1c281a"}, + {file = "multidict-6.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5845c1fd4866bb5dd3125d89b90e57ed3138241540897de748cdf19de8a2fca2"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9079dfc6a70abe341f521f78405b8949f96db48da98aeb43f9907f342f627cdc"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3914f5aaa0f36d5d60e8ece6a308ee1c9784cd75ec8151062614657a114c4478"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c08be4f460903e5a9d0f76818db3250f12e9c344e79314d1d570fc69d7f4eae4"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d093be959277cb7dee84b801eb1af388b6ad3ca6a6b6bf1ed7585895789d027d"}, + {file = "multidict-6.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3702ea6872c5a2a4eeefa6ffd36b042e9773f05b1f37ae3ef7264b1163c2dcf6"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2090f6a85cafc5b2db085124d752757c9d251548cedabe9bd31afe6363e0aff2"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:f67f217af4b1ff66c68a87318012de788dd95fcfeb24cc889011f4e1c7454dfd"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:189f652a87e876098bbc67b4da1049afb5f5dfbaa310dd67c594b01c10388db6"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:6bb5992037f7a9eff7991ebe4273ea7f51f1c1c511e6a2ce511d0e7bdb754492"}, + {file = "multidict-6.1.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f4c2b9e770c4e393876e35a7046879d195cd123b4f116d299d442b335bcd"}, + {file = "multidict-6.1.0-cp38-cp38-win32.whl", hash = "sha256:e27bbb6d14416713a8bd7aaa1313c0fc8d44ee48d74497a0ff4c3a1b6ccb5167"}, + {file = "multidict-6.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:22f3105d4fb15c8f57ff3959a58fcab6ce36814486500cd7485651230ad4d4ef"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1"}, + {file = "multidict-6.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255"}, + {file = "multidict-6.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972"}, + {file = "multidict-6.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43"}, + {file = "multidict-6.1.0-cp39-cp39-win32.whl", hash = "sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada"}, + {file = "multidict-6.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a"}, + {file = "multidict-6.1.0-py3-none-any.whl", hash = "sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506"}, + {file = "multidict-6.1.0.tar.gz", hash = "sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a"}, +] + +[package.dependencies] +typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} + +[[package]] +name = "mypy" +version = "1.15.0" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.9" +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"}, + {file = "mypy-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be68172e9fd9ad8fb876c6389f16d1c1b5f100ffa779f77b1fb2176fcc9ab95b"}, + {file = "mypy-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c7be1e46525adfa0d97681432ee9fcd61a3964c2446795714699a998d193f1a3"}, + {file = "mypy-1.15.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2e2c2e6d3593f6451b18588848e66260ff62ccca522dd231cd4dd59b0160668b"}, + {file = "mypy-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:6983aae8b2f653e098edb77f893f7b6aca69f6cffb19b2cc7443f23cce5f4828"}, + {file = "mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f"}, + {file = "mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5"}, + {file = "mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e"}, + {file = "mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c"}, + {file = "mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f"}, + {file = "mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f"}, + {file = "mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd"}, + {file = "mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f"}, + {file = "mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464"}, + {file = "mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee"}, + {file = "mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e"}, + {file = "mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22"}, + {file = "mypy-1.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445"}, + {file = "mypy-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d"}, + {file = "mypy-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5"}, + {file = "mypy-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036"}, + {file = "mypy-1.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357"}, + {file = "mypy-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf"}, + {file = "mypy-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e601a7fa172c2131bff456bb3ee08a88360760d0d2f8cbd7a75a65497e2df078"}, + {file = "mypy-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:712e962a6357634fef20412699a3655c610110e01cdaa6180acec7fc9f8513ba"}, + {file = "mypy-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f95579473af29ab73a10bada2f9722856792a36ec5af5399b653aa28360290a5"}, + {file = "mypy-1.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f8722560a14cde92fdb1e31597760dc35f9f5524cce17836c0d22841830fd5b"}, + {file = "mypy-1.15.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1fbb8da62dc352133d7d7ca90ed2fb0e9d42bb1a32724c287d3c76c58cbaa9c2"}, + {file = "mypy-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:d10d994b41fb3497719bbf866f227b3489048ea4bbbb5015357db306249f7980"}, + {file = "mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e"}, + {file = "mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43"}, +] + +[package.dependencies] +mypy_extensions = ">=1.0.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing_extensions = ">=4.6.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +faster-cache = ["orjson"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[package]] +name = "nodeenv" +version = "1.9.1" +description = "Node.js virtual environment builder" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, +] + +[[package]] +name = "nova-galaxy" +version = "0.4.0" +description = "Utilties for accessing the ORNL Galaxy instance" +optional = false +python-versions = "<4.0,>=3.10" +files = [ + {file = "nova_galaxy-0.4.0-py3-none-any.whl", hash = "sha256:407ae4b272f5386bd23578daf8c0c9c48c3723fd9fd14aa7328ea38532427ab9"}, +] + +[package.dependencies] +bioblend = ">=1.3.0,<2.0.0" +tomli = ">=2.0.2,<3.0.0" + +[[package]] +name = "nova-mvvm" +version = "0.9.0" +description = "A Python Package for Model-View-ViewModel pattern" +optional = false +python-versions = "<4.0,>=3.10" +files = [ + {file = "nova_mvvm-0.9.0-py3-none-any.whl", hash = "sha256:60c70f8579b155e7081548e8aec9e77de497fa33ac569096015cffe27ef0f796"}, +] + +[package.dependencies] +deepdiff = ">=8.0.1,<9.0.0" +pytest-asyncio = ">=0.25.0,<0.26.0" +trame = ">=3.6.3,<4.0.0" + +[package.extras] +panel = ["panel (>=1.4.4,<2.0.0)"] +pyqt5 = ["pyqt5 (>=5.15.11,<6.0.0)"] +pyqt6 = ["pyqt6 (>=6.7.0,<7.0.0)"] + +[[package]] +name = "nova-trame" +version = "0.14.2" +description = "A Python Package for injecting curated themes and custom components into Trame applications" +optional = false +python-versions = "<4.0,>=3.10" +files = [ + {file = "nova_trame-0.14.2-py3-none-any.whl", hash = "sha256:225c97960947e7b107c5ed425213658ab192079253ecd13451cd06af66ef1ca3"}, +] + +[package.dependencies] +libsass = "*" +mergedeep = "*" +nova-mvvm = "*" +pydantic = "*" +tomli = "*" +trame = "*" +trame-vega = "*" +trame-vuetify = "*" + +[[package]] +name = "orderly-set" +version = "5.3.0" +description = "Orderly set" +optional = false +python-versions = ">=3.8" +files = [ + {file = "orderly_set-5.3.0-py3-none-any.whl", hash = "sha256:c2c0bfe604f5d3d9b24e8262a06feb612594f37aa3845650548befd7772945d1"}, + {file = "orderly_set-5.3.0.tar.gz", hash = "sha256:80b3d8fdd3d39004d9aad389eaa0eab02c71f0a0511ba3a6d54a935a6c6a0acc"}, +] + +[[package]] +name = "packaging" +version = "24.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, +] + +[[package]] +name = "platformdirs" +version = "4.3.6" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +optional = false +python-versions = ">=3.8" +files = [ + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] + +[[package]] +name = "pluggy" +version = "1.5.0" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, +] + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "plumbum" +version = "1.9.0" +description = "Plumbum: shell combinators library" +optional = false +python-versions = ">=3.8" +files = [ + {file = "plumbum-1.9.0-py3-none-any.whl", hash = "sha256:9fd0d3b0e8d86e4b581af36edf3f3bbe9d1ae15b45b8caab28de1bcb27aaa7f5"}, + {file = "plumbum-1.9.0.tar.gz", hash = "sha256:e640062b72642c3873bd5bdc3effed75ba4d3c70ef6b6a7b907357a84d909219"}, +] + +[package.dependencies] +pywin32 = {version = "*", markers = "platform_system == \"Windows\" and platform_python_implementation != \"PyPy\""} + +[package.extras] +dev = ["coverage[toml]", "paramiko", "psutil", "pytest (>=6.0)", "pytest-cov", "pytest-mock", "pytest-timeout"] +docs = ["sphinx (>=4.0.0)", "sphinx-rtd-theme (>=1.0.0)"] +ssh = ["paramiko"] +test = ["coverage[toml]", "paramiko", "psutil", "pytest (>=6.0)", "pytest-cov", "pytest-mock", "pytest-timeout"] + +[[package]] +name = "pockets" +version = "0.9.1" +description = "A collection of helpful Python tools!" +optional = false +python-versions = "*" +files = [ + {file = "pockets-0.9.1-py2.py3-none-any.whl", hash = "sha256:68597934193c08a08eb2bf6a1d85593f627c22f9b065cc727a4f03f669d96d86"}, + {file = "pockets-0.9.1.tar.gz", hash = "sha256:9320f1a3c6f7a9133fe3b571f283bcf3353cd70249025ae8d618e40e9f7e92b3"}, +] + +[package.dependencies] +six = ">=1.5.2" + +[[package]] +name = "pre-commit" +version = "4.1.0" +description = "A framework for managing and maintaining multi-language pre-commit hooks." +optional = false +python-versions = ">=3.9" +files = [ + {file = "pre_commit-4.1.0-py2.py3-none-any.whl", hash = "sha256:d29e7cb346295bcc1cc75fc3e92e343495e3ea0196c9ec6ba53f49f10ab6ae7b"}, + {file = "pre_commit-4.1.0.tar.gz", hash = "sha256:ae3f018575a588e30dfddfab9a05448bfbd6b73d78709617b5a2b853549716d4"}, +] + +[package.dependencies] +cfgv = ">=2.0.0" +identify = ">=1.0.0" +nodeenv = ">=0.11.1" +pyyaml = ">=5.1" +virtualenv = ">=20.10.0" + +[[package]] +name = "prompt-toolkit" +version = "3.0.50" +description = "Library for building powerful interactive command lines in Python" +optional = false +python-versions = ">=3.8.0" +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"}, +] + +[package.dependencies] +wcwidth = "*" + +[[package]] +name = "propcache" +version = "0.2.1" +description = "Accelerated property cache" +optional = false +python-versions = ">=3.9" +files = [ + {file = "propcache-0.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6b3f39a85d671436ee3d12c017f8fdea38509e4f25b28eb25877293c98c243f6"}, + {file = "propcache-0.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d51fbe4285d5db5d92a929e3e21536ea3dd43732c5b177c7ef03f918dff9f2"}, + {file = "propcache-0.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6445804cf4ec763dc70de65a3b0d9954e868609e83850a47ca4f0cb64bd79fea"}, + {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9479aa06a793c5aeba49ce5c5692ffb51fcd9a7016e017d555d5e2b0045d212"}, + {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9631c5e8b5b3a0fda99cb0d29c18133bca1e18aea9effe55adb3da1adef80d3"}, + {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3156628250f46a0895f1f36e1d4fbe062a1af8718ec3ebeb746f1d23f0c5dc4d"}, + {file = "propcache-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b6fb63ae352e13748289f04f37868099e69dba4c2b3e271c46061e82c745634"}, + {file = "propcache-0.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:887d9b0a65404929641a9fabb6452b07fe4572b269d901d622d8a34a4e9043b2"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a96dc1fa45bd8c407a0af03b2d5218392729e1822b0c32e62c5bf7eeb5fb3958"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:a7e65eb5c003a303b94aa2c3852ef130230ec79e349632d030e9571b87c4698c"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:999779addc413181912e984b942fbcc951be1f5b3663cd80b2687758f434c583"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:19a0f89a7bb9d8048d9c4370c9c543c396e894c76be5525f5e1ad287f1750ddf"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1ac2f5fe02fa75f56e1ad473f1175e11f475606ec9bd0be2e78e4734ad575034"}, + {file = "propcache-0.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:574faa3b79e8ebac7cb1d7930f51184ba1ccf69adfdec53a12f319a06030a68b"}, + {file = "propcache-0.2.1-cp310-cp310-win32.whl", hash = "sha256:03ff9d3f665769b2a85e6157ac8b439644f2d7fd17615a82fa55739bc97863f4"}, + {file = "propcache-0.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:2d3af2e79991102678f53e0dbf4c35de99b6b8b58f29a27ca0325816364caaba"}, + {file = "propcache-0.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1ffc3cca89bb438fb9c95c13fc874012f7b9466b89328c3c8b1aa93cdcfadd16"}, + {file = "propcache-0.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f174bbd484294ed9fdf09437f889f95807e5f229d5d93588d34e92106fbf6717"}, + {file = "propcache-0.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:70693319e0b8fd35dd863e3e29513875eb15c51945bf32519ef52927ca883bc3"}, + {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b480c6a4e1138e1aa137c0079b9b6305ec6dcc1098a8ca5196283e8a49df95a9"}, + {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d27b84d5880f6d8aa9ae3edb253c59d9f6642ffbb2c889b78b60361eed449787"}, + {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:857112b22acd417c40fa4595db2fe28ab900c8c5fe4670c7989b1c0230955465"}, + {file = "propcache-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf6c4150f8c0e32d241436526f3c3f9cbd34429492abddbada2ffcff506c51af"}, + {file = "propcache-0.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66d4cfda1d8ed687daa4bc0274fcfd5267873db9a5bc0418c2da19273040eeb7"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c2f992c07c0fca81655066705beae35fc95a2fa7366467366db627d9f2ee097f"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:4a571d97dbe66ef38e472703067021b1467025ec85707d57e78711c085984e54"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:bb6178c241278d5fe853b3de743087be7f5f4c6f7d6d22a3b524d323eecec505"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:ad1af54a62ffe39cf34db1aa6ed1a1873bd548f6401db39d8e7cd060b9211f82"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:e7048abd75fe40712005bcfc06bb44b9dfcd8e101dda2ecf2f5aa46115ad07ca"}, + {file = "propcache-0.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:160291c60081f23ee43d44b08a7e5fb76681221a8e10b3139618c5a9a291b84e"}, + {file = "propcache-0.2.1-cp311-cp311-win32.whl", hash = "sha256:819ce3b883b7576ca28da3861c7e1a88afd08cc8c96908e08a3f4dd64a228034"}, + {file = "propcache-0.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:edc9fc7051e3350643ad929df55c451899bb9ae6d24998a949d2e4c87fb596d3"}, + {file = "propcache-0.2.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:081a430aa8d5e8876c6909b67bd2d937bfd531b0382d3fdedb82612c618bc41a"}, + {file = "propcache-0.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2ccec9ac47cf4e04897619c0e0c1a48c54a71bdf045117d3a26f80d38ab1fb0"}, + {file = "propcache-0.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:14d86fe14b7e04fa306e0c43cdbeebe6b2c2156a0c9ce56b815faacc193e320d"}, + {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:049324ee97bb67285b49632132db351b41e77833678432be52bdd0289c0e05e4"}, + {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cd9a1d071158de1cc1c71a26014dcdfa7dd3d5f4f88c298c7f90ad6f27bb46d"}, + {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98110aa363f1bb4c073e8dcfaefd3a5cea0f0834c2aab23dda657e4dab2f53b5"}, + {file = "propcache-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:647894f5ae99c4cf6bb82a1bb3a796f6e06af3caa3d32e26d2350d0e3e3faf24"}, + {file = "propcache-0.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfd3223c15bebe26518d58ccf9a39b93948d3dcb3e57a20480dfdd315356baff"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d71264a80f3fcf512eb4f18f59423fe82d6e346ee97b90625f283df56aee103f"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e73091191e4280403bde6c9a52a6999d69cdfde498f1fdf629105247599b57ec"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3935bfa5fede35fb202c4b569bb9c042f337ca4ff7bd540a0aa5e37131659348"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f508b0491767bb1f2b87fdfacaba5f7eddc2f867740ec69ece6d1946d29029a6"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1672137af7c46662a1c2be1e8dc78cb6d224319aaa40271c9257d886be4363a6"}, + {file = "propcache-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b74c261802d3d2b85c9df2dfb2fa81b6f90deeef63c2db9f0e029a3cac50b518"}, + {file = "propcache-0.2.1-cp312-cp312-win32.whl", hash = "sha256:d09c333d36c1409d56a9d29b3a1b800a42c76a57a5a8907eacdbce3f18768246"}, + {file = "propcache-0.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:c214999039d4f2a5b2073ac506bba279945233da8c786e490d411dfc30f855c1"}, + {file = "propcache-0.2.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aca405706e0b0a44cc6bfd41fbe89919a6a56999157f6de7e182a990c36e37bc"}, + {file = "propcache-0.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:12d1083f001ace206fe34b6bdc2cb94be66d57a850866f0b908972f90996b3e9"}, + {file = "propcache-0.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d93f3307ad32a27bda2e88ec81134b823c240aa3abb55821a8da553eed8d9439"}, + {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba278acf14471d36316159c94a802933d10b6a1e117b8554fe0d0d9b75c9d536"}, + {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e6281aedfca15301c41f74d7005e6e3f4ca143584ba696ac69df4f02f40d629"}, + {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b750a8e5a1262434fb1517ddf64b5de58327f1adc3524a5e44c2ca43305eb0b"}, + {file = "propcache-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf72af5e0fb40e9babf594308911436c8efde3cb5e75b6f206c34ad18be5c052"}, + {file = "propcache-0.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b2d0a12018b04f4cb820781ec0dffb5f7c7c1d2a5cd22bff7fb055a2cb19ebce"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e800776a79a5aabdb17dcc2346a7d66d0777e942e4cd251defeb084762ecd17d"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:4160d9283bd382fa6c0c2b5e017acc95bc183570cd70968b9202ad6d8fc48dce"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:30b43e74f1359353341a7adb783c8f1b1c676367b011709f466f42fda2045e95"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:58791550b27d5488b1bb52bc96328456095d96206a250d28d874fafe11b3dfaf"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:0f022d381747f0dfe27e99d928e31bc51a18b65bb9e481ae0af1380a6725dd1f"}, + {file = "propcache-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:297878dc9d0a334358f9b608b56d02e72899f3b8499fc6044133f0d319e2ec30"}, + {file = "propcache-0.2.1-cp313-cp313-win32.whl", hash = "sha256:ddfab44e4489bd79bda09d84c430677fc7f0a4939a73d2bba3073036f487a0a6"}, + {file = "propcache-0.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:556fc6c10989f19a179e4321e5d678db8eb2924131e64652a51fe83e4c3db0e1"}, + {file = "propcache-0.2.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6a9a8c34fb7bb609419a211e59da8887eeca40d300b5ea8e56af98f6fbbb1541"}, + {file = "propcache-0.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ae1aa1cd222c6d205853b3013c69cd04515f9d6ab6de4b0603e2e1c33221303e"}, + {file = "propcache-0.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:accb6150ce61c9c4b7738d45550806aa2b71c7668c6942f17b0ac182b6142fd4"}, + {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5eee736daafa7af6d0a2dc15cc75e05c64f37fc37bafef2e00d77c14171c2097"}, + {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7a31fc1e1bd362874863fdeed71aed92d348f5336fd84f2197ba40c59f061bd"}, + {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba4cfa1052819d16699e1d55d18c92b6e094d4517c41dd231a8b9f87b6fa681"}, + {file = "propcache-0.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f089118d584e859c62b3da0892b88a83d611c2033ac410e929cb6754eec0ed16"}, + {file = "propcache-0.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:781e65134efaf88feb447e8c97a51772aa75e48b794352f94cb7ea717dedda0d"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31f5af773530fd3c658b32b6bdc2d0838543de70eb9a2156c03e410f7b0d3aae"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:a7a078f5d37bee6690959c813977da5291b24286e7b962e62a94cec31aa5188b"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:cea7daf9fc7ae6687cf1e2c049752f19f146fdc37c2cc376e7d0032cf4f25347"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:8b3489ff1ed1e8315674d0775dc7d2195fb13ca17b3808721b54dbe9fd020faf"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:9403db39be1393618dd80c746cb22ccda168efce239c73af13c3763ef56ffc04"}, + {file = "propcache-0.2.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5d97151bc92d2b2578ff7ce779cdb9174337390a535953cbb9452fb65164c587"}, + {file = "propcache-0.2.1-cp39-cp39-win32.whl", hash = "sha256:9caac6b54914bdf41bcc91e7eb9147d331d29235a7c967c150ef5df6464fd1bb"}, + {file = "propcache-0.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:92fc4500fcb33899b05ba73276dfb684a20d31caa567b7cb5252d48f896a91b1"}, + {file = "propcache-0.2.1-py3-none-any.whl", hash = "sha256:52277518d6aae65536e9cea52d4e7fd2f7a66f4aa2d30ed3f2fcea620ace3c54"}, + {file = "propcache-0.2.1.tar.gz", hash = "sha256:3f77ce728b19cb537714499928fe800c3dda29e8d9428778fc7c186da4c09a64"}, +] + +[[package]] +name = "pydantic" +version = "2.10.6" +description = "Data validation using Python type hints" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584"}, + {file = "pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236"}, +] + +[package.dependencies] +annotated-types = ">=0.6.0" +pydantic-core = "2.27.2" +typing-extensions = ">=4.12.2" + +[package.extras] +email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata"] + +[[package]] +name = "pydantic-core" +version = "2.27.2" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"}, + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35"}, + {file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + +[[package]] +name = "pygments" +version = "2.19.1" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c"}, + {file = "pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f"}, +] + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "pytest" +version = "8.3.4" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6"}, + {file = "pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=1.5,<2" +tomli = {version = ">=1", markers = "python_version < \"3.11\""} + +[package.extras] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "pytest-asyncio" +version = "0.25.3" +description = "Pytest support for asyncio" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pytest_asyncio-0.25.3-py3-none-any.whl", hash = "sha256:9e89518e0f9bd08928f97a3482fdc4e244df17529460bc038291ccaf8f85c7c3"}, + {file = "pytest_asyncio-0.25.3.tar.gz", hash = "sha256:fc1da2cf9f125ada7e710b4ddad05518d4cee187ae9412e9ac9271003497f07a"}, +] + +[package.dependencies] +pytest = ">=8.2,<9" + +[package.extras] +docs = ["sphinx (>=5.3)", "sphinx-rtd-theme (>=1)"] +testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] + +[[package]] +name = "pywin32" +version = "308" +description = "Python for Window Extensions" +optional = false +python-versions = "*" +files = [ + {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, + {file = "pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e"}, + {file = "pywin32-308-cp310-cp310-win_arm64.whl", hash = "sha256:a5ab5381813b40f264fa3495b98af850098f814a25a63589a8e9eb12560f450c"}, + {file = "pywin32-308-cp311-cp311-win32.whl", hash = "sha256:5d8c8015b24a7d6855b1550d8e660d8daa09983c80e5daf89a273e5c6fb5095a"}, + {file = "pywin32-308-cp311-cp311-win_amd64.whl", hash = "sha256:575621b90f0dc2695fec346b2d6302faebd4f0f45c05ea29404cefe35d89442b"}, + {file = "pywin32-308-cp311-cp311-win_arm64.whl", hash = "sha256:100a5442b7332070983c4cd03f2e906a5648a5104b8a7f50175f7906efd16bb6"}, + {file = "pywin32-308-cp312-cp312-win32.whl", hash = "sha256:587f3e19696f4bf96fde9d8a57cec74a57021ad5f204c9e627e15c33ff568897"}, + {file = "pywin32-308-cp312-cp312-win_amd64.whl", hash = "sha256:00b3e11ef09ede56c6a43c71f2d31857cf7c54b0ab6e78ac659497abd2834f47"}, + {file = "pywin32-308-cp312-cp312-win_arm64.whl", hash = "sha256:9b4de86c8d909aed15b7011182c8cab38c8850de36e6afb1f0db22b8959e3091"}, + {file = "pywin32-308-cp313-cp313-win32.whl", hash = "sha256:1c44539a37a5b7b21d02ab34e6a4d314e0788f1690d65b48e9b0b89f31abbbed"}, + {file = "pywin32-308-cp313-cp313-win_amd64.whl", hash = "sha256:fd380990e792eaf6827fcb7e187b2b4b1cede0585e3d0c9e84201ec27b9905e4"}, + {file = "pywin32-308-cp313-cp313-win_arm64.whl", hash = "sha256:ef313c46d4c18dfb82a2431e3051ac8f112ccee1a34f29c263c583c568db63cd"}, + {file = "pywin32-308-cp37-cp37m-win32.whl", hash = "sha256:1f696ab352a2ddd63bd07430080dd598e6369152ea13a25ebcdd2f503a38f1ff"}, + {file = "pywin32-308-cp37-cp37m-win_amd64.whl", hash = "sha256:13dcb914ed4347019fbec6697a01a0aec61019c1046c2b905410d197856326a6"}, + {file = "pywin32-308-cp38-cp38-win32.whl", hash = "sha256:5794e764ebcabf4ff08c555b31bd348c9025929371763b2183172ff4708152f0"}, + {file = "pywin32-308-cp38-cp38-win_amd64.whl", hash = "sha256:3b92622e29d651c6b783e368ba7d6722b1634b8e70bd376fd7610fe1992e19de"}, + {file = "pywin32-308-cp39-cp39-win32.whl", hash = "sha256:7873ca4dc60ab3287919881a7d4f88baee4a6e639aa6962de25a98ba6b193341"}, + {file = "pywin32-308-cp39-cp39-win_amd64.whl", hash = "sha256:71b3322d949b4cc20776436a9c9ba0eeedcbc9c650daa536df63f0ff111bb920"}, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, +] + +[[package]] +name = "questionary" +version = "2.1.0" +description = "Python library to build pretty command line user prompts ⭐️" +optional = false +python-versions = ">=3.8" +files = [ + {file = "questionary-2.1.0-py3-none-any.whl", hash = "sha256:44174d237b68bc828e4878c763a9ad6790ee61990e0ae72927694ead57bab8ec"}, + {file = "questionary-2.1.0.tar.gz", hash = "sha256:6302cdd645b19667d8f6e6634774e9538bfcd1aad9be287e743d96cacaf95587"}, +] + +[package.dependencies] +prompt_toolkit = ">=2.0,<4.0" + +[[package]] +name = "requests" +version = "2.32.3" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.8" +files = [ + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + +[[package]] +name = "ruff" +version = "0.9.4" +description = "An extremely fast Python linter and code formatter, written in Rust." +optional = false +python-versions = ">=3.7" +files = [ + {file = "ruff-0.9.4-py3-none-linux_armv6l.whl", hash = "sha256:64e73d25b954f71ff100bb70f39f1ee09e880728efb4250c632ceed4e4cdf706"}, + {file = "ruff-0.9.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:6ce6743ed64d9afab4fafeaea70d3631b4d4b28b592db21a5c2d1f0ef52934bf"}, + {file = "ruff-0.9.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:54499fb08408e32b57360f6f9de7157a5fec24ad79cb3f42ef2c3f3f728dfe2b"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37c892540108314a6f01f105040b5106aeb829fa5fb0561d2dcaf71485021137"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:de9edf2ce4b9ddf43fd93e20ef635a900e25f622f87ed6e3047a664d0e8f810e"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87c90c32357c74f11deb7fbb065126d91771b207bf9bfaaee01277ca59b574ec"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:56acd6c694da3695a7461cc55775f3a409c3815ac467279dfa126061d84b314b"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0c93e7d47ed951b9394cf352d6695b31498e68fd5782d6cbc282425655f687a"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1d4c8772670aecf037d1bf7a07c39106574d143b26cfe5ed1787d2f31e800214"}, + {file = "ruff-0.9.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfc5f1d7afeda8d5d37660eeca6d389b142d7f2b5a1ab659d9214ebd0e025231"}, + {file = "ruff-0.9.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:faa935fc00ae854d8b638c16a5f1ce881bc3f67446957dd6f2af440a5fc8526b"}, + {file = "ruff-0.9.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a6c634fc6f5a0ceae1ab3e13c58183978185d131a29c425e4eaa9f40afe1e6d6"}, + {file = "ruff-0.9.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:433dedf6ddfdec7f1ac7575ec1eb9844fa60c4c8c2f8887a070672b8d353d34c"}, + {file = "ruff-0.9.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:d612dbd0f3a919a8cc1d12037168bfa536862066808960e0cc901404b77968f0"}, + {file = "ruff-0.9.4-py3-none-win32.whl", hash = "sha256:db1192ddda2200671f9ef61d9597fcef89d934f5d1705e571a93a67fb13a4402"}, + {file = "ruff-0.9.4-py3-none-win_amd64.whl", hash = "sha256:05bebf4cdbe3ef75430d26c375773978950bbf4ee3c95ccb5448940dc092408e"}, + {file = "ruff-0.9.4-py3-none-win_arm64.whl", hash = "sha256:585792f1e81509e38ac5123492f8875fbc36f3ede8185af0a26df348e5154f41"}, + {file = "ruff-0.9.4.tar.gz", hash = "sha256:6907ee3529244bb0ed066683e075f09285b38dd5b4039370df6ff06041ca19e7"}, +] + +[[package]] +name = "six" +version = "1.17.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, +] + +[[package]] +name = "snowballstemmer" +version = "2.2.0" +description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +optional = false +python-versions = "*" +files = [ + {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, + {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, +] + +[[package]] +name = "sphinx" +version = "8.1.3" +description = "Python documentation generator" +optional = false +python-versions = ">=3.10" +files = [ + {file = "sphinx-8.1.3-py3-none-any.whl", hash = "sha256:09719015511837b76bf6e03e42eb7595ac8c2e41eeb9c29c5b755c6b677992a2"}, + {file = "sphinx-8.1.3.tar.gz", hash = "sha256:43c1911eecb0d3e161ad78611bc905d1ad0e523e4ddc202a58a821773dc4c927"}, +] + +[package.dependencies] +alabaster = ">=0.7.14" +babel = ">=2.13" +colorama = {version = ">=0.4.6", markers = "sys_platform == \"win32\""} +docutils = ">=0.20,<0.22" +imagesize = ">=1.3" +Jinja2 = ">=3.1" +packaging = ">=23.0" +Pygments = ">=2.17" +requests = ">=2.30.0" +snowballstemmer = ">=2.2" +sphinxcontrib-applehelp = ">=1.0.7" +sphinxcontrib-devhelp = ">=1.0.6" +sphinxcontrib-htmlhelp = ">=2.0.6" +sphinxcontrib-jsmath = ">=1.0.1" +sphinxcontrib-qthelp = ">=1.0.6" +sphinxcontrib-serializinghtml = ">=1.1.9" +tomli = {version = ">=2", markers = "python_version < \"3.11\""} + +[package.extras] +docs = ["sphinxcontrib-websupport"] +lint = ["flake8 (>=6.0)", "mypy (==1.11.1)", "pyright (==1.1.384)", "pytest (>=6.0)", "ruff (==0.6.9)", "sphinx-lint (>=0.9)", "tomli (>=2)", "types-Pillow (==10.2.0.20240822)", "types-Pygments (==2.18.0.20240506)", "types-colorama (==0.4.15.20240311)", "types-defusedxml (==0.7.0.20240218)", "types-docutils (==0.21.0.20241005)", "types-requests (==2.32.0.20240914)", "types-urllib3 (==1.26.25.14)"] +test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=8.0)", "setuptools (>=70.0)", "typing_extensions (>=4.9)"] + +[[package]] +name = "sphinx-rtd-theme" +version = "3.0.2" +description = "Read the Docs theme for Sphinx" +optional = false +python-versions = ">=3.8" +files = [ + {file = "sphinx_rtd_theme-3.0.2-py2.py3-none-any.whl", hash = "sha256:422ccc750c3a3a311de4ae327e82affdaf59eb695ba4936538552f3b00f4ee13"}, + {file = "sphinx_rtd_theme-3.0.2.tar.gz", hash = "sha256:b7457bc25dda723b20b086a670b9953c859eab60a2a03ee8eb2bb23e176e5f85"}, +] + +[package.dependencies] +docutils = ">0.18,<0.22" +sphinx = ">=6,<9" +sphinxcontrib-jquery = ">=4,<5" + +[package.extras] +dev = ["bump2version", "transifex-client", "twine", "wheel"] + +[[package]] +name = "sphinxcontrib-applehelp" +version = "2.0.0" +description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5"}, + {file = "sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1"}, +] + +[package.extras] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-devhelp" +version = "2.0.0" +description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2"}, + {file = "sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad"}, +] + +[package.extras] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-htmlhelp" +version = "2.1.0" +description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8"}, + {file = "sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9"}, +] + +[package.extras] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] +test = ["html5lib", "pytest"] + +[[package]] +name = "sphinxcontrib-jquery" +version = "4.1" +description = "Extension to include jQuery on newer Sphinx releases" +optional = false +python-versions = ">=2.7" +files = [ + {file = "sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a"}, + {file = "sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae"}, +] + +[package.dependencies] +Sphinx = ">=1.8" + +[[package]] +name = "sphinxcontrib-jsmath" +version = "1.0.1" +description = "A sphinx extension which renders display math in HTML via JavaScript" +optional = false +python-versions = ">=3.5" +files = [ + {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, + {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, +] + +[package.extras] +test = ["flake8", "mypy", "pytest"] + +[[package]] +name = "sphinxcontrib-napoleon" +version = "0.7" +description = "Sphinx \"napoleon\" extension." +optional = false +python-versions = "*" +files = [ + {file = "sphinxcontrib-napoleon-0.7.tar.gz", hash = "sha256:407382beed396e9f2d7f3043fad6afda95719204a1e1a231ac865f40abcbfcf8"}, + {file = "sphinxcontrib_napoleon-0.7-py2.py3-none-any.whl", hash = "sha256:711e41a3974bdf110a484aec4c1a556799eb0b3f3b897521a018ad7e2db13fef"}, +] + +[package.dependencies] +pockets = ">=0.3" +six = ">=1.5.2" + +[[package]] +name = "sphinxcontrib-qthelp" +version = "2.0.0" +description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb"}, + {file = "sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab"}, +] + +[package.extras] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] +test = ["defusedxml (>=0.7.1)", "pytest"] + +[[package]] +name = "sphinxcontrib-serializinghtml" +version = "2.0.0" +description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" +optional = false +python-versions = ">=3.9" +files = [ + {file = "sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331"}, + {file = "sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d"}, +] + +[package.extras] +lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] +standalone = ["Sphinx (>=5)"] +test = ["pytest"] + +[[package]] +name = "tinydb" +version = "4.8.2" +description = "TinyDB is a tiny, document oriented database optimized for your happiness :)" +optional = false +python-versions = "<4.0,>=3.8" +files = [ + {file = "tinydb-4.8.2-py3-none-any.whl", hash = "sha256:f97030ee5cbc91eeadd1d7af07ab0e48ceb04aa63d4a983adbaca4cba16e86c3"}, + {file = "tinydb-4.8.2.tar.gz", hash = "sha256:f7dfc39b8d7fda7a1ca62a8dbb449ffd340a117c1206b68c50b1a481fb95181d"}, +] + +[[package]] +name = "tomli" +version = "2.2.1" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, + {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, + {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, + {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, + {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, + {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, + {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, + {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, + {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, +] + +[[package]] +name = "trame" +version = "3.8.0" +description = "Trame, a framework to build applications in plain Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "trame-3.8.0-py3-none-any.whl", hash = "sha256:e4c9e648938ec0759f6893ba7afd095afaf0c88b4b8202157717691e135e924f"}, + {file = "trame-3.8.0.tar.gz", hash = "sha256:d084942828ac7930e05dbb765468cffe4ef8bd5170dbd48333a930140b540ccd"}, +] + +[package.dependencies] +trame-client = ">=3.4,<4" +trame-server = ">=3.2.3,<4" +wslink = ">=2.1.3" + +[package.extras] +app = ["pywebview"] +dev = ["pre-commit", "pytest", "ruff"] +jupyter = ["jupyterlab"] + +[[package]] +name = "trame-client" +version = "3.5.2" +description = "Internal client of trame" +optional = false +python-versions = ">=3.9" +files = [ + {file = "trame_client-3.5.2-py3-none-any.whl", hash = "sha256:8a950482a437c8245b66bfeb00ac5d7b880b9023f32199e28f15d04f29205ee1"}, + {file = "trame_client-3.5.2.tar.gz", hash = "sha256:e46ddb8e3d611bff90803bff176044083ed85095544557a499eae9c231abedc5"}, +] + +[package.extras] +dev = ["pre-commit", "ruff"] +test = ["Pillow", "pixelmatch", "pytest", "pytest-xprocess", "seleniumbase"] + +[[package]] +name = "trame-server" +version = "3.3.0" +description = "Internal server side implementation of trame" +optional = false +python-versions = ">=3.7" +files = [ + {file = "trame_server-3.3.0-py3-none-any.whl", hash = "sha256:7865053d82617c8d435d274ccf917594a2b1c0d90379f9e686cd662c7ee9cf1a"}, + {file = "trame_server-3.3.0.tar.gz", hash = "sha256:b0b1769d9a0eb816c69076188773cb93b0e2f83c27009d8e94d7208e63c33805"}, +] + +[package.dependencies] +more-itertools = "*" +wslink = ">=2.2.2,<3" + +[package.extras] +dev = ["pre-commit", "pytest", "pytest-asyncio", "ruff"] + +[[package]] +name = "trame-vega" +version = "2.1.1" +description = "Vega widget for trame" +optional = false +python-versions = "*" +files = [ + {file = "trame-vega-2.1.1.tar.gz", hash = "sha256:a3d82f7535a66a782262647001987dba3ad0ddc64ce21225a4cfccd351fed8fa"}, + {file = "trame_vega-2.1.1-py3-none-any.whl", hash = "sha256:044ea338f74fe83e7a5eca15fd1723b3b5f2847d5ca0ed2f0325e30d7676b6c9"}, +] + +[package.dependencies] +trame-client = "*" + +[[package]] +name = "trame-vuetify" +version = "2.8.1" +description = "Vuetify widgets for trame" +optional = false +python-versions = ">=3.9" +files = [ + {file = "trame_vuetify-2.8.1-py3-none-any.whl", hash = "sha256:47d35ab4ec6d37ad1ad8e63c0a2de7c25677f62ef383f1b1e06dd74dda8a3767"}, + {file = "trame_vuetify-2.8.1.tar.gz", hash = "sha256:281606797c29b0300ec2b3524c4396ac2b78da1a300d188d603af09eea83bfe2"}, +] + +[package.dependencies] +trame-client = ">=3.4,<4" + +[package.extras] +dev = ["pre-commit", "pytest", "ruff"] + +[[package]] +name = "tuspy" +version = "1.1.0" +description = "A Python client for the tus resumable upload protocol -> http://tus.io" +optional = false +python-versions = ">=3.5.3" +files = [ + {file = "tuspy-1.1.0-py3-none-any.whl", hash = "sha256:7fc5ac8fb25de37c96c90213f83a1ffdede7f48a471cb5a15a2f57846828a79a"}, + {file = "tuspy-1.1.0.tar.gz", hash = "sha256:156734eac5c61a046cfecd70f14119f05be92cce198eb5a1a99a664482bedb89"}, +] + +[package.dependencies] +aiohttp = ">=3.6.2" +requests = ">=2.18.4" +tinydb = ">=3.5.0" + +[package.extras] +dev = ["Sphinx (==1.7.1)", "sphinx-autobuild (==2021.3.14)", "tox (>=2.3.1)"] +test = ["aioresponses (>=0.6.2)", "coverage (>=4.2)", "parametrize (>=0.1.1)", "pytest (>=3.0.3)", "pytest-cov (>=2.3.1,<2.6)", "responses (>=0.5.1)"] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, +] + +[[package]] +name = "urllib3" +version = "2.3.0" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.9" +files = [ + {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, + {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "virtualenv" +version = "20.29.1" +description = "Virtual Python Environment builder" +optional = false +python-versions = ">=3.8" +files = [ + {file = "virtualenv-20.29.1-py3-none-any.whl", hash = "sha256:4e4cb403c0b0da39e13b46b1b2476e505cb0046b25f242bee80f62bf990b2779"}, + {file = "virtualenv-20.29.1.tar.gz", hash = "sha256:b8b8970138d32fb606192cb97f6cd4bb644fa486be9308fb9b63f81091b5dc35"}, +] + +[package.dependencies] +distlib = ">=0.3.7,<1" +filelock = ">=3.12.2,<4" +platformdirs = ">=3.9.1,<5" + +[package.extras] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] + +[[package]] +name = "wcwidth" +version = "0.2.13" +description = "Measures the displayed width of unicode strings in a terminal" +optional = false +python-versions = "*" +files = [ + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, +] + +[[package]] +name = "wslink" +version = "2.2.2" +description = "Python/JavaScript library for communicating over WebSocket" +optional = false +python-versions = "*" +files = [ + {file = "wslink-2.2.2-py3-none-any.whl", hash = "sha256:8fbab2fb89d0215b9ac3da0a20d554e6b1e05bab8b97883923e7f7ffeaef43d3"}, + {file = "wslink-2.2.2.tar.gz", hash = "sha256:f9c24c08b89d2bd9bd77951ad0c01da9c28905dda29d7397f7f72b542c496840"}, +] + +[package.dependencies] +aiohttp = "<4" +msgpack = ">=1,<2" + +[package.extras] +ssl = ["cryptography"] + +[[package]] +name = "yarl" +version = "1.18.3" +description = "Yet another URL library" +optional = false +python-versions = ">=3.9" +files = [ + {file = "yarl-1.18.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7df647e8edd71f000a5208fe6ff8c382a1de8edfbccdbbfe649d263de07d8c34"}, + {file = "yarl-1.18.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c69697d3adff5aa4f874b19c0e4ed65180ceed6318ec856ebc423aa5850d84f7"}, + {file = "yarl-1.18.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:602d98f2c2d929f8e697ed274fbadc09902c4025c5a9963bf4e9edfc3ab6f7ed"}, + {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c654d5207c78e0bd6d749f6dae1dcbbfde3403ad3a4b11f3c5544d9906969dde"}, + {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5094d9206c64181d0f6e76ebd8fb2f8fe274950a63890ee9e0ebfd58bf9d787b"}, + {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35098b24e0327fc4ebdc8ffe336cee0a87a700c24ffed13161af80124b7dc8e5"}, + {file = "yarl-1.18.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3236da9272872443f81fedc389bace88408f64f89f75d1bdb2256069a8730ccc"}, + {file = "yarl-1.18.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2c08cc9b16f4f4bc522771d96734c7901e7ebef70c6c5c35dd0f10845270bcd"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80316a8bd5109320d38eef8833ccf5f89608c9107d02d2a7f985f98ed6876990"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:c1e1cc06da1491e6734f0ea1e6294ce00792193c463350626571c287c9a704db"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fea09ca13323376a2fdfb353a5fa2e59f90cd18d7ca4eaa1fd31f0a8b4f91e62"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:e3b9fd71836999aad54084906f8663dffcd2a7fb5cdafd6c37713b2e72be1760"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:757e81cae69244257d125ff31663249b3013b5dc0a8520d73694aed497fb195b"}, + {file = "yarl-1.18.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b1771de9944d875f1b98a745bc547e684b863abf8f8287da8466cf470ef52690"}, + {file = "yarl-1.18.3-cp310-cp310-win32.whl", hash = "sha256:8874027a53e3aea659a6d62751800cf6e63314c160fd607489ba5c2edd753cf6"}, + {file = "yarl-1.18.3-cp310-cp310-win_amd64.whl", hash = "sha256:93b2e109287f93db79210f86deb6b9bbb81ac32fc97236b16f7433db7fc437d8"}, + {file = "yarl-1.18.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8503ad47387b8ebd39cbbbdf0bf113e17330ffd339ba1144074da24c545f0069"}, + {file = "yarl-1.18.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:02ddb6756f8f4517a2d5e99d8b2f272488e18dd0bfbc802f31c16c6c20f22193"}, + {file = "yarl-1.18.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:67a283dd2882ac98cc6318384f565bffc751ab564605959df4752d42483ad889"}, + {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d980e0325b6eddc81331d3f4551e2a333999fb176fd153e075c6d1c2530aa8a8"}, + {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b643562c12680b01e17239be267bc306bbc6aac1f34f6444d1bded0c5ce438ca"}, + {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c017a3b6df3a1bd45b9fa49a0f54005e53fbcad16633870104b66fa1a30a29d8"}, + {file = "yarl-1.18.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75674776d96d7b851b6498f17824ba17849d790a44d282929c42dbb77d4f17ae"}, + {file = "yarl-1.18.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccaa3a4b521b780a7e771cc336a2dba389a0861592bbce09a476190bb0c8b4b3"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2d06d3005e668744e11ed80812e61efd77d70bb7f03e33c1598c301eea20efbb"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9d41beda9dc97ca9ab0b9888cb71f7539124bc05df02c0cff6e5acc5a19dcc6e"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ba23302c0c61a9999784e73809427c9dbedd79f66a13d84ad1b1943802eaaf59"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:6748dbf9bfa5ba1afcc7556b71cda0d7ce5f24768043a02a58846e4a443d808d"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0b0cad37311123211dc91eadcb322ef4d4a66008d3e1bdc404808992260e1a0e"}, + {file = "yarl-1.18.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0fb2171a4486bb075316ee754c6d8382ea6eb8b399d4ec62fde2b591f879778a"}, + {file = "yarl-1.18.3-cp311-cp311-win32.whl", hash = "sha256:61b1a825a13bef4a5f10b1885245377d3cd0bf87cba068e1d9a88c2ae36880e1"}, + {file = "yarl-1.18.3-cp311-cp311-win_amd64.whl", hash = "sha256:b9d60031cf568c627d028239693fd718025719c02c9f55df0a53e587aab951b5"}, + {file = "yarl-1.18.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1dd4bdd05407ced96fed3d7f25dbbf88d2ffb045a0db60dbc247f5b3c5c25d50"}, + {file = "yarl-1.18.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7c33dd1931a95e5d9a772d0ac5e44cac8957eaf58e3c8da8c1414de7dd27c576"}, + {file = "yarl-1.18.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25b411eddcfd56a2f0cd6a384e9f4f7aa3efee14b188de13048c25b5e91f1640"}, + {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:436c4fc0a4d66b2badc6c5fc5ef4e47bb10e4fd9bf0c79524ac719a01f3607c2"}, + {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e35ef8683211db69ffe129a25d5634319a677570ab6b2eba4afa860f54eeaf75"}, + {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84b2deecba4a3f1a398df819151eb72d29bfeb3b69abb145a00ddc8d30094512"}, + {file = "yarl-1.18.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e5a1fea0fd4f5bfa7440a47eff01d9822a65b4488f7cff83155a0f31a2ecba"}, + {file = "yarl-1.18.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0e883008013c0e4aef84dcfe2a0b172c4d23c2669412cf5b3371003941f72bb"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5a3f356548e34a70b0172d8890006c37be92995f62d95a07b4a42e90fba54272"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ccd17349166b1bee6e529b4add61727d3f55edb7babbe4069b5764c9587a8cc6"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b958ddd075ddba5b09bb0be8a6d9906d2ce933aee81100db289badbeb966f54e"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d79f7d9aabd6011004e33b22bc13056a3e3fb54794d138af57f5ee9d9032cb"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4891ed92157e5430874dad17b15eb1fda57627710756c27422200c52d8a4e393"}, + {file = "yarl-1.18.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ce1af883b94304f493698b00d0f006d56aea98aeb49d75ec7d98cd4a777e9285"}, + {file = "yarl-1.18.3-cp312-cp312-win32.whl", hash = "sha256:f91c4803173928a25e1a55b943c81f55b8872f0018be83e3ad4938adffb77dd2"}, + {file = "yarl-1.18.3-cp312-cp312-win_amd64.whl", hash = "sha256:7e2ee16578af3b52ac2f334c3b1f92262f47e02cc6193c598502bd46f5cd1477"}, + {file = "yarl-1.18.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:90adb47ad432332d4f0bc28f83a5963f426ce9a1a8809f5e584e704b82685dcb"}, + {file = "yarl-1.18.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:913829534200eb0f789d45349e55203a091f45c37a2674678744ae52fae23efa"}, + {file = "yarl-1.18.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ef9f7768395923c3039055c14334ba4d926f3baf7b776c923c93d80195624782"}, + {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a19f62ff30117e706ebc9090b8ecc79aeb77d0b1f5ec10d2d27a12bc9f66d0"}, + {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e17c9361d46a4d5addf777c6dd5eab0715a7684c2f11b88c67ac37edfba6c482"}, + {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a74a13a4c857a84a845505fd2d68e54826a2cd01935a96efb1e9d86c728e186"}, + {file = "yarl-1.18.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f7ce59d6ee7741af71d82020346af364949314ed3d87553763a2df1829cc58"}, + {file = "yarl-1.18.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f52a265001d830bc425f82ca9eabda94a64a4d753b07d623a9f2863fde532b53"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:82123d0c954dc58db301f5021a01854a85bf1f3bb7d12ae0c01afc414a882ca2"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2ec9bbba33b2d00999af4631a3397d1fd78290c48e2a3e52d8dd72db3a067ac8"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:fbd6748e8ab9b41171bb95c6142faf068f5ef1511935a0aa07025438dd9a9bc1"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:877d209b6aebeb5b16c42cbb377f5f94d9e556626b1bfff66d7b0d115be88d0a"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b464c4ab4bfcb41e3bfd3f1c26600d038376c2de3297760dfe064d2cb7ea8e10"}, + {file = "yarl-1.18.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8d39d351e7faf01483cc7ff7c0213c412e38e5a340238826be7e0e4da450fdc8"}, + {file = "yarl-1.18.3-cp313-cp313-win32.whl", hash = "sha256:61ee62ead9b68b9123ec24bc866cbef297dd266175d53296e2db5e7f797f902d"}, + {file = "yarl-1.18.3-cp313-cp313-win_amd64.whl", hash = "sha256:578e281c393af575879990861823ef19d66e2b1d0098414855dd367e234f5b3c"}, + {file = "yarl-1.18.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:61e5e68cb65ac8f547f6b5ef933f510134a6bf31bb178be428994b0cb46c2a04"}, + {file = "yarl-1.18.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fe57328fbc1bfd0bd0514470ac692630f3901c0ee39052ae47acd1d90a436719"}, + {file = "yarl-1.18.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a440a2a624683108a1b454705ecd7afc1c3438a08e890a1513d468671d90a04e"}, + {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c7907c8548bcd6ab860e5f513e727c53b4a714f459b084f6580b49fa1b9cee"}, + {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4f6450109834af88cb4cc5ecddfc5380ebb9c228695afc11915a0bf82116789"}, + {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9ca04806f3be0ac6d558fffc2fdf8fcef767e0489d2684a21912cc4ed0cd1b8"}, + {file = "yarl-1.18.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77a6e85b90a7641d2e07184df5557132a337f136250caafc9ccaa4a2a998ca2c"}, + {file = "yarl-1.18.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6333c5a377c8e2f5fae35e7b8f145c617b02c939d04110c76f29ee3676b5f9a5"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0b3c92fa08759dbf12b3a59579a4096ba9af8dd344d9a813fc7f5070d86bbab1"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4ac515b860c36becb81bb84b667466885096b5fc85596948548b667da3bf9f24"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:045b8482ce9483ada4f3f23b3774f4e1bf4f23a2d5c912ed5170f68efb053318"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:a4bb030cf46a434ec0225bddbebd4b89e6471814ca851abb8696170adb163985"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:54d6921f07555713b9300bee9c50fb46e57e2e639027089b1d795ecd9f7fa910"}, + {file = "yarl-1.18.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1d407181cfa6e70077df3377938c08012d18893f9f20e92f7d2f314a437c30b1"}, + {file = "yarl-1.18.3-cp39-cp39-win32.whl", hash = "sha256:ac36703a585e0929b032fbaab0707b75dc12703766d0b53486eabd5139ebadd5"}, + {file = "yarl-1.18.3-cp39-cp39-win_amd64.whl", hash = "sha256:ba87babd629f8af77f557b61e49e7c7cac36f22f871156b91e10a6e9d4f829e9"}, + {file = "yarl-1.18.3-py3-none-any.whl", hash = "sha256:b57f4f58099328dfb26c6a771d09fb20dbbae81d20cfb66141251ea063bd101b"}, + {file = "yarl-1.18.3.tar.gz", hash = "sha256:ac1801c45cbf77b6c99242eeff4fffb5e4e73a800b5c4ad4fc0be5def634d2e1"}, +] + +[package.dependencies] +idna = ">=2.0" +multidict = ">=4.0" +propcache = ">=0.2.0" + +[metadata] +lock-version = "2.0" +python-versions = "^3.10" +content-hash = "5a4cbc0db131ca92dbfbfa620080878ba0b5276d9ac85c0b77f3a260b574c7ed" diff --git a/code/episode_6/pyproject.toml b/code/episode_6/pyproject.toml new file mode 100755 index 00000000..13d8b571 --- /dev/null +++ b/code/episode_6/pyproject.toml @@ -0,0 +1,91 @@ +[tool.poetry] +name = "nova-tutorial" +version = "0.1.0" +description = "Nova Tutorial Project" +authors = [] +readme = "README.md" +license = "MIT" +keywords = ["NDIP", "NOVA", "python"] + +packages = [ + { include = "nova_tutorial", from = "src" } +] + + +[tool.poetry.dependencies] +python = "^3.10" +nova-trame = "*" +nova-galaxy = "^0.4.0" + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" + + +[tool.pytest.ini_options] +testpaths = ["tests"] +python_files = ["test*.py"] +norecursedirs = [".git", "tmp*", "_tmp*", "__pycache__"] + +[tool.ruff] +line-length = 120 + +[tool.ruff.lint] +select = [ + "E", # pycodestyle errors + "W", # pycodestyle warnings + "F", # pyflakes + "I", # isort + "B", # flake8-bugbear + "C4", # flake8-comprehensions + "N", # PEP8 naming convetions + "D" # pydocstyle +] +ignore = [ + "C901", # too complex + "D102", # Missing docstring in public function + "D103", # Missing docstring in public method + "D401" # imperative mood + +] + +[tool.ruff.lint.extend-per-file-ignores] +'__init__.py' = ['D104'] # Missing docstring in public package + + + +[tool.ruff.lint.pydocstyle] +convention = "numpy" + +[tool.mypy] +ignore_missing_imports = false +check_untyped_defs = true +disallow_untyped_defs = true +ignore_errors = false +disable_error_code = ["import-untyped"] +# You can exclude files with the following (ONLY WHEN NECESSARY) +# exclude = ["path/to/file"] + +[tool.coverage.report] +omit = [ + '*__init__*', # __init__ files should just re-export other classes and functions +] + +[tool.coverage.run] +command_line = "-m pytest --junit-xml=reports/junit.xml" +data_file = "reports/.coverage" + +[tool.poetry.dev-dependencies] +mypy = ">=1.10.0" +pre-commit = ">=2.20.0" +coverage = ">=6.4.3" +pytest = "*" +ruff = ">=0.6.2" +copier=">=9.3" +sphinx = "*" +sphinx-rtd-theme = "*" +sphinxcontrib-napoleon ="*" +tomli = "*" + +[tool.poetry.scripts] +app = "nova_tutorial.app:main" diff --git a/code/episode_6/src/nova_tutorial/__init__.py b/code/episode_6/src/nova_tutorial/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/code/episode_6/src/nova_tutorial/app/__init__.py b/code/episode_6/src/nova_tutorial/app/__init__.py new file mode 100755 index 00000000..2779e152 --- /dev/null +++ b/code/episode_6/src/nova_tutorial/app/__init__.py @@ -0,0 +1,5 @@ +from .main import main + +__all__ = [ + "main", +] diff --git a/code/episode_6/src/nova_tutorial/app/__main__.py b/code/episode_6/src/nova_tutorial/app/__main__.py new file mode 100755 index 00000000..d87b5a1f --- /dev/null +++ b/code/episode_6/src/nova_tutorial/app/__main__.py @@ -0,0 +1,5 @@ +"""Entry point for the Package.""" + +from . import main + +main() diff --git a/code/episode_6/src/nova_tutorial/app/main.py b/code/episode_6/src/nova_tutorial/app/main.py new file mode 100755 index 00000000..add49c11 --- /dev/null +++ b/code/episode_6/src/nova_tutorial/app/main.py @@ -0,0 +1,18 @@ +"""Main Application.""" + +import sys +from .models.fractal import Fractal + + +def main() -> None: + kwargs = {} + from .views.main import MainApp + + app = MainApp() + for arg in sys.argv[2:]: + try: + key, value = arg.split("=") + kwargs[key] = int(value) + except Exception: + pass + app.server.start(**kwargs) diff --git a/code/episode_6/src/nova_tutorial/app/models/__init__.py b/code/episode_6/src/nova_tutorial/app/models/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/code/episode_6/src/nova_tutorial/app/models/fractal.py b/code/episode_6/src/nova_tutorial/app/models/fractal.py new file mode 100755 index 00000000..7c5a5e5c --- /dev/null +++ b/code/episode_6/src/nova_tutorial/app/models/fractal.py @@ -0,0 +1,30 @@ +import os +from pydantic import BaseModel, Field +from nova.galaxy import Nova, Parameters, Tool + + +class Fractal(BaseModel): + fractal_type: str = Field(default="mandelbrot", description="Type of fractal to generate") + galaxy_url: str = Field(default_factory=lambda: os.getenv("GALAXY_URL"), description="NDIP Galaxy URL") + galaxy_key: str = Field(default_factory=lambda: os.getenv("GALAXY_API_KEY"), description="NDIP Galaxy API Key") + + def set_fractal_type(self, fractal_type: str): + self.fractal_type = fractal_type + + def run_fractal_tool(self): + """Runs the fractal tool with the current fractal type.""" + if not self.galaxy_url or not self.galaxy_key: + raise Exception( + "You must specify GALAXY_URL and GALAXY_API_KEY as environment variables." + ) + + nova = Nova(galaxy_url=self.galaxy_url, galaxy_key=self.galaxy_key) + tool = Tool(id="neutrons_fractal") + params = Parameters() + + with nova.connect() as galaxy_connection: + data_store = galaxy_connection.create_data_store(name="fractal_store") + data_store.persist() + tool.run(data_store, params) + + print("Fractal tool finished successfully.") \ No newline at end of file diff --git a/code/episode_6/src/nova_tutorial/app/models/main_model.py b/code/episode_6/src/nova_tutorial/app/models/main_model.py new file mode 100755 index 00000000..2ff8cbb8 --- /dev/null +++ b/code/episode_6/src/nova_tutorial/app/models/main_model.py @@ -0,0 +1,28 @@ +"""Module for the main model.""" + +from pydantic import BaseModel, Field +from .fractal import Fractal +from .sample_tab_models import SampleTab1Model, SampleTab2Model + + +class MainModel(BaseModel): + """ + A model class. + + This class uses Pydantic (https://docs.pydantic.dev/latest/), + which allows for defining data validation rules, + titles, descriptions, and examples that can be used in GUI elements or + other interfaces for improved clarity and usability. + """ + + username: str = Field( + default="test_name", + min_length=1, + title="User Name", + description="Please provide the name of the user", + examples=["user"], + ) + password: str = Field(default="test_password", title="User Password") + fractal: Fractal = Field(default_factory=Fractal) + sample_tab1: SampleTab1Model = Field(default_factory=SampleTab1Model) + sample_tab2: SampleTab2Model = Field(default_factory=SampleTab2Model) \ No newline at end of file diff --git a/code/episode_6/src/nova_tutorial/app/models/sample_tab_models.py b/code/episode_6/src/nova_tutorial/app/models/sample_tab_models.py new file mode 100755 index 00000000..134a72ae --- /dev/null +++ b/code/episode_6/src/nova_tutorial/app/models/sample_tab_models.py @@ -0,0 +1,19 @@ +from pydantic import BaseModel, Field + +class SampleTab1Model(BaseModel): + """Data model for Sample Tab 1.""" + username: str = Field(default="test_user", min_length=3, title="Username", description="Your username.") + firstName: str = Field(default="", title="First Name") + lastName: str = Field(default="", title="Last Name") + rememberMe: bool = Field(default=False, title="Remember Me") + enableNotifications: bool = Field(default=True, title="Enable Notifications") + +class SampleTab2Model(BaseModel): + """Data model for Sample Tab 2.""" + password: str = Field(default="password", min_length=8, title="Password", description="Your password (minimum 8 characters).") + volume: int = Field(default=50, ge=0, le=100, title="Volume", description="Audio volume (0-100).") + email: str = Field(default="test@example.com", pattern=r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$", title="Email", description="Your email address.") + phoneNumber: str = Field(default="", title="Phone Number", description="Your phone number.") + address: str = Field(default="", title="Address", description="Your street address.") + comments: str = Field(default="", title="Comments", description="Any comments you want to leave.") + selectAnOption: str = Field(default="Option 1", title="Selection Option", description="The selected option.") \ No newline at end of file diff --git a/code/episode_6/src/nova_tutorial/app/mvvm_factory.py b/code/episode_6/src/nova_tutorial/app/mvvm_factory.py new file mode 100755 index 00000000..3b56e2b6 --- /dev/null +++ b/code/episode_6/src/nova_tutorial/app/mvvm_factory.py @@ -0,0 +1,15 @@ +"""Module for the factory that creates viewmodels used in the application.""" + +from nova.mvvm.interface import BindingInterface + +from .models.main_model import MainModel +from .view_models.main import MainViewModel + + +def create_viewmodels(binding: BindingInterface) -> dict: + model = MainModel() + vm: dict = {} + vm["main"] = MainViewModel(model, binding) + print(vm["main"].model.fractal.galaxy_key) + + return vm diff --git a/code/episode_6/src/nova_tutorial/app/view_models/__init__.py b/code/episode_6/src/nova_tutorial/app/view_models/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/code/episode_6/src/nova_tutorial/app/view_models/main.py b/code/episode_6/src/nova_tutorial/app/view_models/main.py new file mode 100755 index 00000000..1bceca83 --- /dev/null +++ b/code/episode_6/src/nova_tutorial/app/view_models/main.py @@ -0,0 +1,33 @@ +"""Module for the main ViewModel.""" + +from typing import Any, Dict + +from nova.mvvm.interface import BindingInterface + +from ..models.main_model import MainModel + + +class MainViewModel: + """Viewmodel class, used to create data<->view binding and react on changes from GUI.""" + + def __init__(self, model: MainModel, binding: BindingInterface): + self.model = model + + # here we create a bind that connects ViewModel with View. It returns a communicator object, + # that allows to update View from ViewModel (by calling update_view). + # self.model will be updated automatically on changes of connected fields in View, + # but one also can provide a callback function if they want to react to those events + # and/or process errors. + self.config_bind = binding.new_bind(self.model, callback_after_update=self.change_callback) + + def change_callback(self, results: Dict[str, Any]) -> None: + if results["error"]: + print(f"error in fields {results['errored']}, model not changed") + else: + print(f"model fields updated: {results['updated']}") + + def update_view(self) -> None: + self.config_bind.update_in_view(self.model) + + def run_fractal(self) -> None: + self.model.fractal.run_fractal_tool() diff --git a/code/episode_6/src/nova_tutorial/app/views/__init__.py b/code/episode_6/src/nova_tutorial/app/views/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/code/episode_6/src/nova_tutorial/app/views/fractal_tab.py b/code/episode_6/src/nova_tutorial/app/views/fractal_tab.py new file mode 100755 index 00000000..465deb9b --- /dev/null +++ b/code/episode_6/src/nova_tutorial/app/views/fractal_tab.py @@ -0,0 +1,25 @@ +from trame.widgets import vuetify3 as vuetify + +from nova.trame.view.components import InputField +from nova_tutorial.app.view_models.main import MainViewModel +from nova.trame.view import layouts + +class FractalTab: + + def __init__(self, view_model: MainViewModel) -> None: + self.view_model = view_model + self.create_ui() + + def create_ui(self) -> None: + with layouts.VBoxLayout(classes="ma-4"): + with vuetify.VCard(classes="pa-4"): + InputField( + v_model=("config.fractal.fractal_type", "mandelbrot"), + label="Fractal Type", + ) + vuetify.VBtn( + "Run Fractal", + click=self.view_model.run_fractal, + classes="mt-2", + ) + vuetify.VCardText(v_text="config.status_message", classes="mt-2") \ No newline at end of file diff --git a/code/episode_6/src/nova_tutorial/app/views/main.py b/code/episode_6/src/nova_tutorial/app/views/main.py new file mode 100755 index 00000000..2000c009 --- /dev/null +++ b/code/episode_6/src/nova_tutorial/app/views/main.py @@ -0,0 +1,45 @@ +"""Main file.""" + +import logging + +from nova.mvvm.trame_binding import TrameBinding +from nova.trame import ThemedApp +from trame.app import get_server + +from ..mvvm_factory import create_viewmodels +from ..view_models.main import MainViewModel +from .tab_content_panel import TabContentPanel +from .tabs_panel import TabsPanel + + +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) + + +class MainApp(ThemedApp): + """Main application view class. Calls rendering of nested UI elements.""" + + def __init__(self) -> None: + super().__init__() + self.server = get_server(None, client_type="vue3") + binding = TrameBinding(self.server.state) + self.server.state.trame__title = "Nova Tutorial" + self.view_models = create_viewmodels(binding) + self.view_model: MainViewModel = self.view_models["main"] + self.create_ui() + + def create_ui(self) -> None: + self.state.trame__title = "Nova Tutorial" + + with super().create_ui() as layout: + layout.toolbar_title.set_text("Nova Tutorial") + with layout.pre_content: + TabsPanel(self.view_models["main"]) + with layout.content: + TabContentPanel( + self.server, + self.view_models["main"], + ) + with layout.post_content: + pass + return layout diff --git a/code/episode_6/src/nova_tutorial/app/views/sample_tab_1.py b/code/episode_6/src/nova_tutorial/app/views/sample_tab_1.py new file mode 100755 index 00000000..c298c7f4 --- /dev/null +++ b/code/episode_6/src/nova_tutorial/app/views/sample_tab_1.py @@ -0,0 +1,20 @@ +"""Module for the Sample Tab 1.""" + +from nova.trame.view.components import InputField +from nova.trame.view import layouts +from trame.widgets import vuetify3 as vuetify + +class SampleTab1: + """Sample tab 1 view class. Renders text input for username.""" + + def __init__(self) -> None: + self.create_ui() + + def create_ui(self) -> None: + with layouts.VBoxLayout(classes="ma-2"): # Overall vertical layout + InputField(v_model="config.sample_tab1.username", label="Username") + with layouts.HBoxLayout(): # Horizontal layout for first and last name + InputField(v_model="config.sample_tab1.firstName", label="First Name") + InputField(v_model="config.sample_tab1.lastName", label="Last Name") + vuetify.VCheckbox(label="Remember me", v_model="config.sample_tab1.rememberMe") + vuetify.VSwitch(label="Enable Notifications", v_model="config.sample_tab1.enableNotifications") \ No newline at end of file diff --git a/code/episode_6/src/nova_tutorial/app/views/sample_tab_2.py b/code/episode_6/src/nova_tutorial/app/views/sample_tab_2.py new file mode 100755 index 00000000..e1289716 --- /dev/null +++ b/code/episode_6/src/nova_tutorial/app/views/sample_tab_2.py @@ -0,0 +1,25 @@ +"""Module for the Sample Tab 2.""" + +from nova.trame.view.components import InputField +from nova.trame.view import layouts +from trame.widgets import vuetify3 as vuetify + + +class SampleTab2: + """Sample tab 2 view class. Renders text input for user password.""" + + def __init__(self) -> None: + self.create_ui() + + def create_ui(self) -> None: + with layouts.VBoxLayout(classes="ma-2"): # Parent vertical layout + with layouts.HBoxLayout(): # Horizontal layout for email and phone + InputField(v_model="config.sample_tab2.email", label="Email", type="email") + InputField(v_model="config.sample_tab2.phoneNumber", label="Phone Number", type="tel") + with layouts.GridLayout(columns=2): # Two column grid layout for remaining fields + vuetify.VSlider(label="Volume") + with layouts.VBoxLayout(classes="ma-2"): # Overall vertical layout + vuetify.VLabel("Item 1", classes="bg-primary h-100 w-100 justify-center") + vuetify.VLabel("Item 2", classes="bg-secondary h-100 w-100 justify-center") + InputField(v_model="config.address", label="Address") + InputField(v_model="config.comments", label="Comments") \ No newline at end of file diff --git a/code/episode_6/src/nova_tutorial/app/views/tab_content_panel.py b/code/episode_6/src/nova_tutorial/app/views/tab_content_panel.py new file mode 100755 index 00000000..ab67bd63 --- /dev/null +++ b/code/episode_6/src/nova_tutorial/app/views/tab_content_panel.py @@ -0,0 +1,31 @@ +"""Module for the Tab Content panel.""" + +from trame.widgets import vuetify3 as vuetify +from trame_server import Server + +from ..view_models.main import MainViewModel +from .sample_tab_1 import SampleTab1 +from .sample_tab_2 import SampleTab2 +from .fractal_tab import FractalTab # Import the FractalTab + +class TabContentPanel: + """View class to render content for a selected tab.""" + + def __init__(self, server: Server, view_model: MainViewModel) -> None: + self.view_model = view_model + self.server = server + self.ctrl = server.controller + self.create_ui() + + def create_ui(self) -> None: + with vuetify.VForm(ref="form") as self.f: + with vuetify.VContainer(classes="pa-0", fluid=True): + with vuetify.VCard(): + with vuetify.VWindow(v_model="active_tab"): + with vuetify.VWindowItem(value=1): + FractalTab(self.view_model) # Add FractalTab + with vuetify.VWindowItem(value=2): + SampleTab1() + with vuetify.VWindowItem(value=3): + SampleTab2() + diff --git a/code/episode_6/src/nova_tutorial/app/views/tabs_panel.py b/code/episode_6/src/nova_tutorial/app/views/tabs_panel.py new file mode 100755 index 00000000..ac1f6ab3 --- /dev/null +++ b/code/episode_6/src/nova_tutorial/app/views/tabs_panel.py @@ -0,0 +1,21 @@ +"""Module for the Tab panel.""" + +from trame.widgets import vuetify3 as vuetify + +from ..view_models.main import MainViewModel + + +class TabsPanel: + """View class to render tabs.""" + + def __init__(self, view_model: MainViewModel): + self.view_model = view_model + self.view_model.config_bind.connect("config") + #self.view_model.fractal_bind.connect("fractal") + self.create_ui() + + def create_ui(self) -> None: + with vuetify.VTabs(v_model=("active_tab", 0), classes="pl-5"): + vuetify.VTab("Fractal", value=1) # Add Fractal Tab + vuetify.VTab("Sample Tab 1", value=2) + vuetify.VTab("Sample Tab 2", value=3) diff --git a/code/episode_7/README.md b/code/episode_7/README.md old mode 100644 new mode 100755 diff --git a/code/episode_7/pyproject.toml b/code/episode_7/pyproject.toml old mode 100644 new mode 100755 diff --git a/code/episode_7/src/nova_tutorial/__init__.py b/code/episode_7/src/nova_tutorial/__init__.py old mode 100644 new mode 100755 diff --git a/code/episode_7/src/nova_tutorial/__main__.py b/code/episode_7/src/nova_tutorial/__main__.py old mode 100644 new mode 100755 diff --git a/code/episode_7/src/nova_tutorial/main.py b/code/episode_7/src/nova_tutorial/main.py old mode 100644 new mode 100755 diff --git a/code/episode_7/src/nova_tutorial/models/plotly.py b/code/episode_7/src/nova_tutorial/models/plotly.py old mode 100644 new mode 100755 diff --git a/code/episode_7/src/nova_tutorial/models/pyvista.py b/code/episode_7/src/nova_tutorial/models/pyvista.py old mode 100644 new mode 100755 diff --git a/code/episode_7/src/nova_tutorial/models/vtk.py b/code/episode_7/src/nova_tutorial/models/vtk.py old mode 100644 new mode 100755 diff --git a/code/episode_7/src/nova_tutorial/view_models/visualization.py b/code/episode_7/src/nova_tutorial/view_models/visualization.py old mode 100644 new mode 100755 diff --git a/code/episode_7/src/nova_tutorial/views/plotly.py b/code/episode_7/src/nova_tutorial/views/plotly.py old mode 100644 new mode 100755 diff --git a/code/episode_7/src/nova_tutorial/views/pyvista.py b/code/episode_7/src/nova_tutorial/views/pyvista.py old mode 100644 new mode 100755 diff --git a/code/episode_7/src/nova_tutorial/views/visualization.py b/code/episode_7/src/nova_tutorial/views/visualization.py old mode 100644 new mode 100755 diff --git a/code/episode_7/src/nova_tutorial/views/vtk.py b/code/episode_7/src/nova_tutorial/views/vtk.py old mode 100644 new mode 100755 diff --git a/episodes/01-Introduction.md b/episodes/01-Introduction.md index 4ac54f1c..0705b56f 100755 --- a/episodes/01-Introduction.md +++ b/episodes/01-Introduction.md @@ -14,7 +14,7 @@ The Neutron Data Interpretation Platform (NDIP) is a workflow management system ## What is NOVA? -NOVA is a platform that aims to simplify the development of applications that interact with NDIP. It consists of three core libraries: +NOVA is a framework that aims to simplify the development of applications that interact with NDIP. It consists of three core libraries: * **`nova-galaxy`**: This library simplifies interaction with the NDIP platform's APIs. It allows developers to easily connect to NDIP, **submit jobs, handle parameters, and monitor job progress.** @@ -29,7 +29,7 @@ NOTE: THIS WILL BE REPLACED WITH AN ACTUAL DIAGRAM ONCE CHANGES SETTLE User Application (Built with NOVA) | (Leverages) V -NOVA Platform +NOVA Framework +-----------------+ +-----------------+ +-----------------+ | nova-galaxy |---| nova-trame |---| nova-mvvm | (NOVA Libraries) +-----------------+ +-----------------+ +-----------------+ @@ -58,6 +58,12 @@ All of the code examples used in this tutorial are available in the `code` direc Each episode's subdirectory contains a complete, self-contained Python project that can be run independently using Poetry. This allows you to easily explore the code examples, run them, and modify them as you go through the tutorial. +::::::::::::::::::::::::::::::::::::::::: callout + +Poetry is a tool for dependency management and packaging in Python. It allows you to declare the libraries your project depends on, and it will manage the installation and updating of those dependencies. Poetry also helps you create reproducible builds by locking the versions of your dependencies. It also makes it easier to publish and share your Python projects. + +:::::::::::::::::::::::::::::::::::::::::::::::::: + To run the code for a specific episode, navigate to the episode's directory in your terminal and use the following commands: ```bash @@ -68,19 +74,6 @@ poetry run app # Run the application for this episode This structure ensures that each code example is isolated and runnable, making it easier for you to follow along with the tutorial and experiment with the code. -## Prerequisites - -Before starting this tutorial, you will need to have the following: - -* **Basic Python Knowledge:** A basic understanding of Python programming concepts is required. -* **Python Installation:** You must have Python 3.8 or higher installed on your system. -* **Python's `copier` Library** We will be using this library to copy generate a starting application from a template. Can likely be installed using `pip install copier` -* **Poetry:** The code samples provided in this tutorial leverage poetry for dependency management. -* **NDIP Access:** You should have access to a working NDIP system. (Specific details about NDIP access will need to be provided by the instructor.) -* **NOVA Libraries:** The NOVA libraries will be used extensively throughout this tutorial. Poetry should manage these dependencies for you could also checkout the git repositories and look at the documentaion on readthedocs. -* **A Text Editor or IDE:** You will need a text editor or IDE (such as VS Code, Sublime Text, or Atom) for writing code. -* **Familiarity with the Command Line:** You will need to be comfortable using the command line or terminal. - ## References * **Nova Documentation**: https://nova-application-development.readthedocs.io/en/latest/ diff --git a/episodes/02-Copy-Template.md b/episodes/02-Copy-Template.md index 655da658..644c8275 100755 --- a/episodes/02-Copy-Template.md +++ b/episodes/02-Copy-Template.md @@ -8,20 +8,18 @@ exercises: 3 As mentioned in the introduction, all code examples in this tutorial are based on a template application. In this episode, we will create this starting point by cloning a template using the `copier` library. This template provides a basic project structure and pre-configured files that will help us get started quickly with our NOVA project, saving us from setting up everything from scratch. -## Installing Copier +::::::::::::::::::::::::::::::::::::::::: callout +The setup section detailed the prerequisites required for the tutorial. One of those prerequisites is copier which will be used to clone a template application. If you've not already insalled copier and other dependencies, please follow the instructions in the "Setup" section. -First, you will need to make sure that copier is installed. You can install it by running the following command (assuming you have pip installed): +:::::::::::::::::::::::::::::::::::::::::::::::::: -```bash -pip install copier -``` ## Cloning the Template To clone the template application, run the following command: ```bash -copier copy https://code.ornl.gov/ndip/project-templates/python nova_tutorial +copier copy https://code.ornl.gov/ndip/project-templates/python.git nova_tutorial ``` This command will download the template to a directory called `nova_tutorial`. Copier will prompt you with a series of questions. Please answer the questions as follows: @@ -29,15 +27,31 @@ This command will download the template to a directory called `nova_tutorial`. C * **What is the name of your project?** > Enter `Nova Tutorial` + * **What is your python package name?** > Press enter to accept the default. -* **Do you want to install Mantid for your project?** +* **Do you want to install Mantid for your project?** + > Enter `no` -* **Publish to pypi?** +* ** Are you developing a GUI application using MVVM pattern?** + + > Enter `yes` + +* ** Which library will you use?** + + > Select `Trame` + +* **Do you want a template with multiple tabs? + + > Enter `yes` + +* **Publish to pypi?** + > Enter `no` + * **Publish documentation to readthedocs.io?** > Enter `no` @@ -58,11 +72,62 @@ The template creates a basic project structure to help get you started quickly. In the following sections, we will start adding code to this structure to build our NDIP job submission tool. -## Exercises +::::::::::::::::::::::::::::::::::::::: challenge + +## **Run the Initial Tests** + +The template comes with a basic test suite using `pytest`. Navigate to the `nova_tutorial` directory in your terminal and run the tests using the command `pytest`. Examine the output. Where are the tests located? What does a successful test look like? Modify the test to intentionally fail. Observe the error message. Remember to revert the changes so that the tests pass again.. + +::::::::::::::: solution + + * **Where are the tests located?** The tests are typically located in the `tests/` directory, often mirroring the structure of the `src/` directory (e.g., `tests/nova_tutorial/test_module.py`). + * **What does a successful test look like?** A successful test will usually result in output from `pytest` that indicates all tests have passed (e.g., "100% passed"). There will be no error messages. The exact output varies slightly depending on the number of tests and the pytest configuration. + * **Modify the test to intentionally fail:** To make a test fail, you can change an assertion to be incorrect. For example, if a test asserts that `1 + 1 == 2`, change it to `1 + 1 == 3`. + * **Observe the error message:** The error message will indicate which assertion failed and provide information about the expected and actual values. For example, you might see something like: `AssertionError: assert 2 == 3`. +::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::: + +::::::::::::::::::::::::::::::::::::::: challenge + +## **Explore Pre-Commit Hooks** + +The template includes pre-commit hooks for code formatting and linting. + * **Inspect the Configuration:** Open the `.pre-commit-config.yaml` file. What tools are configured to run? What does each tool do (e.g., `black`, `flake8`)? + * **Try It Out:** Make a deliberate formatting error in one of the Python files (e.g., add extra spaces, make a line too long). Now, run `pre-commit run`. Observe how the pre-commit hooks automatically fix the formatting issues. Commit your changes. Pre-commit hooks can also be automatically run upon git commit. + +::::::::::::::: solution + + * **What tools are configured to run?** Open `.pre-commit-config.yaml` to see the list. Common tools include: + * `black`: Auto-formats Python code to adhere to a consistent style. + * `flake8`: Lints Python code, checking for style errors and potential bugs. + * `isort`: Sorts Python imports alphabetically and separates them into sections. + * `end-of-file-fixer`: Ensures that files end with a newline. + * `trailing-whitespace-fixer`: Removes trailing whitespace from lines. + * **Observe how the pre-commit hooks automatically fix the formatting issues:** When you run `pre-commit run`, the configured tools will automatically modify the files to correct formatting errors. The output will show which tools were run and which files were modified. You'll need to `git add` the modified files before committing. + +::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::: + +::::::::::::::::::::::::::::::::::::::: challenge + +## **CI/CD Setup with GitLab CI** + +The template includes a basic GitLab CI configuration file (`.gitlab-ci.yml`). While we won't fully execute a CI/CD pipeline in this tutorial step, let's understand its purpose. + * **Examine the Configuration:** Open the `.gitlab-ci.yml` file. This file defines the *pipeline*. What are the key stages defined in the pipeline (e.g., build, test, deploy)? Identify the jobs that install dependencies, run tests, and perform linting. What triggers the pipeline to run (e.g., pushes, merge requests)? + * **GitLab Runner:** GitLab CI/CD uses *runners* to execute the jobs defined in your `.gitlab-ci.yml` file. These runners can be configured in various ways. (No action required; this is just an informational point.) + * **Discussion:** If you were to push this project to a GitLab repository, what would happen when you create a merge request? How could you use CI/CD to automatically verify the code quality of your project? (No action required; this is a thought exercise.) -1. **List Project Files:** Use the command line to navigate into the `nova_tutorial` directory and list all the files and folders created by the template. -2. **Explore `pyproject.toml`:** Open the `pyproject.toml` file in your text editor. Identify the sections that define project dependencies and project scripts. -3. **Install Dependencies:** If you haven't already, run `poetry install` in the `nova_tutorial` directory. Explain in your own words what this command does in terms of dependency management and virtual environments. +::::::::::::::: solution + * **What are the key stages defined in the pipeline?** The stages typically include: + * `build`: Installs dependencies and prepares the application for testing. + * `test`: Runs the unit tests. + * `lint`: Performs code linting and formatting checks. + * `deploy` (optional): Deploys the application to a server or environment. + * **Identify the jobs that install dependencies, run tests, and perform linting:** Look for job definitions that use commands like `pip install`, `pytest`, and `flake8` (or similar linting tools). + * **What triggers the pipeline to run?** The pipeline is typically triggered by pushes to the repository and the creation of merge requests. This is defined in the `.gitlab-ci.yml` file using keywords like `on: [push, merge_requests]`. + * **If you were to push this project to a GitLab repository, what would happen when you create a merge request?** A pipeline would be automatically triggered. The pipeline would run the jobs defined in `.gitlab-ci.yml`, such as installing dependencies, running tests, and performing linting. The results of the pipeline would be displayed in the merge request, allowing you to see if the code passes all checks before merging it. This helps ensure code quality and prevents broken code from being merged into the main branch. +::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::: ## References diff --git a/episodes/03-Nova-Galaxy.md b/episodes/03-Nova-Galaxy.md index fa419505..cba857c5 100755 --- a/episodes/03-Nova-Galaxy.md +++ b/episodes/03-Nova-Galaxy.md @@ -1,5 +1,5 @@ --- -title: "Using NDIP for Backend Computations" +title: "Invoking an NDIP tool" teaching: 10 exercises: 3 --- diff --git a/episodes/04-MVVM-Deisgn-Pattern.md b/episodes/04-MVVM-Deisgn-Pattern.md index 2a858537..fc3ba93b 100755 --- a/episodes/04-MVVM-Deisgn-Pattern.md +++ b/episodes/04-MVVM-Deisgn-Pattern.md @@ -6,35 +6,68 @@ exercises: 0 # 4. User Interface Best Practices: The MVVM Design Pattern -In this section, we will introduce the Model-View-ViewModel (MVVM) design pattern, and explore how to implement it using the `nova-mvvm` library. We will also introduce Pydantic for data validation and model definition. +In this section, we will introduce the Model-View-ViewModel (MVVM) design pattern, a powerful architectural approach for structuring applications, particularly those with user interfaces. We'll explore the core principles of MVVM, the roles of each component, and how the NOVA framework simplifies its implementation, making your code more organized, testable, and maintainable. -## Introduction to MVVM +## What is a Design Pattern? -The Model-View-ViewModel (MVVM) pattern is an architectural pattern used to structure applications, particularly those with user interfaces. It promotes a separation of concerns, making code more organized, testable, and maintainable. +Before diving into MVVM, it's helpful to understand what a *design pattern* is in software development. A design pattern is a reusable solution to a commonly occurring problem in software design. It's not a code snippet you can copy and paste, but rather a template or blueprint for how to structure your code to achieve a specific goal (e.g., separation of concerns, code reusability, testability). -* **Model:** The Model represents the application's data and business logic. It is responsible for retrieving, managing, and modifying data. It is not directly concerned with how the data is displayed. -* **View:** The View is the user interface (UI) that the user interacts with. It displays data to the user and captures user interactions. In this section, we will not be using a UI but when we do, this will be where UI components will be placed. -* **ViewModel:** The ViewModel acts as an intermediary between the Model and the View. It exposes the data from the Model in a way that is easy for the View to display. It also handles user interactions, and updates the Model accordingly. +## The Model-View-ViewModel (MVVM) Pattern -The benefits of using the MVVM pattern include: +MVVM is an architectural design pattern specifically designed for applications with user interfaces (UIs). It aims to separate the UI (the View) from the underlying data and logic (the Model) by introducing an intermediary component called the ViewModel. This separation makes the application more maintainable, testable, and easier to evolve. -* **Testability:** ViewModels can be unit tested independently of the View, which allows for more complete and thorough testing. -* **Maintainability:** The clear separation of concerns makes it easier to maintain and refactor code. Changes to the Model are less likely to cause breaking changes in the View or ViewModel. -* **Code Reusability:** The View and the ViewModel can be reused in different parts of the application. For example, different Views can be implemented without modifying the underlying ViewModel. -* **Flexibility:** Provides a flexible and scalable architecture that can be adapted to different application requirements. +The MVVM pattern consists of three core components: -There are other patterns that can be used to build UIs such as MVC or MVP. We will not explore these in this tutorial, but it is important to know that other options exist. +* **Model:** The Model represents the *data* and the *business logic* of the application. It's responsible for: + * Data storage (e.g., reading from and writing to a database, a file, or an API). + * Data validation (ensuring the data is in a valid state). + * Business rules (the logic that governs how the data is manipulated and used). -## Core Concepts of `nova-mvvm` + The Model is *agnostic* to the UI. It doesn't know anything about how the data will be displayed or how the user will interact with it. It simply provides the data and the means to manipulate it. -The `nova-mvvm` library provides a set of tools that make it easier to implement the MVVM pattern. Here are the key concepts: + *In the context of our NOVA tutorial, the Model will often include the logic for interacting with the NDIP platform via `nova-galaxy`.* -* **`BindingInterface`**: This is an abstract class that defines the interface for creating bindings between a ViewModel/Model variable and a framework specific element. It provides the `new_bind` method, which returns a `Communicator` object. -* **`TrameBinding`**: This is an implementation of the `BindingInterface` specifically for use with Trame. It creates `TrameCommunicator` objects. -* **`Communicator`**: This is a class that is responsible for managing the communication between the ViewModel/Model and the View. For example, `TrameCommunicator` is a `Communicator` used in Trame. The `Communicator` contains a `connect` method, which establishes the connection between a GUI element and a linked object and will return a callback that the UI can use to trigger model updates. It also contains an `update_in_view` method which will update the UI with new state changes. -* **`new_bind`**: This method returns an object that contains a `connect` method, and an `update_in_view` method. - * The connect method establishes the connection between a GUI element and a linked object and will return a callback that the UI can use to trigger model updates. - * The update_in_view will update the UI with new state changes. +* **View:** The View is the *user interface* (UI) of the application. It's responsible for: + * Displaying data to the user. + * Capturing user input (e.g., button clicks, text entered in a field, selections from a dropdown). + * Presenting the application's visual appearance. + + The View is *passive*. It doesn't contain any business logic or data manipulation code. It simply displays the data provided to it and relays user actions to the ViewModel. + + *In our NOVA tutorial, the View will be built using Trame and Vuetify components, leveraging the styling and structure provided by `nova-trame`.* + +* **ViewModel:** The ViewModel acts as an *intermediary* between the Model and the View. It's responsible for: + * Preparing data from the Model for display in the View. This might involve formatting the data, combining data from multiple sources, or creating derived data. + * Handling user actions from the View. This might involve validating user input, updating the Model, or triggering other actions in the application. + * Exposing data and commands to the View through *data binding*. + + The ViewModel is *UI-specific*. It knows about the View and the data that the View needs, but it doesn't know about the specific UI elements that are used to display the data. It also orchestrates the interaction between the View and the Model. + + *The ViewModel is where we'll use `nova-mvvm` to create bindings between the ViewModel and the View, enabling the reactive updates.* + +## Why Use MVVM? (Benefits) + +The MVVM pattern provides several benefits: + +* **Separation of Concerns:** MVVM clearly separates the UI (View) from the application logic (Model) and the presentation logic (ViewModel). This makes the code more organized and easier to understand. +* **Testability:** Because the ViewModel is independent of the View, it can be easily unit-tested. You can test the presentation logic without needing to create a UI. +* **Maintainability:** Changes to the UI are less likely to affect the underlying application logic, and vice versa. This makes the application easier to maintain and evolve over time. +* **Reusability:** The ViewModel can be reused with different Views, allowing you to create different UIs for the same underlying data and logic. +* **Team Collaboration:** MVVM facilitates collaboration between developers and UI designers. Developers can focus on the Model and ViewModel, while designers can focus on the View, without interfering with each other's work. + +## Data Binding: The Heart of MVVM + +*Data binding* is a mechanism that allows the View and the ViewModel to automatically synchronize their data. When the data in the ViewModel changes, the View is automatically updated to reflect the changes. Conversely, when the user interacts with the View (e.g., by entering text in a field), the data in the ViewModel is automatically updated. + +This data binding is what makes MVVM so powerful and allows for reactive UIs. Instead of manually writing code to update the UI every time the data changes, you simply bind the UI elements to the data in the ViewModel, and the updates happen automatically. + +## How NOVA Simplifies MVVM + +The NOVA framework provides libraries and tools that simplify the implementation of the MVVM pattern: + +* **`nova-mvvm`**: This library provides a set of classes and functions that make it easier to create bindings between the ViewModel and the View. It handles the low-level details of data synchronization, allowing you to focus on the application logic. +* **`nova-trame`**: Provides a set of pre-built components and layouts that are designed to work seamlessly with `nova-mvvm`. This simplifies the creation of the View and ensures a consistent look and feel across NOVA applications. +* **Pydantic:** While not strictly part of the MVVM pattern, Pydantic helps define the structure of your Model and ViewModel, making it easier to validate data and ensure data integrity. ## Introduction to Pydantic for Data Modeling diff --git a/episodes/05-Working-with-Trame.md b/episodes/05-Working-with-Trame.md index 19583e50..f4494e09 100755 --- a/episodes/05-Working-with-Trame.md +++ b/episodes/05-Working-with-Trame.md @@ -1,211 +1,181 @@ --- -title: "Web-based User Interface Development" -teaching: 10 +title: "Web-based User Interface Development with Trame" +teaching: 20 exercises: 3 --- -# Web-based User Interface Development -In this section, we will introduce Trame and the `nova-trame` library to start building a web-based user interface for our NOVA application. We'll cover the benefits of Trame and how `nova-trame` simplifies UI development within the NOVA ecosystem. +# 5. Web-based User Interface Development with Trame + +In this section, we will dive into Trame and the `nova-trame` library to build interactive web-based user interfaces for our NOVA applications. We'll explore how `nova-trame` simplifies UI development within the NOVA ecosystem and how to use common layout components. ## Introduction to Trame -Trame is a powerful Python framework for building interactive web-based user interfaces and visualizations, all without needing to write Javascript or complex web code directly. It allows you to describe your UI declaratively using Python, and Trame handles the complexities of creating a dynamic web application. +Trame is a powerful Python framework for building interactive web applications and visualizations. It lets you create UIs declaratively using Python, eliminating the need for complex JavaScript and front-end web development. Trame handles the complexities of creating a dynamic web application, allowing you to focus on your application's logic. Key Features and Benefits of Trame: -* **Declarative UI:** Describe your user interfaces using Python code, focusing on *what* the UI should be, not *how* to implement it in web technologies. -* **Interactive Applications:** Create dynamic UIs with real-time updates through Trame's data binding. Changes in your ViewModel automatically reflect in the UI, and user interactions in the UI can update the ViewModel. -* **Web-Based and Accessible:** Trame applications are standard web applications, accessible from any modern web browser, making them easy to deploy and share. -* **Extensible and Rich UI Components:** Trame leverages libraries like Vuetify, providing a wide range of pre-built, visually appealing, and interactive UI components. -* **Python-Centric Development:** Because Trame is Python-based, you can build complex web applications and perform computations using Python, without needing extensive front-end web development knowledge. +* **Declarative UI:** Define your user interfaces using Python code. You describe *what* the UI should be, not *how* to implement it using web technologies. This significantly simplifies UI development. +* **Interactive Applications:** Create dynamic UIs with real-time updates using Trame's data binding capabilities. Changes in your ViewModel automatically reflect in the UI, and user interactions in the UI can update the ViewModel. +* **Web-Based and Accessible:** Trame applications are standard web applications, accessible from any modern web browser. This makes them easy to deploy and share with colleagues and users. +* **Extensible and Rich UI Components:** Trame leverages libraries like Vuetify, providing a wide range of pre-built, visually appealing, and interactive UI components. Vuetify follows the Material Design specification, ensuring a modern and consistent look and feel. +* **Python-Centric Development:** Build complex web applications and perform computations using Python, without needing extensive front-end web development knowledge. This allows you to leverage your existing Python skills. ## Introducing `nova-trame` -`nova-trame` simplifies the process of creating consistent and easy-to-use Trame applications. It builds upon the core Trame framework by providing a set of pre-built components, layouts, themes, and utilities that are tailored to the needs of the NOVA ecosystem. +`nova-trame` simplifies the process of creating consistent and easy-to-use Trame applications within the NOVA framework. It builds upon the core Trame framework by providing pre-built components, layouts, themes, and utilities tailored for the NOVA ecosystem. Benefits of using `nova-trame`: -* **Simplified UI Development:** Reduces the amount of boilerplate code required to create a Trame application. -* **Consistent Look and Feel:** Ensures all NOVA applications have a consistent look and feel by applying a common theme and style. -* **Reusable UI Components:** Makes it easy to use reusable UI components within your application. -* **Integration with MVVM:** `nova-trame` works seamlessly with the `nova-mvvm` library to implement the MVVM architecture. +* **Simplified UI Development:** Reduces the boilerplate code required to create a Trame application. `nova-trame` provides abstractions and helpers that streamline common UI tasks. +* **Consistent Look and Feel:** Ensures all NOVA applications have a consistent look and feel by applying a common theme and style based on the NOVA design guidelines. This helps users easily recognize and use NOVA applications. +* **Reusable UI Components:** Makes it easy to use reusable UI components within your application. You can create custom components and share them across multiple NOVA applications. +* **Integration with MVVM:** `nova-trame` works seamlessly with the `nova-mvvm` library to implement the MVVM architecture. This simplifies the process of connecting your UI to your application logic. + +## Key `nova-trame` Components + +`nova-trame` provides several key components that simplify UI development. Here are some of the most important: + +* **`InputField`:** This component simplifies the creation of various input fields (text fields, dropdowns, checkboxes, etc.). It automatically integrates with Pydantic models to load labels, hints, and validation rules, reducing the amount of code you need to write. It also supports debouncing and throttling for improved performance. +* **Layout Components:** `nova-trame` provides layout components that help you structure your UI. These components are based on CSS Flexbox and Grid layouts, making it easy to create responsive and visually appealing UIs. The main layout components include: + * **`GridLayout`:** Creates a grid with a specified number of columns. You can use `GridLayout` to arrange your UI elements in a structured grid layout. + * **`VBoxLayout`:** Creates an element that vertically stacks its children. Use `VBoxLayout` to arrange UI elements in a vertical column. + * **`HBoxLayout`:** Creates an element that horizontally stacks its children. Use `HBoxLayout` to arrange UI elements in a horizontal row. + +Let's explore these components in more detail: -## Creating the UI - Key Code Snippets +### `InputField` -Let's create a basic user interface for our fractal tool using `nova-trame` and Vuetify components. You can find the complete code for this episode in the `code/episode_5` directory. Here, we will examine the key code snippets in `fractal_view.py` and `main.py`. +The `InputField` component simplifies creating different types of input fields in your UI. It can create text fields, dropdowns (select), checkboxes, and more, all with a consistent look and feel. A key advantage of `InputField` is its automatic integration with Pydantic models. If the `v_model` references a Pydantic model field, `InputField` can automatically: -**1. `FractalApp` View Class (`src/nova_tutorial/views/fractal_view.py`):** +* **Load the label:** Use the `title` attribute from the Pydantic field as the input field's label. +* **Display a hint:** Use the `description` attribute from the Pydantic field as a help text or hint for the input field. +* **Apply validation rules:** Automatically generate validation rules based on the Pydantic field's type and constraints. -* **Imports**: The `FractalApp` view starts by importing necessary classes from `nova-trame`, `trame`, and our `nova_tutorial` modules: +This integration significantly reduces the amount of boilerplate code you need to write for input fields. + +The `InputField` also provides debouncing and throttling features that can improve application performance. These features are useful when dealing with user input that triggers frequent updates to the Trame state. + +### Layout Components: `GridLayout`, `VBoxLayout`, and `HBoxLayout` + +`nova-trame` provides several layout components that make it easy to structure your UI: + +* **`GridLayout`:** Creates a grid layout with a specified number of columns. This is useful for arranging UI elements in a structured grid. You can use the `row_span` and `column_span` attributes to control how many rows and columns each element spans. ```python - # src/nova_tutorial/views/fractal_view.py - from nova.mvvm.trame_binding import TrameBinding - from nova.trame import ThemedApp from nova.trame.view import layouts - from trame.app import get_server from trame.widgets import vuetify3 as vuetify - from nova_tutorial.view_models.fractal_view_model import FractalViewModel + with layouts.GridLayout(columns=2): + vuetify.VTextField(label="First Name") + vuetify.VTextField(label="Last Name") + vuetify.VTextField(label="Email") + vuetify.VTextField(label="Phone Number") ``` - Notice the imports from `nova.trame` (like `ThemedApp`, `layouts`), `trame.app`, `trame.widgets.vuetify3`, and our existing `FractalViewModel` and `TrameBinding`. -* **`FractalApp` Class Definition**: We define `FractalApp` as a class that inherits from `ThemedApp`. `ThemedApp` from `nova-trame` provides a base class with a consistent NOVA theme for Trame applications: + This code creates a grid with two columns and arranges the text fields in the grid. + +* **`VBoxLayout`:** Creates a vertical box layout, stacking its children vertically. This is useful for creating simple vertical layouts. ```python - class FractalApp(ThemedApp): # Inherits from nova.trame.ThemedApp for consistent styling - def __init__(self) -> None: - super().__init__() - self.server = get_server(None, client_type="vue3") - self.fractal_vm = FractalViewModel(TrameBinding(self.server.state)) - self.create_ui() + from nova.trame.view import layouts + from trame.widgets import vuetify3 as vuetify + + with layouts.VBoxLayout(): + vuetify.VTextField(label="Address Line 1") + vuetify.VTextField(label="Address Line 2") + vuetify.VTextField(label="City") ``` - In the `__init__` method: - * `super().__init__()` calls the `ThemedApp` constructor. - * `self.server = get_server(...)` initializes the Trame server. - * `self.fractal_vm = FractalViewModel(TrameBinding(self.server.state))` instantiates our `FractalViewModel`, crucially passing it a `TrameBinding` instance. This is what connects the ViewModel to the Trame UI. - * `self.create_ui()` calls the method that defines the user interface layout. -* **`create_ui` method**: This method defines the structure and components of our UI using Vuetify widgets within Trame layouts: + This code creates a vertical layout and stacks the text fields vertically. + +* **`HBoxLayout`:** Creates a horizontal box layout, stacking its children horizontally. This is useful for creating simple horizontal layouts. ```python - def create_ui(self) -> None: - self.state.trame__title = "NOVA Tutorial" # Set window title - with super().create_ui() as layout: # Use themed layout - with layout.content: # Main content area - with layouts.VBoxLayout(classes="ma-2"): # Vertical layout with margin - with vuetify.VCard(classes="pa-2"): # Card container with padding - with vuetify.VRadioGroup( # Radio button group for fractal type - v_model=("fractal_vm.fractal_type", "mandelbrot"), # Two-way binding to ViewModel - classes="mb-2", # Margin bottom - ): - vuetify.VRadio(label="Mandelbrot", value="mandelbrot") # Radio options - vuetify.VRadio(label="Julia", value="julia") - vuetify.VRadio(label="Random", value="random") - vuetify.VRadio(label="Markus", value="markus") - vuetify.VBtn( # Button to run the tool - "Run Fractal Tool", - click=self.fractal_vm.run_fractal_tool, # Method to call on click - disabled=("fractal_vm.run_button_disabled"), # Disable based on ViewModel state - classes="mb-2" - ) - vuetify.VCardText(("fractal_vm.message")) # Display messages from ViewModel - return layout - ``` - Key points in `create_ui()`: - * `self.state.trame__title = ...`: Sets the title of the browser window for the Trame application. - * `with super().create_ui() as layout:`: Creates the base UI layout using `ThemedApp`'s styling. - * `layouts.VBoxLayout` and `vuetify.VCard`: Basic layout components to structure the UI vertically within a card container. - * `vuetify.VRadioGroup` and `vuetify.VRadio`: Creates a group of radio buttons for selecting the fractal type. **Crucially, `v_model=("fractal_vm.fractal_type", "mandelbrot")` establishes a *two-way data binding***. Changes in the UI radio buttons will update `fractal_vm.fractal_type` in the ViewModel, and vice versa. `"mandelbrot"` sets the default value. - * `vuetify.VBtn`: Creates a button labeled "Run Fractal Tool". - * `click=self.fractal_vm.run_fractal_tool`: Binds the button's `click` event to call the `run_fractal_tool` method in our `FractalViewModel`. - * `disabled=("fractal_vm.run_button_disabled")`: **Binds the button's `disabled` state to the `run_button_disabled` property in the ViewModel**. The button will be disabled when `fractal_vm.run_button_disabled` is `True` and enabled when `False`. - * `vuetify.VCardText(("fractal_vm.message"))`: Displays text within the card. **Binds the content of the `VCardText` to the `message` property of the ViewModel**. Any changes to `fractal_vm.message` will be displayed here. - -**2. `main.py` - Starting the Trame Application (`src/nova_tutorial/main.py`):** - -* **Import `FractalApp`**: We import the `FractalApp` class from `nova_tutorial.views.fractal_view`: - ```python - # src/nova_tutorial/main.py - from nova_tutorial.views.fractal_view import FractalApp + from nova.trame.view import layouts + from trame.widgets import vuetify3 as vuetify + + with layouts.HBoxLayout(): + vuetify.VTextField(label="First Name") + vuetify.VTextField(label="Last Name") ``` -* **Instantiate and Start `FractalApp`**: In the `main()` function, we create an instance of `FractalApp` and call `app.server.start()` to launch the Trame application: + This code creates a horizontal layout and stacks the text fields horizontally. - ```python - def main(): - app = FractalApp() # Instantiate the FractalApp (which creates the UI and ViewModel) - app.server.start() # Start the Trame server, launching the web application +By combining these layout components, you can create complex and responsive UI layouts. - if __name__ == "__main__": - main() - ``` - `app.server.start()` is the essential command to start the Trame server, which will open your web browser and display the user interface defined in `FractalApp`. +## Adding More UI Components to the Sample Tabs -## Running the application +Now, let's add some UI components to the Sample Tabs in our application to demonstrate how to use these components. We'll modify the `sample_tab_1.py` and `sample_tab_2.py` files to include these components. -To run the code, use the following command in the top level of your `nova_tutorial` project: +**1. `nova_tutorial/views/sample_tab_1.py` (Modify):** -```bash -poetry run app -``` +We'll add an `InputField` and a `VBoxLayout` to this tab. + +```python +"""Module for the Sample Tab 1.""" + +from nova.trame.view.components import InputField +from nova.trame.view import layouts +from trame.widgets import vuetify3 as vuetify -You should now see a simple UI in your browser. +class SampleTab1: + """Sample tab 1 view class. Renders text input for username.""" -## Adding More UI Components + def __init__(self) -> None: + self.create_ui() -Let's enhance our UI by adding a few more common Vuetify components. We'll add: + def create_ui(self) -> None: + with layouts.VBoxLayout(classes="ma-2"): + InputField(v_model="config.username", label="Username") + vuetify.VCheckbox(label="Remember me") +``` -* **`VTextField`:** For text input (although not connected to backend logic in this tutorial). -* **`VCheckbox`:** For boolean input (again, not connected to backend). -* **`VSlider`:** For numerical input (not connected). +**2. `nova_tutorial/views/sample_tab_2.py` (Modify):** -Modify your `src/nova_tutorial/views/fractal_view.py` to include these components within the `VCard` in the `create_ui` method: +We'll add a `GridLayout` and an `InputField` to this tab. ```python -# src/nova_tutorial/views/fractal_view.py -from nova.mvvm.trame_binding import TrameBinding -from nova.trame import ThemedApp +"""Module for the Sample Tab 2.""" + +from nova.trame.view.components import InputField from nova.trame.view import layouts -from trame.app import get_server from trame.widgets import vuetify3 as vuetify -from nova_tutorial.view_models.fractal_view_model import FractalViewModel -class FractalApp(ThemedApp): +class SampleTab2: + """Sample tab 2 view class. Renders text input for user password.""" + def __init__(self) -> None: - super().__init__() - self.server = get_server(None, client_type="vue3") - self.fractal_vm = FractalViewModel(TrameBinding(self.server.state)) self.create_ui() def create_ui(self) -> None: - self.state.trame__title = "NOVA Tutorial" - with super().create_ui() as layout: - with layout.content: - with layouts.VBoxLayout(classes="ma-2"): - with vuetify.VCard(classes="pa-2"): - vuetify.VTextField(label="Example Text Input", classes="mb-2") # Added VTextField - vuetify.VCheckbox(label="Example Checkbox", classes="mb-2") # Added VCheckbox - vuetify.VSlider(label="Example Slider", v_model=25, classes="mb-2") # Added VSlider - with vuetify.VRadioGroup( - v_model=("fractal_vm.fractal_type", "mandelbrot"), - classes="mb-2", - ): - vuetify.VRadio(label="Mandelbrot", value="mandelbrot") - vuetify.VRadio(label="Julia", value="julia") - vuetify.VRadio(label="Random", value="random") - vuetify.VRadio(label="Markus", value="markus") - vuetify.VBtn( - "Run Fractal Tool", - click=self.fractal_vm.run_fractal_tool, - disabled=("fractal_vm.run_button_disabled"), - classes="mb-2" - ) - vuetify.VCardText(("fractal_vm.message")) - return layout + with layouts.GridLayout(columns=2, classes="ma-2"): + InputField(v_model="config.password", label="Password", type="password") + vuetify.VSlider(label="Volume") ``` -We've simply added a `VTextField`, `VCheckbox`, and `VSlider` component within the `VCard`. These are not yet connected to the ViewModel - they are just there to demonstrate adding different UI elements. +In `SampleTab1`, we've used a `VBoxLayout` to vertically stack the `InputField` and `VCheckbox` components. In `SampleTab2`, we've used a `GridLayout` to arrange the `InputField` and `VSlider` components in a two-column grid. ## Running the application To run the code, use the following command in the top level of your `nova_tutorial` project: ```bash -poetry run app +poetry run start ``` -You should now see a UI with a text field, checkbox, slider, radio buttons, and the "Run Fractal Tool" button. +You should now see the simple UI. When you click the "Sample Tab 1" and "Sample Tab 2" tabs, you should now see the updated content with the new UI components. ## Exercises -1. **Explore Vuetify Components:** Visit the Vuetify 3 component documentation ([https://vuetifyjs.com/en/components/all/](https://vuetifyjs.com/en/components/all/)). Browse through the list of available components. Identify at least three new components that you think could be useful in a scientific application UI and briefly describe their purpose. -2. **Add a `VSelect` (Dropdown):** Add a `VSelect` component to the UI in `fractal_view.py` within the `VCard`. Make it offer a dropdown of color options (e.g., "Red", "Green", "Blue"). *(You don't need to connect it to the viewmodel.)* -3. **Customize Component Appearance:** Experiment with customizing the appearance of the `VBtn` component. Try changing its color, adding an icon *after* the text (e.g., using the `append-icon` prop and a Material Design Icon name), and modifying its size using Vuetify props (refer to the Vuetify documentation for `VBtn`). +1. **Explore the `InputField` Component:** Modify the `InputField` component in `SampleTab1` to automatically retrieve the label, hint, and validation rules from a Pydantic model field. Create a simple Pydantic model with a `username` field with a `title`, `description`, and `min_length` constraint. +2. **Create a Complex Layout:** Combine `GridLayout`, `VBoxLayout`, and `HBoxLayout` components to create a more complex UI layout in `SampleTab2`. Try creating a layout with a header, a sidebar, and a main content area. +3. **Customize Component Appearance:** Experiment with customizing the appearance of the Vuetify components using the various props and styles available. Try changing the color, size, font, and other visual attributes of the components. Refer to Vuetify's component documentation for details. ## References * **Nova Documentation**: https://nova-application-development.readthedocs.io/en/latest/ * **nova-galaxy documentation**: https://nova-application-development.readthedocs.io/projects/nova-galaxy/en/latest/ * **nova-trame documentation**: https://nova-application-development.readthedocs.io/projects/nova-trame/en/stable/ -* **nova-mvvm documentation**: https://nova-application-development.readthedocs.io/projects/mvvm-lib/en/latest/ \ No newline at end of file +* **nova-mvvm documentation**: https://nova-application-development.readthedocs.io/projects/mvvm-lib/en/latest/ +* **Vuetify Documentation**: https://vuetifyjs.com/en/ +``` diff --git a/episodes/06-Advanced-Data-Modeling.md b/episodes/06-Advanced-Data-Modeling.md index 94a491ab..7b71d1ae 100755 --- a/episodes/06-Advanced-Data-Modeling.md +++ b/episodes/06-Advanced-Data-Modeling.md @@ -1,164 +1,109 @@ --- -title: "Advanced Data model Validation Using Pydantic" -teaching: 10 -exercises: 3 +title: "Data Validation with Pydantic" +teaching: 20 +exercises: 0 --- -# Advanced Data Model Validation Using Pydantic +# 6. Data Validation with Pydantic: Ensuring Data Integrity -In this section, we will delve deeper into Pydantic and explore more advanced data validation techniques. We will expand upon the basic Pydantic introduction from Day 1 and learn how to define more complex data models and validation rules. +In this section, we will explore Pydantic, a powerful Python library for data validation and settings management. We'll delve into the benefits of data validation, how Pydantic works, and best practices for using it effectively within the NOVA framework and the MVVM architecture. -## Advanced Pydantic Features +## Why Data Validation Matters -Building upon our basic understanding of Pydantic, let's explore some advanced features that make it even more powerful for data validation and management: +Data validation is the process of ensuring that data meets certain criteria before it's processed by your application. It's a crucial step in building robust and reliable software. Without proper data validation, your application could be vulnerable to: -* **Nested Models:** Pydantic allows you to define models that are nested within each other. This is useful for representing complex data structures. -* **List and Dictionary Validation:** Pydantic can validate lists and dictionaries, ensuring that the elements within them conform to specific types or models. -* **Custom Validation:** Pydantic provides mechanisms for defining custom validation functions to enforce business-specific rules beyond basic type checking. -* **Data Transformation:** Pydantic can automatically transform data during validation (e.g., converting strings to dates, cleaning up whitespace). +* **Unexpected Errors:** Invalid data can cause your application to crash or produce incorrect results. +* **Security Vulnerabilities:** Malicious users can exploit the lack of data validation to inject harmful data into your application, leading to security breaches. +* **Data Corruption:** Invalid data can corrupt your data stores, leading to data loss or inconsistency. +* **Integration Issues:** When interacting with external systems or APIs, data validation ensures that your data conforms to the expected format and constraints. -## Nested Pydantic Models +Data validation helps you: -Let's imagine we want to represent more complex input for our fractal tool. Suppose we want to group parameters related to the fractal's appearance into a nested model. Modify your `src/nova_tutorial/view_models/fractal_view_model.py` to include a nested model like `FractalAppearance`: +* **Improve Data Quality:** By enforcing data constraints, you ensure that your application works with clean and consistent data. +* **Enhance Application Reliability:** By preventing invalid data from being processed, you reduce the risk of errors and crashes. +* **Strengthen Security:** By sanitizing user input and validating data from external sources, you protect your application from security threats. -```python -# src/nova_tutorial/view_models/fractal_view_model.py -import os -from nova.galaxy import Nova, Parameters, Tool -from nova.mvvm.interface import BindingInterface -from pydantic import BaseModel, ValidationError -from typing import Literal, Optional - -class FractalAppearance(BaseModel): # Nested Model - color_palette: Optional[Literal["viridis", "magma", "plasma"]] = "viridis" # Optional field with default - -class FractalToolInput(BaseModel): - fractal_type: Literal["mandelbrot", "julia", "random", "markus"] - appearance: FractalAppearance = FractalAppearance() # Nested model as a field - - -class FractalViewModel(): - def __init__(self, binding: BindingInterface): - super().__init__() - self._fractal_type = "mandelbrot" # Default fractal type - self.galaxy_url = os.getenv("GALAXY_URL") - self.galaxy_key = os.getenv("GALAXY_API_KEY") - self._run_button_disabled = False - self._message = "" - self.run_button_disabled_bind = binding.new_bind( - linked_object=self, - linked_object_arguments=["_run_button_disabled"], - ) - self.message_bind = binding.new_bind( - linked_object=self, - linked_object_arguments=["_message"], - ) - self.fractal_type_bind = binding.new_bind(linked_object=self, linked_object_arguments=["_fractal_type"]) - - - def set_fractal_type(self, fractal_type: str): - try: - FractalToolInput(fractal_type=fractal_type) - except ValidationError as e: - self._message = f"Validation Error: {e}" - self.message_bind.update_in_view(self._message) - return - self._fractal_type = fractal_type - self.fractal_type_bind.update_in_view(self._fractal_type) - - def run_fractal_tool(self): - """Runs the fractal tool with the current fractal type.""" - if not self.galaxy_url or not self.galaxy_key: - self._message = "You must specify GALAXY_URL and GALAXY_API_KEY as environment variables." - self.message_bind.update_in_view(self._message) - return - - self._run_button_disabled = True - self.run_button_disabled_bind.update_in_view(self._run_button_disabled) - try: - nova = Nova(galaxy_url=self.galaxy_url, galaxy_key=self.galaxy_key) - tool = Tool(id="neutrons_fractal") - params = Parameters() - params.add_input(name="fractal_type", value=self._fractal_type) - - with nova.connect() as galaxy_connection: - data_store = galaxy_connection.create_data_store(name="fractal_store") - tool.run(data_store, params) - # Datastore is deleted after function exists - self._message = "Fractal tool finished successfully." - except Exception as e: - self._message = f"Error running fractal tool: {e}" - finally: - self.message_bind.update_in_view(self._message) - self._run_button_disabled = False - self.run_button_disabled_bind.update_in_view(self._run_button_disabled) - - @property - def run_button_disabled(self): - return self._run_button_disabled - - @run_button_disabled.setter - def run_button_disabled(self, value): - self._run_button_disabled = value - - @property - def message(self): - return self._message - - @message.setter - def message(self, value): - self._message = value - - @property - def fractal_type(self): - return self._fractal_type - - @fractal_type.setter - def fractal_type(self, value): - self.set_fractal_type(value) -``` +## Introduction to Pydantic + +Pydantic is a Python library that provides a powerful and elegant way to define data models and enforce data validation. It uses Python type hints to define the structure of your data and automatically validates data against these types at runtime. + +Key Features of Pydantic: + +* **Data Validation:** Automatically validates data types and constraints, ensuring data integrity. Pydantic supports a wide range of validation options, including type checking, length constraints, regular expressions, custom validators, and more. +* **Clear Data Structures:** Defines data models in a clear and readable way using Python type hints. Pydantic models are easy to understand and maintain. +* **Serialization and Deserialization:** Easily serializes data to and from standard formats like JSON. This is useful for interacting with APIs and other external systems. +* **Settings Management:** Can be used to manage application settings and configuration, providing a centralized and type-safe way to access configuration values. +* **Improved Code Readability:** Makes code easier to understand and maintain by explicitly defining data models. Type hints make it clear what type of data is expected for each field. + +## How Pydantic Works -We've added `FractalAppearance` as a nested model and included it as a field in `FractalToolInput`. Note that `color_palette` is optional and has a default value. +Pydantic uses Python type hints to define data models. When you create an instance of a Pydantic model, Pydantic automatically validates the input data against the defined types and constraints. -## Custom Validation +Here's a simple example: -Pydantic allows for custom validation logic using validator decorators. Let's add a custom validator to `FractalToolInput` to ensure that if `fractal_type` is "julia", then `color_palette` must be specified as "plasma". *(This is a contrived example for demonstration purposes.)* +```python +from pydantic import BaseModel, Field + +class User(BaseModel): + id: int = Field(default=1, gt=0) # id must be an integer greater than 0 + name: str = Field(default="someName", min_length=1) # name must be a string with at least one character + email: str = Field(default="test@test.com", regex=r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$") # email must be a valid email address +``` -Add the following validator to the `FractalToolInput` model in `src/nova_tutorial/view_models/fractal_view_model.py`: +In this example, we define a `User` model with three fields: `id`, `name`, and `email`. We use type hints to specify the data type for each field (e.g., `int`, `str`) and `Field` with validation arguments to specify additional constraints (e.g., `gt=0`, `min_length=1`, `regex=...`). + +When you create an instance of the `User` model, Pydantic automatically validates the input data: ```python -# ... inside FractalToolInput class ... - @pydantic.model_validator(mode='after') - def check_julia_palette(self) -> 'FractalToolInput': - if self.fractal_type == "julia" and self.appearance.color_palette != "plasma": - raise ValueError("For 'julia' fractals, color_palette must be 'plasma'.") - return self +from pydantic import ValidationError + +try: + user = User(id=0, name="", email="invalid-email") +except ValidationError as e: + print(e) ``` -You'll also need to import `pydantic` at the top of the file: `import pydantic`. +If the input data is invalid, Pydantic raises a `ValidationError` exception with detailed information about the validation errors. + +## Where to Perform Validation: Model vs. ViewModel -This validator function is decorated with `@pydantic.model_validator(mode='after')`, which means it runs *after* the basic field validation. It checks the condition and raises a `ValueError` if the rule is violated. +In the MVVM architecture, the question arises: where should data validation be performed? Should it be done in the Model or the ViewModel? -## Running the application +* **Model Validation:** Validating data in the Model ensures that the underlying data is always in a valid state. This is especially important for data that is stored in a database or used by other parts of the application. However, Model validation is not always UI-specific. -To run the code, use the following command in the top level of your `nova_tutorial` project: +* **ViewModel Validation:** Validating data in the ViewModel allows you to perform UI-specific validation, such as checking that a required field is not empty or that a value falls within a certain range. ViewModel validation is also useful for providing immediate feedback to the user about validation errors. -```bash -poetry install -poetry run app +In general, it's a good practice to perform both Model and ViewModel validation. Model validation ensures data integrity at the data level, while ViewModel validation provides a better user experience by providing immediate feedback and preventing invalid data from being passed to the Model. Pydantic supports both. + +In the context of our NOVA tutorial, here's how we can apply this: + +* **NDIP Interactions (Model):** When using `nova-galaxy` to interact with NDIP, validate the data being sent to NDIP in the Model to ensure it conforms to the NDIP API requirements. + +* **UI Input (ViewModel):** When the user enters data in the UI, validate the data in the ViewModel to provide immediate feedback to the user. + +## Pydantic and `nova-trame` Input Validation + +One of the great features of `nova-trame` is that it leverages the validation attributes of Pydantic models to automatically create validation routines for Vuetify UI elements. Let's walk through what that looks like in code. + +First, let's assume you have the following model: + +```python +from pydantic import BaseModel, Field + +class SettingsModel(BaseModel): + port: int = Field(default=8080, gt=0, lt=65536, title="Port Number", description="The port to listen on.") ``` -This will still run the application, but now Pydantic models with nested structures and custom validation are defined. +Then in your view, you create the following InputField: -## Exercises +```python +from nova.trame.view.components import InputField + +InputField(v_model="settings.port") +``` -1. **Trigger Nested Model Validation:** Modify the `set_fractal_type` method to also set a value for `appearance.color_palette` when the `fractal_type` is set. Try setting an invalid `color_palette` value (e.g., `"invalid_palette"`). What validation error do you observe? -2. **Trigger Custom Validator:** Modify the `set_fractal_type` method to set `fractal_type` to `"julia"` and `appearance.color_palette` to `"viridis"`. Run the application. What validation error do you see now? Why? -3. **Explore Pydantic Validators:** Refer to the Pydantic documentation on validators ([https://docs.pydantic.dev/latest/usage/validators/](https://docs.pydantic.dev/latest/usage/validators/)). Identify at least two other types of validators (e.g., `@field_validator`, `@root_validator`). Briefly describe their purpose and how they differ from `@model_validator`. +Notice how you don't need to pass any attributes to `InputField` other than `v_model`. The `InputField` automatically retrieves the `title` and attempts to retrieve other information. -## References +The InputField performs automatic validation for this field. If you enter an invalid port number into the InputField, the InputField will change state to invalid and the label will turn red. -* **Nova Documentation**: https://nova-application-development.readthedocs.io/en/latest/ -* **nova-galaxy documentation**: https://nova-application-development.readthedocs.io/projects/nova-galaxy/en/latest/ -* **nova-trame documentation**: https://nova-application-development.readthedocs.io/projects/nova-trame/en/stable/ -* **nova-mvvm documentation**: https://nova-application-development.readthedocs.io/projects/mvvm-lib/en/latest/ \ No newline at end of file +In that fashion, the `InputField` seamlessly pulls information from your code's data model and displays errors to the user. \ No newline at end of file diff --git a/episodes/08-Next-Steps.md b/episodes/08-Next-Steps.md index fde8b0d7..5abac34c 100755 --- a/episodes/08-Next-Steps.md +++ b/episodes/08-Next-Steps.md @@ -65,5 +65,5 @@ After performing these steps, your application will be available to NDIP users. * **nova-trame documentation**: https://nova-application-development.readthedocs.io/projects/nova-trame/en/stable/ * **nova-mvvm documentation**: https://nova-application-development.readthedocs.io/projects/mvvm-lib/en/latest/ -By following the steps outlined in this section, you can deploy your own applications to the NOVA/NDIP platform and make them available to the wider scientific community. +By following the steps outlined in this section, you can deploy your own applications to the NDIP platform and make them available to the wider scientific community. ``` \ No newline at end of file diff --git a/index.md b/index.md index af662764..bf191f3c 100755 --- a/index.md +++ b/index.md @@ -2,8 +2,34 @@ site: sandpaper::sandpaper_site --- -This is a new lesson built with [The Carpentries Workbench][workbench]. +# NOVA Tutorial: Building Interactive Neutron Analysis Tools +This tutorial guides you through the process of building interactive web applications for neutron data analysis using the NOVA *framework*. It leverages the Model-View-ViewModel (MVVM) architectural pattern and three key NOVA libraries: `nova-galaxy`, `nova-trame`, and `nova-mvvm`, to simplify interaction with the Neutron Data Interpretation Platform (NDIP). -[workbench]: https://carpentries.github.io/sandpaper-docs +**Key Learning Objectives:** +* **Introduction to NDIP and NOVA:** Understand the purpose of NDIP as a workflow management system for neutron data and NOVA as a framework for simplifying NDIP application development. +* **Project Setup:** Learn how to use the `copier` library to clone a template application, providing a basic project structure and pre-configured files. +* **NDIP Interaction with `nova-galaxy`:** Master the use of `nova-galaxy` to connect to NDIP, define and run tools, and manage input parameters. +* **MVVM Implementation with `nova-mvvm` and Pydantic:** Grasp the principles of the MVVM design pattern and implement it using `nova-mvvm`. Utilize Pydantic for data validation and defining data models for inputs. +* **Web UI Development with `nova-trame`:** Build a web-based user interface using `nova-trame` and Vuetify components. Implement two-way data binding between UI elements and the ViewModel. +* **Advanced Pydantic Validation:** Explore advanced Pydantic features like nested models and custom validators for more robust data validation. +* **Advanced Visualization Techniques:** Integrate libraries like Plotly, PyVista and VTK with Trame to produce sophisticated 2D and 3D data visualizations. +* **Deployment to NOVA/NDIP:** Learn the steps for containerizing your application with Docker, defining your tool with an XML file, and deploying it to the NOVA/NDIP platform. + +**Core Components and Workflow:** + +1. **Start with the NOVA Template:** Use `copier` to create a starting point. +2. **Define Data with Pydantic:** Create Pydantic models for structured data and validation. +3. **Implement the MVVM Pattern:** + * Use the `Model` layer to define the application data and business logic, including connecting to NDIP via `nova-galaxy`. + * Create a `ViewModel` to serve as an intermediary between the `Model` and `View`, exposing data and handling user interactions. + * Construct the `View` (UI) using `nova-trame` and Vuetify, binding UI elements to the ViewModel. +4. **Interact with NDIP:** Use `nova-galaxy` to connect to NDIP, run tools, and manage data. +5. **Develop the User Interface:** Build a web-based user interface using `nova-trame` and Trame. +6. **Create advanced visualizations:** Integrate Plotly, PyVista, and VTK libraries to visualize data in the UI. +7. **Deploy the Application:** Containerize your application and deploy it to the NDIP platform for others to use. + +**Outcome:** + +By the end of this tutorial, you will have a solid understanding of the NOVA *framework*, its core libraries, and the MVVM design pattern. You will be able to build interactive web applications that connect to NDIP, run neutron data analysis tools, and visualize the results, empowering you to create custom tools for the neutron scattering community. The tutorial also provides a pathway for deploying your application to the NOVA/NDIP platform. \ No newline at end of file diff --git a/learners/setup.md b/learners/setup.md index 4244a314..ab623548 100755 --- a/learners/setup.md +++ b/learners/setup.md @@ -1,54 +1,78 @@ --- title: Setup --- +# Setup -FIXME: Setup instructions live in this document. Please specify the tools and -the data sets the Learner needs to have installed. +This section guides you through setting up your development environment to follow along with the NOVA tutorial. It builds upon the prerequisites outlined earlier and provides specific instructions to ensure you have the necessary tools and libraries installed and configured. -## Data Sets +## 1. Verify Prerequisites - -Download the [data zip file](https://example.com/FIXME) and unzip it to your Desktop +Before proceeding, ensure you have met the following prerequisites: -## Software Setup +* **Basic Python Knowledge:** A basic understanding of Python programming concepts is required. +* **Python Installation:** You must have Python 3.8 or higher installed on your system. Verify your Python version by running `python --version` or `python3 --version` in your terminal. +* **Python's `copier` Library:** We will be using this library to generate a starting application from a template. Install it using `pip install copier`. +* **Poetry:** The code samples provided in this tutorial leverage Poetry for dependency management. If you don't have Poetry installed, follow the instructions on the official Poetry website: [https://python-poetry.org/docs/#installation](https://python-poetry.org/docs/#installation). +* **NDIP Access:** You should have access to a working NDIP system. (Specific details about NDIP access will need to be provided by the instructor.) Ensure you have the necessary credentials (API key and NDIP URL) to connect to NDIP. These will be set as environment variables, as described later. +* **NOVA Libraries:** While Poetry will manage these dependencies for you, it's helpful to be aware of the core NOVA libraries: `nova-galaxy`, `nova-trame`, and `nova-mvvm`. You can find documentation for these libraries on ReadTheDocs (links provided in the "References" section). +* **A Text Editor or IDE:** You will need a text editor or IDE (such as VS Code, Sublime Text, or Atom) for writing code. +* **Familiarity with the Command Line:** You will need to be comfortable using the command line or terminal. -::::::::::::::::::::::::::::::::::::::: discussion +## 2. Install Project Dependencies -### Details +1. **Clone the Template:** Follow the instructions in the "Getting Started with a Template Application" episode to clone the NOVA template using `copier`. This will create a new directory (e.g., `nova_tutorial`) containing your project files. +2. **Navigate to the Project Directory:** Open your terminal and navigate to the newly created project directory: -Setup for different systems can be presented in dropdown menus via a `spoiler` -tag. They will join to this discussion block, so you can give a general overview -of the software used in this lesson here and fill out the individual operating -systems (and potentially add more, e.g. online setup) in the solutions blocks. + ```bash + cd nova_tutorial + ``` -::::::::::::::::::::::::::::::::::::::::::::::::::: +3. **Install Dependencies with Poetry:** Use Poetry to install the project dependencies defined in the `pyproject.toml` file: -:::::::::::::::: spoiler + ```bash + poetry install + ``` -### Windows + This command will create a virtual environment for your project and install all required libraries, including the NOVA libraries and Trame. -Use PuTTY +## 3. Configure Environment Variables -:::::::::::::::::::::::: +The NOVA framework requires you to set environment variables for your NDIP URL and API key. These variables are used to authenticate with the NDIP platform. -:::::::::::::::: spoiler +::::::::::::::::::::::::::::::::::::::::: callout -### MacOS +For this tutorial, we will be using calvera-test.ornl.gov as our galaxy endpoint. Please use that for your GALAXY_URL environment variable. For NDIP, calvera-test is platform that we use for testing and development of platform tools. Once tools are mature and ready for users, they'll be migrated to calvera.ornl.gov. This process is explained in more detail at the end of the tutorial. -Use Terminal.app +:::::::::::::::::::::::::::::::::::::::::::::::::: -:::::::::::::::::::::::: +1. **Set `GALAXY_URL`:** Set the `GALAXY_URL` environment variable to the URL of your NDIP instance. Replace `` with the actual URL: -:::::::::::::::: spoiler + ```bash + export GALAXY_URL= # Linux/macOS + set GALAXY_URL= # Windows (Command Prompt) + $env:GALAXY_URL="" # Windows (PowerShell) + ``` -### Linux +2. **Set `GALAXY_API_KEY`:** Set the `GALAXY_API_KEY` environment variable to your NDIP API key. Replace `` with your actual API key: -Use Terminal + ```bash + export GALAXY_API_KEY= # Linux/macOS + set GALAXY_API_KEY= # Windows (Command Prompt) + $env:GALAXY_API_KEY="" # Windows (PowerShell) + ``` -:::::::::::::::::::::::: + **Important:** For security reasons, it is recommended to avoid hardcoding your API key directly in your code. Using environment variables is a more secure and flexible approach. +## 4. Verify Your Setup + +To ensure your setup is correct, run the following command in your terminal within the `nova_tutorial` directory: + +```bash +echo $GALAXY_URL +echo $GALAXY_API_KEY +``` + +This should print the values of your `GALAXY_URL` and `GALAXY_API_KEY` environment variables. If the values are printed correctly, your setup is complete. + +You are now ready to start building your NOVA application! We will proceed in the next episode. -- GitLab From 8c6405f0dbfb3a6c8dea2ba6aa07a6b2be322d31 Mon Sep 17 00:00:00 2001 From: "Ayres, Andrew" Date: Thu, 6 Feb 2025 00:00:13 -0600 Subject: [PATCH 2/9] fixes for code and updates --- code/episode_2/{nova_tutorial => }/README.md | 0 .../episode_2/{nova_tutorial => }/poetry.lock | 0 .../{nova_tutorial => }/pyproject.toml | 0 .../src/nova_tutorial/__init__.py | 0 .../src/nova_tutorial/app/__init__.py | 0 .../src/nova_tutorial/app/__main__.py | 0 .../src/nova_tutorial/app/main.py | 0 .../src/nova_tutorial/app/models/__init__.py | 0 .../nova_tutorial/app/models/main_model.py | 0 .../src/nova_tutorial/app/mvvm_factory.py | 0 .../nova_tutorial/app/view_models/__init__.py | 0 .../src/nova_tutorial/app/view_models/main.py | 0 .../src/nova_tutorial/app/views/__init__.py | 0 .../src/nova_tutorial/app/views/main.py | 0 .../nova_tutorial/app/views/sample_tab_1.py | 0 .../nova_tutorial/app/views/sample_tab_2.py | 0 .../app/views/tab_content_panel.py | 0 .../src/nova_tutorial/app/views/tabs_panel.py | 0 code/episode_3/{nova_tutorial => }/README.md | 0 code/episode_3/image.png | Bin 0 -> 496830 bytes .../episode_3/{nova_tutorial => }/poetry.lock | 329 +++++++++++++----- .../{nova_tutorial => }/pyproject.toml | 0 .../src/nova_tutorial/__init__.py | 0 .../src/nova_tutorial/app/__init__.py | 0 .../src/nova_tutorial/app/__main__.py | 0 .../src/nova_tutorial/app/main.py | 0 .../src/nova_tutorial/app/models/__init__.py | 0 .../src/nova_tutorial/app/models/fractal.py | 7 +- .../nova_tutorial/app/models/main_model.py | 0 .../src/nova_tutorial/app/mvvm_factory.py | 0 .../nova_tutorial/app/view_models/__init__.py | 0 .../src/nova_tutorial/app/view_models/main.py | 0 .../src/nova_tutorial/app/views/__init__.py | 0 .../src/nova_tutorial/app/views/main.py | 0 .../nova_tutorial/app/views/sample_tab_1.py | 0 .../nova_tutorial/app/views/sample_tab_2.py | 0 .../app/views/tab_content_panel.py | 0 .../src/nova_tutorial/app/views/tabs_panel.py | 0 code/episode_4/poetry.lock | 329 +++++++++++++----- .../src/nova_tutorial/app/models/fractal.py | 11 +- .../nova_tutorial/app/models/main_model.py | 2 +- .../src/nova_tutorial/app/view_models/main.py | 6 +- .../nova_tutorial/app/views/fractal_tab.py | 6 + .../src/nova_tutorial/app/views/tabs_panel.py | 1 - code/episode_4/tmp.png | Bin 0 -> 496830 bytes episodes/03-Nova-Galaxy.md | 30 +- episodes/08-Next-Steps.md | 4 + 47 files changed, 553 insertions(+), 172 deletions(-) rename code/episode_2/{nova_tutorial => }/README.md (100%) rename code/episode_2/{nova_tutorial => }/poetry.lock (100%) rename code/episode_2/{nova_tutorial => }/pyproject.toml (100%) rename code/episode_2/{nova_tutorial => }/src/nova_tutorial/__init__.py (100%) rename code/episode_2/{nova_tutorial => }/src/nova_tutorial/app/__init__.py (100%) rename code/episode_2/{nova_tutorial => }/src/nova_tutorial/app/__main__.py (100%) rename code/episode_2/{nova_tutorial => }/src/nova_tutorial/app/main.py (100%) rename code/episode_2/{nova_tutorial => }/src/nova_tutorial/app/models/__init__.py (100%) rename code/episode_2/{nova_tutorial => }/src/nova_tutorial/app/models/main_model.py (100%) rename code/episode_2/{nova_tutorial => }/src/nova_tutorial/app/mvvm_factory.py (100%) rename code/episode_2/{nova_tutorial => }/src/nova_tutorial/app/view_models/__init__.py (100%) rename code/episode_2/{nova_tutorial => }/src/nova_tutorial/app/view_models/main.py (100%) rename code/episode_2/{nova_tutorial => }/src/nova_tutorial/app/views/__init__.py (100%) rename code/episode_2/{nova_tutorial => }/src/nova_tutorial/app/views/main.py (100%) rename code/episode_2/{nova_tutorial => }/src/nova_tutorial/app/views/sample_tab_1.py (100%) rename code/episode_2/{nova_tutorial => }/src/nova_tutorial/app/views/sample_tab_2.py (100%) rename code/episode_2/{nova_tutorial => }/src/nova_tutorial/app/views/tab_content_panel.py (100%) rename code/episode_2/{nova_tutorial => }/src/nova_tutorial/app/views/tabs_panel.py (100%) rename code/episode_3/{nova_tutorial => }/README.md (100%) create mode 100644 code/episode_3/image.png rename code/episode_3/{nova_tutorial => }/poetry.lock (91%) mode change 100755 => 100644 rename code/episode_3/{nova_tutorial => }/pyproject.toml (100%) rename code/episode_3/{nova_tutorial => }/src/nova_tutorial/__init__.py (100%) rename code/episode_3/{nova_tutorial => }/src/nova_tutorial/app/__init__.py (100%) rename code/episode_3/{nova_tutorial => }/src/nova_tutorial/app/__main__.py (100%) rename code/episode_3/{nova_tutorial => }/src/nova_tutorial/app/main.py (100%) rename code/episode_3/{nova_tutorial => }/src/nova_tutorial/app/models/__init__.py (100%) rename code/episode_3/{nova_tutorial => }/src/nova_tutorial/app/models/fractal.py (81%) rename code/episode_3/{nova_tutorial => }/src/nova_tutorial/app/models/main_model.py (100%) rename code/episode_3/{nova_tutorial => }/src/nova_tutorial/app/mvvm_factory.py (100%) rename code/episode_3/{nova_tutorial => }/src/nova_tutorial/app/view_models/__init__.py (100%) rename code/episode_3/{nova_tutorial => }/src/nova_tutorial/app/view_models/main.py (100%) rename code/episode_3/{nova_tutorial => }/src/nova_tutorial/app/views/__init__.py (100%) rename code/episode_3/{nova_tutorial => }/src/nova_tutorial/app/views/main.py (100%) rename code/episode_3/{nova_tutorial => }/src/nova_tutorial/app/views/sample_tab_1.py (100%) rename code/episode_3/{nova_tutorial => }/src/nova_tutorial/app/views/sample_tab_2.py (100%) rename code/episode_3/{nova_tutorial => }/src/nova_tutorial/app/views/tab_content_panel.py (100%) rename code/episode_3/{nova_tutorial => }/src/nova_tutorial/app/views/tabs_panel.py (100%) mode change 100755 => 100644 code/episode_4/poetry.lock create mode 100644 code/episode_4/tmp.png diff --git a/code/episode_2/nova_tutorial/README.md b/code/episode_2/README.md similarity index 100% rename from code/episode_2/nova_tutorial/README.md rename to code/episode_2/README.md diff --git a/code/episode_2/nova_tutorial/poetry.lock b/code/episode_2/poetry.lock similarity index 100% rename from code/episode_2/nova_tutorial/poetry.lock rename to code/episode_2/poetry.lock diff --git a/code/episode_2/nova_tutorial/pyproject.toml b/code/episode_2/pyproject.toml similarity index 100% rename from code/episode_2/nova_tutorial/pyproject.toml rename to code/episode_2/pyproject.toml diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/__init__.py b/code/episode_2/src/nova_tutorial/__init__.py similarity index 100% rename from code/episode_2/nova_tutorial/src/nova_tutorial/__init__.py rename to code/episode_2/src/nova_tutorial/__init__.py diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/__init__.py b/code/episode_2/src/nova_tutorial/app/__init__.py similarity index 100% rename from code/episode_2/nova_tutorial/src/nova_tutorial/app/__init__.py rename to code/episode_2/src/nova_tutorial/app/__init__.py diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/__main__.py b/code/episode_2/src/nova_tutorial/app/__main__.py similarity index 100% rename from code/episode_2/nova_tutorial/src/nova_tutorial/app/__main__.py rename to code/episode_2/src/nova_tutorial/app/__main__.py diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/main.py b/code/episode_2/src/nova_tutorial/app/main.py similarity index 100% rename from code/episode_2/nova_tutorial/src/nova_tutorial/app/main.py rename to code/episode_2/src/nova_tutorial/app/main.py diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/models/__init__.py b/code/episode_2/src/nova_tutorial/app/models/__init__.py similarity index 100% rename from code/episode_2/nova_tutorial/src/nova_tutorial/app/models/__init__.py rename to code/episode_2/src/nova_tutorial/app/models/__init__.py diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/models/main_model.py b/code/episode_2/src/nova_tutorial/app/models/main_model.py similarity index 100% rename from code/episode_2/nova_tutorial/src/nova_tutorial/app/models/main_model.py rename to code/episode_2/src/nova_tutorial/app/models/main_model.py diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/mvvm_factory.py b/code/episode_2/src/nova_tutorial/app/mvvm_factory.py similarity index 100% rename from code/episode_2/nova_tutorial/src/nova_tutorial/app/mvvm_factory.py rename to code/episode_2/src/nova_tutorial/app/mvvm_factory.py diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/view_models/__init__.py b/code/episode_2/src/nova_tutorial/app/view_models/__init__.py similarity index 100% rename from code/episode_2/nova_tutorial/src/nova_tutorial/app/view_models/__init__.py rename to code/episode_2/src/nova_tutorial/app/view_models/__init__.py diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/view_models/main.py b/code/episode_2/src/nova_tutorial/app/view_models/main.py similarity index 100% rename from code/episode_2/nova_tutorial/src/nova_tutorial/app/view_models/main.py rename to code/episode_2/src/nova_tutorial/app/view_models/main.py diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/__init__.py b/code/episode_2/src/nova_tutorial/app/views/__init__.py similarity index 100% rename from code/episode_2/nova_tutorial/src/nova_tutorial/app/views/__init__.py rename to code/episode_2/src/nova_tutorial/app/views/__init__.py diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/main.py b/code/episode_2/src/nova_tutorial/app/views/main.py similarity index 100% rename from code/episode_2/nova_tutorial/src/nova_tutorial/app/views/main.py rename to code/episode_2/src/nova_tutorial/app/views/main.py diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/sample_tab_1.py b/code/episode_2/src/nova_tutorial/app/views/sample_tab_1.py similarity index 100% rename from code/episode_2/nova_tutorial/src/nova_tutorial/app/views/sample_tab_1.py rename to code/episode_2/src/nova_tutorial/app/views/sample_tab_1.py diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/sample_tab_2.py b/code/episode_2/src/nova_tutorial/app/views/sample_tab_2.py similarity index 100% rename from code/episode_2/nova_tutorial/src/nova_tutorial/app/views/sample_tab_2.py rename to code/episode_2/src/nova_tutorial/app/views/sample_tab_2.py diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/tab_content_panel.py b/code/episode_2/src/nova_tutorial/app/views/tab_content_panel.py similarity index 100% rename from code/episode_2/nova_tutorial/src/nova_tutorial/app/views/tab_content_panel.py rename to code/episode_2/src/nova_tutorial/app/views/tab_content_panel.py diff --git a/code/episode_2/nova_tutorial/src/nova_tutorial/app/views/tabs_panel.py b/code/episode_2/src/nova_tutorial/app/views/tabs_panel.py similarity index 100% rename from code/episode_2/nova_tutorial/src/nova_tutorial/app/views/tabs_panel.py rename to code/episode_2/src/nova_tutorial/app/views/tabs_panel.py diff --git a/code/episode_3/nova_tutorial/README.md b/code/episode_3/README.md similarity index 100% rename from code/episode_3/nova_tutorial/README.md rename to code/episode_3/README.md diff --git a/code/episode_3/image.png b/code/episode_3/image.png new file mode 100644 index 0000000000000000000000000000000000000000..3989c99fbeafdf68d33a22cc14832b03eb19b5b5 GIT binary patch literal 496830 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 z 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

3t9+CWmn5^~o?l#WVWQ&RIQ_DWDPN0@ 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 BVF3UD literal 0 HcmV?d00001 diff --git a/code/episode_3/nova_tutorial/poetry.lock b/code/episode_3/poetry.lock old mode 100755 new mode 100644 similarity index 91% rename from code/episode_3/nova_tutorial/poetry.lock rename to code/episode_3/poetry.lock index d2927940..5c404ed1 --- a/code/episode_3/nova_tutorial/poetry.lock +++ b/code/episode_3/poetry.lock @@ -1,9 +1,10 @@ -# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" version = "2.4.4" description = "Happy Eyeballs for asyncio" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -13,87 +14,93 @@ files = [ [[package]] name = "aiohttp" -version = "3.11.11" +version = "3.11.12" description = "Async http client/server framework (asyncio)" +category = "main" optional = false python-versions = ">=3.9" files = [ - {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a60804bff28662cbcf340a4d61598891f12eea3a66af48ecfdc975ceec21e3c8"}, - {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4b4fa1cb5f270fb3eab079536b764ad740bb749ce69a94d4ec30ceee1b5940d5"}, - {file = "aiohttp-3.11.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:731468f555656767cda219ab42e033355fe48c85fbe3ba83a349631541715ba2"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb23d8bb86282b342481cad4370ea0853a39e4a32a0042bb52ca6bdde132df43"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f047569d655f81cb70ea5be942ee5d4421b6219c3f05d131f64088c73bb0917f"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd7659baae9ccf94ae5fe8bfaa2c7bc2e94d24611528395ce88d009107e00c6d"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af01e42ad87ae24932138f154105e88da13ce7d202a6de93fafdafb2883a00ef"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5854be2f3e5a729800bac57a8d76af464e160f19676ab6aea74bde18ad19d438"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6526e5fb4e14f4bbf30411216780c9967c20c5a55f2f51d3abd6de68320cc2f3"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:85992ee30a31835fc482468637b3e5bd085fa8fe9392ba0bdcbdc1ef5e9e3c55"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:88a12ad8ccf325a8a5ed80e6d7c3bdc247d66175afedbe104ee2aaca72960d8e"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0a6d3fbf2232e3a08c41eca81ae4f1dff3d8f1a30bae415ebe0af2d2458b8a33"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84a585799c58b795573c7fa9b84c455adf3e1d72f19a2bf498b54a95ae0d194c"}, - {file = "aiohttp-3.11.11-cp310-cp310-win32.whl", hash = "sha256:bfde76a8f430cf5c5584553adf9926534352251d379dcb266ad2b93c54a29745"}, - {file = "aiohttp-3.11.11-cp310-cp310-win_amd64.whl", hash = "sha256:0fd82b8e9c383af11d2b26f27a478640b6b83d669440c0a71481f7c865a51da9"}, - {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ba74ec819177af1ef7f59063c6d35a214a8fde6f987f7661f4f0eecc468a8f76"}, - {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4af57160800b7a815f3fe0eba9b46bf28aafc195555f1824555fa2cfab6c1538"}, - {file = "aiohttp-3.11.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffa336210cf9cd8ed117011085817d00abe4c08f99968deef0013ea283547204"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81b8fe282183e4a3c7a1b72f5ade1094ed1c6345a8f153506d114af5bf8accd9"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af41686ccec6a0f2bdc66686dc0f403c41ac2089f80e2214a0f82d001052c03"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70d1f9dde0e5dd9e292a6d4d00058737052b01f3532f69c0c65818dac26dc287"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:249cc6912405917344192b9f9ea5cd5b139d49e0d2f5c7f70bdfaf6b4dbf3a2e"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0eb98d90b6690827dcc84c246811feeb4e1eea683c0eac6caed7549be9c84665"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec82bf1fda6cecce7f7b915f9196601a1bd1a3079796b76d16ae4cce6d0ef89b"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9fd46ce0845cfe28f108888b3ab17abff84ff695e01e73657eec3f96d72eef34"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bd176afcf8f5d2aed50c3647d4925d0db0579d96f75a31e77cbaf67d8a87742d"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ec2aa89305006fba9ffb98970db6c8221541be7bee4c1d027421d6f6df7d1ce2"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:92cde43018a2e17d48bb09c79e4d4cb0e236de5063ce897a5e40ac7cb4878773"}, - {file = "aiohttp-3.11.11-cp311-cp311-win32.whl", hash = "sha256:aba807f9569455cba566882c8938f1a549f205ee43c27b126e5450dc9f83cc62"}, - {file = "aiohttp-3.11.11-cp311-cp311-win_amd64.whl", hash = "sha256:ae545f31489548c87b0cced5755cfe5a5308d00407000e72c4fa30b19c3220ac"}, - {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e595c591a48bbc295ebf47cb91aebf9bd32f3ff76749ecf282ea7f9f6bb73886"}, - {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3ea1b59dc06396b0b424740a10a0a63974c725b1c64736ff788a3689d36c02d2"}, - {file = "aiohttp-3.11.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8811f3f098a78ffa16e0ea36dffd577eb031aea797cbdba81be039a4169e242c"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7227b87a355ce1f4bf83bfae4399b1f5bb42e0259cb9405824bd03d2f4336a"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d40f9da8cabbf295d3a9dae1295c69975b86d941bc20f0a087f0477fa0a66231"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffb3dc385f6bb1568aa974fe65da84723210e5d9707e360e9ecb51f59406cd2e"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8f5f7515f3552d899c61202d99dcb17d6e3b0de777900405611cd747cecd1b8"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3499c7ffbfd9c6a3d8d6a2b01c26639da7e43d47c7b4f788016226b1e711caa8"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8e2bf8029dbf0810c7bfbc3e594b51c4cc9101fbffb583a3923aea184724203c"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b6212a60e5c482ef90f2d788835387070a88d52cf6241d3916733c9176d39eab"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d119fafe7b634dbfa25a8c597718e69a930e4847f0b88e172744be24515140da"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:6fba278063559acc730abf49845d0e9a9e1ba74f85f0ee6efd5803f08b285853"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:92fc484e34b733704ad77210c7957679c5c3877bd1e6b6d74b185e9320cc716e"}, - {file = "aiohttp-3.11.11-cp312-cp312-win32.whl", hash = "sha256:9f5b3c1ed63c8fa937a920b6c1bec78b74ee09593b3f5b979ab2ae5ef60d7600"}, - {file = "aiohttp-3.11.11-cp312-cp312-win_amd64.whl", hash = "sha256:1e69966ea6ef0c14ee53ef7a3d68b564cc408121ea56c0caa2dc918c1b2f553d"}, - {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:541d823548ab69d13d23730a06f97460f4238ad2e5ed966aaf850d7c369782d9"}, - {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:929f3ed33743a49ab127c58c3e0a827de0664bfcda566108989a14068f820194"}, - {file = "aiohttp-3.11.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0882c2820fd0132240edbb4a51eb8ceb6eef8181db9ad5291ab3332e0d71df5f"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b63de12e44935d5aca7ed7ed98a255a11e5cb47f83a9fded7a5e41c40277d104"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa54f8ef31d23c506910c21163f22b124facb573bff73930735cf9fe38bf7dff"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a344d5dc18074e3872777b62f5f7d584ae4344cd6006c17ba12103759d407af3"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7fb429ab1aafa1f48578eb315ca45bd46e9c37de11fe45c7f5f4138091e2f1"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c341c7d868750e31961d6d8e60ff040fb9d3d3a46d77fd85e1ab8e76c3e9a5c4"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed9ee95614a71e87f1a70bc81603f6c6760128b140bc4030abe6abaa988f1c3d"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:de8d38f1c2810fa2a4f1d995a2e9c70bb8737b18da04ac2afbf3971f65781d87"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a9b7371665d4f00deb8f32208c7c5e652059b0fda41cf6dbcac6114a041f1cc2"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:620598717fce1b3bd14dd09947ea53e1ad510317c85dda2c9c65b622edc96b12"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf8d9bfee991d8acc72d060d53860f356e07a50f0e0d09a8dfedea1c554dd0d5"}, - {file = "aiohttp-3.11.11-cp313-cp313-win32.whl", hash = "sha256:9d73ee3725b7a737ad86c2eac5c57a4a97793d9f442599bea5ec67ac9f4bdc3d"}, - {file = "aiohttp-3.11.11-cp313-cp313-win_amd64.whl", hash = "sha256:c7a06301c2fb096bdb0bd25fe2011531c1453b9f2c163c8031600ec73af1cc99"}, - {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3e23419d832d969f659c208557de4a123e30a10d26e1e14b73431d3c13444c2e"}, - {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21fef42317cf02e05d3b09c028712e1d73a9606f02467fd803f7c1f39cc59add"}, - {file = "aiohttp-3.11.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1f21bb8d0235fc10c09ce1d11ffbd40fc50d3f08a89e4cf3a0c503dc2562247a"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1642eceeaa5ab6c9b6dfeaaa626ae314d808188ab23ae196a34c9d97efb68350"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2170816e34e10f2fd120f603e951630f8a112e1be3b60963a1f159f5699059a6"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8be8508d110d93061197fd2d6a74f7401f73b6d12f8822bbcd6d74f2b55d71b1"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4eed954b161e6b9b65f6be446ed448ed3921763cc432053ceb606f89d793927e"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6c9af134da4bc9b3bd3e6a70072509f295d10ee60c697826225b60b9959acdd"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:44167fc6a763d534a6908bdb2592269b4bf30a03239bcb1654781adf5e49caf1"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:479b8c6ebd12aedfe64563b85920525d05d394b85f166b7873c8bde6da612f9c"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:10b4ff0ad793d98605958089fabfa350e8e62bd5d40aa65cdc69d6785859f94e"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:b540bd67cfb54e6f0865ceccd9979687210d7ed1a1cc8c01f8e67e2f1e883d28"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1dac54e8ce2ed83b1f6b1a54005c87dfed139cf3f777fdc8afc76e7841101226"}, - {file = "aiohttp-3.11.11-cp39-cp39-win32.whl", hash = "sha256:568c1236b2fde93b7720f95a890741854c1200fba4a3471ff48b2934d2d93fd3"}, - {file = "aiohttp-3.11.11-cp39-cp39-win_amd64.whl", hash = "sha256:943a8b052e54dfd6439fd7989f67fc6a7f2138d0a2cf0a7de5f18aa4fe7eb3b1"}, - {file = "aiohttp-3.11.11.tar.gz", hash = "sha256:bb49c7f1e6ebf3821a42d81d494f538107610c3a705987f53068546b0e90303e"}, + {file = "aiohttp-3.11.12-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:aa8a8caca81c0a3e765f19c6953416c58e2f4cc1b84829af01dd1c771bb2f91f"}, + {file = "aiohttp-3.11.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:84ede78acde96ca57f6cf8ccb8a13fbaf569f6011b9a52f870c662d4dc8cd854"}, + {file = "aiohttp-3.11.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:584096938a001378484aa4ee54e05dc79c7b9dd933e271c744a97b3b6f644957"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:392432a2dde22b86f70dd4a0e9671a349446c93965f261dbaecfaf28813e5c42"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:88d385b8e7f3a870146bf5ea31786ef7463e99eb59e31db56e2315535d811f55"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b10a47e5390c4b30a0d58ee12581003be52eedd506862ab7f97da7a66805befb"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b5263dcede17b6b0c41ef0c3ccce847d82a7da98709e75cf7efde3e9e3b5cae"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50c5c7b8aa5443304c55c262c5693b108c35a3b61ef961f1e782dd52a2f559c7"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d1c031a7572f62f66f1257db37ddab4cb98bfaf9b9434a3b4840bf3560f5e788"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:7e44eba534381dd2687be50cbd5f2daded21575242ecfdaf86bbeecbc38dae8e"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:145a73850926018ec1681e734cedcf2716d6a8697d90da11284043b745c286d5"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:2c311e2f63e42c1bf86361d11e2c4a59f25d9e7aabdbdf53dc38b885c5435cdb"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ea756b5a7bac046d202a9a3889b9a92219f885481d78cd318db85b15cc0b7bcf"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:526c900397f3bbc2db9cb360ce9c35134c908961cdd0ac25b1ae6ffcaa2507ff"}, + {file = "aiohttp-3.11.12-cp310-cp310-win32.whl", hash = "sha256:b8d3bb96c147b39c02d3db086899679f31958c5d81c494ef0fc9ef5bb1359b3d"}, + {file = "aiohttp-3.11.12-cp310-cp310-win_amd64.whl", hash = "sha256:7fe3d65279bfbee8de0fb4f8c17fc4e893eed2dba21b2f680e930cc2b09075c5"}, + {file = "aiohttp-3.11.12-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:87a2e00bf17da098d90d4145375f1d985a81605267e7f9377ff94e55c5d769eb"}, + {file = "aiohttp-3.11.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b34508f1cd928ce915ed09682d11307ba4b37d0708d1f28e5774c07a7674cac9"}, + {file = "aiohttp-3.11.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:936d8a4f0f7081327014742cd51d320296b56aa6d324461a13724ab05f4b2933"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2de1378f72def7dfb5dbd73d86c19eda0ea7b0a6873910cc37d57e80f10d64e1"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9d45dbb3aaec05cf01525ee1a7ac72de46a8c425cb75c003acd29f76b1ffe94"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:930ffa1925393381e1e0a9b82137fa7b34c92a019b521cf9f41263976666a0d6"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8340def6737118f5429a5df4e88f440746b791f8f1c4ce4ad8a595f42c980bd5"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4016e383f91f2814e48ed61e6bda7d24c4d7f2402c75dd28f7e1027ae44ea204"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c0600bcc1adfaaac321422d615939ef300df81e165f6522ad096b73439c0f58"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:0450ada317a65383b7cce9576096150fdb97396dcfe559109b403c7242faffef"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:850ff6155371fd802a280f8d369d4e15d69434651b844bde566ce97ee2277420"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8fd12d0f989c6099e7b0f30dc6e0d1e05499f3337461f0b2b0dadea6c64b89df"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:76719dd521c20a58a6c256d058547b3a9595d1d885b830013366e27011ffe804"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:97fe431f2ed646a3b56142fc81d238abcbaff08548d6912acb0b19a0cadc146b"}, + {file = "aiohttp-3.11.12-cp311-cp311-win32.whl", hash = "sha256:e10c440d142fa8b32cfdb194caf60ceeceb3e49807072e0dc3a8887ea80e8c16"}, + {file = "aiohttp-3.11.12-cp311-cp311-win_amd64.whl", hash = "sha256:246067ba0cf5560cf42e775069c5d80a8989d14a7ded21af529a4e10e3e0f0e6"}, + {file = "aiohttp-3.11.12-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e392804a38353900c3fd8b7cacbea5132888f7129f8e241915e90b85f00e3250"}, + {file = "aiohttp-3.11.12-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8fa1510b96c08aaad49303ab11f8803787c99222288f310a62f493faf883ede1"}, + {file = "aiohttp-3.11.12-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dc065a4285307607df3f3686363e7f8bdd0d8ab35f12226362a847731516e42c"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddb31f8474695cd61fc9455c644fc1606c164b93bff2490390d90464b4655df"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dec0000d2d8621d8015c293e24589d46fa218637d820894cb7356c77eca3259"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3552fe98e90fdf5918c04769f338a87fa4f00f3b28830ea9b78b1bdc6140e0d"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dfe7f984f28a8ae94ff3a7953cd9678550dbd2a1f9bda5dd9c5ae627744c78e"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a481a574af914b6e84624412666cbfbe531a05667ca197804ecc19c97b8ab1b0"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1987770fb4887560363b0e1a9b75aa303e447433c41284d3af2840a2f226d6e0"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:a4ac6a0f0f6402854adca4e3259a623f5c82ec3f0c049374133bcb243132baf9"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c96a43822f1f9f69cc5c3706af33239489a6294be486a0447fb71380070d4d5f"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a5e69046f83c0d3cb8f0d5bd9b8838271b1bc898e01562a04398e160953e8eb9"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:68d54234c8d76d8ef74744f9f9fc6324f1508129e23da8883771cdbb5818cbef"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c9fd9dcf9c91affe71654ef77426f5cf8489305e1c66ed4816f5a21874b094b9"}, + {file = "aiohttp-3.11.12-cp312-cp312-win32.whl", hash = "sha256:0ed49efcd0dc1611378beadbd97beb5d9ca8fe48579fc04a6ed0844072261b6a"}, + {file = "aiohttp-3.11.12-cp312-cp312-win_amd64.whl", hash = "sha256:54775858c7f2f214476773ce785a19ee81d1294a6bedc5cc17225355aab74802"}, + {file = "aiohttp-3.11.12-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:413ad794dccb19453e2b97c2375f2ca3cdf34dc50d18cc2693bd5aed7d16f4b9"}, + {file = "aiohttp-3.11.12-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4a93d28ed4b4b39e6f46fd240896c29b686b75e39cc6992692e3922ff6982b4c"}, + {file = "aiohttp-3.11.12-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d589264dbba3b16e8951b6f145d1e6b883094075283dafcab4cdd564a9e353a0"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5148ca8955affdfeb864aca158ecae11030e952b25b3ae15d4e2b5ba299bad2"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:525410e0790aab036492eeea913858989c4cb070ff373ec3bc322d700bdf47c1"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bd8695be2c80b665ae3f05cb584093a1e59c35ecb7d794d1edd96e8cc9201d7"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0203433121484b32646a5f5ea93ae86f3d9559d7243f07e8c0eab5ff8e3f70e"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40cd36749a1035c34ba8d8aaf221b91ca3d111532e5ccb5fa8c3703ab1b967ed"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a7442662afebbf7b4c6d28cb7aab9e9ce3a5df055fc4116cc7228192ad6cb484"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:8a2fb742ef378284a50766e985804bd6adb5adb5aa781100b09befdbfa757b65"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2cee3b117a8d13ab98b38d5b6bdcd040cfb4181068d05ce0c474ec9db5f3c5bb"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f6a19bcab7fbd8f8649d6595624856635159a6527861b9cdc3447af288a00c00"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e4cecdb52aaa9994fbed6b81d4568427b6002f0a91c322697a4bfcc2b2363f5a"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:30f546358dfa0953db92ba620101fefc81574f87b2346556b90b5f3ef16e55ce"}, + {file = "aiohttp-3.11.12-cp313-cp313-win32.whl", hash = "sha256:ce1bb21fc7d753b5f8a5d5a4bae99566386b15e716ebdb410154c16c91494d7f"}, + {file = "aiohttp-3.11.12-cp313-cp313-win_amd64.whl", hash = "sha256:f7914ab70d2ee8ab91c13e5402122edbc77821c66d2758abb53aabe87f013287"}, + {file = "aiohttp-3.11.12-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c3623053b85b4296cd3925eeb725e386644fd5bc67250b3bb08b0f144803e7b"}, + {file = "aiohttp-3.11.12-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:67453e603cea8e85ed566b2700efa1f6916aefbc0c9fcb2e86aaffc08ec38e78"}, + {file = "aiohttp-3.11.12-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6130459189e61baac5a88c10019b21e1f0c6d00ebc770e9ce269475650ff7f73"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9060addfa4ff753b09392efe41e6af06ea5dd257829199747b9f15bfad819460"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:34245498eeb9ae54c687a07ad7f160053911b5745e186afe2d0c0f2898a1ab8a"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8dc0fba9a74b471c45ca1a3cb6e6913ebfae416678d90529d188886278e7f3f6"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a478aa11b328983c4444dacb947d4513cb371cd323f3845e53caeda6be5589d5"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c160a04283c8c6f55b5bf6d4cad59bb9c5b9c9cd08903841b25f1f7109ef1259"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:edb69b9589324bdc40961cdf0657815df674f1743a8d5ad9ab56a99e4833cfdd"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4ee84c2a22a809c4f868153b178fe59e71423e1f3d6a8cd416134bb231fbf6d3"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:bf4480a5438f80e0f1539e15a7eb8b5f97a26fe087e9828e2c0ec2be119a9f72"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:e6b2732ef3bafc759f653a98881b5b9cdef0716d98f013d376ee8dfd7285abf1"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:f752e80606b132140883bb262a457c475d219d7163d996dc9072434ffb0784c4"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ab3247d58b393bda5b1c8f31c9edece7162fc13265334217785518dd770792b8"}, + {file = "aiohttp-3.11.12-cp39-cp39-win32.whl", hash = "sha256:0d5176f310a7fe6f65608213cc74f4228e4f4ce9fd10bcb2bb6da8fc66991462"}, + {file = "aiohttp-3.11.12-cp39-cp39-win_amd64.whl", hash = "sha256:74bd573dde27e58c760d9ca8615c41a57e719bff315c9adb6f2a4281a28e8798"}, + {file = "aiohttp-3.11.12.tar.gz", hash = "sha256:7603ca26d75b1b86160ce1bbe2787a0b706e592af5b2504e12caa88a217767b0"}, ] [package.dependencies] @@ -113,6 +120,7 @@ speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] name = "aiosignal" version = "1.3.2" description = "aiosignal: a list of registered asynchronous callbacks" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -127,6 +135,7 @@ frozenlist = ">=1.1.0" name = "alabaster" version = "1.0.0" description = "A light, configurable Sphinx theme" +category = "dev" optional = false python-versions = ">=3.10" files = [ @@ -138,6 +147,7 @@ files = [ name = "annotated-types" version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -149,6 +159,7 @@ files = [ name = "async-timeout" version = "5.0.1" description = "Timeout context manager for asyncio programs" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -160,6 +171,7 @@ files = [ name = "attrs" version = "25.1.0" description = "Classes Without Boilerplate" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -179,6 +191,7 @@ tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] name = "babel" version = "2.17.0" description = "Internationalization utilities" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -189,10 +202,31 @@ files = [ [package.extras] dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata"] +[[package]] +name = "bioblend" +version = "1.4.0" +description = "Library for interacting with the Galaxy API" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "bioblend-1.4.0-py3-none-any.whl", hash = "sha256:20886e5f7658e1dc3e025cedb4be88538342374afba583ce4e2acb5c14a25c63"}, + {file = "bioblend-1.4.0.tar.gz", hash = "sha256:175d49d288e27d132ff59c870551c87cd95d7747be55ab94807c563291a3fa1d"}, +] + +[package.dependencies] +requests = ">=2.20.0" +requests-toolbelt = ">=0.5.1,<0.9.0 || >0.9.0" +tuspy = "*" + +[package.extras] +testing = ["pytest"] + [[package]] name = "certifi" version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -204,6 +238,7 @@ files = [ name = "cfgv" version = "3.4.0" description = "Validate configuration and produce human readable error messages." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -215,6 +250,7 @@ files = [ name = "charset-normalizer" version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -316,6 +352,7 @@ files = [ name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -327,6 +364,7 @@ files = [ name = "copier" version = "9.4.1" description = "A library for rendering project templates." +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -352,6 +390,7 @@ questionary = ">=1.8.1" name = "coverage" version = "7.6.10" description = "Code coverage measurement for Python" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -426,6 +465,7 @@ toml = ["tomli"] name = "deepdiff" version = "8.2.0" description = "Deep Difference and Search of any Python object/data. Recreate objects by adding adding deltas to each other." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -444,6 +484,7 @@ optimize = ["orjson"] name = "distlib" version = "0.3.9" description = "Distribution utilities" +category = "dev" optional = false python-versions = "*" files = [ @@ -455,6 +496,7 @@ files = [ name = "docutils" version = "0.21.2" description = "Docutils -- Python Documentation Utilities" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -466,6 +508,7 @@ files = [ name = "dunamai" version = "1.23.0" description = "Dynamic version generation" +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -480,6 +523,7 @@ packaging = ">=20.9" name = "exceptiongroup" version = "1.2.2" description = "Backport of PEP 654 (exception groups)" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -494,6 +538,7 @@ test = ["pytest (>=6)"] name = "filelock" version = "3.17.0" description = "A platform independent file lock." +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -510,6 +555,7 @@ typing = ["typing-extensions (>=4.12.2)"] name = "frozenlist" version = "1.5.0" description = "A list-like structure which implements collections.abc.MutableSequence" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -611,6 +657,7 @@ files = [ name = "funcy" version = "2.0" description = "A fancy and practical functional tools" +category = "dev" optional = false python-versions = "*" files = [ @@ -622,6 +669,7 @@ files = [ name = "identify" version = "2.6.6" description = "File identification library for Python" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -636,6 +684,7 @@ license = ["ukkonen"] name = "idna" version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -650,6 +699,7 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -661,6 +711,7 @@ files = [ name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -672,6 +723,7 @@ files = [ name = "jinja2" version = "3.1.5" description = "A very fast and expressive template engine." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -689,6 +741,7 @@ i18n = ["Babel (>=2.7)"] name = "jinja2-ansible-filters" version = "1.3.2" description = "A port of Ansible's jinja2 filters without requiring ansible core." +category = "dev" optional = false python-versions = "*" files = [ @@ -707,6 +760,7 @@ test = ["pytest", "pytest-cov"] name = "libsass" version = "0.23.0" description = "Sass for Python: A straightforward binding of libsass for Python." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -722,6 +776,7 @@ files = [ name = "markupsafe" version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -792,6 +847,7 @@ files = [ name = "mergedeep" version = "1.3.4" description = "A deep merge function for 🐍." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -803,6 +859,7 @@ files = [ name = "more-itertools" version = "10.6.0" description = "More routines for operating on iterables, beyond itertools" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -814,6 +871,7 @@ files = [ name = "msgpack" version = "1.1.0" description = "MessagePack serializer" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -887,6 +945,7 @@ files = [ name = "multidict" version = "6.1.0" description = "multidict implementation" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -991,6 +1050,7 @@ typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} name = "mypy" version = "1.15.0" description = "Optional static typing for Python" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1044,6 +1104,7 @@ reports = ["lxml"] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1055,6 +1116,7 @@ files = [ name = "nodeenv" version = "1.9.1" description = "Node.js virtual environment builder" +category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -1062,10 +1124,26 @@ files = [ {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] +[[package]] +name = "nova-galaxy" +version = "0.4.0" +description = "Utilties for accessing the ORNL Galaxy instance" +category = "main" +optional = false +python-versions = "<4.0,>=3.10" +files = [ + {file = "nova_galaxy-0.4.0-py3-none-any.whl", hash = "sha256:407ae4b272f5386bd23578daf8c0c9c48c3723fd9fd14aa7328ea38532427ab9"}, +] + +[package.dependencies] +bioblend = ">=1.3.0,<2.0.0" +tomli = ">=2.0.2,<3.0.0" + [[package]] name = "nova-mvvm" version = "0.9.0" description = "A Python Package for Model-View-ViewModel pattern" +category = "main" optional = false python-versions = "<4.0,>=3.10" files = [ @@ -1086,6 +1164,7 @@ pyqt6 = ["pyqt6 (>=6.7.0,<7.0.0)"] name = "nova-trame" version = "0.14.2" description = "A Python Package for injecting curated themes and custom components into Trame applications" +category = "main" optional = false python-versions = "<4.0,>=3.10" files = [ @@ -1106,6 +1185,7 @@ trame-vuetify = "*" name = "orderly-set" version = "5.3.0" description = "Orderly set" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1117,6 +1197,7 @@ files = [ name = "packaging" version = "24.2" description = "Core utilities for Python packages" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1128,6 +1209,7 @@ files = [ name = "pathspec" version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1139,6 +1221,7 @@ files = [ name = "platformdirs" version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1155,6 +1238,7 @@ type = ["mypy (>=1.11.2)"] name = "pluggy" version = "1.5.0" description = "plugin and hook calling mechanisms for python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1170,6 +1254,7 @@ testing = ["pytest", "pytest-benchmark"] name = "plumbum" version = "1.9.0" description = "Plumbum: shell combinators library" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1190,6 +1275,7 @@ test = ["coverage[toml]", "paramiko", "psutil", "pytest (>=6.0)", "pytest-cov", name = "pockets" version = "0.9.1" description = "A collection of helpful Python tools!" +category = "dev" optional = false python-versions = "*" files = [ @@ -1204,6 +1290,7 @@ six = ">=1.5.2" name = "pre-commit" version = "4.1.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1222,6 +1309,7 @@ virtualenv = ">=20.10.0" name = "prompt-toolkit" version = "3.0.50" description = "Library for building powerful interactive command lines in Python" +category = "dev" optional = false python-versions = ">=3.8.0" files = [ @@ -1236,6 +1324,7 @@ wcwidth = "*" name = "propcache" version = "0.2.1" description = "Accelerated property cache" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1327,6 +1416,7 @@ files = [ name = "pydantic" version = "2.10.6" description = "Data validation using Python type hints" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1347,6 +1437,7 @@ timezone = ["tzdata"] name = "pydantic-core" version = "2.27.2" description = "Core functionality for Pydantic validation and serialization" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1459,6 +1550,7 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" name = "pygments" version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1473,6 +1565,7 @@ windows-terminal = ["colorama (>=0.4.6)"] name = "pytest" version = "8.3.4" description = "pytest: simple powerful testing with Python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1495,6 +1588,7 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments name = "pytest-asyncio" version = "0.25.3" description = "Pytest support for asyncio" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1513,6 +1607,7 @@ testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] name = "pywin32" version = "308" description = "Python for Window Extensions" +category = "dev" optional = false python-versions = "*" files = [ @@ -1540,6 +1635,7 @@ files = [ name = "pyyaml" version = "6.0.2" description = "YAML parser and emitter for Python" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1602,6 +1698,7 @@ files = [ name = "questionary" version = "2.1.0" description = "Python library to build pretty command line user prompts ⭐️" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1616,6 +1713,7 @@ prompt_toolkit = ">=2.0,<4.0" name = "requests" version = "2.32.3" description = "Python HTTP for Humans." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1633,10 +1731,26 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "ruff" version = "0.9.4" description = "An extremely fast Python linter and code formatter, written in Rust." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1664,6 +1778,7 @@ files = [ name = "six" version = "1.17.0" description = "Python 2 and 3 compatibility utilities" +category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -1675,6 +1790,7 @@ files = [ name = "snowballstemmer" version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +category = "dev" optional = false python-versions = "*" files = [ @@ -1686,6 +1802,7 @@ files = [ name = "sphinx" version = "8.1.3" description = "Python documentation generator" +category = "dev" optional = false python-versions = ">=3.10" files = [ @@ -1721,6 +1838,7 @@ test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=8.0)", "setuptools name = "sphinx-rtd-theme" version = "3.0.2" description = "Read the Docs theme for Sphinx" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1740,6 +1858,7 @@ dev = ["bump2version", "transifex-client", "twine", "wheel"] name = "sphinxcontrib-applehelp" version = "2.0.0" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1756,6 +1875,7 @@ test = ["pytest"] name = "sphinxcontrib-devhelp" version = "2.0.0" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1772,6 +1892,7 @@ test = ["pytest"] name = "sphinxcontrib-htmlhelp" version = "2.1.0" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1788,6 +1909,7 @@ test = ["html5lib", "pytest"] name = "sphinxcontrib-jquery" version = "4.1" description = "Extension to include jQuery on newer Sphinx releases" +category = "dev" optional = false python-versions = ">=2.7" files = [ @@ -1802,6 +1924,7 @@ Sphinx = ">=1.8" name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1816,6 +1939,7 @@ test = ["flake8", "mypy", "pytest"] name = "sphinxcontrib-napoleon" version = "0.7" description = "Sphinx \"napoleon\" extension." +category = "dev" optional = false python-versions = "*" files = [ @@ -1831,6 +1955,7 @@ six = ">=1.5.2" name = "sphinxcontrib-qthelp" version = "2.0.0" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1847,6 +1972,7 @@ test = ["defusedxml (>=0.7.1)", "pytest"] name = "sphinxcontrib-serializinghtml" version = "2.0.0" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1859,10 +1985,23 @@ lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] standalone = ["Sphinx (>=5)"] test = ["pytest"] +[[package]] +name = "tinydb" +version = "4.8.2" +description = "TinyDB is a tiny, document oriented database optimized for your happiness :)" +category = "main" +optional = false +python-versions = "<4.0,>=3.8" +files = [ + {file = "tinydb-4.8.2-py3-none-any.whl", hash = "sha256:f97030ee5cbc91eeadd1d7af07ab0e48ceb04aa63d4a983adbaca4cba16e86c3"}, + {file = "tinydb-4.8.2.tar.gz", hash = "sha256:f7dfc39b8d7fda7a1ca62a8dbb449ffd340a117c1206b68c50b1a481fb95181d"}, +] + [[package]] name = "tomli" version = "2.2.1" description = "A lil' TOML parser" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1904,6 +2043,7 @@ files = [ name = "trame" version = "3.8.0" description = "Trame, a framework to build applications in plain Python" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1925,6 +2065,7 @@ jupyter = ["jupyterlab"] name = "trame-client" version = "3.5.2" description = "Internal client of trame" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1940,6 +2081,7 @@ test = ["Pillow", "pixelmatch", "pytest", "pytest-xprocess", "seleniumbase"] name = "trame-server" version = "3.3.0" description = "Internal server side implementation of trame" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1958,6 +2100,7 @@ dev = ["pre-commit", "pytest", "pytest-asyncio", "ruff"] name = "trame-vega" version = "2.1.1" description = "Vega widget for trame" +category = "main" optional = false python-versions = "*" files = [ @@ -1972,6 +2115,7 @@ trame-client = "*" name = "trame-vuetify" version = "2.8.1" description = "Vuetify widgets for trame" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1985,10 +2129,32 @@ trame-client = ">=3.4,<4" [package.extras] dev = ["pre-commit", "pytest", "ruff"] +[[package]] +name = "tuspy" +version = "1.1.0" +description = "A Python client for the tus resumable upload protocol -> http://tus.io" +category = "main" +optional = false +python-versions = ">=3.5.3" +files = [ + {file = "tuspy-1.1.0-py3-none-any.whl", hash = "sha256:7fc5ac8fb25de37c96c90213f83a1ffdede7f48a471cb5a15a2f57846828a79a"}, + {file = "tuspy-1.1.0.tar.gz", hash = "sha256:156734eac5c61a046cfecd70f14119f05be92cce198eb5a1a99a664482bedb89"}, +] + +[package.dependencies] +aiohttp = ">=3.6.2" +requests = ">=2.18.4" +tinydb = ">=3.5.0" + +[package.extras] +dev = ["Sphinx (==1.7.1)", "sphinx-autobuild (==2021.3.14)", "tox (>=2.3.1)"] +test = ["aioresponses (>=0.6.2)", "coverage (>=4.2)", "parametrize (>=0.1.1)", "pytest (>=3.0.3)", "pytest-cov (>=2.3.1,<2.6)", "responses (>=0.5.1)"] + [[package]] name = "typing-extensions" version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2000,6 +2166,7 @@ files = [ name = "urllib3" version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -2017,6 +2184,7 @@ zstd = ["zstandard (>=0.18.0)"] name = "virtualenv" version = "20.29.1" description = "Virtual Python Environment builder" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2037,6 +2205,7 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess name = "wcwidth" version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" +category = "dev" optional = false python-versions = "*" files = [ @@ -2048,6 +2217,7 @@ files = [ name = "wslink" version = "2.2.2" description = "Python/JavaScript library for communicating over WebSocket" +category = "main" optional = false python-versions = "*" files = [ @@ -2066,6 +2236,7 @@ ssl = ["cryptography"] name = "yarl" version = "1.18.3" description = "Yet another URL library" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -2161,4 +2332,4 @@ propcache = ">=0.2.0" [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "1131a1a151f36bbe11b4fc723d87b3b6ff1d523b617c477bea8ff7b11b8c9997" +content-hash = "5a4cbc0db131ca92dbfbfa620080878ba0b5276d9ac85c0b77f3a260b574c7ed" diff --git a/code/episode_3/nova_tutorial/pyproject.toml b/code/episode_3/pyproject.toml similarity index 100% rename from code/episode_3/nova_tutorial/pyproject.toml rename to code/episode_3/pyproject.toml diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/__init__.py b/code/episode_3/src/nova_tutorial/__init__.py similarity index 100% rename from code/episode_3/nova_tutorial/src/nova_tutorial/__init__.py rename to code/episode_3/src/nova_tutorial/__init__.py diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/__init__.py b/code/episode_3/src/nova_tutorial/app/__init__.py similarity index 100% rename from code/episode_3/nova_tutorial/src/nova_tutorial/app/__init__.py rename to code/episode_3/src/nova_tutorial/app/__init__.py diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/__main__.py b/code/episode_3/src/nova_tutorial/app/__main__.py similarity index 100% rename from code/episode_3/nova_tutorial/src/nova_tutorial/app/__main__.py rename to code/episode_3/src/nova_tutorial/app/__main__.py diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/main.py b/code/episode_3/src/nova_tutorial/app/main.py similarity index 100% rename from code/episode_3/nova_tutorial/src/nova_tutorial/app/main.py rename to code/episode_3/src/nova_tutorial/app/main.py diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/models/__init__.py b/code/episode_3/src/nova_tutorial/app/models/__init__.py similarity index 100% rename from code/episode_3/nova_tutorial/src/nova_tutorial/app/models/__init__.py rename to code/episode_3/src/nova_tutorial/app/models/__init__.py diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/models/fractal.py b/code/episode_3/src/nova_tutorial/app/models/fractal.py similarity index 81% rename from code/episode_3/nova_tutorial/src/nova_tutorial/app/models/fractal.py rename to code/episode_3/src/nova_tutorial/app/models/fractal.py index 39ff1fd0..a5c2b682 100755 --- a/code/episode_3/nova_tutorial/src/nova_tutorial/app/models/fractal.py +++ b/code/episode_3/src/nova_tutorial/app/models/fractal.py @@ -19,13 +19,14 @@ class Fractal: ) nova = Nova(galaxy_url=self.galaxy_url, galaxy_key=self.galaxy_key) - tool = Tool(id="neutrons_fractal") + tool = Tool(id="neutrons_fracta") params = Parameters() - #params.add_input(name="option", value=self.fractal_type) + params.add_input(name="option", value=self.fractal_type) with nova.connect() as galaxy_connection: data_store = galaxy_connection.create_data_store(name="fractal_store") data_store.persist() - tool.run(data_store, params) + output = tool.run(data_store, params) + output.get_dataset("output").download("image.png") print("Fractal tool finished successfully.") \ No newline at end of file diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/models/main_model.py b/code/episode_3/src/nova_tutorial/app/models/main_model.py similarity index 100% rename from code/episode_3/nova_tutorial/src/nova_tutorial/app/models/main_model.py rename to code/episode_3/src/nova_tutorial/app/models/main_model.py diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/mvvm_factory.py b/code/episode_3/src/nova_tutorial/app/mvvm_factory.py similarity index 100% rename from code/episode_3/nova_tutorial/src/nova_tutorial/app/mvvm_factory.py rename to code/episode_3/src/nova_tutorial/app/mvvm_factory.py diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/view_models/__init__.py b/code/episode_3/src/nova_tutorial/app/view_models/__init__.py similarity index 100% rename from code/episode_3/nova_tutorial/src/nova_tutorial/app/view_models/__init__.py rename to code/episode_3/src/nova_tutorial/app/view_models/__init__.py diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/view_models/main.py b/code/episode_3/src/nova_tutorial/app/view_models/main.py similarity index 100% rename from code/episode_3/nova_tutorial/src/nova_tutorial/app/view_models/main.py rename to code/episode_3/src/nova_tutorial/app/view_models/main.py diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/__init__.py b/code/episode_3/src/nova_tutorial/app/views/__init__.py similarity index 100% rename from code/episode_3/nova_tutorial/src/nova_tutorial/app/views/__init__.py rename to code/episode_3/src/nova_tutorial/app/views/__init__.py diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/main.py b/code/episode_3/src/nova_tutorial/app/views/main.py similarity index 100% rename from code/episode_3/nova_tutorial/src/nova_tutorial/app/views/main.py rename to code/episode_3/src/nova_tutorial/app/views/main.py diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/sample_tab_1.py b/code/episode_3/src/nova_tutorial/app/views/sample_tab_1.py similarity index 100% rename from code/episode_3/nova_tutorial/src/nova_tutorial/app/views/sample_tab_1.py rename to code/episode_3/src/nova_tutorial/app/views/sample_tab_1.py diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/sample_tab_2.py b/code/episode_3/src/nova_tutorial/app/views/sample_tab_2.py similarity index 100% rename from code/episode_3/nova_tutorial/src/nova_tutorial/app/views/sample_tab_2.py rename to code/episode_3/src/nova_tutorial/app/views/sample_tab_2.py diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/tab_content_panel.py b/code/episode_3/src/nova_tutorial/app/views/tab_content_panel.py similarity index 100% rename from code/episode_3/nova_tutorial/src/nova_tutorial/app/views/tab_content_panel.py rename to code/episode_3/src/nova_tutorial/app/views/tab_content_panel.py diff --git a/code/episode_3/nova_tutorial/src/nova_tutorial/app/views/tabs_panel.py b/code/episode_3/src/nova_tutorial/app/views/tabs_panel.py similarity index 100% rename from code/episode_3/nova_tutorial/src/nova_tutorial/app/views/tabs_panel.py rename to code/episode_3/src/nova_tutorial/app/views/tabs_panel.py diff --git a/code/episode_4/poetry.lock b/code/episode_4/poetry.lock old mode 100755 new mode 100644 index d2927940..5c404ed1 --- a/code/episode_4/poetry.lock +++ b/code/episode_4/poetry.lock @@ -1,9 +1,10 @@ -# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" version = "2.4.4" description = "Happy Eyeballs for asyncio" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -13,87 +14,93 @@ files = [ [[package]] name = "aiohttp" -version = "3.11.11" +version = "3.11.12" description = "Async http client/server framework (asyncio)" +category = "main" optional = false python-versions = ">=3.9" files = [ - {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a60804bff28662cbcf340a4d61598891f12eea3a66af48ecfdc975ceec21e3c8"}, - {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4b4fa1cb5f270fb3eab079536b764ad740bb749ce69a94d4ec30ceee1b5940d5"}, - {file = "aiohttp-3.11.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:731468f555656767cda219ab42e033355fe48c85fbe3ba83a349631541715ba2"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb23d8bb86282b342481cad4370ea0853a39e4a32a0042bb52ca6bdde132df43"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f047569d655f81cb70ea5be942ee5d4421b6219c3f05d131f64088c73bb0917f"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd7659baae9ccf94ae5fe8bfaa2c7bc2e94d24611528395ce88d009107e00c6d"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af01e42ad87ae24932138f154105e88da13ce7d202a6de93fafdafb2883a00ef"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5854be2f3e5a729800bac57a8d76af464e160f19676ab6aea74bde18ad19d438"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6526e5fb4e14f4bbf30411216780c9967c20c5a55f2f51d3abd6de68320cc2f3"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:85992ee30a31835fc482468637b3e5bd085fa8fe9392ba0bdcbdc1ef5e9e3c55"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:88a12ad8ccf325a8a5ed80e6d7c3bdc247d66175afedbe104ee2aaca72960d8e"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0a6d3fbf2232e3a08c41eca81ae4f1dff3d8f1a30bae415ebe0af2d2458b8a33"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84a585799c58b795573c7fa9b84c455adf3e1d72f19a2bf498b54a95ae0d194c"}, - {file = "aiohttp-3.11.11-cp310-cp310-win32.whl", hash = "sha256:bfde76a8f430cf5c5584553adf9926534352251d379dcb266ad2b93c54a29745"}, - {file = "aiohttp-3.11.11-cp310-cp310-win_amd64.whl", hash = "sha256:0fd82b8e9c383af11d2b26f27a478640b6b83d669440c0a71481f7c865a51da9"}, - {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ba74ec819177af1ef7f59063c6d35a214a8fde6f987f7661f4f0eecc468a8f76"}, - {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4af57160800b7a815f3fe0eba9b46bf28aafc195555f1824555fa2cfab6c1538"}, - {file = "aiohttp-3.11.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffa336210cf9cd8ed117011085817d00abe4c08f99968deef0013ea283547204"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81b8fe282183e4a3c7a1b72f5ade1094ed1c6345a8f153506d114af5bf8accd9"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af41686ccec6a0f2bdc66686dc0f403c41ac2089f80e2214a0f82d001052c03"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70d1f9dde0e5dd9e292a6d4d00058737052b01f3532f69c0c65818dac26dc287"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:249cc6912405917344192b9f9ea5cd5b139d49e0d2f5c7f70bdfaf6b4dbf3a2e"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0eb98d90b6690827dcc84c246811feeb4e1eea683c0eac6caed7549be9c84665"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec82bf1fda6cecce7f7b915f9196601a1bd1a3079796b76d16ae4cce6d0ef89b"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9fd46ce0845cfe28f108888b3ab17abff84ff695e01e73657eec3f96d72eef34"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bd176afcf8f5d2aed50c3647d4925d0db0579d96f75a31e77cbaf67d8a87742d"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ec2aa89305006fba9ffb98970db6c8221541be7bee4c1d027421d6f6df7d1ce2"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:92cde43018a2e17d48bb09c79e4d4cb0e236de5063ce897a5e40ac7cb4878773"}, - {file = "aiohttp-3.11.11-cp311-cp311-win32.whl", hash = "sha256:aba807f9569455cba566882c8938f1a549f205ee43c27b126e5450dc9f83cc62"}, - {file = "aiohttp-3.11.11-cp311-cp311-win_amd64.whl", hash = "sha256:ae545f31489548c87b0cced5755cfe5a5308d00407000e72c4fa30b19c3220ac"}, - {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e595c591a48bbc295ebf47cb91aebf9bd32f3ff76749ecf282ea7f9f6bb73886"}, - {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3ea1b59dc06396b0b424740a10a0a63974c725b1c64736ff788a3689d36c02d2"}, - {file = "aiohttp-3.11.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8811f3f098a78ffa16e0ea36dffd577eb031aea797cbdba81be039a4169e242c"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7227b87a355ce1f4bf83bfae4399b1f5bb42e0259cb9405824bd03d2f4336a"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d40f9da8cabbf295d3a9dae1295c69975b86d941bc20f0a087f0477fa0a66231"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffb3dc385f6bb1568aa974fe65da84723210e5d9707e360e9ecb51f59406cd2e"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8f5f7515f3552d899c61202d99dcb17d6e3b0de777900405611cd747cecd1b8"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3499c7ffbfd9c6a3d8d6a2b01c26639da7e43d47c7b4f788016226b1e711caa8"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8e2bf8029dbf0810c7bfbc3e594b51c4cc9101fbffb583a3923aea184724203c"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b6212a60e5c482ef90f2d788835387070a88d52cf6241d3916733c9176d39eab"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d119fafe7b634dbfa25a8c597718e69a930e4847f0b88e172744be24515140da"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:6fba278063559acc730abf49845d0e9a9e1ba74f85f0ee6efd5803f08b285853"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:92fc484e34b733704ad77210c7957679c5c3877bd1e6b6d74b185e9320cc716e"}, - {file = "aiohttp-3.11.11-cp312-cp312-win32.whl", hash = "sha256:9f5b3c1ed63c8fa937a920b6c1bec78b74ee09593b3f5b979ab2ae5ef60d7600"}, - {file = "aiohttp-3.11.11-cp312-cp312-win_amd64.whl", hash = "sha256:1e69966ea6ef0c14ee53ef7a3d68b564cc408121ea56c0caa2dc918c1b2f553d"}, - {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:541d823548ab69d13d23730a06f97460f4238ad2e5ed966aaf850d7c369782d9"}, - {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:929f3ed33743a49ab127c58c3e0a827de0664bfcda566108989a14068f820194"}, - {file = "aiohttp-3.11.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0882c2820fd0132240edbb4a51eb8ceb6eef8181db9ad5291ab3332e0d71df5f"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b63de12e44935d5aca7ed7ed98a255a11e5cb47f83a9fded7a5e41c40277d104"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa54f8ef31d23c506910c21163f22b124facb573bff73930735cf9fe38bf7dff"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a344d5dc18074e3872777b62f5f7d584ae4344cd6006c17ba12103759d407af3"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7fb429ab1aafa1f48578eb315ca45bd46e9c37de11fe45c7f5f4138091e2f1"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c341c7d868750e31961d6d8e60ff040fb9d3d3a46d77fd85e1ab8e76c3e9a5c4"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed9ee95614a71e87f1a70bc81603f6c6760128b140bc4030abe6abaa988f1c3d"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:de8d38f1c2810fa2a4f1d995a2e9c70bb8737b18da04ac2afbf3971f65781d87"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a9b7371665d4f00deb8f32208c7c5e652059b0fda41cf6dbcac6114a041f1cc2"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:620598717fce1b3bd14dd09947ea53e1ad510317c85dda2c9c65b622edc96b12"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf8d9bfee991d8acc72d060d53860f356e07a50f0e0d09a8dfedea1c554dd0d5"}, - {file = "aiohttp-3.11.11-cp313-cp313-win32.whl", hash = "sha256:9d73ee3725b7a737ad86c2eac5c57a4a97793d9f442599bea5ec67ac9f4bdc3d"}, - {file = "aiohttp-3.11.11-cp313-cp313-win_amd64.whl", hash = "sha256:c7a06301c2fb096bdb0bd25fe2011531c1453b9f2c163c8031600ec73af1cc99"}, - {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3e23419d832d969f659c208557de4a123e30a10d26e1e14b73431d3c13444c2e"}, - {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21fef42317cf02e05d3b09c028712e1d73a9606f02467fd803f7c1f39cc59add"}, - {file = "aiohttp-3.11.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1f21bb8d0235fc10c09ce1d11ffbd40fc50d3f08a89e4cf3a0c503dc2562247a"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1642eceeaa5ab6c9b6dfeaaa626ae314d808188ab23ae196a34c9d97efb68350"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2170816e34e10f2fd120f603e951630f8a112e1be3b60963a1f159f5699059a6"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8be8508d110d93061197fd2d6a74f7401f73b6d12f8822bbcd6d74f2b55d71b1"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4eed954b161e6b9b65f6be446ed448ed3921763cc432053ceb606f89d793927e"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6c9af134da4bc9b3bd3e6a70072509f295d10ee60c697826225b60b9959acdd"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:44167fc6a763d534a6908bdb2592269b4bf30a03239bcb1654781adf5e49caf1"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:479b8c6ebd12aedfe64563b85920525d05d394b85f166b7873c8bde6da612f9c"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:10b4ff0ad793d98605958089fabfa350e8e62bd5d40aa65cdc69d6785859f94e"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:b540bd67cfb54e6f0865ceccd9979687210d7ed1a1cc8c01f8e67e2f1e883d28"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1dac54e8ce2ed83b1f6b1a54005c87dfed139cf3f777fdc8afc76e7841101226"}, - {file = "aiohttp-3.11.11-cp39-cp39-win32.whl", hash = "sha256:568c1236b2fde93b7720f95a890741854c1200fba4a3471ff48b2934d2d93fd3"}, - {file = "aiohttp-3.11.11-cp39-cp39-win_amd64.whl", hash = "sha256:943a8b052e54dfd6439fd7989f67fc6a7f2138d0a2cf0a7de5f18aa4fe7eb3b1"}, - {file = "aiohttp-3.11.11.tar.gz", hash = "sha256:bb49c7f1e6ebf3821a42d81d494f538107610c3a705987f53068546b0e90303e"}, + {file = "aiohttp-3.11.12-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:aa8a8caca81c0a3e765f19c6953416c58e2f4cc1b84829af01dd1c771bb2f91f"}, + {file = "aiohttp-3.11.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:84ede78acde96ca57f6cf8ccb8a13fbaf569f6011b9a52f870c662d4dc8cd854"}, + {file = "aiohttp-3.11.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:584096938a001378484aa4ee54e05dc79c7b9dd933e271c744a97b3b6f644957"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:392432a2dde22b86f70dd4a0e9671a349446c93965f261dbaecfaf28813e5c42"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:88d385b8e7f3a870146bf5ea31786ef7463e99eb59e31db56e2315535d811f55"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b10a47e5390c4b30a0d58ee12581003be52eedd506862ab7f97da7a66805befb"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b5263dcede17b6b0c41ef0c3ccce847d82a7da98709e75cf7efde3e9e3b5cae"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50c5c7b8aa5443304c55c262c5693b108c35a3b61ef961f1e782dd52a2f559c7"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d1c031a7572f62f66f1257db37ddab4cb98bfaf9b9434a3b4840bf3560f5e788"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:7e44eba534381dd2687be50cbd5f2daded21575242ecfdaf86bbeecbc38dae8e"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:145a73850926018ec1681e734cedcf2716d6a8697d90da11284043b745c286d5"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:2c311e2f63e42c1bf86361d11e2c4a59f25d9e7aabdbdf53dc38b885c5435cdb"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ea756b5a7bac046d202a9a3889b9a92219f885481d78cd318db85b15cc0b7bcf"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:526c900397f3bbc2db9cb360ce9c35134c908961cdd0ac25b1ae6ffcaa2507ff"}, + {file = "aiohttp-3.11.12-cp310-cp310-win32.whl", hash = "sha256:b8d3bb96c147b39c02d3db086899679f31958c5d81c494ef0fc9ef5bb1359b3d"}, + {file = "aiohttp-3.11.12-cp310-cp310-win_amd64.whl", hash = "sha256:7fe3d65279bfbee8de0fb4f8c17fc4e893eed2dba21b2f680e930cc2b09075c5"}, + {file = "aiohttp-3.11.12-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:87a2e00bf17da098d90d4145375f1d985a81605267e7f9377ff94e55c5d769eb"}, + {file = "aiohttp-3.11.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b34508f1cd928ce915ed09682d11307ba4b37d0708d1f28e5774c07a7674cac9"}, + {file = "aiohttp-3.11.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:936d8a4f0f7081327014742cd51d320296b56aa6d324461a13724ab05f4b2933"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2de1378f72def7dfb5dbd73d86c19eda0ea7b0a6873910cc37d57e80f10d64e1"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9d45dbb3aaec05cf01525ee1a7ac72de46a8c425cb75c003acd29f76b1ffe94"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:930ffa1925393381e1e0a9b82137fa7b34c92a019b521cf9f41263976666a0d6"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8340def6737118f5429a5df4e88f440746b791f8f1c4ce4ad8a595f42c980bd5"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4016e383f91f2814e48ed61e6bda7d24c4d7f2402c75dd28f7e1027ae44ea204"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c0600bcc1adfaaac321422d615939ef300df81e165f6522ad096b73439c0f58"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:0450ada317a65383b7cce9576096150fdb97396dcfe559109b403c7242faffef"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:850ff6155371fd802a280f8d369d4e15d69434651b844bde566ce97ee2277420"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8fd12d0f989c6099e7b0f30dc6e0d1e05499f3337461f0b2b0dadea6c64b89df"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:76719dd521c20a58a6c256d058547b3a9595d1d885b830013366e27011ffe804"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:97fe431f2ed646a3b56142fc81d238abcbaff08548d6912acb0b19a0cadc146b"}, + {file = "aiohttp-3.11.12-cp311-cp311-win32.whl", hash = "sha256:e10c440d142fa8b32cfdb194caf60ceeceb3e49807072e0dc3a8887ea80e8c16"}, + {file = "aiohttp-3.11.12-cp311-cp311-win_amd64.whl", hash = "sha256:246067ba0cf5560cf42e775069c5d80a8989d14a7ded21af529a4e10e3e0f0e6"}, + {file = "aiohttp-3.11.12-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e392804a38353900c3fd8b7cacbea5132888f7129f8e241915e90b85f00e3250"}, + {file = "aiohttp-3.11.12-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8fa1510b96c08aaad49303ab11f8803787c99222288f310a62f493faf883ede1"}, + {file = "aiohttp-3.11.12-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dc065a4285307607df3f3686363e7f8bdd0d8ab35f12226362a847731516e42c"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddb31f8474695cd61fc9455c644fc1606c164b93bff2490390d90464b4655df"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dec0000d2d8621d8015c293e24589d46fa218637d820894cb7356c77eca3259"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3552fe98e90fdf5918c04769f338a87fa4f00f3b28830ea9b78b1bdc6140e0d"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dfe7f984f28a8ae94ff3a7953cd9678550dbd2a1f9bda5dd9c5ae627744c78e"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a481a574af914b6e84624412666cbfbe531a05667ca197804ecc19c97b8ab1b0"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1987770fb4887560363b0e1a9b75aa303e447433c41284d3af2840a2f226d6e0"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:a4ac6a0f0f6402854adca4e3259a623f5c82ec3f0c049374133bcb243132baf9"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c96a43822f1f9f69cc5c3706af33239489a6294be486a0447fb71380070d4d5f"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a5e69046f83c0d3cb8f0d5bd9b8838271b1bc898e01562a04398e160953e8eb9"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:68d54234c8d76d8ef74744f9f9fc6324f1508129e23da8883771cdbb5818cbef"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c9fd9dcf9c91affe71654ef77426f5cf8489305e1c66ed4816f5a21874b094b9"}, + {file = "aiohttp-3.11.12-cp312-cp312-win32.whl", hash = "sha256:0ed49efcd0dc1611378beadbd97beb5d9ca8fe48579fc04a6ed0844072261b6a"}, + {file = "aiohttp-3.11.12-cp312-cp312-win_amd64.whl", hash = "sha256:54775858c7f2f214476773ce785a19ee81d1294a6bedc5cc17225355aab74802"}, + {file = "aiohttp-3.11.12-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:413ad794dccb19453e2b97c2375f2ca3cdf34dc50d18cc2693bd5aed7d16f4b9"}, + {file = "aiohttp-3.11.12-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4a93d28ed4b4b39e6f46fd240896c29b686b75e39cc6992692e3922ff6982b4c"}, + {file = "aiohttp-3.11.12-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d589264dbba3b16e8951b6f145d1e6b883094075283dafcab4cdd564a9e353a0"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5148ca8955affdfeb864aca158ecae11030e952b25b3ae15d4e2b5ba299bad2"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:525410e0790aab036492eeea913858989c4cb070ff373ec3bc322d700bdf47c1"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bd8695be2c80b665ae3f05cb584093a1e59c35ecb7d794d1edd96e8cc9201d7"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0203433121484b32646a5f5ea93ae86f3d9559d7243f07e8c0eab5ff8e3f70e"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40cd36749a1035c34ba8d8aaf221b91ca3d111532e5ccb5fa8c3703ab1b967ed"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a7442662afebbf7b4c6d28cb7aab9e9ce3a5df055fc4116cc7228192ad6cb484"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:8a2fb742ef378284a50766e985804bd6adb5adb5aa781100b09befdbfa757b65"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2cee3b117a8d13ab98b38d5b6bdcd040cfb4181068d05ce0c474ec9db5f3c5bb"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f6a19bcab7fbd8f8649d6595624856635159a6527861b9cdc3447af288a00c00"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e4cecdb52aaa9994fbed6b81d4568427b6002f0a91c322697a4bfcc2b2363f5a"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:30f546358dfa0953db92ba620101fefc81574f87b2346556b90b5f3ef16e55ce"}, + {file = "aiohttp-3.11.12-cp313-cp313-win32.whl", hash = "sha256:ce1bb21fc7d753b5f8a5d5a4bae99566386b15e716ebdb410154c16c91494d7f"}, + {file = "aiohttp-3.11.12-cp313-cp313-win_amd64.whl", hash = "sha256:f7914ab70d2ee8ab91c13e5402122edbc77821c66d2758abb53aabe87f013287"}, + {file = "aiohttp-3.11.12-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c3623053b85b4296cd3925eeb725e386644fd5bc67250b3bb08b0f144803e7b"}, + {file = "aiohttp-3.11.12-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:67453e603cea8e85ed566b2700efa1f6916aefbc0c9fcb2e86aaffc08ec38e78"}, + {file = "aiohttp-3.11.12-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6130459189e61baac5a88c10019b21e1f0c6d00ebc770e9ce269475650ff7f73"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9060addfa4ff753b09392efe41e6af06ea5dd257829199747b9f15bfad819460"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:34245498eeb9ae54c687a07ad7f160053911b5745e186afe2d0c0f2898a1ab8a"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8dc0fba9a74b471c45ca1a3cb6e6913ebfae416678d90529d188886278e7f3f6"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a478aa11b328983c4444dacb947d4513cb371cd323f3845e53caeda6be5589d5"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c160a04283c8c6f55b5bf6d4cad59bb9c5b9c9cd08903841b25f1f7109ef1259"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:edb69b9589324bdc40961cdf0657815df674f1743a8d5ad9ab56a99e4833cfdd"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4ee84c2a22a809c4f868153b178fe59e71423e1f3d6a8cd416134bb231fbf6d3"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:bf4480a5438f80e0f1539e15a7eb8b5f97a26fe087e9828e2c0ec2be119a9f72"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:e6b2732ef3bafc759f653a98881b5b9cdef0716d98f013d376ee8dfd7285abf1"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:f752e80606b132140883bb262a457c475d219d7163d996dc9072434ffb0784c4"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ab3247d58b393bda5b1c8f31c9edece7162fc13265334217785518dd770792b8"}, + {file = "aiohttp-3.11.12-cp39-cp39-win32.whl", hash = "sha256:0d5176f310a7fe6f65608213cc74f4228e4f4ce9fd10bcb2bb6da8fc66991462"}, + {file = "aiohttp-3.11.12-cp39-cp39-win_amd64.whl", hash = "sha256:74bd573dde27e58c760d9ca8615c41a57e719bff315c9adb6f2a4281a28e8798"}, + {file = "aiohttp-3.11.12.tar.gz", hash = "sha256:7603ca26d75b1b86160ce1bbe2787a0b706e592af5b2504e12caa88a217767b0"}, ] [package.dependencies] @@ -113,6 +120,7 @@ speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] name = "aiosignal" version = "1.3.2" description = "aiosignal: a list of registered asynchronous callbacks" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -127,6 +135,7 @@ frozenlist = ">=1.1.0" name = "alabaster" version = "1.0.0" description = "A light, configurable Sphinx theme" +category = "dev" optional = false python-versions = ">=3.10" files = [ @@ -138,6 +147,7 @@ files = [ name = "annotated-types" version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -149,6 +159,7 @@ files = [ name = "async-timeout" version = "5.0.1" description = "Timeout context manager for asyncio programs" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -160,6 +171,7 @@ files = [ name = "attrs" version = "25.1.0" description = "Classes Without Boilerplate" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -179,6 +191,7 @@ tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] name = "babel" version = "2.17.0" description = "Internationalization utilities" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -189,10 +202,31 @@ files = [ [package.extras] dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata"] +[[package]] +name = "bioblend" +version = "1.4.0" +description = "Library for interacting with the Galaxy API" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "bioblend-1.4.0-py3-none-any.whl", hash = "sha256:20886e5f7658e1dc3e025cedb4be88538342374afba583ce4e2acb5c14a25c63"}, + {file = "bioblend-1.4.0.tar.gz", hash = "sha256:175d49d288e27d132ff59c870551c87cd95d7747be55ab94807c563291a3fa1d"}, +] + +[package.dependencies] +requests = ">=2.20.0" +requests-toolbelt = ">=0.5.1,<0.9.0 || >0.9.0" +tuspy = "*" + +[package.extras] +testing = ["pytest"] + [[package]] name = "certifi" version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -204,6 +238,7 @@ files = [ name = "cfgv" version = "3.4.0" description = "Validate configuration and produce human readable error messages." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -215,6 +250,7 @@ files = [ name = "charset-normalizer" version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -316,6 +352,7 @@ files = [ name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -327,6 +364,7 @@ files = [ name = "copier" version = "9.4.1" description = "A library for rendering project templates." +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -352,6 +390,7 @@ questionary = ">=1.8.1" name = "coverage" version = "7.6.10" description = "Code coverage measurement for Python" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -426,6 +465,7 @@ toml = ["tomli"] name = "deepdiff" version = "8.2.0" description = "Deep Difference and Search of any Python object/data. Recreate objects by adding adding deltas to each other." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -444,6 +484,7 @@ optimize = ["orjson"] name = "distlib" version = "0.3.9" description = "Distribution utilities" +category = "dev" optional = false python-versions = "*" files = [ @@ -455,6 +496,7 @@ files = [ name = "docutils" version = "0.21.2" description = "Docutils -- Python Documentation Utilities" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -466,6 +508,7 @@ files = [ name = "dunamai" version = "1.23.0" description = "Dynamic version generation" +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -480,6 +523,7 @@ packaging = ">=20.9" name = "exceptiongroup" version = "1.2.2" description = "Backport of PEP 654 (exception groups)" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -494,6 +538,7 @@ test = ["pytest (>=6)"] name = "filelock" version = "3.17.0" description = "A platform independent file lock." +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -510,6 +555,7 @@ typing = ["typing-extensions (>=4.12.2)"] name = "frozenlist" version = "1.5.0" description = "A list-like structure which implements collections.abc.MutableSequence" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -611,6 +657,7 @@ files = [ name = "funcy" version = "2.0" description = "A fancy and practical functional tools" +category = "dev" optional = false python-versions = "*" files = [ @@ -622,6 +669,7 @@ files = [ name = "identify" version = "2.6.6" description = "File identification library for Python" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -636,6 +684,7 @@ license = ["ukkonen"] name = "idna" version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -650,6 +699,7 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -661,6 +711,7 @@ files = [ name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -672,6 +723,7 @@ files = [ name = "jinja2" version = "3.1.5" description = "A very fast and expressive template engine." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -689,6 +741,7 @@ i18n = ["Babel (>=2.7)"] name = "jinja2-ansible-filters" version = "1.3.2" description = "A port of Ansible's jinja2 filters without requiring ansible core." +category = "dev" optional = false python-versions = "*" files = [ @@ -707,6 +760,7 @@ test = ["pytest", "pytest-cov"] name = "libsass" version = "0.23.0" description = "Sass for Python: A straightforward binding of libsass for Python." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -722,6 +776,7 @@ files = [ name = "markupsafe" version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -792,6 +847,7 @@ files = [ name = "mergedeep" version = "1.3.4" description = "A deep merge function for 🐍." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -803,6 +859,7 @@ files = [ name = "more-itertools" version = "10.6.0" description = "More routines for operating on iterables, beyond itertools" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -814,6 +871,7 @@ files = [ name = "msgpack" version = "1.1.0" description = "MessagePack serializer" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -887,6 +945,7 @@ files = [ name = "multidict" version = "6.1.0" description = "multidict implementation" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -991,6 +1050,7 @@ typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} name = "mypy" version = "1.15.0" description = "Optional static typing for Python" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1044,6 +1104,7 @@ reports = ["lxml"] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1055,6 +1116,7 @@ files = [ name = "nodeenv" version = "1.9.1" description = "Node.js virtual environment builder" +category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -1062,10 +1124,26 @@ files = [ {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] +[[package]] +name = "nova-galaxy" +version = "0.4.0" +description = "Utilties for accessing the ORNL Galaxy instance" +category = "main" +optional = false +python-versions = "<4.0,>=3.10" +files = [ + {file = "nova_galaxy-0.4.0-py3-none-any.whl", hash = "sha256:407ae4b272f5386bd23578daf8c0c9c48c3723fd9fd14aa7328ea38532427ab9"}, +] + +[package.dependencies] +bioblend = ">=1.3.0,<2.0.0" +tomli = ">=2.0.2,<3.0.0" + [[package]] name = "nova-mvvm" version = "0.9.0" description = "A Python Package for Model-View-ViewModel pattern" +category = "main" optional = false python-versions = "<4.0,>=3.10" files = [ @@ -1086,6 +1164,7 @@ pyqt6 = ["pyqt6 (>=6.7.0,<7.0.0)"] name = "nova-trame" version = "0.14.2" description = "A Python Package for injecting curated themes and custom components into Trame applications" +category = "main" optional = false python-versions = "<4.0,>=3.10" files = [ @@ -1106,6 +1185,7 @@ trame-vuetify = "*" name = "orderly-set" version = "5.3.0" description = "Orderly set" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1117,6 +1197,7 @@ files = [ name = "packaging" version = "24.2" description = "Core utilities for Python packages" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1128,6 +1209,7 @@ files = [ name = "pathspec" version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1139,6 +1221,7 @@ files = [ name = "platformdirs" version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1155,6 +1238,7 @@ type = ["mypy (>=1.11.2)"] name = "pluggy" version = "1.5.0" description = "plugin and hook calling mechanisms for python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1170,6 +1254,7 @@ testing = ["pytest", "pytest-benchmark"] name = "plumbum" version = "1.9.0" description = "Plumbum: shell combinators library" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1190,6 +1275,7 @@ test = ["coverage[toml]", "paramiko", "psutil", "pytest (>=6.0)", "pytest-cov", name = "pockets" version = "0.9.1" description = "A collection of helpful Python tools!" +category = "dev" optional = false python-versions = "*" files = [ @@ -1204,6 +1290,7 @@ six = ">=1.5.2" name = "pre-commit" version = "4.1.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1222,6 +1309,7 @@ virtualenv = ">=20.10.0" name = "prompt-toolkit" version = "3.0.50" description = "Library for building powerful interactive command lines in Python" +category = "dev" optional = false python-versions = ">=3.8.0" files = [ @@ -1236,6 +1324,7 @@ wcwidth = "*" name = "propcache" version = "0.2.1" description = "Accelerated property cache" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1327,6 +1416,7 @@ files = [ name = "pydantic" version = "2.10.6" description = "Data validation using Python type hints" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1347,6 +1437,7 @@ timezone = ["tzdata"] name = "pydantic-core" version = "2.27.2" description = "Core functionality for Pydantic validation and serialization" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1459,6 +1550,7 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" name = "pygments" version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1473,6 +1565,7 @@ windows-terminal = ["colorama (>=0.4.6)"] name = "pytest" version = "8.3.4" description = "pytest: simple powerful testing with Python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1495,6 +1588,7 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments name = "pytest-asyncio" version = "0.25.3" description = "Pytest support for asyncio" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1513,6 +1607,7 @@ testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] name = "pywin32" version = "308" description = "Python for Window Extensions" +category = "dev" optional = false python-versions = "*" files = [ @@ -1540,6 +1635,7 @@ files = [ name = "pyyaml" version = "6.0.2" description = "YAML parser and emitter for Python" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1602,6 +1698,7 @@ files = [ name = "questionary" version = "2.1.0" description = "Python library to build pretty command line user prompts ⭐️" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1616,6 +1713,7 @@ prompt_toolkit = ">=2.0,<4.0" name = "requests" version = "2.32.3" description = "Python HTTP for Humans." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1633,10 +1731,26 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "ruff" version = "0.9.4" description = "An extremely fast Python linter and code formatter, written in Rust." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1664,6 +1778,7 @@ files = [ name = "six" version = "1.17.0" description = "Python 2 and 3 compatibility utilities" +category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -1675,6 +1790,7 @@ files = [ name = "snowballstemmer" version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +category = "dev" optional = false python-versions = "*" files = [ @@ -1686,6 +1802,7 @@ files = [ name = "sphinx" version = "8.1.3" description = "Python documentation generator" +category = "dev" optional = false python-versions = ">=3.10" files = [ @@ -1721,6 +1838,7 @@ test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=8.0)", "setuptools name = "sphinx-rtd-theme" version = "3.0.2" description = "Read the Docs theme for Sphinx" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1740,6 +1858,7 @@ dev = ["bump2version", "transifex-client", "twine", "wheel"] name = "sphinxcontrib-applehelp" version = "2.0.0" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1756,6 +1875,7 @@ test = ["pytest"] name = "sphinxcontrib-devhelp" version = "2.0.0" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1772,6 +1892,7 @@ test = ["pytest"] name = "sphinxcontrib-htmlhelp" version = "2.1.0" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1788,6 +1909,7 @@ test = ["html5lib", "pytest"] name = "sphinxcontrib-jquery" version = "4.1" description = "Extension to include jQuery on newer Sphinx releases" +category = "dev" optional = false python-versions = ">=2.7" files = [ @@ -1802,6 +1924,7 @@ Sphinx = ">=1.8" name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1816,6 +1939,7 @@ test = ["flake8", "mypy", "pytest"] name = "sphinxcontrib-napoleon" version = "0.7" description = "Sphinx \"napoleon\" extension." +category = "dev" optional = false python-versions = "*" files = [ @@ -1831,6 +1955,7 @@ six = ">=1.5.2" name = "sphinxcontrib-qthelp" version = "2.0.0" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1847,6 +1972,7 @@ test = ["defusedxml (>=0.7.1)", "pytest"] name = "sphinxcontrib-serializinghtml" version = "2.0.0" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1859,10 +1985,23 @@ lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] standalone = ["Sphinx (>=5)"] test = ["pytest"] +[[package]] +name = "tinydb" +version = "4.8.2" +description = "TinyDB is a tiny, document oriented database optimized for your happiness :)" +category = "main" +optional = false +python-versions = "<4.0,>=3.8" +files = [ + {file = "tinydb-4.8.2-py3-none-any.whl", hash = "sha256:f97030ee5cbc91eeadd1d7af07ab0e48ceb04aa63d4a983adbaca4cba16e86c3"}, + {file = "tinydb-4.8.2.tar.gz", hash = "sha256:f7dfc39b8d7fda7a1ca62a8dbb449ffd340a117c1206b68c50b1a481fb95181d"}, +] + [[package]] name = "tomli" version = "2.2.1" description = "A lil' TOML parser" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1904,6 +2043,7 @@ files = [ name = "trame" version = "3.8.0" description = "Trame, a framework to build applications in plain Python" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1925,6 +2065,7 @@ jupyter = ["jupyterlab"] name = "trame-client" version = "3.5.2" description = "Internal client of trame" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1940,6 +2081,7 @@ test = ["Pillow", "pixelmatch", "pytest", "pytest-xprocess", "seleniumbase"] name = "trame-server" version = "3.3.0" description = "Internal server side implementation of trame" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1958,6 +2100,7 @@ dev = ["pre-commit", "pytest", "pytest-asyncio", "ruff"] name = "trame-vega" version = "2.1.1" description = "Vega widget for trame" +category = "main" optional = false python-versions = "*" files = [ @@ -1972,6 +2115,7 @@ trame-client = "*" name = "trame-vuetify" version = "2.8.1" description = "Vuetify widgets for trame" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1985,10 +2129,32 @@ trame-client = ">=3.4,<4" [package.extras] dev = ["pre-commit", "pytest", "ruff"] +[[package]] +name = "tuspy" +version = "1.1.0" +description = "A Python client for the tus resumable upload protocol -> http://tus.io" +category = "main" +optional = false +python-versions = ">=3.5.3" +files = [ + {file = "tuspy-1.1.0-py3-none-any.whl", hash = "sha256:7fc5ac8fb25de37c96c90213f83a1ffdede7f48a471cb5a15a2f57846828a79a"}, + {file = "tuspy-1.1.0.tar.gz", hash = "sha256:156734eac5c61a046cfecd70f14119f05be92cce198eb5a1a99a664482bedb89"}, +] + +[package.dependencies] +aiohttp = ">=3.6.2" +requests = ">=2.18.4" +tinydb = ">=3.5.0" + +[package.extras] +dev = ["Sphinx (==1.7.1)", "sphinx-autobuild (==2021.3.14)", "tox (>=2.3.1)"] +test = ["aioresponses (>=0.6.2)", "coverage (>=4.2)", "parametrize (>=0.1.1)", "pytest (>=3.0.3)", "pytest-cov (>=2.3.1,<2.6)", "responses (>=0.5.1)"] + [[package]] name = "typing-extensions" version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2000,6 +2166,7 @@ files = [ name = "urllib3" version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -2017,6 +2184,7 @@ zstd = ["zstandard (>=0.18.0)"] name = "virtualenv" version = "20.29.1" description = "Virtual Python Environment builder" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2037,6 +2205,7 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess name = "wcwidth" version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" +category = "dev" optional = false python-versions = "*" files = [ @@ -2048,6 +2217,7 @@ files = [ name = "wslink" version = "2.2.2" description = "Python/JavaScript library for communicating over WebSocket" +category = "main" optional = false python-versions = "*" files = [ @@ -2066,6 +2236,7 @@ ssl = ["cryptography"] name = "yarl" version = "1.18.3" description = "Yet another URL library" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -2161,4 +2332,4 @@ propcache = ">=0.2.0" [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "1131a1a151f36bbe11b4fc723d87b3b6ff1d523b617c477bea8ff7b11b8c9997" +content-hash = "5a4cbc0db131ca92dbfbfa620080878ba0b5276d9ac85c0b77f3a260b574c7ed" diff --git a/code/episode_4/src/nova_tutorial/app/models/fractal.py b/code/episode_4/src/nova_tutorial/app/models/fractal.py index 7c5a5e5c..0a0bfdc7 100755 --- a/code/episode_4/src/nova_tutorial/app/models/fractal.py +++ b/code/episode_4/src/nova_tutorial/app/models/fractal.py @@ -1,12 +1,16 @@ import os +import base64 +from typing import Literal + from pydantic import BaseModel, Field from nova.galaxy import Nova, Parameters, Tool class Fractal(BaseModel): - fractal_type: str = Field(default="mandelbrot", description="Type of fractal to generate") + fractal_type: Literal["mandelbrot", "julia", "random", "markus"] = Field(default="mandelbrot") galaxy_url: str = Field(default_factory=lambda: os.getenv("GALAXY_URL"), description="NDIP Galaxy URL") galaxy_key: str = Field(default_factory=lambda: os.getenv("GALAXY_API_KEY"), description="NDIP Galaxy API Key") + image_data: str = Field(default="", description="Base64 encoded PNG") def set_fractal_type(self, fractal_type: str): self.fractal_type = fractal_type @@ -25,6 +29,7 @@ class Fractal(BaseModel): with nova.connect() as galaxy_connection: data_store = galaxy_connection.create_data_store(name="fractal_store") data_store.persist() - tool.run(data_store, params) + output = tool.run(data_store, params) + output.get_dataset("output").download("tmp.png") - print("Fractal tool finished successfully.") \ No newline at end of file + print("Fractal tool finished successfully.") diff --git a/code/episode_4/src/nova_tutorial/app/models/main_model.py b/code/episode_4/src/nova_tutorial/app/models/main_model.py index 1aa45abc..6d5028af 100755 --- a/code/episode_4/src/nova_tutorial/app/models/main_model.py +++ b/code/episode_4/src/nova_tutorial/app/models/main_model.py @@ -22,4 +22,4 @@ class MainModel(BaseModel): examples=["user"], ) password: str = Field(default="test_password", title="User Password") - fractal: Fractal = Field(default_factory=Fractal) + fractal: Fractal = Field(default_factory=Fractal) \ No newline at end of file diff --git a/code/episode_4/src/nova_tutorial/app/view_models/main.py b/code/episode_4/src/nova_tutorial/app/view_models/main.py index 1bceca83..5d218c68 100755 --- a/code/episode_4/src/nova_tutorial/app/view_models/main.py +++ b/code/episode_4/src/nova_tutorial/app/view_models/main.py @@ -7,11 +7,13 @@ from nova.mvvm.interface import BindingInterface from ..models.main_model import MainModel -class MainViewModel: +class MainViewModel(): """Viewmodel class, used to create data<->view binding and react on changes from GUI.""" def __init__(self, model: MainModel, binding: BindingInterface): self.model = model + self.image_path = "" + # here we create a bind that connects ViewModel with View. It returns a communicator object, # that allows to update View from ViewModel (by calling update_view). @@ -31,3 +33,5 @@ class MainViewModel: def run_fractal(self) -> None: self.model.fractal.run_fractal_tool() + self.image_path = self.model.fractal.image_data + self.update_view() diff --git a/code/episode_4/src/nova_tutorial/app/views/fractal_tab.py b/code/episode_4/src/nova_tutorial/app/views/fractal_tab.py index 950a12bf..c20fc15c 100755 --- a/code/episode_4/src/nova_tutorial/app/views/fractal_tab.py +++ b/code/episode_4/src/nova_tutorial/app/views/fractal_tab.py @@ -14,4 +14,10 @@ class FractalTab: vuetify.VBtn( "Run Fractal", click=self.view_model.run_fractal # calls the run_fractal_tool method + ) + vuetify.VImg( + v_model="config.image_path", + src=self.view_model.image_path, + max_height="400", + max_width="400" ) \ No newline at end of file diff --git a/code/episode_4/src/nova_tutorial/app/views/tabs_panel.py b/code/episode_4/src/nova_tutorial/app/views/tabs_panel.py index ac1f6ab3..672b25d5 100755 --- a/code/episode_4/src/nova_tutorial/app/views/tabs_panel.py +++ b/code/episode_4/src/nova_tutorial/app/views/tabs_panel.py @@ -11,7 +11,6 @@ class TabsPanel: def __init__(self, view_model: MainViewModel): self.view_model = view_model self.view_model.config_bind.connect("config") - #self.view_model.fractal_bind.connect("fractal") self.create_ui() def create_ui(self) -> None: diff --git a/code/episode_4/tmp.png b/code/episode_4/tmp.png new file mode 100644 index 0000000000000000000000000000000000000000..3989c99fbeafdf68d33a22cc14832b03eb19b5b5 GIT binary patch literal 496830 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 z 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

3t9+CWmn5^~o?l#WVWQ&RIQ_DWDPN0@ z+CNGZoOsRZrJfM$gqwbTepk{xUwcmUh+6;S;Oyv_hySYP*)e)|&y;?e+P7iXu3ek@ z=Bm7YlzO1^z#)YzGhIKiPA_kI{VX;4@4Jn09+%%O(h0to{$b-BvG(?Mmy*SEW%`eo zl$C{*d=BF~^Kwzk&E0ES@1&@(s=J+$UL@Vfk>}x=x@$@;zjev2@abQ_fkww>`fNGm z5tpJkaq@!f+X)5%xAJ=|=emkboGpDv%^{t0!>eDpd0wa0yeFCbtT=ArbL#ID;TLoL z+Cc}~UuyNf5mOlRRD8N~`K2F|?=Qalwk%p!uIB#o)2F>tuYP=UbMw}oY?(KXA|JoE zJzpQ9btP|msEtl$6)Voof4Nc zXXH+B^LSb`^VeUyt+#W3fsR}HYHok}+wWSb{^J`}*f#ZU`?=RpuSMt%kH|G{y+gX` zJ1s9P{2pQdLt*cpJtc8H_90L1wiwp$x~o^ZI~H_YI9JxqSAwpAiIS&FCOlciT_AhM z=*L6V)ukC1L6@yhi`u7MaZNCS$!B@+r`q{ZYsGqxCqI_@w{JJgI-&dZ|Nk~U$W*rb z@#D|U^L1`pqjaZkv)2Bpclt!t-ShSTil5F3TpPCXW{%dw^y=!_9UXCdt5QQmbh7J; zu508;Zu9&--`nltmT6atde3Clx-Qwi$Em(ZshNBCt_4p#{2C66ZU3+-HPp*#Qt1_= zhBJLHn!T1T+I0WdKL4v(Q_ITARz$7U>s>G*S?YmauUhzazva$ft73O*CEwe1jax|J zz0IWW%U@~--;MN8ylZpw)~&8u_17-j3}PRATTuJz>;B!lEe@8>{$MLM@%XDQ=e&gS!ZQq! zO;XDpCEAYN5cKpYQhieB-qrB3L1De3(yvda_18Ytk)E?<(k+XK+w zCO7k3?)>}C{r&d;EUq&4YuEd*C?^!>7szH8@hwv={c-E(QStZ-%jeg5B}(X}lsuZI zATBPxu`1k9KVW-}`0OoiyIEZHZgDkf>*TiQN7T+V5_?!Y-RyEGvH+5D2`C+*AcJA{XacVZz-+K1_ez*I^tyA}_mtS7^ zvu0kG%(g_~Ybx_Pv^fKAh&iSR-Tba#=hvBcEdSC?f%hCwra!-X>^;}v32}QW7G9hC z_iyd0t69g&4_x<()luTST)ZT7&#ZtJn{7PVZ>sMkNuH|D^W3_9d-@&z&b)KZ0dk*= zEHd@Z@1OS^bavUV`nO^c+nTS3$JZ|1VzTY%<m-f zuD@!pTx;SEf#(V*i@rIlukY$;p2}iZR(eg_^P2Mw_1N#)>puE<#}!5<7|jH&=@h%w znLc4-!;i!$cde&$z4gK#1O@NZQaKqB`LIgCYn6PSuaH9XB8{R`Ikk0l`y3{KuDCFf z3R!(Msd2LPT)x?Y#O=G!w?i^q3&!^L` z_PyT4mfVw8`7Ukq%vV)&dFF-7J^s7(-N$cshqtlq(yIA!e^QKG|8eeP^kT<>h7 z+3c@prK}b!nBH1Cx#6{&(84P@W>YnvwR7d9%~^9zc1icD)1`YaM0U+MHTh7Y)C&_q zy|<6T;?;crE@S!nyq(`KX=c-w`^lyT6SovxWZ1Z&=d0%XeZ3MYdu&qHJ}SQW*=DV) zi&WDsR?n~puGglrS+ROud_P&Z*lLE(I)+#o`G0q7?8;BsRTUI$Q1}xU7kBC1yLFdj zgzv7ItDrIIn#W|DSuEnIoSW_}Ys_8$;C$Tbt73N=V^1^gxLPDs*!s)g-~Z(I+EpQ1 z8_i0sWPh#y|8;-R^2-auRxdqOypie2+moMd8=R-St)BjV$!xV_*E39v)O05nPY@25 zIs9fYXJ_s>6VF0yjJK7H?= z+}^6MUXf>IWn==jM)gK6_9*iF9`k3GPIkqt%4N=hOPcz=>~`OHpsu>Kbg7;9=Kexe z>GL9|PaCGnwQWt@e*0=vXA_T^=Gtkzx{XI4&wp{iSD`Rssv}pdRfTNR{aqjS`F$w; z{#vWCyd&YY%l27S=RdEw{#rEe)A`qXwIkfBOK&|k`L3krD5Whpx9##*xy%1Q70dKo zu#>s-)Nv}e=jkJh-TUXPyUgjZA*aA{PTh+F+5MTo>wfo@1MYz?@wHz=b(m8(-@LL;bkASCmQl)h;i@lzyF*jyaFv` z+x_@SyZ}oUk9(j?{YUZo#F+Auu=|PWw1yJv?Zz?W{Ak&nH1@j(pkMTzw!asBb{nv5uFWl z9z95pQu=GNg(YuCF4GIoKn@ePq(|Rs&b+}ANruy zCU^1d!nwzfGC3x2^LUqdwzR({ZDUQ%ME+?%68xXe%Ac{ zkzX#?mnmK2zddW8o|86jSf$@%H?dwf(z- z$?ooCtRiGOa2JjlPdC$K)bzIBhr)Z$4E-);O;pPQUqHEGADiF-1Cxp^m?Y+Ml? zQexNt_+v#f(=Jijj-PVoGtNKfRyn&YziTzqd*(Wgtw-BF+q~afd{$@Dfnzr=t#zEe z;oJ?D$vSzW2Qo~$GQUjU`*0`Qk?ous-!-RfW_;QCG~$!Zd5JsboXe_zL@l%QtU&(l$r>2rjGEll-mDlh5?B%xbPg=G3xS-%Y1> z?c2BQ-t41RTQokHi6`=^-4DO@d(t(V9Y-7|9R1atb6joHyB|Ly)^;mspMJV2O8%#{ z|E7>l4{vTx@0znRZ1orQ`cLY|a-#RF^_=kidzI}|sS|fUr)`!D)e`+wJHO_B`1>m* z91qXWI(l`__18x|On%A+#wN+6hq)hqT+9%eEnGBL zHz@8=M0?Mat>?CM?Ni#geY<<0$kA&B^HwmcAY7O)0+N>vM}0KebG?sKUv!K|NQ#H?@y*UiHnP`T*FlQJ3{Py zul&z_|D!KY-*)KMTQk?dB_{oud}~i{sdKo=ac=vWUzZld=w)ACeUH^6aoY*ztFdk8 zlr&yeEpnZd96GD|W}nT2w`RTl-`~!C{p;ePh`P)}rF>TeJzg(14RX#bX`Ml=c`oWtTI3^dxxL zxLext-pcTSIxSNimaO*f3tX~5p0C~T()RoBqfgpj|L0?!e*5h=FHs@r{-7J_mHbEl zfARnC0&4Oa^;%zMyrq_LIEr+<|d^Z);x51BR-8>?v!ywV(YoR;uJ&A3crH z+vNObjV`5I_wW1Lwtsr}HX=JW+d=5$)Gho=T651&`2TvHZcyFUw;Ly)Z29%KE{C7< zaKKvM72?@f3M^tc>UuX-Ok%%YCV1Co_50r|V_9Mg^&hX5ubg_ZW{t{P{W&?0?iEfx z+2Xc1aLt<2r@e38y0yq}`DTUSf*I%5@2brDb#6*;gi_|7s926%^X8e4eeUgATd+g) zpxVUndC%`ge)3X!YrLfJ@s4bdY{4zB>I^dLVoaRO4wN=eZ@+(ssW|lY!A-9(MoK)Y zpAdd$)shv5dD-9R$5wAr@D)2=y@qX9`RvklYOBBkKeop!(uqi7$YVLxQ_cNzG|98^A z&dKHF@wsdDZpVQJ_KdbDN=xwd?D2_U01YJm`C%BkIux{eW69MVvtqUNIk{6K*>_Hu ze=PJ?%2BoB2Df_t-+sGo7W4g@&%A{Vl!Y&6KKU!Ld+|k&ohS92{~2vP`q}2W!aI&# zIlJeXaIs8t?4g6GhyPJ^omIUtY%Z5a;%eh-((5 zq7yc81^uy`9eQ(B$C}i0rNOrY)$dD8`gK`thq~kQNryd+uOD8u$4ze0yNz}q45y^~ zoZfigxniAy%!#TAaxv2$T5a?5_ka1}L%`dkpBgf&%~)*8R9g+p1P{ziKfYPEZ(3o+ zla0Ht@$P%RZj-Ox<7*`g^rw1h-42v!yEVg2BKY#lDf|9@i+=UB>dM=)l@~KEeEe9b z^ILKIBCn6JXPi=w-=ZH%8O{91hdb)dw(9nV#F z3Y<&Z+$vGH?l;f9`FXJnjvgi1OIeE4Ihd+GJ>l#V&wz9Nb__D;y+S>ZnJdok0-uL{M^k>c# zldu0%_|E9v#>xw+hG&_l8!wsic*DMj#XZSyjMak9r1&1a`2Kt7AGbA|&!%18aqm&S zijLy0*!>&l-?&z^ntLIOoD_dU@BHI22b3OEHN>f1^GqoWZz|=O?0Rs^Nmbb^lTDi5 zTgUL%xPEt^cEp-AReydIzERLU z&DWH0kjuAecb785zYLR0$JR{^OJ4T;=9$`v_g|mV^C~OWJ^W4X(i-{9#45k* zpZV?y*02B6Fh88L)i_1){o^>toiaPL8cMS#zP8K!{qNN)t!Z-uruE)e2(>*Q9QN&M z*3_)6QkC;S+dN-MKCw!dI=?Ab;aK9qsP)%Z-hO*&v3viEmzS6OUE7p-JaZB2v=+Yt zSBK+E-neB>ET8zO`^+jv-4|M~;=*h_uc@n@ct3H`w^~Khm)TAdubbEMevgnZnZ|ClwpQ@T z)HUt(;%(-c{f==j*KnjtFVYB#+ITW0DOPwAi_w-u1Bn$zw&$Y_#NC4=gstZCff@r> z-c}yn{psesm3Q;#xpt_|Bd|FjC%oGX|2GEeZW;N!b2wdi*E&mFVQ zrak#>_xIEE{a4!bJwL~lEa_BvQ}Sf0j(gp^UCTaa?_fIYy6p6><=&A?I*ePgXZvbc zEpd#?HoI$mMKIFEd?UwF(Y$&4cn=pO3oW{Qe))OF#xyBuy~k{Z-=A!)IrGVM z&*hgIi&h4$T(OnyH`}}JMICI-2M<{>zL@fH@kI|w%fz=bJZxW{ot1u7w)@M~@c4`O z|Gm8*HD6sfC_2HjVxIWv1xvhx@8_6-HiG?~@0L7~eRjgnDdCeJMg6n#aGspzH0|ix ziw23m|NgtgB$~%H=|sz-dyx|#YrXut-~U>uo(cdmg z`}94e1FYWKJf2l^`?tT;HbCaCCJ#JBScG&b<74O<*wv+1DuRdL3 zdy8jjfZ%(1gUB08j_zf>Rs`Bkax*9GoY>iiM&B;=_}ARa+InT))t4n#tfbl!bqrZg z7%1=@Zf$tCBDuOcy0-5pi>l52)k{P5*1KPi_uhP96X*S2w`Qqcw=?aNIzk@o)_F4Z zkNw*w)=5v^yvbSGZmxG=r%k&}#EvanHF`VO#Yo%z|MU6Af3r_r&D;|cnm4EP?DXCs zTh?)A)~QnE%(}c&j=56}GRv z-f_9ZGFk0rng9Chi?g;$6`u#KsnMIh_503s@;1--?;ETBDBoZ<<@!P&x$Nimf7<_V z2x*EitxemvFXwA?J(9A~ar?O&IuABQWGzu#AHcq;{bbprd2`kkW4Cs{+4@KBCFpLzFJHDy_eyr%A82`L7MuyAB zPi_u%;B&f{wAf_x0CDg%V$E;8b~Tdr7(XYpB?F^Js?RMXu$_Z+vYUw$9=1 zNL?^n*^Kqb#fuX^T2E>H5xvKESN89}cC3yIbo2yNLWBhVT)6+XjJsTMic#O0pzWU7 zvt`&%pX=GN=C4xzO@T|k#rhmfTuly~SN6=y+PX@Iud@Sm3uFD?>-DmiH5T8ATD#3* z$^xD^@nh?1{(V>06E^k5_Koy?gZuqd$Cy18kXvY`;|5eyWX+j4xC= zo4WSt=kI_1#C&Dl|NY4mm)-AQPbg6^KKl5!%8B%&>3SzN|NCfl>CAT(Aup|uO$rOb zRxf?l$bGT(zPr17Nl8h{p5-xmt8F))*y}K_J~e2K@2zsX6p^jRy;QsZ?7o?z^TJX`+bCbj)4*#Y)R5)1Oqe@>byJelE9f#ig*pZ`w} zd~VcwueAAltkfYzZqMC5B8omIKAG`GOpf7On0c%J(}o1+;zinrOJxr|E9n2K#49;< z3R^^b=$c*)`F39p;TpXIi)Lxei)}k`j~%p8c>YO4I~l&MMLgj|37tT&TnIfdU{`T8T@BiL=AGkFt zG(|MUuz8%F>vzV?=6zebH|~1YvE`RnN*%uZvg9Ba`zGUCfh$9j&NttPHoNhQ zHP`vV574!iOgn_{M$PzGtuQ%kb?B$s`C3!C{vMS7!zeiMV(AR$sMD>9EABknzJ2@E zn5SZiH*Py@5j?uNYr2;zsCOfHcb>O`zw$S(hVO?sefHUXsQvQeN5s_2FH1xO(>ATx z*qbd~_`a)jo$@D#nNR<1@layfeCPE3=k|B=rh^tV|NHrz+tA(j`{SA4zJu=js9$*Q z_3LbA*#;j!#GnqHL{qN#QJTG*(V-(|)6*D_20eF58Ga!sQ4K>%V?qD=CA$hV(upX zvFkhd?10OR4~K)I9&r_z3j1@1_ZnY3`@?mDzs$d--jhzxJ9_%@e!9>)77tusA&ey(5py*-t})yKD)c?Dlx~v?nhld0${EZZ6uOi|m;C+oDd?yYXyg4%pBGP0Pk$8`oaP{X$!`D4nB+s7 z)6c)SySuzRYc9j3GrO1Ui?}MKeEZQVohh#u<>^1Z{?OP@s~{*MZa3G1KXcWhAMX7V zp`+5cG@ARc!4go<^NaQV&(^mL+rD>Xcjg_tzB+t;QkPMj-Z#DQM^`@EOs$=;JMZ;B zwOyeqI|Pny%kJyzTM@TDcyHYDg9!^#e0LZm&5!9~4GUTbny_ath-L8A=-T6@)F0tAeVXqKg>SW!Ld41cJ*QKs; zf-jp59{+!Se*Wce-@Y|XZOEK&{xv>meo=1qt!i^YE2a;6EKKLLyq8q&FDPXI&A}}V z*&DZf?_S%dW=|f?>-ynyHEU|x=9!y59oTi&*e-N+D5zI`F~enk&8N;&CLS(PpS-r& zYL|Rh+ZmiX@#^Gz@;Z!t{r$<;@=iQ5o9hRtYVOkHiSUHP=? z{qFMjb57rPc_JD8deZ;c^P0=DeX3`!T$8ocE57FA(V%ZHOvDbw*Z=*>UK)1S<%Wfj zot;W$>-)|xhRlaQ96NQ}#4OSAwC+ZqX}_(G^5t)@VY~l5(`cr|^{^=?Z>P>`{{8#+ z#(*Gob#=o-Q?)BMDQspHJM%-e`0Rf3y#~=UT{quMkW-z#g8R-%_QRW)=YMkbN`IPo zNk(0<+f6HfW{mKrH+8pDM7B2W&heVPEpspblchEi=`WLC-u`=--+o2&e!tV{mu2on zC+6y{x~f(C|L=Fu74+gk^YZMY*nFa#{%u#WSnyGKSEqM!^yAp;jQi4GOgd69{q@_o zxv#!fg{%z8u#pSie}DPU8o#w+-JpArE@tSkw6|SY^7_0<@$Yr(v(=jNZ?ey~5o?Kj z=WG0~Yl?2{uTldE31i2lnbW&_=CV%OaxJo9<~5$ne@=1ROn-j&$n4!ac0|0YFx5=l zeB$!tlP=QMX_qH{znSQJFgAU9XXyH~Gx7sPG`+n9*6p#C*#2Yo;iFEKqC2K5b~}rG zVtu^$YSzVWaedGUd68dZD90b$^O{qzkK;}?rfH8e@v1;y9bK=6*Dj1pTH71<(*E2gU_X+ooh_| zf5=?3zOdrohr|3`ou?Nwo@BbaXwB`0&wBSNZ%+*uc*va=cxb1#;?`IDZkOzsW%yda zbz-pCTHkk%cbB}--nF(S_efhK@3F6QPqKn~kP8E5{k@m`)qqpyLc_^7yFD2ajph2M zE8W?(=KLS28CyQ@6>V`Xk;U`nLxmG`&U zZXZ0n)aSNoTIS8UsJ=goM< z>1_UeuT4r_(9X(Jd#1~GJ4P{ipNg73eflXO*`nT;cR%et_c<>q6}0&&>{7_JP60=k zEgSNc3f&i9T;R8SamSA>EYn_Et=#hbqx#3nET+@XW+iQ6dcb>#|DU^p&mC(Co+;f? zvl7Z(vrc`e4%UedQ)Jkwwv8ra8O3dp}dyY(rXGz#bk4#nkM6-k53~)9PKDO2pJY-8z`CAtAJ* z?(W^Ys!BnQ)9nBMDgJfyeBCmmk+ZIWbM| zmd=e!HOrah!88+lPVhjYm8<}BtO1+g8kpl?l;f8`kqAI zf1i3H>A|OUHt*G@cS@5%0}`uRR>vuCec z^QossXPHn=X5-lp%ptxZYn@RnPvQkC96o2$B^WD*18WXH>2Ju|l7zLH}W>h);%mdN$Y zdQo1t8-M71d#@(<$>I{n9MAJbm6a=-YF@QO$5vK~f3995rVzK}K~ZU`E5E#5Oz`SW z&gBQT#d?dV-|@YE^VqkG7cVw(D_r!w?-uA%U0r=jYR-$W8O_hu1+84MSKxg!dzrdc zSlx-uYHPTRehX~S5<1;lVR*Ow_5L4^x+A3CEqZ0T_qfiJ%`Q?#C#Gr?{k2=EbGLTa z>j(QLE!(r^?MIt@#ln`gI^jk7y-KI1&N*e(S6TgT(wSq&8K);M(pYpb!C`4o=f7|H z|EGb^quAukw5|N=1v-OL_ z{w^u%x)&1@@n?<4<^DO9Q{Q(eXG=xwQ@jyl{!XyHd)l=ne|N9`ySuM!`P_Vq3C|<- zZS>zwKeyie?(~rRwGY0XW&Y;5GrmaN>2g)~`xrZIp>3a*Zcsd~b3Nek`3J$ywv^(`jC+rthlv&bwq%wmWuJh?dD*zvOB~_4O69t_PN`*-|=p z{`}{elf;VtU#Q)mGo$6QiHCRG!h1T`JsGXJr)~7V{mbxuwaM1E2b?o zS<$6m8QJ~b)}QZWZ(4RL=>9T+J9-AG2W9$?Yt8#0|L>uE(Bg{*?~-fYAGR)0WiG8f zciQ{%^gX(3!@OG$z63Ajo^nS0{loo&x0HDfUwJb1-K{O`Uro|KE&2Q~*4F+`YD0ue znB&~iw|0A66xKcOHjQ=J!Nt{;o~aAs zL7j$~T9d>+tvUZ}m*b5aSE}zgCrwRu*}hCg@io&q#?zO>R=d6}oBiu=UDm^?>yQ5U zFE^X}U)>Lh_Ur{Nn{UQgTFx!w@iKBr_go+x~g zrkTt>8)6B$-qu{nB2Nl*lkL)&*^iXpCf;dD)p*e*@!NCL)Rplm*Pg2Eh`XJ&bar$4hpuR_^P_ zOA=&rbog6mzis{0)2XZ1O#QlZVqut85dngC)ApEb<*z=s*uB5wMVrY1$!X_z z>m+AOZkqGFvdd+{G~4ovQh(Mtrzcv^^~*Gn$Pm@=OxfS!%Q@L?VzSll&*yVM8f&q zAAQw}uAh1JPiH!K-LU0t>D}PT>%6sf($}V6 zZTK^jb;Ar_X7Nj9_4W5FZfGR!Ii$7Bqe$q%r#XIy=Uvge{^@ev^Qbh5Htxp1;ksj5w>)MxkB$cnpVdAWP?WSA(0S9p`!WJOXN7mF9N+R*CRO_X4Pzg!jx7(8MPfp z^2J*&3S1B<>7D(5<`%WgiPtA}-QS4KXU4Pk=apYR&;K8j`BrfM*`+pomh2yY zKY7wJ&#qQ#w-{49-=q_V(!cNc{UH0*)vH%;-I`F6VN#nPbz0u0V!_?p2J)bVL9Z9& z#y4zW*|{)k?JBdg&x@sc-A>gOSjY$oUR)i%UaUn&qxzos=?5la7kAt%@sH9D4z}F1 zZcW#E8x1duX{l+U_jbl<>xy5FczXL)?6C-T&uPp2Kb@NJL$=L)W8|i3j#K;>{<2#m zYjxtVY26}?MPaL5!3&Z+-|W7a;nM5Y3|gXVHJ6o}PawKdki}8W=vEnC-{PWm2Rb<8cumYtn_<|OeN(CEz92lqgYtaJvkWs@#MiI-%bwEcAW=-0Yf zwZE07#YV<5eA@)h?AXm$=N{c zSLuTL@AXftjhrv|+Ir&e-Mjbg>-%cBe)jzCA9A8Bj8nZ-L5U~Gh+Fa9tz)U$%JOzK zFLE?Hze=7`wfVl+C!>9B{g3h@pMv$P_y7OBU;X^&7q8dv_uK2AWZNba!V*w_v6}tj z*_dhPHF#%zki7VIr^~;dI1oQdNR}?gg zoI#78uPVkXu;?pwMTRFbeQ@R2_qihMi)DRT%=~L-W^eERU*G@r(eL;Bx7XGG@B7sF z{XXcDv8D0e_x4tA4-jj&dC+_O@eH=as}rQxdvX@`*A)0J-J^A))?B|+_5btse}2ms zuUT~H!?C>|9zAke9m#U*?Y6*T`8IPs2hdGzzb_oWniaZJ?$)i9&eQf9aYp_!dml03 z`{^Zut_MTiB19Qm%oI#oOD<{^%~{XoI-xEyx%ny@|Jtnr9a*Y4zX zr@fr6i*MMc)U|%S(B8QIXP+%irFtVQzgEo!ZFT*8aFOQQ&o|es_^^N78Fqd-0YS~_ zWqDs$bH@j-4SV_J3+Q6FvuT@WJi5On{N=xR_MD<6IrBY_IscHHm-$I9&%^tZXIyf2 zb~kA1Z_b=2v*as9Ol2y*dm3_Ic1n+ZQz`fN!(o0e#aCSCKW|C46mMMGeC`cz{q8&2 zMi5)U)>Y&Gh-HyWY!HeK6Ez6`j2yNgK3c@8QFRff85lZa$YV>wC)8Uk6R^ zuby?rf>5aaQBCa88!$LV&HCRhN9#(Ll@k^M~ zv}$kM8LdmKcYe1xYbEB?vMX_Sc~+i#S+-m246n|ytgW}2x^o1dEA%Nn)t9W9H~sGW z?^n~8wdBluzVgld*(QANnS7>YnFV!!FI;|k;qiX?)f>fG8jG%Oy}SIk&gqYV|qu(?z9h&u?Bhy z$y6Z@%bgQFAFjTe7rgy;=(Do?dwV*k8qf91w2@mqBf`ae_W6eo6O*K4V{~#pR=u0Z zSD;udX&n=AId|1}5BAwl(zet`J@Us%p%uF{67y~3^e03FJ^Nsje{fandehf7OJ4KMca36JO$`0LWaYdyTw!+M zW}J~a%q1;J(>A5-{90wZSz4LzwZg`f1s_8jw9opaoUwYQr~Wzjx%3>}9Wss1%l_0^ z&CPn+wdDEX>SzC(7ffeKnYHgx7ypANPg>j-PyFTU!u{@J=I#A_FFdp+MDNOOG~fv> zyT5zd&hon)hXYO)-#L0#)WGK8?+su78y%mMXO}uNc}~is2cK6&tzGrArm%2f@6Dr( z-=F^d`}f9K)&=WpA-9dr@5;B&Jzr@XrIS-ww;{5he$Cg$lu zQ~%g)duL4Ve(iAW^Xuxp^Co6EW@XOU@c8%1ltoR`;^N{!%gQfbz8rG?;jUv#CYoQG zHkZ}vCu38BMBA4a7nN__x)oKh@QaQ9=Y>l&E;S~HCdY*PPb;6b^BQ`wjp5f&1YhIIXU#iJJyw@kgEv%Bi=={Tn zioEU4pktq9oR(h>oYt)NB-Z%Ho{MMA*Gyj@w>L;EsOIm!ef#>h8m_){|7)CQjORY) z6Df_R5|8n)x|)P>pR{?n@}DmJympOmh^m>|8rC6l7wogkz;M3=gd9fb1 zr>!}e^I+!zTN$7CnKO$T&uN{Xa%R!pyvsj-{=9U{X^VsxV{Jo4*q@w3_otpa#loJ? zS$F^5y?JFdyS`cK7)Gs~R^)zFuwd8cgjwIYk9MA(wO#L%VQ)^xB<2#MraZq{Yq~Z? z$n5ohaDMIV+nzQod(7t9R5~pU@;v&%M`?W*gZlcCY=LK=PoC`jHSfIg5u>wC2VUzG z<^G=L+c))o>ZSu;QU?lVKIHXJRz3Qk@9=DsU5`ITWU?m&KAe@wQR@BqVbM+>etEl) zBmLf%jshyj*c@b^7FoK9xCU+!(C{_ts%&g_*coHCEAl~Pf@fM)U$qEx-HnOe4KV^G z|Am((uYb>VO)*B_nR(S_4ar_NtpGK?hn`=>d^HL;c?sS7uEDoj;Kimr+ZWxQYEqt) zEg56-qdcbL;qUeDf49Ezw$c{(CtK&u?Ry|JO;bvv-e{&q_FM4T!&g>RWNp74wscD7 z{)zXOXT}R%ityH9e!Xc!Wa(U)nBcrk4w2#p_ov&cJ&};-VY|g}^!1juM-Q?eZ(7Uh zJOAJ=;S-zW9?0zr2W^>;+gG!*V4s(gsqOjhqw61)&d|~Qxz%9PimO?-(k<=nm;bC; zXC$}m?)4|eOJ1(`op7*g3h$H8BDKrzvJ||2zGZ{pnr+o7v8N-XFMtlSm$|BXtZ-$# z`tOfB56$;cl`q>tKYw`u2k!0z`110)>Jlwz3T67oeaKoYXhhB&)+)zd|yKQc*v$V1T4Z5EBy1en_g@dLOZpi0;zscu)I!Bu?!RCPNl=PS%%|6Z| z=a01K#9V$k1=J+Yt1{2L?kvvu=k@yiVedFrv&Gl%Y&~jJSX-NGV<65u*_11AljuFG z`^VKz>RV*@xGkP4xOTPDS)a$w^Nwy1J9T*3TABObS6<8r5OEDzfBog3KXddzr#~gN zC-7x*=1cGXA-yoz=UR=K(3%*%)f0G)48{1~CQ9fLjw!nNxO&Xd`;zm1*I6so6O`@{AUv&tHu(6zJgD6D@sQTBq7fUbLo zoxT0_b=4=7y8c%_3;g336>J|e`R#6|aC1A^7>>D0t#{X~TU^N>H?Ms1RGwRTl^TYb ze@ag2-{oJ=e*NTm0V9U<=lM+|=da}WknS=Qbg+Qu<(DSU^iDEA{CxlN%aD_XKVE+S zz46A($tRawC_V2g{rkyD;jb~P*^aUDtzWIc>!7giQDtnW$GFloFM4Vh-?c-etP!`s={`_m^MHaCuu6z4rC-Sc|J`@P=6hd16t{l+#&>O}GyH`LAOE)7dOJ7whjL7?-t?_|nz|2NNO63} zWY@R*?z&RnGn>n2{Fu6@dZ{7XG`)iP@9JeInR&%77JM*=-O5e!Zr=6C;_ORbUPwF) zTkV=Ck+pv^x4BMgK)d(x$5uN;1n*`n{QdV|Q`mv;wO6s|P^g8jov_1Dvnc|L;3$i;tM6L{ps>qW&estN1N7Z&o zr)S=p^7X=L{=oVl?e!imBEc!L^76;|rvLf*qnOpvAy6c6`Q^Zw(uti@-Gy}?Iwh^` zHiAcVtP;e;fq>Hdv`bq&5_Yd@ebP&u}s9X=X3f*3oEOjQ^n^$zqtQ*cfI@D zvf10VZ(sW~Y<1{To+m3pv|LF?Pw)S6RR2o(kDpH_ z`(ODET7(?3c+cCnxuwT+4m~>eW!{qAOZMamuUXG<`)9NCgck?wr$6_J{W+UK&aYXy zGv~CHwQ_cWMBBy*cJsu`C(b>aHuDtww4Kj)X#JX0At;-vYT2{pZ;r}_4lz%i9rr)J zFKx2YS?0r^@+v1nmC^Hi@pmiPLRIlR7H9qGr$h9nhd%2x;MvN~8Eg$&V7t3$=bF8J z`I8LRx`Zu#{rdHcG!||x|BaqgYzi;%{p3r?Jf_~mJv;mNf4P?nr4J`oNO$~r@j_$k zwdb`*jgHTLzH|5GG{;%Y+q6@{BxBnaY`Nhglr4NaM5KgC<`@IZfzq{`_vCuI+^Vtj zm)X6|x$&KV>h~pU!ubDGvDC5exHeba$8lG=af*cF3MQ7E%H1`I`^00mRUjP65 zcO%*6mlx)WR~~bU^A5khttHXp_wU~&MMX}FFLtcDs`Ynv{pb7>pKVrM%?eo=l5}m( z59#N^a{2j2GXs`iUU)FUVfysxpb0t?sfq7@zp9$K$LqSAXIEkC{S>2%at#;N@(kPV zZ;jFws}527dhxAi<}bU`)wfKX+E3(krdHeSynecP`?@>6jNc8KlWwrhti3Gyw(Rz- z*2(q%9vp1Gk~jTy)amYR`zC!B&E~3@VRJrF6&zpJ*&P)O=AK-$?qEfw=fNwCerJ|s zUazoO*3K`lWgKxQ-P1P-t(V7aNo~ov-7XrZRur-54Nb>=VzH1 zTKZbYd-YW<-galDUA}ChZRYD5Go<UU{b`#eW##3?7nOi+S9^4n z`>J`(-rTKGUWN-_ThA?8(_!bAY`IsnC|&Bsnqx~gp8Bn{y|9^yQ_f%N`ZCS%N;0^ua6GMIi8NRji=-58cPc z58wa&3p&@})|dBta_;`GVVvAObIEhg1 zH#ToQ{q0;1lhO7P*Pk9S6WKTXyR+p-`D_X0M9CW|j{eup{Fp=w7kC#N$n+mS^=6;P z0bRFKtT7d*KFvv#kYW}~->UL>-Jt-6PtHp1JhBcY*|A}3!;-lU=53$-I`ZplMX$P>}X ziAPyC-hZFJWRLRgDJ9PyJg<-bbKbWmjB|^m5&!lxlL}XER(Lz7%(nXR=hPjk&m(`A zd}^Juea7Mmxr;QSEN1WMlT~g^=E!``=%N@BcN`EO+JeO2eS+`ug~v zk;U;@b+#9M7X<6fx- zb$3i++E|!Um|t-}P{rCW<(+lT8i6_Y(ids*R@`rXb1tgyT#2dw?j_%jsJ+;BJ6Cjr zti8=MLH=jwCSJRARrJK8U7Aj;w>F-9a;}}}w)FuE6G08V2d`&)OGX-t-fFRpo>}=^ z>RtVp7lCWeZF$<3=rPyN{q22$H&5jHKQYR7hH6a}i&>_xufO%w!9{nNJH(jv^H0r7 z3$96Hyg&WNynrojdo^y%D;LeZJEbsz`Pae~JXxM%ONG|mQ?ER@HlQ=Fb8*~y_x$_& zt{!{Ivct9O`Q0>!x8Hw%`SY`Q@g6qsfZ%GM2fy7GUtAEk9<;PHl>LDL&&x-ToVM<~ z{yK1F$fC7t*S4ll;OY)#eqSD(V!$a}Imyk&%C3l>>h zTXPG3{y4#ad#>Mdtq&SjEc|+=9w(l(@v3Vl28&!gy#Bk5zFSt~3FTd>#ii1!^~Y>x z?|T<#w_}Mx&MNIrfjcG#Rs3iBr1e*xKGo&>`gW?r_Dr#h-lRH6t%wf2pEIf8W!Dl@ zv6oA4zcq`Ek3Sy6Hhu55Th|Qlmd6}8{C^J5BQYhh^Gf%$P@f}@j9#DNo?JF(@ru8K$(2Sk1J;IJzP8h|cCvWo^9#Fvxv1T{Aoy73 z(xj%23=5f{r9puwSDkul^!I4|A6CJ;Z{lMX&Repg_TL{%&~Efr8|hmalP>!_U$~{9 zGjh*LBfd4CC!Ywu{_XM4_3PHXczC#d=BWttoJ|v6N|v1O-Pu%Zzdh^9S<3=8i~T2R zuWZXZ{a$s_wdqRV82`o8@N*oV(4-JhYc9hF+UfZ0^G>fd%Dk2_$GawTFU+2%(`UdV zIy-*-^_NecxKu|pUz@l&-)667`o|@uLgni>mRj&XIrYALYt_j`o>O!A4+s3Lp60bQ zqK#+K?Sr$$gM>BqKfbU0RQFP~*K48aRqw3Ko?1@&_1oDoj@xUUY1QXvy;_?!xXs18 z4R%gozVPKkZ`RElDGML!O;U?Ys6OW#Szpo^lX`pB*|c|6T{ZWX{5-?_?UeHt?N1SN zZ*KWpq(7~+^`UQB%985ovwWp<+E*Cx6z`riGlhH6qc!1Ohm3RZY}v(Bc4XiZ&l zF#~i;!IkHWFM6mhZ8$oGH}j;nZ0DKZCzqWt|NEY4^6fc)?u$fcPCjscuIDsYy#v2) zy#HPtnU~KsX_Hs6$E7~z^t?s4eU5c>_R60Tesj?(S^lTw1d(GWzQjs>Iu$1N&Uu@E z&9h25Svk2?uWRmyUz_4mxcc1seZNjc?BiRRl(1Ct#ve!N-nOcZ>FMd*vMk%Jrrgil zo@pQvAi#3!O3#Zj!vlXkcy(Vt&VA5+GBhJLHTuW>4PuY~ZQ1vJ_4#g#oVG*{cX#)& zhgw}qQao%~m)^X8zq*roTZDOI$&T0E!V3H%tLyY6*zpuQSwQ^@9OX6G>y^dKemr4aat&SdPZ}Xk|eAnSgdTA+9BEBjGFZe3e zm=34*UVr;M@^)rdYohXwRaaj*)vT@CKYvE#g!_k6xh79iIs18L%4}cR;|+OheShD{ zJkEH3y_x1eg6KD64x`Y18p}Dqik(vo`r2Zde|or8(1{$GP;`znA{?t5TXTX1D~3XkNFP z{<&KvZ}Pf_pC;tpIsN0wr~2tz-FI=fCwfFjN5A_2v&K(cT-?j=VGTzQpNh{+rL`B!nRj~8lERRZ-<$gW``*2LS>un-2OIyT#pY9! zH_f@ZrS9Y<@yK6!cZ)V>#+}&A8o$0!>~Was=9@kz%_81Ekleg|ySt0aMFpQ7NLji~v&cuNNUj6S+<(h|g^TH#Q8+Y2BP>=}~O& z`EEv>ox0bKle!1q7pJ=9ws8NMq*&0fMnoVBazS(4Mbu`IF zPJPz?+hV-`?8~Jiw;%Xq=a}`$=W(HIyLN2!uDg0yUze`B{`$(>GVrb4x%>_3C#x4s zFj&ep?Y{R132|2r#d*(H?pnWYUD5P%@duk8KHi)EYFC%xOw)O+_evLEEVx!RTjBNg znLj_m*%{rq*^%cG5_;V~u?e@v1Oq%%*Z-Mri^sG(V?;XAG-LE}G{M(!Es+_0| zzHT=!(TM-uELE!s*O|B8PWOtgNPAL&uBo{l7#@tz@Nm*h2KC_kNDQb~|tT*1v5( z`(|`3zUXmMTEn=)~H^)|9^_th8_D} z%XK&)Qu9Hg?fJ!@KNm~!ux)gBpE==JmNsW%MRHhmNlA+B8`Z1FJ#}uIUXnV+a+hJ> zo;^!euhtGdR(`+MJy1l`$&e@Cn6+eg>@2_KerfAxm%U)R?Ok$v{v;NauH#0JShAz8 zMNd0#IRCtOhtWO1xfAwh{@uCqK=r1tx0lV(e|>NLvbmeR7#JpB_jGX#$y;Y%^CKWt zE#{epL2v%Lx!O?=9?ahOyzv&0WHCS&+qP- zCNfcGk%o%kde^<)vYioM{%rhe9WVZL_w@aXH5R=rk&3oXy?H~PkDou&MC#(nlP8__ z>YY!YwDx-A_dvUc)vmkmZqriV`N+82dZBLLwM|dXESg|uy-lxk?w{G!rlnT0T!#bJ z*6PRaGnuCPuo85K#>Dr(xfKO-SoS=x6mb>YTm8MyZE>K_HI1oWTXyeWEp!%i4*zED zHP*kBIv&~mtJJ>(TO1t~p-E9R)kEVF3{`zv+UwohQdwt(GFWpd=aQspCtq{vh=U3d~V2|-DkqW zCZD`*-%+IpO*&4WZSV2#kSn{+XnD@3+Totr>{EXQj_o`zbwcPDqFCA*Ihl(+P_P4lFK(@^KBu(djM2{;qsSSemSsQF^|GHV(+Il88hpP!afJ=PS!TV@ZL#odzq-Ar zt0srU3+?;&D?9n8XY!==;k|CnaeJ#oS4-!*R4}bsZpA-+i;F`1=}$e~zLLSSy;_z= z3SSoTU8mPF`<8j-3GKPh*`KlZw?C}}9m+4o*S^tK=Ey(!{~zU}U%&lY1*+M;-h9Sm z{^#IUnNRf*nT+;-J~V%fO0bd3*4-KVTc%N}{&)+!m=i{2-hQG4En^!Y-Kd+qm#PlT>TjYn@ z&f2K8Vae}iJT0Z|%dmoqHy}a!!ufIO3v&n&};FFh}i0Zj>=RljuS0;Haaoicxr+dn3vUBj< zWf8(2rY|eI_005|Ciz}&Z0!9vWtNB!lbnl`;fZ%#6#+T33uZ0}RaJ8J*>?MFL|WT# z-@>00YW0pk+{ChP(ZSB{w9TH)2NN3KJd zEFWixdp<6h{C)YNiPwyBuX1uD%iK{gCi(J3bM#gL7 zNzc_7MFyX)NC}AP4St3_i)a^2SxWEK2)@={Z*2gYkZYkg)?Q|bIr4@nR&}? zAKbpiDIBvU_w+F>j~%{@^(?x;sa<7v)~&YxG{Gk_Ddh=k{Q1~} zoLX~Jg*P#LV$p6s=#c4SsW#d3&Cbm%j?Z%+rLsAKZUg&Wb0XwPrTM#N7niACt`isC zDVoH+Dsjh*OVv|<2a4T1Q^G$Fv=u${+y4LG|1bOhW&S_m(A8I4nYa2aGdaoNdV22c zWk0+&@Aq0V)zO^uPmbf0yt{{=TfVz^_G@X>#Fy(X_LlyOmQ(Tl{(NJ?k-fW&TVC(k zv1?b*^U0wPYo~g4XqYy(e%;z(cW`ETtjaB;32xI4?s;5jS{Z*}5%-;rn9Y}(gg@TC zeY>Qr%|a|Pp}zQIy3?~{3H7D2{M;;J z`6Y5fr_CHJ0~b5bJG!~U_w(=f`_1J#Dt|tI{yb#;^-v%EhTZ>E6<6+!WMP}E8YaME z$T-cPXRfpg|C9M!eOEWU+&Nv-V%C=Zo=;vc`+9eo!h5E@d@r6&%sc3o=2O$x`|8!J zu4kVsleiu)d0rg3*t~HM(}sWBqjXbQKihE_3GK3L|G?zvramKIs!{d%GMRo?&0Uw2 zPTzU{IYcO;;4t^$*)#MweAZ5O-!OmL=~Pwi6BTnKZ*eYMcQfZwj#)RWv)f&dZB8yG zGJKik<>8uv35jkc#UFO;*wOKIqj$`?)CC$w&hFnl9r7Mtd-7*q)Y@$#uSG5A1-Na# z*;C2CM%wf9&9+5T>OSobegCjXCRA%`#D*jW$4SdCYs$*YueR)So^xc^8o}80%}Ts1 zb5_1Dov%Le@>^ayY&~Y`6?t7{P4b{qQ80VCjA|rPi@26OTX=W7qI$rhSCMi z|MNSxNX9u9{Mfht+1%%quj*(1yTLl!C9bexk5W_~+mX@(TlhYITqPWFjWzm1!9I5J zz01~Rzv(@mtTp{~mb~LOhclMZyBBFJn*Z<1@++^uCe6AOzCP|^g29QLnT`A2m+juN zd9(0opChLm-DF;rSaEOEPuo0GEC23Cw`r#9zJL3+;%3gVXHwfm9x(k*FjxRyaxjIh zxzRApBk+OYNwdy9N=l|~zMm^4-=8*P56flkc%HpAO3P398F$j@52m-i*Sd-|xDj zzVhwt7NuvOw2rs=O0WF=57b%6&CQL}HMTk5y;isRV1w6Ep|8JdpWbp2>7UQ?q|iI2 zU0~uC{u354<-Qjpms-aOo_KZ0Ys&t;k-xf*mz2!>Y;>^wN|VstGu!L-`}evzYljHx z?qYu3;`y#_25Zc@hbf}*!N302`B?XTzxetq=)|m*Awiu{7wlwr=1pGg6DAS4Wxp!} z`z^oai&N%=tzJ5B>f-zFkMqSIemFtSzRt(R-0;W;nPuPST-~JaxpJG&3_de8-@0kv zL=D$<<~_SrVijA}=JxYVgn7x$y`6d2lp>OSmj}D@Eq>eU)?9Nx+-T$3+=zAjt|!%Z zRZdM=dgQvULig#-XLF;Ymd~3vPtT@&+Vkskou{k5zH4f!%za5}#uHNy&FQBNy+89W z?C+d3b%tm4`gd}EFJ7&CIzKW0iIHi3`0~r0sp@`@Yq#&+yY^dn><>BdqZ}zlvf>Mw z^My}^i$&~Wnsg^R$H3I1PER_eNrY!wWkjiLgp2uG`Chk9yIbp?h@LVz=(?Gi+hAYi zC&&2p*SD4`L@VZBUlu94^yTr=WZ~Oi_BEVmuA31n>LXU6_U6r-BW8+9m(C^cbNu*b z{+>674Qi(3ymZt&P+!(KOKSCQMNY;9~px>hT2thoO^cxQ~-A`8W7N0WN(jUPon z{H(x{^qJ{k{Ohl~E=U>z$xQ~R~%xKH|*>@B^I&U;h3eR<;6bv%)6jF8Oq%L z<>;j}@D}mLPg}Z(dq-Q`zWlqtpHE<4mU?(eq`uIu=NyNnzbDLGCtKS-LGlh$L&u9B zKO*)9rx^1dE@%{)^nQN-=0(R^^4{E9v#23&yZ6>VY6sV3m`FwO&*v8`iY=Jg3^~C%$Z2PRYRtp4 zC$;(3eR+5-!ZW!gdY+nK=CW^vt+QX(cJQ8h{pUo{-d&oyF=vE!YDQoBx~x~@G zyi?xq`>pqFQLGs2&WoxO13a(aVk-n6;=X2CdClU-D}4=DY`l2;SL0-kUClqVHu5zF z+9eCHbV}W*4q7cyz!)_BR_Wad@8vc=uel#C6+1I;y2iV{hVx689;mTfzId_n^KBLP zd=GVQ-fZkzQ@DMauVS}P_K8?wos0KAR;*#!o*FHc!g#H=M>Q`{^?SyUGO|9q#F1F2!5*{oUO|wVyuh-?~-watvR)v#EXQJELvROM5MD+`io{nEEGyx9QmT zTF~{eVTzk?_QdU}Sa^$FTZf}--Qxfu#a-WS23)aI{~fn$(~c|6UwLm%|B$oH#d5Yq zc&SHK+2ty&`IWt%(mlYn~FkK#Tz<*6U%9AEqRdqKjz)U%7CO(f?WZQ{Fr zEz2~ObDm2UlTDsp`T46;`}bEeae1zJ__^Qy-;I}&CC3CuFL(^qd0`Ss`X`Ah?e3$xAhla`g;;PG7|c=7Bq z&DK_(JZYC_tOq{l-C^J8ID?O2S7TdG*B>b!v2~3P89Q>NKdWWsPv_jBQB>Y~e+FSk~nj-AFJXMc*d<7#_p(cN~F%MUMp`yYGc z<;%=f8+Uqb;w!bS{G_t6uCk)I_xl8Pg;*aIFR|BZcMp1}`<`U2ottxz^SRg3O##ca zD{k)k*gr$~MRw-Xf`S5v`*pu{_tyQL_3JO_gh9-6pem zGheZ-b>j@LO$KjDtg`m$I-lDS&a|63dB%K6!{f2%=VzW@c}JGFn6r?5_SrP8Lyu}% zj_D`eWwKiB`=)SRD$~`h(u2EBro=w2l#7jvTlH0F6aOKR55EPqMY>e>$)7eV{llPh zFZM2*Wl8oqC$U4NN|}ouq&65R?TXZSC?C6JS@ZRi2iK}pG!&ozyhVRmhY$BIBcHGg ztN1|SC!Z4+O7+Idk5|k}%YYE=%D(5GN%f^=QL~=*Hcs3oC;RE$TfH#um={KwPL>qR@l z4Q2S&eq!Ce;Mm?fuROm0v9X)MYt%P`^K{hti~Mu_+*z;ud(^G}VzR&8NfR@Nl0T2c z_jlC33z{b5zwLX*E_2=|yD#tco^m^D>lCB67Z#VJH~kB?^^BC zW$QVmlN(b{&r`R5JWEuZw_}evuZ5=aZPsO<{`|2i%Z>7w?EO==T={{4t@pK7#+#Qa zt}!X?O}mkzyOHyn>}iLf_}j;(o_SUo&No9g=;g)mK<8NRxY-7@<|u# z>xO-$jkj~d)Hl^coSM;aSn(cnKkLQ!-!*xhuZkU6c~SO)uS@r8R<}!=m%836vN^xl zYw4mjZA(rs*Et_nC(*WL^XAE`>gw{tL`q*Avwrsb!PBRyJ`1;P-MaLwR;!spnBae# zu0<}N7J1xwa#HC4e}~Y7O5e{?H}2kDdND&pdA-8y!;cJo!`3bN_UhQjRo~q-%L`td zRkW!A_bw%r$4$MK$)-Jv}D-dYbw*&dHw`#jaTOcblY^gNHvs$L^g@ zU3=-|=RK^SvJ50NK6SllJMrkhcaZ%2r4QqCQd18e6NnH}`xY2wbFw;TgRI%)cTbn_ zhzp#0`iW`wS!PXk$Ar0Su4YY@v#oM*cXtP^@4NpVv>ET;>ebq!Zwz>xr#7~4pPipq zbJss7`qerdh@nH#3PY+vC--AR1w zGuJvgJW<>hGfA~^N+iRVxg~GiVkb#>Wm(_6z8e0+p^VY4*fn(z%H6!7pe05IpKd5rbef&b+I@G~+_`fjc6skx`0zk=W#!6O72n>>oTzb$H)C?a zs@Iz@W`OpdNo@!^{({NM@sD$ZZ-LRnx@O!nX%U-#?TVPC7q# z?%b8@k9?Vfw%%UYLN->0O$-EuZ^-|~m=-4-u=v}4YkIY&+;tl<@SP_aimj%|{UN+eTj z;)+sN^T=flCeAz#JIxf!rk&lz^{KO`-gApb+()CFBYkVQU3R{ci=Kaj<#W~Eb=Nk< ztzWKlCD&+y-@J#9d)I$lp}%_1iP)8&m^P`M5Z65aasR?EA8P0K_4kYKQ{Sa({d4m{ z-g&3%Oyp@`=oMuO3x)%kgHOnl?>GAwQr@s#~*#dBfLWu@Ao{-+Daj z;?&6v?d|PR-yf%*N?~}mYs&h0cD1v-*VWBmyP;vxn)sLvt3EKlZaLfBbz;x-kCv7* zeXe|;Q!`F^_UE7}ZP}BRuhD!z_E{i+kq|^T{LsK zeuZ?*{rY)!lYTFKUU{my@p!=O^UpzdDCja9ZP}7^;GX8@fP89xI1Qpp!Z?Vx7ulr!vU*hS6+Y3U070b%Pe+w?s?|yjcd~OmrvYdG_&CId9S5GZ*In@-_SDq zw!6*bmS@cTFR{0bHY;TREXqqdd!T~JvfuaVhYu6n77Nz?db!+Xi^QLL1Brn3*NZPr z`uvacu(bG+pEdKU7PoR=-P9@|^QZICU){Bb-_2Tf<@?{Q$7QSI4+Ptaa|W+*sxv4J zoHLUpaNU$RLsVmud+QMw=9;IEf!IMuOvFzTy=072lsmEX?%lgLBv}u{ z-OJjVVIp<(hxp0`3QA8e9yMnCoU`nY-SiokWU{v&@G@Rt`~KMape$~N>%DyX7p7UB zTgr3y{WHPJLCjyQHMV#oF5X)Fx;11wW1L>i@;0o-aIWF@q)NL9d%~xcq(B z872>fB7Ys2%2O*JI7Q)crTMzz6HAWU$GiSN+3X;d&2zilQQ*Sn^z$z^pSM$1s;#kn zH|t5|yiI$&PN@aEgqc^y2HDt8|1|yMxg4*)YVI|=nWyiI4xbi1H&x`~B5#KM%dTc= zmfOdiUhiyBB*PW^`dIpgf8X|$h+SUx>D>AApyhqFY>#+8Zq50g-ndd`Px8*XPyaSe zjf5OQb}DICjNauMyX(7zzWoMWeXD)Dy?fgR$N2)fr}RF}6kykW8S5lwl6n2-!R(nQ zZioN5Y4F}^E}!Xa-(UaV)}GDQ4xjbU`s`FiKA&{s(=U%MNtD@Pw1Z`uf?3I?mv3`6 z?G%qDcN5|#uxK^cKCBYE`Q;Du zOIMi*JfEXGp8r@I{(O$r*QNZ?{1Uf=uC5Gz{@M2Y@2hXirdF#tRh-z$+HQNscS?C_ z=~5j%tGRurHkirqEk8EnWS7(Tc}J5BrzBduwK*)6xXJH}P5!B00&f$nA|7u}+UT)+ z_wI$|F10_aT_hErv|h}ZGPCqX^6kaxskKMvyMOs{OVHq??%ufbJM@#+feuyOIrFN_ z!9CAYA5}_AOM6XxTPZhp&YTPP?!{%SZ=Wh6a(B*|Ng7kVg1yRYyw!yhbxpT&%Fhmb zJ8?JbG+%{Y;~C8g0n&Z1mn}=4(X6l`?PHhIE#9ReS}POY)_k_Gu$XZx=VNsFioefh z=U=(M>%kPY7cG1|o62_kwmK=A99U#>{xr|MV}I-Fy_o%{?Bo4(!9|yQQ%yOC%ceV# zz1}zf>rI<;X_ZrXhQ{>MTQ+ZAyry`;%7$fA^6Mh>9inFX6vXOGDRJ7G`A6MRMkwNY zjId8~R^T;_>p8muzpqJflY1h%JaZMtNj8M)a- zEcNxV+~t=SK7O2>T6>JY|3-dc{N|fijxD))>lT;bxu->u*{MR$*D#%awPHr4klydp z6*ggymxQeb9T;^gPU|+uv`C@y^74gSebSHiZgSu#UNrgr=g58YIakE54fEEOf0Ft2 zugJH0$=RiX7vFyu{<`^HmEQT;$7G)!fA~<5m#ul_nR$9U_U|`8rDx+OAOHUP_3Kyf za5Q{rKWX-5H#*TFyS%#y|JzDxJEP2Hm<*6kwltaZ^X<#Hx&=_P0OxIVEf z+?lZGw#m{D&GR)J%}+KRV`njA&7733{r$&}3NMC--(Q$yESn*AG-;xlnc0f4)s{1b zUNaawr|3LzygyH9$1|SV+2&$TFU(~xNw)Egd|EU!Ypay3tgNofY{$gpdFSkhr>Ccbju)7||Ibn_ zVJ>xzZzb=Q?|bi?zlVQ`Skt1sq zeq;Q{esb@=ee2e2`~Lm=%Al1Ko>xYBv*$IQG*)>3=FNoyi;%*ciVu~+wLi)Wh4KoQ z1THGw9qW23y>U;+n#lD0`Rp^dyfEVP$S4pie0}=4yn08@f$yN3AKu(F{%TpibGvPR ze!lXn!3CdbOZ zb)Xpq`<4HFPnj>ujC4N!u;I(IRM)SL?^wi=G*3)74)rnLn6g;7mEY;pgehMX7H5Y@ zU(gJkdw8wVhdL`=_Im!?2cAETkB?vN`}zOh{r{iu`ItQ6!2+I7UG?8*Fzm0H?aFao zY-ypPYviBEzjgJ`W?xye(3(X>)_uDEGW9aC~bCYl)tX%jKDDk2RD!JW>O{*!WxPKjzxOaP4p8g!h$4oJHc z`Tu{;znYb{*>n5$?GvTqBKI$G$qErDpCX-pza^lzy3{jMMPbA26Ot1ID#Gu7caEI1 zecQGS8#(ROA{l!t>!0qdOL5$Ex=urcOG{3ozx)Z;zU5wT%}xFUevK@t3|#(1jca#M z;i8$lk3NuN(aSfReQK9f``)0HE}#OCQ)Qv@wD<4dPyMYZ*xK~*_*D5PGWsH1w`{*X zder3S=eMP>WTDCN&;EXXQ>q2Ge<`t@^V%-ngthWcsr}nH-KT63ckM-0On1y+ZBhu3 z-1qq2^e>esEbei-f8~n&GIKI=Oiu?`6U!sYj9a2;%!+pXTm)5 zj|<((bYJo%7af)8b-VKZyR+IVmv2XdrY+Ro9=BdQ*eb&**JF`kO~0C}-5L zJM-i50|lIK)+A@={+?8{;m!8e4u2YdUlOcV^wp`^}XEvvPseMkNcLd+1k5Vz@)VLQLet~^Y?dVGX2-{lIx1HfAC8owa=!(&eqa0urW3__q?Yj-x2vk z_amYq*MLua|GT8N7Ie`HS1XgOtn9_znRHMkP>hHZ(m>kMptzNx) zW$F3Ua|Px*!dAOBA8Y`v%6Tktrt06vqRlO5SYmXscYEJ{uYQEB*MXU|G{9{?vy)jYSCyzkhps zd!45!Z4>*Yvo0r4M=UcpH}{pKjq!^`yKfz3 zte>A+xqZjST|P0ca|+q{9{u|lm-^>1*AoSf6?gN3*IzGwq|PAWcj8BAjGVot<-)&z z{|5ZOl4TkdA0PgH+y4FXlWq!{cWc{k;6J@N_mae2z1QCF#3E!a$wLccOnoV4{r88vS(hVLi z=Uy-5tMNVjzxklU&r7F$?`^4D`u4L9=W?5q+AH@~X-P#+|IX9YSv|Yw_>`|vv!*GS z_l8l#xSPYY*E zv7XD9o11&F-~OM6%MuUc;4||zJR~o(M)rlriA`Cr5VLLDwkzK+eY$PpW|MCvckSQ5 zI*sgYYxyD%yVezKeKMi=>6b54I^NVCf1LPn+t2OwzqboCrUdOd@o~-M`31K6{p;Cx zeLXSl&BB{Gt7iCXD047XeSX&a>&=%hQ||4nU7d2#qIO2>rrTGZ>3#CJ6X9i5bU#G> z{O2_@n^Y@ZMeZ*ZNPX}}YaCuTT4M>d5ABPkLAEXLR#S zsi8v0B37Pr8UKDf?)N(+Z&o^)&0YLE=%lh^$J(Syo)$&gzW({nDqM9#uE>cd;b@lVBw6M&2`-N ziH>rN=>oGIY;OI^0>^U8mpskg8kIHqO^H>oq_>O7ibWnc%~W`gKl{0nc1%ffTzSWnbxohFZvQ!Mv1wx5r=K#dPKqMk%&E^dKD(A> z`U*U$y|}|u{Pf14l_EiLv)-)^(emPJ?ml+)>eQlYg{p$(4?41v?f%7>zAe0^He zP~dR=`t?&<9sSap){E@-|9)rv*p6@dWUr-*?&zoI{_Q#NTj*0m+HSVr?JO}ZDfd6x zviue~|Lt~$$&~9H4Hl8=>gpyEJRKhP;l5t0^R{Q75qQB=7rQfNS^VEu;lbDcyb9kR zbggu4Sogbk@3y$iSlRbSL3e%cX1f{ByeDno$mBo1=iai?iT&)iZ=PyBap=1S`{PfB z6T@WGJ~jW}-%(vT=br&d{ib@k9zFc@`}NnQpK9aRzO3op$Qq!|RbBAW zRIu70VQGqqX5R)<3-A-yT1H9I$uN z34y@xPy7;YCbca2X!umWtfXW~ZQylY@mud67I@sR`@ME@gNKRYk{q!Jj#(Yw@87+< z^!obv?911RdS}+iv1y)9IKr;>|9(i@pFL4)SDmS@5#(=Dn6fv$wdBFub;j$@1UJt# z*VEHmb6+_-BgUn7Z)%>g_zNbr-RIm@QXL#lZFw*|eoonU8+{Q6A;wqMbNhZpbA7it zrYNZSiQ9>ijrrm3G+^rMut7`G!=W1Jl?=a?1S zdZ=f9k6XX|*ecxxRu{KSoqOfTYrZ{Z-IBLAmvn5pQWp5<=-)Z@-ygQiuR3p0m=f&c z@iWCj=F-cTE4%EE9Q=O6Z@KgB+qX|GT@|jr)-Y|`?-FesEy=R~7jhT4#-+JpKg+C)EO>o$J zljr1@dEW(I)YR9{XKQA>d-rbU_gQb>=BB+G5)+o8Ln z`Hi*;%MA0JB9BS$C$-#}@YwHpVr!{&W(MaD$LU^61%4hm_%v7Ych_~+jg^dXVG9Em zeEwW4dijz|!|Vf9Lb9p#}X~lAu{^hN#436hFC@z|}?|pW%*_GE{S2DV~oLaT|V#W%_pO21m-@1F3 zH`7os_{^7ed(JF55f!|X=fRrtDFu6U4(vX1RqHhK?#$0##`@D4_1JCiK3^um#39%H zeu9|YS~X41C1ruvr+?a9wp-R~y)+ABY)niG->eSl=aq6-vrM;Iep<6~U2>Y(+e0UN zmZ&T^vMDP|{BD=d>aS|6YmNMBFGVnTCh?{^?sHlrn|U?0df7T&pX^!hq{L_T{$IPf zOJ}Ormp?y02mDdG|2=d=F~`%G4Q87E770ARn{%KpBP)8}^I6~G{>{|X^9FDF(|ufA zFyT>lul7X6*MeK$-F~-!|Ni-#SWIH2!}GrG@icQ}5uaA^@ewO%4idCJ!qUjL=%?K8 z%b%a0&rDBuw>>Sk`P{YrHg-$+meuKtb%(4BdGX?f$Hd-0mh;RD@3v1>p6=;;^HQ2> zbL!URXN&qL<|_X$FP$2F?XL~jK7Hqv-#PDRPvLoTVdutKr?&KZ%Nja=nNTWy|MA>rg$38w#|vL)vIJvY-In*o@1|kXT4di zU{i(o`PmT-^78Vl4H$}gKJJ`6_4`F5NB20vovAZ@x$ey?T)Vqd?vUWjciutE*5z$G z|6}K>n>m+`9c#NKF4fBxswKL*bb5%~=}p#i`AV&1tG>Px$(i<6st6$~?v|HxP3S~{bA zt-DMU^UMC&Q?Vs8j27)w;XE<m`tGP%Qf;^2UH#4O6T9X;*OUy}wv;o5?WqJ``?al-Pej8H^c_!j)vB5&Ui8!b zn5~ALWz3@`PI_gv>op2i$9=KSXTSH%%!&JYet!OH=j{F99VY%)MGUfab+tS#41PuK6vFsd&UxE9&X z>X^`DKTUMgwD6cy-n*A2`M)dM{i;%Jk~Qzck24HUA9zuC;PJzkQ>J<*N>AVRzDZ#L zzuk|9U3b?h9o@ct`&1*hYyI!r4frlhbSe6qZ6bB*_o|B-px#__GxOt_es;fKyvWdc zU~{7OcFpC;3961+Oxo`n&Nx|cH#J~XD=<_@H z@F~^ak>b1OSCmj_E^+_+%KPsxyUW)u;j_MT$=mH$d)vjU`qw_I{aY>IB{1b|n@Jdp z=kKbU{5cIijell5sGMi`ZPt|=w*=Z9;@pmiJ}BgHx&6`MN4Jv5%zKYtz3Q^bPtuLj z5nFjTZ}oi%eV3~5st*p@Y!QewiP}`WfeVclP{cXW&X47YSxy$du^wB z>Tyll&^W32KSSZBM|xH{U874fU674J%W%YlwU^dHVF}SF*NFxo|SI_h5p6 zQjx!(-?B%$dyglt3eoZ^jL@2zQCmBA->+BN&%YZ)UTY}$c{aaJSSvX{-(OQw@Orbh zWpjd6-->rLi{^s%OXY1h_V#0HjNcyqsB+i$ZBx^4kRDkls7vAD-d)d_$0)cy|JtKXivztvPeCWaySh0yfMu6>6Yw_JXy z;casM^NSB33c3oonjBigAAa@|ssLSYvA5d&ZeIAr;KC=HbPTg!E6=^8(O0V4P^^AY zrESCWO1DYYTd-7sU26-2eXa_4@tuqLLkU94@+Ux;ZoK`JM=tX?`dAtrcv~7w>Y< zo3pF;N*TwYbhBKm|Fg}1-Mu?^u3KyUoqbG0a`B`K|@J+*WFSfB#4HcDaNzDT)H;nAN^>hVPj4&r@)@?ZdE*n>Ra8 z^>RJy-Se|-x9qFy3LGzPZcbM`?OA8b_j^V2nQ3C-AD*gQd;50nq{&`Oh33wicd5W4 zY< z6vb=bYe56OUK|geo}Rw(d#a|m%hu8$R+fv+K{K_h{Qdmqyxy^QukY>Kx3k`TN>Ng9 zD%72F>}!>+$Oc(2>A6PdTprDQ#q!j5VL-s+?)j!EGtJG-LEBRAcBmDL|Lxl5yO`s^ zPG#L^56xBtGr0=-n^i8pnR99R{5r4f?Cfhsi=GJW>p#8!r|D^y*f%!Q=kIwnG5mMs zJaMkWi#Jd4Kh%3e;WpPtncUair)Tn9|MRYV|LjkXnl>$q(YtJZzs9)Kem(d9Gt=(q zt%@rY=sxf$DrrN#-UBCdmYyBwpZsT*u({+jllkM41v4M&)w%p?>zQ1t%E2@>>iSU~ zK560o`(yN0|1zKLn`I&uqBni2z_ImHqg)oX^LicIR1_)Gq_E)rzi->maeK-rKHex8 zkf|8EI;^6>??YV5j;NrMuNUmR%*d`LBeT=M%O#3YoloUsV)t~WhKfVwW*?ec-v7Rm zwROe)_u2<%W*^UO;5545QhHOz_Wa`g|GusVO%<>F(PpK}CVp?TOmZO8249YCj_JKi zcc)1TE}g>kLvFg-)otevo&BQxdOAyFkN#vHKGroeP5JG`wL`Jor@gpHB3I+-O^eGgq@rUB7v3($mh#%WLCf-1TYc zBvHdeOT`w`85u%3bE2OJ_+EQ*-tM>0S5BP`6*q03C0zP`CivMy7R?S$ji8uUO1CGz zNX%LM_Ja8G<;$*uAn?Yr9eURSTW@wKETUn0k(UDsc?t_k`1y_-$?=aiNy zr)Hl}Qqqk)vA;O?d2cW8s_U=6+^c@yn(}2!_MDJ5x2f%GHh!wo2>bVX|3B~Q`JVIY zzrMOE(ta_+WZ5BO#y`dp9Vh>)=Bu1?T5)<;`tC5cNPlgWQ;lX)y*;xX_Qov_TDj!R zpB>j?#2?;MdvKFYq~_u3tFNYrP1`OWcw@=ePoE~0m6e6u;fTmojP}_WvE=L5Ql(iu zGY%#Q6tzET>OP~AarwsA-+wQpX{h)6O-{M=ZsslR?8Lf@54?8GxRpPXWA>VaO?xKh zCZ0;!q|xELV`pC?hh4$Whcm+&FW-7OtCdxf>+zMFpXFjAbM$g83_v^bDwIwv<7$-8 zo~`Gx-g9!x?zkgSkTCBbP`c=ZktgSEp{F(FWYt@M}H>bTd^1g9v-uv(ilRjHW zt()-s-ljhNt#czb8B2c9rj+_fK4Up~UXT>G*$6;Df8;o=62xd$I8Dqiu8Zc#2+}(5%zzx~=y| z?#xq@-Q; z>$WpuT7hfBL>0S>E9dM4u`V`m`t^4o*OtEXshbpoV`CRS*4i-dvGs`)9~vG^+bOfF zRxG{$^XKBMtx->Y{|nKvIiYOBIsJL1mbV3af3kPVbLB}&fjm0r0%p(f{%QF~IaO_j zPJ`oN)3Tt+P3IJ6aj*nxW~?qZXzDJ~Ya+Q8rLoMkq9%f5Yb zNxK!V6jaPh?`2M7Vv)PftJ&2Wdyr4gyt)6XtJ=#n#+8}sUhlgmn@`%+H-jZ+#=Bqp z$-1|Q#~J2S3ZNj|?Y^=sV>lVe=_?fEKGtwRn6&B>0OeRf%qZpW(U zzkcnSRPOWs>858d-#xy0{{tU~6~D_)(;26xw|`SP5*ZT{AFsXXc5A_t2YLCQ8sb)l zI4#udPzwv+_WTClrEULaEzRjDW2h9}9&dAgF~9wvfWPuAmm{}4`S;2H{}=yP?{|DQ z$-MpI347(Uhx-@L6Ta#f^w5esH6V(`alsQ!>B^(2Gq*TCcv@cb=ERH!nNPcS7@DT{ zx~>&Z=yvV3dp6I@OwuP^@!w&7d!I@l!HXgn-zII$;Nni&LUAFi_)ELdpU z(j9l_!H#XMaajjS(z-wWs@l75&4LnU&rQ=^L^kbfN)u&2wBl%}c|)o|%Ff80dv^0i z@?3CLFE3eRG11O%!k+eMN!?$^CWxj~r!3ujZR$piP8@@tOitUvAa zrmYLS{=wmeT7sBOjzMH459TeWcV`XW{DI2q+O+%aM^tSjNLNb|`GoMSc=ia-pbCcTJ-Ft2wpIR_y z>ecv|7i(5Oy3@YDS%D*R;%lL)CrWb-BwDsS`u+R&!Y8IXj$eDf?bquyem3WWjU@S} z=sk3*xRPZ$_22}1<5v^rr0~qv$?&;eRJrK(TP=NtooNeW)?A!myP9F))aEz*uC5ODE|Up z?WtU{va-Gt1CJ(6^ja$P_RSj&%URM7XZ&E;*Iu$aHur|gPQIJpPHw54dxFW^>H5Pt zXF8Q4ViI5bWc*6qaIR?Qnjq&z!utC9S8erf>E6ryRDJJaLfOu*lDC#ct!=xt=w^=8 z<(Ne}|7Jd~RJ`uUbEdnyTXRvsc1JeH1xc4ZR&&(N<%^m9{8oRYZb`S#8;^t0T)&F` zDCEi9JDD==zlecc|H`Pf%j)WH&*(9ZyL`YU=+XDxvA@E zBH~re3JW%GHr~qjv3e()*FI|_V?oJa+FW;UjllFhQ6foEOkW>8`fLXa{;B?= z`Xn~8T|-53abbsjrN016Fyq9hf13|FM1FlZcisB+&W`tUzaC7_oO0Mvz~xwRk8_B+ z;(CGNi0yv6RYGQ}UOKYq%2d(NWxTs;9n)(+Uzxc43}0lWh0LW}x1`>_dzY1*Sajn2 zwQJX2fKH&hBJ<(w9Mej1@v%eF~z43jAhvsbd=Eg^6+bcZy zu~UKXV@i;K>f6gJEN6AHiWziE$m+c@-y*W_z5mY!uZ4$~eZ3s%euHVN^W)=>!*X(R zE`VExCv>KInMn0sS#(VI_>wSYF&>wy({efc7{p~h)XFsKo=bTAWZoI8X{=&jH#ntS zyRh?trcn5Xw3lVOCl;S%^*ojtH=%giaR-GiF|&($7g+k;l-Iu8>1jRX7+1%2=GV(q zE;QEdU!Sz;gK6u2_J7mPH^u+``gLpBX8)|6O6Ipr44YGSE-RY!CU@JEH+mN$pXyor zd^|Ww={tg_GM!^fVS zi1|O{-c-uny?giK>+9<~Gm>ms6z3{u>6+E5ANEsud0%Ck`?^{+(F}EU^{l-ONmHW_ zzWgS1ME&u5iE_KDdE%FTP4`m$RBNB2Iy)`z#XJ9~WjV%o6TO!Us8uOUcYJipQpokt z=i199|1M12v*Y~I_)FVL{7rbdF7J$=h#UdtUK+T3y`Z`46Sm-SJcYyyWF;A5NV`HFsrvmd(G! z)LGu*d*f2Anz^FinSx^5%Wgeqe?NQX78&u9@0E?2_(f*MD_L8wI315=D|O_IUVAOX zOyp;r!j*I9&#%oh&6Etf`Od%b0F%x6;I!Wt6i(au7dKS!blmRWb#!v_HSW||n;y%| zc)*s_%-xxKYmTqp*#j3Z3dY99YUbMPo1VR@hx7318+Yz3`TMsv*}ymW)qRx->^Ii$ z`_;AY$0Kgh9ag-ONy=9yz01$M%ONlPse{pM^|q4GC4##5qU@!5la8O6(xf{-I!2Gl z^X|)%7e9W?xOV-z=*qR-!beU|b$rD5uIoucxoUSWwigb(yZ; z{BETyZhbG-9sK-ghs$F79k-W-NGJw&+%Zm&eO@V7`{knhmy_!AC0?&%o}Qljea8fA zz4L{-#;asB`bxT_Jr{Y+jQ(D8eV>=}o}F*P5PHmv+AeJS2JlAN%hw@cQI35O_)l*VXut2oRr?yw3cg*hbFSy-VcNVAb^v z7EDsx`ATL=S0>G5{&3v(irZQ4yh6R}#&@z$aV^^|XZWS&{_?eJ*9QFQJDA`AsymO^ zx=bz=c06VI=$+`cHB|~XQmS{X`MK-;t+(H%EDD`|R+F!yy6WB$F3`ZSPI{-@rhwo3 z{Ljy~4=-HzAt&OadZFQG8-Gp1Nm}z49h2#>)!=cgDO#lOHSw%5-tvk^Nrur z4{~KsJYO4_>^ptqB~#_ZE5?rwZCUnGB*H9G&QQ4W&aEw69C7xyHy185yF0(@KvS4| z6vLC;)>iR8=Y*Lj6n^B)KEW1iX=AX0^M*|2l)8-am`j^py^>*J{90xE$wq(5(*sL> zPCRsG4ab`0X|=9j6dZ(Ym&|2*wBcUAq?zxQcT%#KwnffM)>_Lg^G~k-cvkLJR{nC; z4KeGEe%|ryCaa!Qk-$!YKY|=~e)7i@Er0HL_5HWv_U!2iTj!a}Dul1QnCYRj?(5sK z-B+@c!CD={odorR@T)FyPsxfVY z|EXF_-}*BFvZXE_)heeODUdx`_YO>wpn&fGf+IgHY*DlNz-x&X}wtm_U zF_AjOdxn+za#o+X3buZGz|_^VwSo5%%eo^>$Cryzk)^$9N)VM~{lfGy_)u*eT2%yxXjtG-6B|Z8}|jL%crB zo-O_Sy9wv5qJPTkJhtCn>a@^d`}XZ6Wo65B_Lh7OQm>i4Ccor-x#QBHg>&c1ay5A- zR83x^VV}SK_N(@I<*lcm7Fmj%usc_!%~~gr^yhCtzCeBv54)qo)+k>=Slh^0+}(M9JZrgaY{ZZcVad(p|Ydt@yNZKZmX zY|n4ucdK3IJZnw6)rr5!6TkPZInI7Udr?M^mzub@RJN_~pP8AN();)lqqNov zkIjsye-|VidC2y0&ZmZRYo%s-T~^=~Y~AJ))P68w!L@4^?e>e<8SgLK>aQik-+nmY zLj2vR{Z0~*sr|Fqn-mJlgr`SNh^d>Tke|&jYryUsc6{56pi7gExz(Jke)@M^>D1I0 z9iEniNVw(I*9%^2JBi>K?yx4mos zbmhu>tETtAe%*=`%-O{@ZRw_SMe|FhE-aLtqJ5`#%Jj#->ojiEUombtn6Ti)rLx_& zSKn`q(tXmD8633B#{blX!s}a1P8ps5oD`jy*1LSy`>U@@OZm>cs_EI*b9-6lw~47Y zn$uZ>?bWtMOj0!OklSNzW^TTG-Sv}fHMxa>OB@UJL~nwo``4Jh4J=$3>~rH<@PxIy z%1^W$xO7nUS+Iyh)YQ|dxzA5Lf5~F=hu2$q<yM5m#F)B+r4-1-hJ)Y&41;NaVwp3Ph@@cQMzz@9`D+Z z=j;C!D@9EV@tpAe*o^S`4ljDS@BS{*wS5q@?WB-Hd)C%f``k}`F5B(<{rh*f*O%7( zK32A3)6p**6057DXMeiaw!(ReO^UkcAE{oq4F2e~{2v?t8k|~`6t*uo$ zm>!B$Iva8AWW1i(gi58XyASfR!o$Ns*Np|-Wou>>^c4|MaQpGyN@>;g*MY0Aaz)<0 z<)N*|{AgFyS~JnvC%^bvS&A9%^vO&6W1K0fb1}#4<&!5Zef|Bx@1?g!>4vbM*zx23 z_u5zAK|_km_DEIyeo+5Uwk~1fwbx%?JbKjh?%g{P!Rt9@nYFcZwWf9jR-XNRZR(T9 z-_J}EnelbsA>lF1)akWeu{tIi-i|sSu*!UIx-(mp8vsW%IQ=s5w0uXef}*?Rj1NFoqzqcO5^oH zKaPug=ldO&VAT}SF}|dCpns{Xm~8i*WAmP;&Whx3XMX3^^!x@Ni@3P>tx}(I+j4HE zhrPW@@8)#uy0_)sj0cM(4&+B}+ag!IGWyErPYN%^D{b_dpEwp>WXYWV>q+H=%Yr=X zPVKTN$o#)z+k|#~JM$dJtEJbRGuL%m+ujIGEXvHUqNYV$;oM++Wm)b zuMs(@_c=73XTmd`>DT{6vz;*8+}hyjoVK$?`9yHzN0DFQ*Y{;-XRq}1nEYBjK7E6o z!^sC+=Rd!goxg9U)_IoMTc^IOo4)UQ2{He5%MJxDJ0rmon8LyI?d6B-`~OYl{;8av&%xe zGgmPu9XP_uKcT1GXY(;HysIImS;?_THytZ?b z{N_y|#*v_F50kBugZIYHlV^E$qr32-5Kjr~_aiz7_83{KI*OI{X2~zwU}om8QrmXA zcJr$G)mJwidvS4Xv61z|W5?J;xmZ&VIxi_VW_}o?H8mqYzyIC4cQ3wun^to_Jd*L} z*FQhE?V7od+2@+aE`@#DJ}vsy^4^o9B7e90_WBpc)~P)D^>^Q?h@aoyM&G)BKm2`D z)wS29Q!k!!%W^z+?d`(K6N;P8sCbH9vJ*a`wOMbX?ZUIcx1T?H!=L#}LCd0U)|0Gl zPcj|i()U$56!B&@ecb&)%rmv)Vupy)?ZrYzX4*Wi_a?x->VIEt^smg@8JTd? zB;9kOYNhKJfzK`Me6PR%ekIWIt9egT=oAxiGfwrtb@g2buf)o;G+r|e_!p};y_bEb zzuixliQ#H&SKAaggmUN16F-+X!*#wlWApyvJ2{z!6T@aR7=IS6oGMoty?yE30zq!p z|LLu>XG=eQiFf+u8-q(k~f zt=B7NKMwpm{dn9qoyPR%tm4}J;`(uCR+v@o5b&r}I@KC@j&pNwN? zsukQ6`rY~d_mkgs8X3E_W4=98-~bOCod3M6>16SVhWE_}60W)w6VY2ASE}lDUfyQ& zvTxnoiUVbwmSsL(n|8eI-+7`p@W&q??dAGXm98d%Z+5A9ckMd1^#9~D`yUo~n46mi zNAfQ;Vc2l(;oJh*B-7%@k{ZW5H%+eGIbF&=f5wyIpWFZRZp+$!`=?+;t5f1Tr=6!= zT%ViH_I>sJcgXtdTf_X;hI#+Ib^3Se;^fQ4oX>nsYCEPZ5&tiJzW>q`)`KMh+cZ)V zuT9^&Y|7+@$ovl(@*Ics#O(L%k7d~*D#pL=?`q~_JU*4NI_kMkU%V1war9uWudMVe zFE7t}S3Pfe&DEc_LCtb3jYV_KCLX$*H~rMpO-k#m=Js7ZZ+EWRYm)!>KNb^SCojJY zT8Mh#mw>2+^z7Z;OAqRNU%y=Kio4<}TZ6iNf4@cV+OcDX>(nIW^N01@Pg}U!mT0cp zd}z&g>xfzDA9JpMo6z{Q@%HWLTQ_eip8uR-Akos)^ZJm_gG!qvM+z*K{QdiP!lxG=0r*8s0njk@3a{NroCin1O&Vznkf;G@wy!pajtD{A69;+REo3{L(^ZKuLrA5z*y1q?Ij0AQ57|T8s-M+u_jo+VV zT~{Le!Ue8WE(+0l`Y2Dn)uJ;h=aj$PVX@lgzfGt2v$M0m`g7@Ji4kw}p~T52ech}r zUMKWl=-ueHcp`t}R1?>9xvvUEn|U~z8qS?R|MKtm`}04Eeyfd7)p+kcMdI;!ljbCSlv`%jBz9(%m;Rz+ag_SYssw8=kAkvaC|-@koI|4Q__YVx0cY~S!d>HLB6U1r|d ziI2EW$ZekE9{JXKTT#i!E%T&u4Et10&JisU%Qte1iAu?=6-_^D)v>ReYLsgNZxp zgVNS0-?>|TADfwTuW@Z!ozV1JYbw{*-?dWx#}^*f3jFclB>(nZe9kj>J^%3gDbq1l zrP-lj0zP;CCH%{+p2icWzkcRbHCcAO(oZ(}Mgbb)a)mS8q7P4c`rv^=QQ>jh&k4`N zPlyFRKIJmyM$>M!mCe4!7c)#&1ZZ4%_fBu>=~U3kAX6vIF5yXf^LWD9>vH?nu{b&$ zKYsky@7RaG?cTn7x2nQGtw4OzicdeKPR5qxylwn$I#u^|nvl#Uu|45OLTwIYU0h-@ zD?R$yMEx|@**ufN#g3c2->xxJb+XgC`3~D}^G5O&ypGH}css|em))f9#?x!N=b3vd zG&y&_{~cUCMTXrszxn@?Bh&jj4qENqyVv*i>(^S*Yo-)>FBQto&CS$Z|Kt7- zMnN;Ve&z43TZ~T_&D}cHciOY}^N+{Od-`j_@v6>W$|a57ZQGXfUA|MS>hkLAE~P-5 z^NZ!{el&I+UG!^C^W;O@J}q4?_-f|2H5t2g z&9vxcj`xq-M{hkaJh<({&JDY*bW8T%=Vy&qT{PkUdXYal>`kK6gx4`GJ}q&Ysc2rZ zjGVlD@ZyUcGuexG?25U2_wGtxpJTrsU$30!US3|lW#7JawhLUY%I?^+XGwE2v-VEC z_uIE_UMU~L={db_&egc3n~fq8nJnj3nwihN`q-v<`{5uXzal{a{>rN-pZ@IL(toqb z?z~jtx5~);d+Ut&);zBaSsMnrma0i%LEQS~9HM-(7ddANc-j_@o?9Gw_Vk`> z-aG%T;aF`jDdOb~n^_Jy1xcJKme<zR6?jyq)jnz4rQJzh$0C%wuk9uUC8g^W(pRwu>)z@bU96e>IO~ zS8;R8+M0XIY=n3Hsk4!j?hOeNjM$^xA;-pkVzq1Jo<)D^RWHAEY7_8fyQ*LJk^9%_ z_>f{^V`H4f6l({Qatn*zbqVeH|#olz#JplgSMZ$GeZJ z3kx01&CRnO%}$y>^UTBWh`J*if6Ns1N!k9gK73(@iIgwroo&7vXLp}wb{D#Il676` zjyUtzJHop+x$8+inXxWxb%@^dtBi441=AFNFYpUHB~|!p%Nrv`_iOJTMa4~N$Wz+v z^B{Yf--73nf4_bIzLm>Q{PmqJ?SYl~Q!X*4zWz2NY_+Spx;p5%<Wo1=;+aTjjf zwr$&sKYwge5)-P-=klbl`o8D6%aqdSs3&{I+MOst6R-8}0 zWTCXEyPJFJO|hG-v5B|3ebV2kJUC`2WFU~W{r0UwuPK*WCz${F{QP{V*8{)hi;Y(6 zFfV%K?(yfa{U2u5gDUq9*8h86A0)t{_$~Ojfp@v{6z<|8$u~PLX0$L_9u9Rg?|5YJ zz@K%-2ea)hhYvfe{!wU{n-i|*A^6faJ3Jz8N5s1avm(Fl?S1nwoBe^%pNpSuav6MX z&zj&?(HAwpq+K%QV;A$zb*IW>o-qIN+ELDKa-u+bZu$OC%~A=on~j#;Qer4Bh%0L3 z4t(FW<{0z#FWpX89`@F&r<(uVe$L73RMiCcS!dN^(&(t zY~LTiUiZQIj=@j9KhdXZ@x* z^EXG7f8g2jc+(t4amJcAp4aU;^Eez+&YkPauG%YiHEXNDL{-m5l~Yrfd}clGq!TW# zAf^)-A=ZD20koveM9Mez`0-_Hd-Aq>|E&Y!H+25C&N z2&`Z_<8(S_6U*Uphbb>rE*>eDp1HeYk?-xN3QwD-XLnXEv#yg+tx7oZ|D*hW!<2i^ zAD#an;<3`={mHwoi%q&O9g&%T(`3r$4W}X%<99^;5PW+7y;ZjFzu1)_O6QGtD|mJX zfsXz)?mhAKM9A_j@6WOpU7jWN+_EP3+$V!g8Z3u{+x!-6iBvyhot!cy_4}UJ+cP$t zE#6muUZ^snP;h4QgqwUU%c`HsT-a$aD@H2zwaoXbSlh*?CV!f8=lP=(+XBBneY!i& zTK~kx`B!6ReEqd~(*Yyp?yr*9!l8>d-n{WS*>*xnmZdRD-tN~6Wh-mz;4q7?Rkd16 z`Zz1sbb2o2)=l7Ay>R!u7Y}Ri@2Py8a+Z}zpm4{JS*O>w2lSsk>-+1+)6Y^#^q<(tj!nqgFFb0qS&#ifX=C(q};-oIs^(cFVOqgCbCuhiKP zV4$A+OmK^TSzVBQvJ%(CaF-`3Md~*L?>1zb&DM&Rlb=x|@c;b(KmC^+c1{Q{+_#;z zFh0$LTl@UyEi;cTI^~gcaoeHGPC~pcF)vyw{@wXl;j{SS3ClXZcW=K|1%C|su)TYl zIrpco>+0Rlb(&Pqacy>%@=cJ7NPBuwM`!({v=4Jab=K^;yEW&j>)KegrA;yJfqi*# zDlhLxZf*3tH);RkQ>B4>9^6`U!k}}_^9fUaPw(BsbfNFG!!mtkho*w>TC#~9brtXT ze!ud6M}KssYbwJTuA<(q-P2Eh@1A{TMcn$;<*b!YH`Rq`iHb%CY(K`=?wl&x_C!P` za9T%Tt~|@+p4ESL8gw1}9$0_+)267`zHiG*N<@Cv>}ft5)O{jHcE$-NZ#JpdU#mce z^;~{=;nuBNF_GUtR;-ErviQ}Jt!$ruZ7EdsS@vntk4g8veWli!+KO*5oOhZd`giS* zhwWefe!s7NZBFm;-9UU{6!`L9-Qfz8^kNz-yS8+5-Co-5wGZjH_>OYa-6Ui_M8b*75< zl=Zp$n+})qx*THX^o#qk&wp!FFKFYhoc*0kaZ#(1bwG!KNt||h_U}~ky&LCFPKq~( zG(RpIZ?tia_ul|@3Cj! zW=)$=dTFg>OmUiU&xT4ld3o#OpNs^Lzb&g?B{NqwMXtm6eBv+N*U44-eACTh73+8O zERH-a^QUr~Y2v+26FASN84GjkOutdRtooADJLA#=i469Yk#$E)*FTuBv0ze!LCRjS z-BEAd9K-WvBhxoeDc*XdE4lS)*NRV%&hd(O?{QUM|LpG_S9h7pM}PjrWZ!W3Vlc1v z{&LU>I5i(^C&>z244J|D=ibemg|mbsqhI$OPhPxRCU8bP!=*YJ9%d#|@iF9bkShVl> zd-ilk^4qQ(xi$LN4sPj76FM?i|4O&W7JgYF(+8E0U2-kVChu7BI!7%0ld-sO&s$^Z zX%mkq740SP5-sXmvF%ddqSMOWQKH!yMA=CCK;pHjCS!x}%_rp7HJh2nnx_-yG z`tzSx#OOso-mbLnTl)N3x3yv2HTSPioA0K_-PG{!d;Nd&Yqp#CE?r)I`Q?S#=J_w) zz0v65o*;A;-OPZLqEX{I7amm!B||=tV@_E%!VXE4Cx5|K^`O zOAEwt{A+oeY9GzZ+A6h+FC}#M-DPLbp4B|+vi|zw zzkh4DPCUe$X&_-CSXj7Fcvs2n>?y6H`@_FihTK1|<#vSYU4>Wsp*0LmYMPZ(O?^`3 zWMoqI$?d*k-~Zs_pAACn>t3(y{u&YUb_aLPl9}2*M#V8YO*+qv_DxzB*>BqRHrPq( zr{lTk9b#oxvRYHUw3Ib3wun49xUp2MYmUsZT>QA43u+(I>uh#U_Pk!5hE-A>%&)@o5 z=ic5Jz11I#?>Ikr^hjxopR?ha^Q&5&9FIP_cv~m-U-`Xd2@+R*M;aPr!D?=WZjo6D>J zzWC_m9(DWIzRNE!JfC0h_xtznD=$kx_lRx2c|~f{jdRQP#`V{I?2gw^)oPmSepQz* zCe?E0jHZlVGX1Y}mxRqJ-u=#;-RanetuiSgi!Uy4TkHtBRq@)&Pm({Rjf~HIb`-eq z>({QT?OscrtgWqINxp~{{+YgMpI4I(k5!Cr`st@eS6`P}Sz3CUto!%u(W6KIwWfBN zDQw_8Ew)78*C6z+%Dm;<*xPTIG_5%8P*{3>wrR|kiQQq(MW=CZ78CF-KI?Mfz!9l+ ziZRt!UzV&0T6rPEBxu=AwcylX+pMj#x^g*YFdZrWvCsea@87H9KFwWXrpdK7OuKBs z%ewvR&8p@`ZoBiw(sMa8e?!;)>8bZ;t4}(`QPiV&VEMT%HLdJRd`*N~_uRgH)Rnc= zFM4{VX3pgkYNr*hr^LGN4A)7LPBGMvIsRDb+-*^{0$bza7by!ZHmR>EiCQZ*^>pg0 zt689x?Ms6)wGM1=0d2ClSYflQXy+P^B~^RHX3cCb?tNLazr#*v{cR}O)gX2@MzbgvrKv{Viz9?=4z0$>Z{3=8 zE26Z$HseOkee1-Me=Kcg8Hs+Um7^`}VG!mu0(yKLy97Ywu}R$xoMs^S-U+F0J5 zGbzllh}Y$fPR=WV1|PMn%c^$gU2!z%^gVELXVltdwr@VIQQyQ9ZGEaJY=iT=T2Gd0 z>9AVEgKO4wiZvd16v3vglgD~m*Ya_apl-j)CbgRuJ5=*#m0fxG=us0NKY#Mp{J7$S zW@?vv8m~spv`;CL;k;eRy&tsjvbwtZ)vSXF4(aLXw~9){^v$%FTXb37QJy+4bB%}Z z_u}(RcTJb2r|E`&_~npi8ku`?+ZUVuV~-6@rFu0F&(}GBvXFDlnt9n(Z6_Bye~%IF zY@LyN$(YHYl0#~+&GS+W&YafuWID6)tjfgM zA#RGNBbe4*@b&ZLTeIQNA_WenT|0Nq6f*OfZMxsBE?#eXs6qL>u<0K5;>`*(x@I43 zK3f0(?{^oMTW>bn^ct_X?q@zQmBodBw(b2ZDu&OT;$Hr{7AwrsXjIGo>+e1*A6Z%1 z)=iwB9xPk-Y2&|-@59;|tQDjmu!q%WIRCUYcwPI^(D77~(S^;=E4?NE+%!>ZJFNJ% zYH!T*B$=D)Tz8Tbyf3M8r`W##)U);&zj37ek+SmgsZ1%YqLY|X+BKhTdZ*BD$uZp| z@8uEQPv5_PcP{kuop3~~o=v|$K74K1+9%8%s(RN|ThE-+lpwp@1;418J?85!@%T6$;O<-4CRy34!XOP`#%xv9J7-LHKW{t?M9EjWV1&dh&l z_oU(2tmFS8*o3kzWP-LvoeeGMQ1&?b^30kA(h-qc*yo@5EO4etVaBOtTV6<=5}jvO z617>Qd%nVjblKKx?cCoEKfGWe{`6rJd*SrdS+8VF_bb$FjasYOy;?=O{7UiCNTYxH zQ@ubICzISilrCU?HRBzq55%9g}v{_u4P-Ai{`+-!`wHHkISx*`% zc(FAfReffcf83RiP4=nNgyq?6^I}(D6cJRlU+~ zX+M!^5BGeFc;NNq)s()D=%tfIcRtePo7no=_xqgr^MeIgj`7^sA^tjlmZiAsnv&hI zx9;4za!)>7?D3`ze%HR*^vCV1kqp{U_~zZatk+tcUMo*L?Ygq&iMyR!g;=5RufKK6 z#Nw@7PM#>-yF(z0<%r@ryGci!>>C%D>=KxD;r;iOF?#x~(F?O>`gWv-tq!%ax9`^} zz9-$DyWsYn=_TK1o(U`c{+x5}$v0fuPa17nA~K6)j?2to&%1v0;*^3%j~*SW_|UxV z@!8qtCAGD(zj#s)F^L;)2}lqAa4u=1MXJ+Vso9OqyKQG}DT>)3&DZ|qx7}1P)myi2 zEh^i+)@Rr0r$(UNP!%@IUcb&()%j$%A@yp}UHfT?@gt&a>8mQPt5*Br)Ey&R$T8s@1b_irkkKEE4FXnUVQ$>iMt^kmrh64)ah=1 zGiA%WPy3cUJ#)C#fZOKi*P>}1yUnWSiGS)icrz;Q@o&3QtGNM}=4m(yU(?ax7xP>8 zS9GD~4t4JJ)f*#vM3c2SKdieXYk9V~q?X}yfyRW@SGC^0dnd(w==G@w)xwXa72dSq zd$h)L-gC{Jw^f9Xe|&L*Yu%iN+&!QEo-5Tg*(LBQKx^uhYxNh!ojD#8&P=*B8dEzkK!T z)LqZsyg8HcaO$^!?-3_ft4w%XR$T1tC=kKy>doyUUAc6#+|2Dw8G;kScFZ^TR2F1$ z^w692HRh8|zun(2!LF}TIbSXl`kFUq&-KWhBdqh|E2DosZ#Bu@^18NL<+0a|l#eT_ z)?YjQC!whO`q}Ukdh?!Nod5q%dg{tG-W!Bj8o8GB{jZeV6f?JU?G*V^jp?U@pNO7% z@UCRSV;>{Q{r6RNzdRKBA-!nQUDj={m(-Nk)cBlDGoHf3`Ox;*A6Xpo+)$nb8EI2>vP3@%P`@pT=e0&rC>y5gi$Kv zbymxMtK%E@UE0a@@%Ln*$Zd|5g@uWK{J0ovKFnYf6LXI|w`QZ#+OP<>Ckxjq&EjC* zU}dzn{cKwB&vU1FpS*h2b?fc6UEz~HUvjC+&hGZ}^9%8DshexVQ+!bK+(Sltqo*5m zZhx=cdhX%hk8>VBPPVeLTJ-sIvFjSg9nIH**QIZ(5D2XBc_P{`sdjv7UQgjd{_02p z7B7LTJLQk$s%zFLr=8t&^r;WGruLGX%}?#}CrhSXJ+^B`?B;Vn(l-ApY1NKYweNrB zf2R5I>RDak!d)?k?;v`@9 z@u>L1|C1Z~*^fxKx&~aaUG^Vz5zF&cYgANvR2oVm7c$OmogS0D=$2O;cdNEY*4{Y( zz31ou`=Xw;{q~c}xD$tbj(v8CTpQ*c8N=J|tR>bRW;u0#_vunSk4khwnTkQDy_3PmCZ@yM-*}dC)`}XZuGEAn3 z3UrvT9DF{@Zc4O{*!(?P&lgzC$*RBoPu2lF?xsn;)kT^M)XNb%%Dg>|V@-~HQh-e0+T_OWj7yOp~t=4PKWI+$Yk zu;|9@<5kI<{wWkqW(+H;+E*}la?HM0WxG$=1~{EF4F3NyTjBA^-z9o+W}Bu(pa1+x z!0tpyn#iJc54}7l*JLW6D7pTr=jNYZReSwjzkYqo)<0^pBippshd~ScWq*9#q^Gue zOQeHPQ@22TNT1@C-1XOkRo?j9{}q{3T=Dy8U*lE{jj3J>zwA0O;{hB(IoA&QesPUW7s}O2<)+~ z;NfU^zr8RyCey83XXa-Yn@%6YSl&9)y(&5NJ@ZAQ7wwl$p-mwcW4)!|OK z>=P@^a!psQXnORq)gMv3lo|6w%22LfG%*;mXr`mX&(E(TV^M4Kv)uZ6 z`;^{L4Us7u)={$Yf8#Mk~+O>;c?X8s)>-)}a2k+0GJ-bWda_sxx z`!=g`gfC*~e_C*$d5V&PPJOuMiYH4AHYJuC7$;xkf4kXDF3h-ci+hNz`(nXRt*Ixz zn&jS{v@LvVRA}{ioe6Ck+ZA6aOk;1H>Q>fY{od&OQ`h#)n#y}B*Mv5$`*{Ad+6IQ1 zKbD1P1unk0;PK;REfFpgx&D_A9vtv65%f(7jJ~5DE4xI<=+uiQ?TqNPVwLkO(~?(T z4Jzc$-YR8V{jKNL+ihWe%{nzTH9qO-=`Jpck-}ep+DW@)T)wXJMuz%A%uEzRQigt4iHH=yp~R~THwlQ%W(gSMM+q^KvW4w zQ-jsqzR$C+=9tO9b!>P)-zqVb>tUqh^>1q5msQSutS|iN%|W%*CsJE=|1iflN39j> zbz2<)x3kgWbfwDqQNH{Q2|enP*Nf*_a&res25j{*$>~kB@eX-#VW=P5;O5 zjb~oFvLBlkB2~n#R^v7$N4~g_@pA0vNKzW%OV zbv4WFwPdG-3-5lhypzob6-uV*igkBg;c9CCvAVpx95nT2WoNg{ZLwfc@3XIv4UV9* znO1A?HZ{cUt#UO7Z|VjuYo5JSYSXs2cYWU`8-F+<6?1W}`T?*YA9)c1kg7-?yu*t?WOfuH=}3j+RU0u(@q9Uv*>BD)%b~ zt>1q;?e(opv;FutFRABe*zA_a=+y83`z`wUrqWYyMAO(~pZTBZE!(};NWg1{#{bx7 za@RhBwgh$m`*nSPSdoH!_3z)mU%mHR?tJ|C@h+7|sphlKhTL;^6v*iHDtY|*&!0I` zy==9AJ{}Lz5OGpb5ZNZf&dz?SsJp(s=UN5d|J+S=m*=ict$kXWksQ4LWa(v<(`mgr z76Q@%@0T>bdMt6bV&3v=@rzlfy;ic7;k(+XyjtUT=7i}DrZRlaE^+gs%1;`(9lSdK z+EiVCrpeDveBQH@r7bqGb;peF3tKa+E-cCne#{=cqfAy#?$WJWvwp=*yZN?k`6GRn zgDUrg=Pwq}bMVW}&u@=8zHZ&RjO=Xfl$}R)Wq>}I*Z$BOH}ot|amG*f8Ly#n7;%-gnleP8GK zx^c}~?K9#NOmDs2W@Wtfc5ZH4x%gvN;U9l(j2FKDtrgj(GVw=5%bVxF_bH`T$SRgU zikfa!=pv}4wwPy8dw`UUwbHALZ_8HR%(?V@e*L;f>K`lO=RF6VH@nH|b%|By2@6@q zqqmP-;oGD4XP<>wmZ!mLTV*}ZzN(jdyr1lNRbu58$)CZwW(U)P9>z^h{~pYp&FZ+M z*ww_=|GWK-!k@N$_T3JAYc@1-cAMBeo?!c9_r;8WoiSld>tD*TJbHS+IDEsy0+0Or z`&5;Jo?R7S=}>DCJhA#=!HT)JJEoTw6*)crI3sK8tZnxK-}|M!6QA3_oNcryQ*;v*p;i;E9i49ST{0efqqNlgw5-75t7_ zDw&sWb!~rF8|%5oRmT7Gir`6=ecw)J<+GIZ+aDEHkSaYT zHRz*QYU3j-xx`x54;w{9|1F5oYyVa)d{XG^{*`g-SY-9rU(9G(bFxW+BlXO)>rFmd z(@!sae(2 z=M@1OElk%J^KSUKGiOS`u^DTQGx&)W9SAC)`0dD&3p?G@c%yri#Cwh>FHMY7>`B|a zvZXp$-tFt_MQeK_lV(1DVe?BhvwG>=*_G?;*PZypz@g&1N#UW?`P0w*b~|k|_^O*S z&u_VNb#-;u9;1nx>xz%7od3CRy@#-@rq=iP$oC2yTUb{4nH8_pesXX{_S2n{CqI1s z`t_F0n-}XGattVBl|Db?*4whFUu{M9>KScyk+HnPYNWhl%ZGTEih0X_8RX8L{Eqv@ z{=bJ7PPn^a4OdgczTfYxL3MvvoQtr~>sPP5jvi}b=&equ zsw*vZo$A$k>glFUJ*T)qBO+Z3*X?^By!`UQ)2F>d%lAF>3U{AT?(L}ha#k{T-u@E? zZ>Lrs-TA2F_BC^J^MwqnT~2Sl{+#oSC(EYZUDsM{_}+DMT;8!dZ1t7bU*|BXofqo% zyP>!E>eQD%E068EdQ^BzJ0^TTU==A8`uO9Fs=acchT@aoc0c#6H{$c={&x24*$J-epI2Ua{dGlz zPSk5HMkC!*R+m#W^^>~_EBm8kJSF|qgI|jrReQ4c-m53)TwMfM7TT$JofAJ=xol-^ z-7$TpNwcn1?rZ~vD2=Uhf$lGB)i>irSMLVSZr=?eyX=h@W9%P7~RL| zyr7l0_Q#LftX;R`s?vJ@c_%KvW;L>#Sm(FiV@=5i8~v1%PcF?XNPKK0KG9BY8lMqo zALrwbGivVhAARcb*J>^wXjDZ0--q@Kw&CI7TQ+W7c<=1@+FSSTh23{f%QBmNOF*db zj&y0`jmHk+_YSiC+j}lK<6hB`MQa|KoiLkHcw&>olt27C|EKTbFBOedjGp0R5i7Vn z->11TKj&^mBHajUZ(1Q_fzqU+9fP%V&(gfUwK=$ zGDORF?RSNkS6{8>&Y9D4N|vv^q_oua|F8A`z2^G4AN8N$WcR;5IoUZf?W4mYwE{<_ zR|h0m7-Qq(+y9ww?R;66@v7nV>(>E6Lc(&p7quPVKkMq|2W+#B7KgKM%29~zZ9INq z-@5l3GNcMsUMhHrRjcX7B)2Qh*6H`(eBwa$*DBk`_crsq-nXvr@y8iW3LIaLbKO)t zWxM(MYv0=ZS^OJRreAm4nLYE+-Z^vU1}+WajJ*Fb``BZ{+}zxY_wLDkt+IV82O9i{ zum5W*XnUe{X;7w@qfTle~vIhaI09c110`jUp2&!%NtzBuk#yXPRMX>h%sl1k?c z*S(etGo;?TxSU_MPtn#}Ge1Vr`pDL81-h46=4HNq^vEev!NXiSb1myZm6yf2*WG1v z!Yl5aNaj0obkBVGR*TOI;?`e2di3a(s6L~0>({Tm|6cpykxc0W}<{fwFLZI9=zWbvR=-}Y)v%uJySR(`*n$xmsrHfOE;BIZH=4c?(XicrMCQS!@Ak;3xDyu z9QyaqPO#PZ^0z8m)!PS8b!BYg|NqQ<|3c7a^etPrif&r>@LkikU5oEY)SIPjU8eRi zqM+99e97GBatk*9VSl)1MY`}@)|jxjPaa)b$@^&DmJ6bf4o)-lX*bC|KeNz>YsWW_ zY!)5AeeW+<*et8s`)*2`IJ3E@t?KJNK0IHzUVf1HZP8!erIeQNl;!%~+qa{W=Pr4v z|6eY3+Ue9=_wO$++6n4mT*)zWes|DlnUes^tNM&jUP~uMMaMiZiOJTwTf6OivjWG@ zw~v3PpPv^fz_M^_ULe0orDATt*Cig07M*-wyfd#gyGrnICSZ&kx*vciH2| z$&ZbHO6gs1Tf0`b)OY{=lm$0t)JC_=MOI{n-^-EEF9sIckxGf2m9R2{8@~vg%twCzFSYL)r{>b zIN^G%eMR~@pDE!HY)|$cIG3E;!m2v|w3@j>-Q5I(fOUsm(i}VFf0XF8{fO0?x*}-h z3WZA*VRvekJGWi@8l~y->G{hux8$2|PvKk|)LC;s{F-#kg|ol+)_>o9KQ*ZD?Sp+9 z?Y~@E^W{_Wo2uEFSc+f2Uas~1Y_jiz*Q)B3>5}t19~-W3?q@Bs@i_X0>!#E4JKJSn zElp}Tt@}ehFB^1Af%xmo{`RViI%h9RY5~_D^g5O)*-vleNNgpH|OXuJccI$(=nOpRa%USIJUpZmTWW zcy!~6-rYGDHeTI!I6X#Ta^LgH;7Asgl5R$^EgEY$)`&h*>bqZa??lk)jU4Zl?>4DI zmcg}e$&(RiSQ4;j|NixSLF(%2UK-7;GtQUwo#!@jpAR=1oB!)CJg_xCSnx;xEFwd(7u&{vxnE#1Tu|LJm;F^yUBstPwy-2mo%O{bUH--&yEV0r@X=PhiuJqD^$x>EUcB!6o z`-;+#U2{I{%;WOYJ3GbP-2CN}Cn`&Ry4UF3y=5rZ|FXaS&*LlKmuV?l2f&NZq zzx_%J>X%;*JTK4JzGeS@f6z>Oj@ipkpC+{(Rs^j=xVN`@`IAGxfB#;&SNhZ3DKjT) zEnR%?=rQdZ@2*aa*!JsWfs~Dmy8uh@k;I^*+x6Z}eR(E+{q<1m-IJDmc9UvmkhbJb z@k_Y5An#OtisyNcr7nI}U+nES+ggz??}WjNE~kYK^Xq=CR8m-VHEY$*^R4XD3l&>=RhBWt zY^|N^ryeYnI+3v{e;T`4p5FOJD+iDBOnc5puf5iF#EW6x$9I~^*EYHvgo&^H`}oYl z6+Y{<*L=9~;8E=%&*>j4WG0=qIUnqq!tmzu35FA=3oFIy4o~8G`tsDP@4roC_+Eba zFrh>3(Qf4-cW;{dz1dfJAnk-;YKijHeV)A~CEsU!n^k#C#Jg)v&vc*S z>}4!s7f+qZko>vN~xmTXi!{wa9o`N-z& zv$YRi$T6F`)Sib~q2Hk~Oh;_x)vSvZHeu%BNihR^p z{GYgg&%S+O*TuM4RfSJ&75JpIK0N4?)=4Sp>A?6_wS;Ht|`_r2&ONtAxwtt+E z`sZvav%Ge8cJ?aWM?3DOMYg*-#QZcndn0n9=1s+O7LyL{D>dYvpLPGnz1`Pe3kFu4 zxqVA^)0JPpb_F_Ke_68PZl3n)Cl3o&-1#5Sc3Se+g9i7u^FHbGHTI{(0KL6e6p>s4jZJ4K}c?znQKV!XnYZphg z>973}I+yh8f1bXQx-%hI`^*zbiBr0><32WoRn$zlX8Py7iOR&+wHyvJSaUwBa`U!wF9|qk`dIC> zZe{KE+e?df`dq($eU%N1fUXEvNnKr@$Pv)FXfE%cGsW3o{_H#JRN7|AUGD$>M|@lA z%FJ@2Hj{71CxJb08a}NH(9k*Jn0W0$?Tc4Z9fv;z=d5>a z?(>=GxKcIe^Ebn@xqNqj-|(>ZyYu1xrKTYE6N(YxrHXO_T#Ub;{`&PR#PU**Yxz3u z>8C+k?UQmtwM0v0-#vdHq&GdYzJC6;?c1H7dT4`I#m{?wF~g*&tN+aF^i}HaVhe3P z9b5C1XN&X{&3WG^#AF0syXCZS!KBYmVwdmF+#2DYp>h=VMa-(#OS#!P;=q_oRgK6>pmBfT=>l3~ z@twO#Vaki+ESGmZ=yDD8IeYq-*EPpe4-eS9Qa#VJdBx#7x*Hl?C1-dZyjeEgb0xRf z9MwwJf@^c+6?{sc2pjiVYOL837NMvcb8PnOW8$T<=NXs_KAGw5Q0TuObXslUWs{jY z=Qb()`WP3a@#w2rWctbdrTk(`XJQCIS|Pu;nH9q+S^>`znG z?EM|G@4o*&RbXDKj8<&bkD{GEpyh5lQHru9?1r#t5>Jf}+*)V|sv zD5tP)N9g)3Yc{-9%$&d9X)?E3E%uuD*VO#>5WktcK{O{gt2H z=3ZuNZrqgj|7?Dp^X=QWujPEvdm{RMO{R$y==|73fdwo%&Vd~lw{u1%@YOE=DW{rz{> z2?kHlX1Dm7kF7=v%Ma?bd@#?ycj35v{hZ&$a>4}%4%C6p+P#>u;@|Ow$v61|yIZ!f zH090H_pYDfrMmj*(M@~YW6pG&YF1jSnPn~wN zQn7P+@7p*(j=a3QOPkZrhupq@|NiO?yt}G>3O;5`_{%rLgX8>XCzq`{tHV}btbV^Y z{i{-k_qrGNiYK0%xp|XO)RuJj#A&6`f)SPnwsd?xpC~$^berA1x_Qqp%K!i2{_D$S z|Ebe%U0thris#Cfk83wLNqLAHoS9phZdz12`Lj*Gp1!{GM=qQ5-cOvSmMI%>>V3+e zdDrcEkoxbVUt@Q8?m6pw$i*7q;^BQ4YtxJ6yEog-zOzr^ zv1qsJuAMsrJNJ}4z4p5F@lBym@gZRu(SKFMUaqm^SJFIPz*G6aQ#ituFc$EzV(jMtQp^CuMzJ$s&w^r>8_nS6&JlY$$!@Cih_-m)upt;8Pngt-7{~m z)3*n+O&(>R`LxqvW5klQ%_}>^Cx0_M6?&-D_V=gL`Y*q}zV5l&zEy*%yS}Wv-2M6U z=cjx*GN(SZT^rWzwKOP$*_1Qrlkwd@TQc92IL&%nyX5HYzkl~$`t|6Z-*RKo4Raqq zdel@_UcUAI&Li6kdaFAkjAC|vlxX=~>7dm%?dq#^LBa0_UK{aY!w zvt4?-SL|?{_k88yjoo*?O}S;O|HRkFjDSqM-zIt@J)VoFo zzLYyI!jei8RDJH9uP;srd?f57{`=8~4+W>htLE+7ZdH6kbeeRBpuy?q9}8>h>f~-s zXjbU>a@>5Pi2%ow;vb(ksjT-YHH>BNHe6yf&58R|mf7r$TkT^`bQ!ys+WlMhd#6LI zUDdZYl7hZ>#DD#*JJEZKMYggvy-0CNdi3McB2RNW89wJHqIS`W(h2;rTVFm(l>C(< zTJ6cdGw$ZIh$*3=0xZErFS&jyX8FAS7JBcv-siCE&--&_zuD-2@e7Q!ROD806S3cZ zbDkpO&E;3KR&JjAC$79-@7ku89?6qWV`G2n$L$H&6t?_eQbVuj4 z_||8h#-DV~ZY;gO{dR7u<+9Cfk4n2f^Th7`{kKk|TeChqXTlwkd!esY=2zC&+q8 zUzQ{ZYn#n@VwE{#;?KY#8lRPNQ1-YA-&nW{YJ_19fOw_=h$&zyJjZCU7_b$-i}&jh8P zn)XEKx6-*=`<=`lZ0wSAp0?W6=@P@cZkuDOopYwtL_R5>V_G4tv@Jd^Vr#X{hkcG` z48@nIZeWn92>+Yb)@!5Ab$srlM2(yWueY2#;rK6JM{KGO`_DHoUUbCmuk+m-cV1$( zkZrZx}Qsb z>Gi$W-hb`sJcSv#dzARjS9^Tim2>1dSKf@N_qUz9GVA)mZ~t``bgNHYYR#_?Itbfc zzIMq!_R7-I($qc2-3t1TC#POzbzFHjFZ#7^@~4?ChUY)O09|ZlGv#`0TpZ{y#k+Uz zw0M+h+RXBpV3ECb&$RDXlZ#eHuqeoNX7A}2y>u}3Y8)N9ba6(CmzDMn=b)_3EB*3ExQJ&fNQG)A7oCDxc$b-(B|m_wN(` zo+Yz9-{H2{aee&$WeOb2PH4ZBEi5d2D6&b7ujJFdxBr*F2wUMit9X*{wz5`TyKuSM zEgM*_85yto+#`K}{S0Vt#rysL?XJEqef9nKx#r_XmbiaCx#t&8>1@%H8=d}L`1-iQ z#_vh~d!u)XcXUtxaJ1d|f9L5xC8~=%)m~p;9lrj`|GRn9Z@o3+Z9lBZ8-InZwdzsa zfz;kDS7+L9zWg#^ZP;Zlt7Q@qh1XxKuxPD$dz^pEx58g`Lq%pOq^-jImTifTHcmHkjS~0;sCs{x&{BB;jYSzQ*zF4&!Z;W8|ODf-ISMWt^95Db>5> z+VrAzV%@Hv_IRdUIepr@>i0L@QY%?0zV=gEU9(Sr{_YrKzwYH^ssClWeL+RutD{MQ zsmBbr_P(xKQ*7HMy*uD}(GH;}n;ln%EQ(t%-nDp}Q;|wxyYH+dyZjGTU#s>`U|n|Z z>y@W>pH}VWcyGx+QbaQW~(*gMop8!PC{xWt~$(69D@& BVF3UD literal 0 HcmV?d00001 diff --git a/episodes/03-Nova-Galaxy.md b/episodes/03-Nova-Galaxy.md index cba857c5..3d144bcb 100755 --- a/episodes/03-Nova-Galaxy.md +++ b/episodes/03-Nova-Galaxy.md @@ -7,7 +7,7 @@ exercises: 3 # Using NDIP for Backend Computations In this section, we will start using the `nova-galaxy` library to interact with the NDIP platform and run a neutron analysis tool. First, ensure you have set your `GALAXY_URL` and `GALAXY_API_KEY` as environment variables, as explained in the notes at the end of this episode. We also need to add `nova-galaxy` as a project dependency. -Open the `pyproject.toml` file in your project and add `nova-galaxy = "^0.4.0"` under `[tool.poetry.dependencies]`. Then, run `poetry install` to update your project dependencies. +From the command line, type `poetry add nova-galaxy@^0.4.0`. This command will add the nova-galaxy library to the pyproject.toml file as a project dependency. Then run `poetry install` to update your project dependencies. ## Interacting with NDIP via `nova-galaxy` @@ -92,15 +92,35 @@ poetry run app You should see `Fractal tool finished successfully.` printed to the console. +::::::::::::::::::::::::::::::::::::::::: callout +By default, trame will open a new tab in the browser and bring it to focus. If this is undesired behavior, it can be prevented by using ```poetry run app --server```. + +:::::::::::::::::::::::::::::::::::::::::::::::::: + +## Asynchronous tool execution + +At times, it may be desirable to execute a tool or workflow without waiting on the result. The class Tool method run has an optional `wait` parameter. The default is true so that the tool is run in a blocking manner. However, by setting the parameter to false, the tool will be run asynchronously in a non-blocking manner. + ## Next Steps In this section, you learned how to use the `nova-galaxy` library to run a tool on NDIP. In the next sections, we will expand on this to create a full user interface to make this functionality accessible to the end user. -## Exercises +::::::::::::::::::::::::::::::::::::::: challenge +**Run with Different Fractal Types** +Modify the `FractalViewModel` class to default to a different fractal type (e.g., "julia"). Run the application again and verify that it still works. +::::::::::::::: solution +The simplest way to accomplish this is to change the default for fractal type in the Fractal class. You can easily observe the change in galaxy. +::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::: + +::::::::::::::::::::::::::::::::::::::: challenge +**Introduce an Error** +Introduce an error into the code by changing the tool id to something different. What ouput do you see? What if you change the fractal_type to an invalid option such as mandel instead of mandelbrot? +::::::::::::::: solution +In both cases, an error is received from the ndip-galaxy library. When changing the tool id, a `Tool not found` error will be returned. When selecting an invalid parameter, a `parameter 'option': an invalid option was selected` error will be returned. +::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::: -1. **Run with Different Fractal Types:** Modify the `FractalViewModel` class to default to a different fractal type (e.g., "julia"). Run the application again and verify that it still works. -2. **Introduce an Error:** Comment out the line `params.add_input(name="fractal_type", value=self.fractal_type)` in the `run_fractal_tool` method. Run the application. What output do you see? Why do you think this error occurred? (Hint: Consider what input the `neutrons_fractal` tool expects.) -3. **Explore `nova-galaxy` Documentation:** Open the `nova-galaxy` library source code that was provided earlier. Look at the `Nova` class and the `Tool` class. Identify at least two other methods available in these classes and briefly describe what they do based on their names and docstrings. ## References diff --git a/episodes/08-Next-Steps.md b/episodes/08-Next-Steps.md index 5abac34c..9c81952a 100755 --- a/episodes/08-Next-Steps.md +++ b/episodes/08-Next-Steps.md @@ -27,6 +27,10 @@ To containerize your application, you would: After the docker container is deployed to a registry, it can then be used by the platform. +::::::::::::::::::::::::::::::::::::::::: callout +GPU acceleration in a container is possible but beyond the scope of this tutorial. Typically, a base container is chosen which already has all of the gpu dependencies installed such as ```regproxy.ornl.gov/hub_proxy/kitware/trame:py3.10-glvnd-2024-12```. The team has built similar containers already which can be used as a reference for development such as ```https://code.ornl.gov/ndip/trame-apps/ct-scan-visualizer/``` +:::::::::::::::::::::::::::::::::::::::::::::::::: + ## Defining Your Tool with XML Once your application is containerized, you will also need to define your tool using an XML file. This XML file describes your tool to the NDIP platform, including its inputs, outputs, parameters, and the Docker container image that should be used to run the tool. The NDIP platform makes use of the Galaxy tool framework. -- GitLab From b9023af3640a279ad10d7fa9625bd54f1c1a1d72 Mon Sep 17 00:00:00 2001 From: "Ayres, Andrew" Date: Thu, 6 Feb 2025 00:25:58 -0600 Subject: [PATCH 3/9] fix apostrophes --- episodes/01-Introduction.md | 8 +++---- episodes/02-Copy-Template.md | 10 ++++---- episodes/03-Nova-Galaxy.md | 10 ++++---- episodes/04-MVVM-Deisgn-Pattern.md | 32 +++++++++++++------------- episodes/05-Working-with-Trame.md | 22 +++++++++--------- episodes/06-Advanced-Data-Modeling.md | 18 +++++++-------- episodes/07-Advanced-Visualizations.md | 14 +++++------ episodes/08-Next-Steps.md | 4 ++-- 8 files changed, 60 insertions(+), 58 deletions(-) diff --git a/episodes/01-Introduction.md b/episodes/01-Introduction.md index 0705b56f..0706de92 100755 --- a/episodes/01-Introduction.md +++ b/episodes/01-Introduction.md @@ -16,7 +16,7 @@ The Neutron Data Interpretation Platform (NDIP) is a workflow management system NOVA is a framework that aims to simplify the development of applications that interact with NDIP. It consists of three core libraries: -* **`nova-galaxy`**: This library simplifies interaction with the NDIP platform's APIs. It allows developers to easily connect to NDIP, **submit jobs, handle parameters, and monitor job progress.** +* **`nova-galaxy`**: This library simplifies interaction with the NDIP platform\'s APIs. It allows developers to easily connect to NDIP, **submit jobs, handle parameters, and monitor job progress.** * **`nova-trame`**: This library facilitates the creation of interactive user interfaces using Trame. Trame is a powerful Python framework for building web-based UIs and visualizations. `nova-trame` provides a consistent look and feel for NOVA applications by simplifying interactions with Trame components (such as Vuetify). @@ -50,13 +50,13 @@ In this tutorial, you will learn how to use these three core NOVA libraries to b * Submit jobs to NDIP. * Monitor the progress of your submitted jobs. -We'll be using example tools from neutron scattering as a demonstration for this tutorial, however, the lessons learned here can be applied to a wide variety of neutron analysis applications. This hands-on tutorial will guide you through each step of the process, empowering you to build your own interactive tools for neutron data analysis and management. +We\'ll be using example tools from neutron scattering as a demonstration for this tutorial, however, the lessons learned here can be applied to a wide variety of neutron analysis applications. This hands-on tutorial will guide you through each step of the process, empowering you to build your own interactive tools for neutron data analysis and management. ## Code Examples Directory All of the code examples used in this tutorial are available in the `code` directory of the tutorial repository. These examples are built upon the template application that you will clone in the next episode. The code is organized by episode, with each episode having its own subdirectory (e.g., `code/episode_2`, `code/episode_3`, etc.). -Each episode's subdirectory contains a complete, self-contained Python project that can be run independently using Poetry. This allows you to easily explore the code examples, run them, and modify them as you go through the tutorial. +Each episode\'s subdirectory contains a complete, self-contained Python project that can be run independently using Poetry. This allows you to easily explore the code examples, run them, and modify them as you go through the tutorial. ::::::::::::::::::::::::::::::::::::::::: callout @@ -64,7 +64,7 @@ Poetry is a tool for dependency management and packaging in Python. It allows yo :::::::::::::::::::::::::::::::::::::::::::::::::: -To run the code for a specific episode, navigate to the episode's directory in your terminal and use the following commands: +To run the code for a specific episode, navigate to the episode\'s directory in your terminal and use the following commands: ```bash cd code/episode_X # Replace X with the episode number diff --git a/episodes/02-Copy-Template.md b/episodes/02-Copy-Template.md index 644c8275..19ce88f2 100755 --- a/episodes/02-Copy-Template.md +++ b/episodes/02-Copy-Template.md @@ -9,7 +9,7 @@ exercises: 3 As mentioned in the introduction, all code examples in this tutorial are based on a template application. In this episode, we will create this starting point by cloning a template using the `copier` library. This template provides a basic project structure and pre-configured files that will help us get started quickly with our NOVA project, saving us from setting up everything from scratch. ::::::::::::::::::::::::::::::::::::::::: callout -The setup section detailed the prerequisites required for the tutorial. One of those prerequisites is copier which will be used to clone a template application. If you've not already insalled copier and other dependencies, please follow the instructions in the "Setup" section. +The setup section detailed the prerequisites required for the tutorial. One of those prerequisites is copier which will be used to clone a template application. If you\'ve not already insalled copier and other dependencies, please follow the instructions in the "Setup" section. :::::::::::::::::::::::::::::::::::::::::::::::::: @@ -65,10 +65,10 @@ The template creates a basic project structure to help get you started quickly. * `nova_tutorial/`: The root directory of your project * `nova_tutorial/src/`: Contains your application code * `nova_tutorial/src/nova_tutorial/`: The name of your python package -* `nova_tutorial/tests/`: Contains your application's unit tests. +* `nova_tutorial/tests/`: Contains your application\'s unit tests. * `nova_tutorial/README.md`: A readme file. -**Note:** The code provided in the `code/episode_2` directory represents a simplified version of the template output, focused on the essential files for this tutorial. The full template, as generated by `copier`, includes additional configuration files (like Dockerfiles and CI setup) that are not strictly necessary for following the tutorial's core concepts. +**Note:** The code provided in the `code/episode_2` directory represents a simplified version of the template output, focused on the essential files for this tutorial. The full template, as generated by `copier`, includes additional configuration files (like Dockerfiles and CI setup) that are not strictly necessary for following the tutorial\'s core concepts. In the following sections, we will start adding code to this structure to build our NDIP job submission tool. @@ -103,7 +103,7 @@ The template includes pre-commit hooks for code formatting and linting. * `isort`: Sorts Python imports alphabetically and separates them into sections. * `end-of-file-fixer`: Ensures that files end with a newline. * `trailing-whitespace-fixer`: Removes trailing whitespace from lines. - * **Observe how the pre-commit hooks automatically fix the formatting issues:** When you run `pre-commit run`, the configured tools will automatically modify the files to correct formatting errors. The output will show which tools were run and which files were modified. You'll need to `git add` the modified files before committing. + * **Observe how the pre-commit hooks automatically fix the formatting issues:** When you run `pre-commit run`, the configured tools will automatically modify the files to correct formatting errors. The output will show which tools were run and which files were modified. You\'ll need to `git add` the modified files before committing. ::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: @@ -112,7 +112,7 @@ The template includes pre-commit hooks for code formatting and linting. ## **CI/CD Setup with GitLab CI** -The template includes a basic GitLab CI configuration file (`.gitlab-ci.yml`). While we won't fully execute a CI/CD pipeline in this tutorial step, let's understand its purpose. +The template includes a basic GitLab CI configuration file (`.gitlab-ci.yml`). While we won\'t fully execute a CI/CD pipeline in this tutorial step, let\'s understand its purpose. * **Examine the Configuration:** Open the `.gitlab-ci.yml` file. This file defines the *pipeline*. What are the key stages defined in the pipeline (e.g., build, test, deploy)? Identify the jobs that install dependencies, run tests, and perform linting. What triggers the pipeline to run (e.g., pushes, merge requests)? * **GitLab Runner:** GitLab CI/CD uses *runners* to execute the jobs defined in your `.gitlab-ci.yml` file. These runners can be configured in various ways. (No action required; this is just an informational point.) * **Discussion:** If you were to push this project to a GitLab repository, what would happen when you create a merge request? How could you use CI/CD to automatically verify the code quality of your project? (No action required; this is a thought exercise.) diff --git a/episodes/03-Nova-Galaxy.md b/episodes/03-Nova-Galaxy.md index 3d144bcb..28078eb1 100755 --- a/episodes/03-Nova-Galaxy.md +++ b/episodes/03-Nova-Galaxy.md @@ -24,11 +24,11 @@ The basic workflow for running a tool with `nova-galaxy` involves these steps: 1. **Connect to NDIP**: Create a `Nova` instance with your credentials. 2. **Define the Tool**: Create a `Tool` instance, specifying the ID of the NDIP tool you want to run. 3. **Set Parameters**: Create a `Parameters` instance and add the necessary input parameters and their values for the tool. -4. **Run the Tool**: Use the `tool.run()` method to submit the job to NDIP. This typically involves creating a datastore to hold the job's input and output data. +4. **Run the Tool**: Use the `tool.run()` method to submit the job to NDIP. This typically involves creating a datastore to hold the job\'s input and output data. ## Creating a Model of a Tool -Let's create a `Fractal` class that uses `nova-galaxy` to run the `neutrons_fractal` tool on NDIP. You can find the complete code for this episode in the `code/episode_3` directory. Here, we will focus on the key code snippets and explain the important parts. +Let\'s create a `Fractal` class that uses `nova-galaxy` to run the `neutrons_fractal` tool on NDIP. You can find the complete code for this episode in the `code/episode_3` directory. Here, we will focus on the key code snippets and explain the important parts. **1. `Fractal` Class (`src/nova_tutorial/models/fractal.py`):** @@ -48,7 +48,7 @@ Let's create a `Fractal` class that uses `nova-galaxy` to run the `neutrons_frac self.galaxy_key = os.getenv("GALAXY_API_KEY") ``` -* **`run_fractal_tool` method**: This method encapsulates the logic for running the `fractal` tool. Let's examine the key steps within this method: +* **`run_fractal_tool` method**: This method encapsulates the logic for running the `fractal` tool. Let\'s examine the key steps within this method: * **Instantiate `Nova`, `Tool`, and `Parameters`**: We create instances of the `Nova`, `Tool`, and `Parameters` classes: ```python @@ -58,7 +58,7 @@ Let's create a `Fractal` class that uses `nova-galaxy` to run the `neutrons_frac params.add_input(name="fractal_type", value=self.fractal_type) ``` - Note that we create a `Tool` object with the `id="neutrons_fractal"`. This tells `nova-galaxy` which NDIP tool we want to run. The obvious question at this point is how do we know the id of the tool and what parameters it expects? We can look at the tool's launch page in calvera for some hints but ultimately we have to look at the tool's [xml file](https://code.ornl.gov/ndip/galaxy-tools/-/blob/dev/tools/neutrons/test_tools/fractal.xml?ref_type=heads). + Note that we create a `Tool` object with the `id="neutrons_fractal"`. This tells `nova-galaxy` which NDIP tool we want to run. The obvious question at this point is how do we know the id of the tool and what parameters it expects? We can look at the tool\'s launch page in calvera for some hints but ultimately we have to look at the tool\'s [xml file](https://code.ornl.gov/ndip/galaxy-tools/-/blob/dev/tools/neutrons/test_tools/fractal.xml?ref_type=heads). * **Connect and Run the Tool**: The `with nova.connect() as galaxy_connection:` block establishes a connection to NDIP and ensures proper handling of the connection: ```python @@ -108,6 +108,7 @@ In this section, you learned how to use the `nova-galaxy` library to run a tool ::::::::::::::::::::::::::::::::::::::: challenge **Run with Different Fractal Types** Modify the `FractalViewModel` class to default to a different fractal type (e.g., "julia"). Run the application again and verify that it still works. + ::::::::::::::: solution The simplest way to accomplish this is to change the default for fractal type in the Fractal class. You can easily observe the change in galaxy. ::::::::::::::::::::::::: @@ -116,6 +117,7 @@ The simplest way to accomplish this is to change the default for fractal type in ::::::::::::::::::::::::::::::::::::::: challenge **Introduce an Error** Introduce an error into the code by changing the tool id to something different. What ouput do you see? What if you change the fractal_type to an invalid option such as mandel instead of mandelbrot? + ::::::::::::::: solution In both cases, an error is received from the ndip-galaxy library. When changing the tool id, a `Tool not found` error will be returned. When selecting an invalid parameter, a `parameter 'option': an invalid option was selected` error will be returned. ::::::::::::::::::::::::: diff --git a/episodes/04-MVVM-Deisgn-Pattern.md b/episodes/04-MVVM-Deisgn-Pattern.md index fc3ba93b..8bb18e76 100755 --- a/episodes/04-MVVM-Deisgn-Pattern.md +++ b/episodes/04-MVVM-Deisgn-Pattern.md @@ -6,11 +6,11 @@ exercises: 0 # 4. User Interface Best Practices: The MVVM Design Pattern -In this section, we will introduce the Model-View-ViewModel (MVVM) design pattern, a powerful architectural approach for structuring applications, particularly those with user interfaces. We'll explore the core principles of MVVM, the roles of each component, and how the NOVA framework simplifies its implementation, making your code more organized, testable, and maintainable. +In this section, we will introduce the Model-View-ViewModel (MVVM) design pattern, a powerful architectural approach for structuring applications, particularly those with user interfaces. We\'ll explore the core principles of MVVM, the roles of each component, and how the NOVA framework simplifies its implementation, making your code more organized, testable, and maintainable. ## What is a Design Pattern? -Before diving into MVVM, it's helpful to understand what a *design pattern* is in software development. A design pattern is a reusable solution to a commonly occurring problem in software design. It's not a code snippet you can copy and paste, but rather a template or blueprint for how to structure your code to achieve a specific goal (e.g., separation of concerns, code reusability, testability). +Before diving into MVVM, it\'s helpful to understand what a *design pattern* is in software development. A design pattern is a reusable solution to a commonly occurring problem in software design. It\'s not a code snippet you can copy and paste, but rather a template or blueprint for how to structure your code to achieve a specific goal (e.g., separation of concerns, code reusability, testability). ## The Model-View-ViewModel (MVVM) Pattern @@ -18,32 +18,32 @@ MVVM is an architectural design pattern specifically designed for applications w The MVVM pattern consists of three core components: -* **Model:** The Model represents the *data* and the *business logic* of the application. It's responsible for: +* **Model:** The Model represents the *data* and the *business logic* of the application. It\'s responsible for: * Data storage (e.g., reading from and writing to a database, a file, or an API). * Data validation (ensuring the data is in a valid state). * Business rules (the logic that governs how the data is manipulated and used). - The Model is *agnostic* to the UI. It doesn't know anything about how the data will be displayed or how the user will interact with it. It simply provides the data and the means to manipulate it. + The Model is *agnostic* to the UI. It doesn\'t know anything about how the data will be displayed or how the user will interact with it. It simply provides the data and the means to manipulate it. *In the context of our NOVA tutorial, the Model will often include the logic for interacting with the NDIP platform via `nova-galaxy`.* -* **View:** The View is the *user interface* (UI) of the application. It's responsible for: +* **View:** The View is the *user interface* (UI) of the application. It\'s responsible for: * Displaying data to the user. * Capturing user input (e.g., button clicks, text entered in a field, selections from a dropdown). - * Presenting the application's visual appearance. + * Presenting the application\'s visual appearance. - The View is *passive*. It doesn't contain any business logic or data manipulation code. It simply displays the data provided to it and relays user actions to the ViewModel. + The View is *passive*. It doesn\'t contain any business logic or data manipulation code. It simply displays the data provided to it and relays user actions to the ViewModel. *In our NOVA tutorial, the View will be built using Trame and Vuetify components, leveraging the styling and structure provided by `nova-trame`.* -* **ViewModel:** The ViewModel acts as an *intermediary* between the Model and the View. It's responsible for: +* **ViewModel:** The ViewModel acts as an *intermediary* between the Model and the View. It\'s responsible for: * Preparing data from the Model for display in the View. This might involve formatting the data, combining data from multiple sources, or creating derived data. * Handling user actions from the View. This might involve validating user input, updating the Model, or triggering other actions in the application. * Exposing data and commands to the View through *data binding*. - The ViewModel is *UI-specific*. It knows about the View and the data that the View needs, but it doesn't know about the specific UI elements that are used to display the data. It also orchestrates the interaction between the View and the Model. + The ViewModel is *UI-specific*. It knows about the View and the data that the View needs, but it doesn\'t know about the specific UI elements that are used to display the data. It also orchestrates the interaction between the View and the Model. - *The ViewModel is where we'll use `nova-mvvm` to create bindings between the ViewModel and the View, enabling the reactive updates.* + *The ViewModel is where we\'ll use `nova-mvvm` to create bindings between the ViewModel and the View, enabling the reactive updates.* ## Why Use MVVM? (Benefits) @@ -53,7 +53,7 @@ The MVVM pattern provides several benefits: * **Testability:** Because the ViewModel is independent of the View, it can be easily unit-tested. You can test the presentation logic without needing to create a UI. * **Maintainability:** Changes to the UI are less likely to affect the underlying application logic, and vice versa. This makes the application easier to maintain and evolve over time. * **Reusability:** The ViewModel can be reused with different Views, allowing you to create different UIs for the same underlying data and logic. -* **Team Collaboration:** MVVM facilitates collaboration between developers and UI designers. Developers can focus on the Model and ViewModel, while designers can focus on the View, without interfering with each other's work. +* **Team Collaboration:** MVVM facilitates collaboration between developers and UI designers. Developers can focus on the Model and ViewModel, while designers can focus on the View, without interfering with each other\'s work. ## Data Binding: The Heart of MVVM @@ -82,7 +82,7 @@ Benefits of Pydantic: ## Implementing MVVM with `nova-mvvm` and Pydantic - Key Code Snippets -Let's see how to implement the MVVM pattern using `nova-mvvm` and incorporate Pydantic for data validation in our `FractalViewModel`. You can find the complete code for this episode in the `code/episode_4` directory. Here, we will focus on the key code snippets and explain the important parts. +Let\'s see how to implement the MVVM pattern using `nova-mvvm` and incorporate Pydantic for data validation in our `FractalViewModel`. You can find the complete code for this episode in the `code/episode_4` directory. Here, we will focus on the key code snippets and explain the important parts. **1. `FractalToolInput` Pydantic Model (`src/nova_tutorial/view_models/fractal_view_model.py`):** @@ -95,7 +95,7 @@ Let's see how to implement the MVVM pattern using `nova-mvvm` and incorporate Py class FractalToolInput(BaseModel): fractal_type: Literal["mandelbrot", "julia", "random", "markus"] ``` - By defining `fractal_type` with `Literal[...]`, we ensure that only the specified string values are accepted, leveraging Pydantic's data validation capabilities. + By defining `fractal_type` with `Literal[...]`, we ensure that only the specified string values are accepted, leveraging Pydantic\'s data validation capabilities. **2. `FractalViewModel` Class (`src/nova_tutorial/view_models/fractal_view_model.py`):** @@ -146,9 +146,9 @@ Let's see how to implement the MVVM pattern using `nova-mvvm` and incorporate Py self._fractal_type = fractal_type self.fractal_type_bind.update_in_view(self._fractal_type) # Update fractal_type state ``` - Here, `FractalToolInput(fractal_type=fractal_type)` attempts to create an instance of the Pydantic model, which triggers validation. If `fractal_type` is invalid, a `ValidationError` is caught, and the error message is set in the ViewModel's `_message` state, which, thanks to binding, *will later* update the UI. + Here, `FractalToolInput(fractal_type=fractal_type)` attempts to create an instance of the Pydantic model, which triggers validation. If `fractal_type` is invalid, a `ValidationError` is caught, and the error message is set in the ViewModel\'s `_message` state, which, thanks to binding, *will later* update the UI. -* **`run_fractal_tool` method**: In `run_fractal_tool`, we now also use the `message_bind` and `run_button_disabled_bind` to update the UI state (even though we don't have a UI yet, this demonstrates good MVVM practice): +* **`run_fractal_tool` method**: In `run_fractal_tool`, we now also use the `message_bind` and `run_button_disabled_bind` to update the UI state (even though we don\'t have a UI yet, this demonstrates good MVVM practice): ```python def run_fractal_tool(self): @@ -162,7 +162,7 @@ Let's see how to implement the MVVM pattern using `nova-mvvm` and incorporate Py raise e self._job_status["fractal"] = "Completed" ``` - Even without a View, we are already considering what the functionality that we'll need to support. We've already created the bindings to server as our communicators between our future view and our new view model. + Even without a View, we are already considering what the functionality that we\'ll need to support. We\'ve already created the bindings to server as our communicators between our future view and our new view model. **2. `main.py` - Wiring up TrameBinding (`src/nova_tutorial/main.py`):** diff --git a/episodes/05-Working-with-Trame.md b/episodes/05-Working-with-Trame.md index f4494e09..3693ed65 100755 --- a/episodes/05-Working-with-Trame.md +++ b/episodes/05-Working-with-Trame.md @@ -6,16 +6,16 @@ exercises: 3 # 5. Web-based User Interface Development with Trame -In this section, we will dive into Trame and the `nova-trame` library to build interactive web-based user interfaces for our NOVA applications. We'll explore how `nova-trame` simplifies UI development within the NOVA ecosystem and how to use common layout components. +In this section, we will dive into Trame and the `nova-trame` library to build interactive web-based user interfaces for our NOVA applications. We\'ll explore how `nova-trame` simplifies UI development within the NOVA ecosystem and how to use common layout components. ## Introduction to Trame -Trame is a powerful Python framework for building interactive web applications and visualizations. It lets you create UIs declaratively using Python, eliminating the need for complex JavaScript and front-end web development. Trame handles the complexities of creating a dynamic web application, allowing you to focus on your application's logic. +Trame is a powerful Python framework for building interactive web applications and visualizations. It lets you create UIs declaratively using Python, eliminating the need for complex JavaScript and front-end web development. Trame handles the complexities of creating a dynamic web application, allowing you to focus on your application\'s logic. Key Features and Benefits of Trame: * **Declarative UI:** Define your user interfaces using Python code. You describe *what* the UI should be, not *how* to implement it using web technologies. This significantly simplifies UI development. -* **Interactive Applications:** Create dynamic UIs with real-time updates using Trame's data binding capabilities. Changes in your ViewModel automatically reflect in the UI, and user interactions in the UI can update the ViewModel. +* **Interactive Applications:** Create dynamic UIs with real-time updates using Trame\'s data binding capabilities. Changes in your ViewModel automatically reflect in the UI, and user interactions in the UI can update the ViewModel. * **Web-Based and Accessible:** Trame applications are standard web applications, accessible from any modern web browser. This makes them easy to deploy and share with colleagues and users. * **Extensible and Rich UI Components:** Trame leverages libraries like Vuetify, providing a wide range of pre-built, visually appealing, and interactive UI components. Vuetify follows the Material Design specification, ensuring a modern and consistent look and feel. * **Python-Centric Development:** Build complex web applications and perform computations using Python, without needing extensive front-end web development knowledge. This allows you to leverage your existing Python skills. @@ -41,15 +41,15 @@ Benefits of using `nova-trame`: * **`VBoxLayout`:** Creates an element that vertically stacks its children. Use `VBoxLayout` to arrange UI elements in a vertical column. * **`HBoxLayout`:** Creates an element that horizontally stacks its children. Use `HBoxLayout` to arrange UI elements in a horizontal row. -Let's explore these components in more detail: +Let\'s explore these components in more detail: ### `InputField` The `InputField` component simplifies creating different types of input fields in your UI. It can create text fields, dropdowns (select), checkboxes, and more, all with a consistent look and feel. A key advantage of `InputField` is its automatic integration with Pydantic models. If the `v_model` references a Pydantic model field, `InputField` can automatically: -* **Load the label:** Use the `title` attribute from the Pydantic field as the input field's label. +* **Load the label:** Use the `title` attribute from the Pydantic field as the input field\'s label. * **Display a hint:** Use the `description` attribute from the Pydantic field as a help text or hint for the input field. -* **Apply validation rules:** Automatically generate validation rules based on the Pydantic field's type and constraints. +* **Apply validation rules:** Automatically generate validation rules based on the Pydantic field\'s type and constraints. This integration significantly reduces the amount of boilerplate code you need to write for input fields. @@ -105,11 +105,11 @@ By combining these layout components, you can create complex and responsive UI l ## Adding More UI Components to the Sample Tabs -Now, let's add some UI components to the Sample Tabs in our application to demonstrate how to use these components. We'll modify the `sample_tab_1.py` and `sample_tab_2.py` files to include these components. +Now, let\'s add some UI components to the Sample Tabs in our application to demonstrate how to use these components. We\'ll modify the `sample_tab_1.py` and `sample_tab_2.py` files to include these components. **1. `nova_tutorial/views/sample_tab_1.py` (Modify):** -We'll add an `InputField` and a `VBoxLayout` to this tab. +We\'ll add an `InputField` and a `VBoxLayout` to this tab. ```python """Module for the Sample Tab 1.""" @@ -132,7 +132,7 @@ class SampleTab1: **2. `nova_tutorial/views/sample_tab_2.py` (Modify):** -We'll add a `GridLayout` and an `InputField` to this tab. +We\'ll add a `GridLayout` and an `InputField` to this tab. ```python """Module for the Sample Tab 2.""" @@ -153,7 +153,7 @@ class SampleTab2: vuetify.VSlider(label="Volume") ``` -In `SampleTab1`, we've used a `VBoxLayout` to vertically stack the `InputField` and `VCheckbox` components. In `SampleTab2`, we've used a `GridLayout` to arrange the `InputField` and `VSlider` components in a two-column grid. +In `SampleTab1`, we\'ve used a `VBoxLayout` to vertically stack the `InputField` and `VCheckbox` components. In `SampleTab2`, we\'ve used a `GridLayout` to arrange the `InputField` and `VSlider` components in a two-column grid. ## Running the application @@ -169,7 +169,7 @@ You should now see the simple UI. When you click the "Sample Tab 1" and "Sample 1. **Explore the `InputField` Component:** Modify the `InputField` component in `SampleTab1` to automatically retrieve the label, hint, and validation rules from a Pydantic model field. Create a simple Pydantic model with a `username` field with a `title`, `description`, and `min_length` constraint. 2. **Create a Complex Layout:** Combine `GridLayout`, `VBoxLayout`, and `HBoxLayout` components to create a more complex UI layout in `SampleTab2`. Try creating a layout with a header, a sidebar, and a main content area. -3. **Customize Component Appearance:** Experiment with customizing the appearance of the Vuetify components using the various props and styles available. Try changing the color, size, font, and other visual attributes of the components. Refer to Vuetify's component documentation for details. +3. **Customize Component Appearance:** Experiment with customizing the appearance of the Vuetify components using the various props and styles available. Try changing the color, size, font, and other visual attributes of the components. Refer to Vuetify\'s component documentation for details. ## References diff --git a/episodes/06-Advanced-Data-Modeling.md b/episodes/06-Advanced-Data-Modeling.md index 7b71d1ae..8774d759 100755 --- a/episodes/06-Advanced-Data-Modeling.md +++ b/episodes/06-Advanced-Data-Modeling.md @@ -6,11 +6,11 @@ exercises: 0 # 6. Data Validation with Pydantic: Ensuring Data Integrity -In this section, we will explore Pydantic, a powerful Python library for data validation and settings management. We'll delve into the benefits of data validation, how Pydantic works, and best practices for using it effectively within the NOVA framework and the MVVM architecture. +In this section, we will explore Pydantic, a powerful Python library for data validation and settings management. We\'ll delve into the benefits of data validation, how Pydantic works, and best practices for using it effectively within the NOVA framework and the MVVM architecture. ## Why Data Validation Matters -Data validation is the process of ensuring that data meets certain criteria before it's processed by your application. It's a crucial step in building robust and reliable software. Without proper data validation, your application could be vulnerable to: +Data validation is the process of ensuring that data meets certain criteria before it\'s processed by your application. It\'s a crucial step in building robust and reliable software. Without proper data validation, your application could be vulnerable to: * **Unexpected Errors:** Invalid data can cause your application to crash or produce incorrect results. * **Security Vulnerabilities:** Malicious users can exploit the lack of data validation to inject harmful data into your application, leading to security breaches. @@ -39,7 +39,7 @@ Key Features of Pydantic: Pydantic uses Python type hints to define data models. When you create an instance of a Pydantic model, Pydantic automatically validates the input data against the defined types and constraints. -Here's a simple example: +Here\'s a simple example: ```python from pydantic import BaseModel, Field @@ -73,9 +73,9 @@ In the MVVM architecture, the question arises: where should data validation be p * **ViewModel Validation:** Validating data in the ViewModel allows you to perform UI-specific validation, such as checking that a required field is not empty or that a value falls within a certain range. ViewModel validation is also useful for providing immediate feedback to the user about validation errors. -In general, it's a good practice to perform both Model and ViewModel validation. Model validation ensures data integrity at the data level, while ViewModel validation provides a better user experience by providing immediate feedback and preventing invalid data from being passed to the Model. Pydantic supports both. +In general, it\'s a good practice to perform both Model and ViewModel validation. Model validation ensures data integrity at the data level, while ViewModel validation provides a better user experience by providing immediate feedback and preventing invalid data from being passed to the Model. Pydantic supports both. -In the context of our NOVA tutorial, here's how we can apply this: +In the context of our NOVA tutorial, here\'s how we can apply this: * **NDIP Interactions (Model):** When using `nova-galaxy` to interact with NDIP, validate the data being sent to NDIP in the Model to ensure it conforms to the NDIP API requirements. @@ -83,9 +83,9 @@ In the context of our NOVA tutorial, here's how we can apply this: ## Pydantic and `nova-trame` Input Validation -One of the great features of `nova-trame` is that it leverages the validation attributes of Pydantic models to automatically create validation routines for Vuetify UI elements. Let's walk through what that looks like in code. +One of the great features of `nova-trame` is that it leverages the validation attributes of Pydantic models to automatically create validation routines for Vuetify UI elements. Let\'s walk through what that looks like in code. -First, let's assume you have the following model: +First, let\'s assume you have the following model: ```python from pydantic import BaseModel, Field @@ -102,8 +102,8 @@ from nova.trame.view.components import InputField InputField(v_model="settings.port") ``` -Notice how you don't need to pass any attributes to `InputField` other than `v_model`. The `InputField` automatically retrieves the `title` and attempts to retrieve other information. +Notice how you don\'t need to pass any attributes to `InputField` other than `v_model`. The `InputField` automatically retrieves the `title` and attempts to retrieve other information. The InputField performs automatic validation for this field. If you enter an invalid port number into the InputField, the InputField will change state to invalid and the label will turn red. -In that fashion, the `InputField` seamlessly pulls information from your code's data model and displays errors to the user. \ No newline at end of file +In that fashion, the `InputField` seamlessly pulls information from your code\'s data model and displays errors to the user. \ No newline at end of file diff --git a/episodes/07-Advanced-Visualizations.md b/episodes/07-Advanced-Visualizations.md index a3fa26d1..350700ef 100755 --- a/episodes/07-Advanced-Visualizations.md +++ b/episodes/07-Advanced-Visualizations.md @@ -111,7 +111,7 @@ As with our previous examples, there is a corresponding model. return self.plot_type != "heatmap" ``` -* **Plotly Figure Setup**: Finally, we define the Plotly figure based on the user's selection. go.Heatmap and go.Scatter define Plotly `traces`, which represent individual components of the figure. +* **Plotly Figure Setup**: Finally, we define the Plotly figure based on the user\'s selection. go.Heatmap and go.Scatter define Plotly `traces`, which represent individual components of the figure. ```python def get_figure(self) -> go.Figure: @@ -137,7 +137,7 @@ As with our other examples, the view model connects these two classes together. ## PyVista (3D) -One of Trame's core features is that it has direct integration with VTK for building 3D visualizations. Learning VTK from scratch is non-trivial, however, so we recommend that you work with PyVista. PyVista serves as a more developer-friendly wrapper around VTK, allowing you to build your visualizations with a simpler, more intuitive API. To get started, you will need to install the Python package. +One of Trame\'s core features is that it has direct integration with VTK for building 3D visualizations. Learning VTK from scratch is non-trivial, however, so we recommend that you work with PyVista. PyVista serves as a more developer-friendly wrapper around VTK, allowing you to build your visualizations with a simpler, more intuitive API. To get started, you will need to install the Python package. ```bash poetry add pyvista trame-vtk @@ -165,7 +165,7 @@ Now we can set up our view. from nova_tutorial.view_models.visualization import VisualizationViewModel ``` -* **Class Definition:** The `Plotter` object is PyVista's main entry point. It will allow you to add meshes and volumes with the properties you've specified. +* **Class Definition:** The `Plotter` object is PyVista\'s main entry point. It will allow you to add meshes and volumes with the properties you\'ve specified. ```python class PyVistaView: @@ -207,7 +207,7 @@ Now we can set up our view. **4. `PyVistaConfig` Model Class (`src/nova_tutorial/models/pyvista.py`):** -* **Imports:** `download_knee_full` yields a 3D dataset that is suitable for volume rendering. You can find more datasets in PyVista's [Dataset Gallery](https://docs.pyvista.org/api/examples/dataset_gallery). +* **Imports:** `download_knee_full` yields a 3D dataset that is suitable for volume rendering. You can find more datasets in PyVista\'s [Dataset Gallery](https://docs.pyvista.org/api/examples/dataset_gallery). ```python """Configuration for the PyVista example.""" @@ -251,7 +251,7 @@ If you have prior experience with VTK then you may prefer to work with it direct poetry add trame-vtk vtk ``` -Since we've seen plenty of examples of UI controls at this point, we've omitted them for this example so that we can focus on the VTK boilerplate needed to get started. +Since we\'ve seen plenty of examples of UI controls at this point, we've omitted them for this example so that we can focus on the VTK boilerplate needed to get started. **5. `VTKView` View Class (`src/nova_tutorial/views/vtk.py`):** @@ -364,9 +364,9 @@ Since we've seen plenty of examples of UI controls at this point, we've omitted ## Exercises -1. **Plotly Box Plot:** Add a box plot to the available plot types. Hint: you shouldn't need to change anything in the view class to do this. +1. **Plotly Box Plot:** Add a box plot to the available plot types. Hint: you shouldn\'t need to change anything in the view class to do this. 2. **PyVista clim Control:** Add control(s) to the UI to control the `clim` argument for the `add_volume` method. -3. **Investigate the lookup table and piecewise function:** We didn't look at `VTKConfig.init_lut` or `VTKConfig.init_pwf` during the tutorial. Read through these methods and then trys manipulating the opacity of the rendering. +3. **Investigate the lookup table and piecewise function:** We didn\'t look at `VTKConfig.init_lut` or `VTKConfig.init_pwf` during the tutorial. Read through these methods and then trys manipulating the opacity of the rendering. ## References diff --git a/episodes/08-Next-Steps.md b/episodes/08-Next-Steps.md index 9c81952a..6472c7ce 100755 --- a/episodes/08-Next-Steps.md +++ b/episodes/08-Next-Steps.md @@ -5,7 +5,7 @@ exercises: 0 --- # Next Steps -In this section, we will outline the process for taking an application like the one we've created in this tutorial and deploying it to the NOVA/NDIP platform. While we won't actually perform the deployment in this tutorial, we will cover the key steps and resources involved. +In this section, we will outline the process for taking an application like the one we\'ve created in this tutorial and deploying it to the NOVA/NDIP platform. While we won\'t actually perform the deployment in this tutorial, we will cover the key steps and resources involved. ## Containerizing Your Application @@ -13,7 +13,7 @@ The first step in deploying your application to the NOVA/NDIP platform is to pac Fortunately, the template application we used in this tutorial already includes a `dockerfiles/Dockerfile` that you can use as a starting point. The Dockerfile is a set of instructions that Docker uses to build your container image. -Here's what the Dockerfile typically includes: +Here\'s what the Dockerfile typically includes: * **Base Image:** Specifies the base operating system and environment for your application. * **Dependencies:** Describes how to install any required libraries or packages. * **Application Files:** Defines how to copy your application code into the container. -- GitLab From 7377e94b345e9fa41600cb1b2ef54b16f5041881 Mon Sep 17 00:00:00 2001 From: "Ayres, Andrew" Date: Thu, 6 Feb 2025 10:53:30 -0600 Subject: [PATCH 4/9] formatting, figures, added objectives --- episodes/01-Introduction.md | 19 +++++++++++ episodes/02-Copy-Template.md | 17 ++++++++++ episodes/03-Nova-Galaxy.md | 19 +++++++++++ episodes/04-MVVM-Deisgn-Pattern.md | 43 +++++++++++++++++++++---- episodes/05-Working-with-Trame.md | 41 ++++++++++++++++++++--- episodes/06-Advanced-Data-Modeling.md | 21 ++++++++++++ episodes/07-Advanced-Visualizations.md | 40 ++++++++++++++++++++--- episodes/08-Next-Steps.md | 27 +++++++++++++--- episodes/fig/mvvm.png | Bin 0 -> 24104 bytes 9 files changed, 208 insertions(+), 19 deletions(-) create mode 100644 episodes/fig/mvvm.png diff --git a/episodes/01-Introduction.md b/episodes/01-Introduction.md index 0706de92..98e389fe 100755 --- a/episodes/01-Introduction.md +++ b/episodes/01-Introduction.md @@ -4,6 +4,25 @@ teaching: 10 exercises: 0 --- +::::::::::::::::::::::::::::::::::::::: objectives + +- Understand the purpose of the NOVA tutorial and its goals. +- Explain the roles of NDIP and NOVA in neutron data analysis. +- Identify the core NOVA libraries and their functionalities. +- Describe the high-level architecture of a NOVA application interacting with NDIP. + +:::::::::::::::::::::::::::::::::::::::::::::::::: + +:::::::::::::::::::::::::::::::::::::::: questions + +- What is the Neutron Data Interpretation Platform (NDIP)? +- What is NOVA, and how does it simplify NDIP application development? +- What are the key components of NOVA, and what problems do they solve? +- How do NOVA libraries interact with the NDIP platform? +- What will I be able to do after completing this tutorial? + +:::::::::::::::::::::::::::::::::::::::::::::::::: + # 1. Introduction to NOVA and NDIP Welcome to the NOVA tutorial! This guide will walk you through the process of building interactive tools for **neutron analysis** using the NOVA platform. You will learn how to create a web application that leverages the NOVA libraries to simplify interaction with the Neutron Data Interpretation Platform (NDIP). diff --git a/episodes/02-Copy-Template.md b/episodes/02-Copy-Template.md index 19ce88f2..fb8ac114 100755 --- a/episodes/02-Copy-Template.md +++ b/episodes/02-Copy-Template.md @@ -4,6 +4,23 @@ teaching: 10 exercises: 3 --- +::::::::::::::::::::::::::::::::::::::: objectives + +- Clone the NOVA template application using `copier`. +- Understand the basic project structure created by the template. +- Identify key files in the project (e.g., `pyproject.toml`). +- Install project dependencies using `poetry`. + +:::::::::::::::::::::::::::::::::::::::::::::::::: + +:::::::::::::::::::::::::::::::::::::::: questions + +- How do I quickly set up a starting point for a NOVA project? +- What files and directories are included in the NOVA template application? +- How does `poetry` manage project dependencies and virtual environments? + +:::::::::::::::::::::::::::::::::::::::::::::::::: + # 2. Getting Started with a Template Application As mentioned in the introduction, all code examples in this tutorial are based on a template application. In this episode, we will create this starting point by cloning a template using the `copier` library. This template provides a basic project structure and pre-configured files that will help us get started quickly with our NOVA project, saving us from setting up everything from scratch. diff --git a/episodes/03-Nova-Galaxy.md b/episodes/03-Nova-Galaxy.md index 28078eb1..eab7da60 100755 --- a/episodes/03-Nova-Galaxy.md +++ b/episodes/03-Nova-Galaxy.md @@ -4,6 +4,25 @@ teaching: 10 exercises: 3 --- +::::::::::::::::::::::::::::::::::::::: objectives + +- Explain the purpose of the `Nova`, `Tool`, and `Parameters` classes in `nova-galaxy`. +- Describe the basic workflow for running an NDIP tool using `nova-galaxy`. +- Connect to NDIP using the `Nova` class. +- Define an NDIP tool and set its parameters using the `Tool` and `Parameters` classes. +- Run the tool and create a datastore. + +:::::::::::::::::::::::::::::::::::::::::::::::::: + +:::::::::::::::::::::::::::::::::::::::: questions + +- How can I interact with the NDIP platform programmatically from Python? +- What is the `nova-galaxy` library, and how does it simplify NDIP operations? +- How do I define an NDIP tool and specify its input parameters using `nova-galaxy`? +- Where can I find information about what NDIP tool to use and parameters to set? + +:::::::::::::::::::::::::::::::::::::::::::::::::: + # Using NDIP for Backend Computations In this section, we will start using the `nova-galaxy` library to interact with the NDIP platform and run a neutron analysis tool. First, ensure you have set your `GALAXY_URL` and `GALAXY_API_KEY` as environment variables, as explained in the notes at the end of this episode. We also need to add `nova-galaxy` as a project dependency. diff --git a/episodes/04-MVVM-Deisgn-Pattern.md b/episodes/04-MVVM-Deisgn-Pattern.md index 8bb18e76..34e23fbb 100755 --- a/episodes/04-MVVM-Deisgn-Pattern.md +++ b/episodes/04-MVVM-Deisgn-Pattern.md @@ -4,6 +4,27 @@ teaching: 10 exercises: 0 --- +::::::::::::::::::::::::::::::::::::::: objectives + +- Define the Model-View-ViewModel (MVVM) design pattern and its benefits. +- Explain the responsibilities of each component in the MVVM pattern (Model, View, ViewModel). +- Describe the role of data binding in MVVM and how it enables reactive UIs. +- Explain the purpose of the `nova-mvvm` library and its key components (`BindingInterface`, `TrameBinding`, `Communicator`, `new_bind`). +- Introduce Pydantic for data modeling and validation within the MVVM pattern. +- Understand how to implement MVVM using `nova-mvvm` and Pydantic in a NOVA application. + +:::::::::::::::::::::::::::::::::::::::::::::::::: + +:::::::::::::::::::::::::::::::::::::::: questions + +- What is the Model-View-ViewModel (MVVM) design pattern, and why is it useful for UI development? +- What are the roles and responsibilities of the Model, View, and ViewModel in the MVVM pattern? +- How does data binding work in MVVM, and why is it important? +- How does the `nova-mvvm` library simplify the implementation of the MVVM pattern in NOVA applications? +- What is Pydantic, and how can it be used for data modeling and validation in the context of MVVM? + +:::::::::::::::::::::::::::::::::::::::::::::::::: + # 4. User Interface Best Practices: The MVVM Design Pattern In this section, we will introduce the Model-View-ViewModel (MVVM) design pattern, a powerful architectural approach for structuring applications, particularly those with user interfaces. We\'ll explore the core principles of MVVM, the roles of each component, and how the NOVA framework simplifies its implementation, making your code more organized, testable, and maintainable. @@ -16,8 +37,9 @@ Before diving into MVVM, it\'s helpful to understand what a *design pattern* is MVVM is an architectural design pattern specifically designed for applications with user interfaces (UIs). It aims to separate the UI (the View) from the underlying data and logic (the Model) by introducing an intermediary component called the ViewModel. This separation makes the application more maintainable, testable, and easier to evolve. -The MVVM pattern consists of three core components: +![](fig/mvvm.png) +The MVVM pattern consists of three core components: * **Model:** The Model represents the *data* and the *business logic* of the application. It\'s responsible for: * Data storage (e.g., reading from and writing to a database, a file, or an API). * Data validation (ensuring the data is in a valid state). @@ -41,7 +63,7 @@ The MVVM pattern consists of three core components: * Handling user actions from the View. This might involve validating user input, updating the Model, or triggering other actions in the application. * Exposing data and commands to the View through *data binding*. - The ViewModel is *UI-specific*. It knows about the View and the data that the View needs, but it doesn\'t know about the specific UI elements that are used to display the data. It also orchestrates the interaction between the View and the Model. + The ViewModel knows about the View and the data that the View needs, but it doesn\'t know about the specific UI elements that are used to display the data. It also orchestrates the interaction between the View and the Model. *The ViewModel is where we\'ll use `nova-mvvm` to create bindings between the ViewModel and the View, enabling the reactive updates.* @@ -193,9 +215,8 @@ poetry run app You should see `Fractal tool finished successfully.` printed to the console, although we have not created a UI yet. -## Exercises - -1. **Trigger Pydantic Validation Error (Programmatic):** +::::::::::::::::::::::::::::::::::::::: challenge +**Trigger Pydantic Validation Error (Programmatic)** * In `FractalViewModel` in `src/nova_tutorial/view_models/fractal_view_model.py`, modify the `update_fractal_programmatically` function from the previous exercise to use an *invalid* fractal type: ```python def update_fractal_programmatically(new_type: str): @@ -211,12 +232,18 @@ You should see `Fractal tool finished successfully.` printed to the console, alt * The "Current fractal type (after attempt):" is still "mandelbrot" indicating the invalid update was rejected. * The "Current message:" now contains a "Validation Error" message from Pydantic. -2. **Inspect ViewModel State:** +:::::::::::::::::::::::::::::::::::::::::::::::::: + +::::::::::::::::::::::::::::::::::::::: challenge +**Inspect ViewModel State** * In `src/nova_tutorial/view_models/fractal_view_model.py`, add `print` statements within the `FractalViewModel.__init__` method to print the initial values of `self._fractal_type`, `self._job_status`, and `self._message`. * Run the application (`poetry run app`). Observe the output in the console. Verify that the initial values are printed as expected. * Now, modify the `FractalViewModel.__init__` method to change the initial value of `self._message` to "Application starting...". Run the application again and confirm that the printed initial message has changed. -3. **Programmatic State Update and Binding:** +:::::::::::::::::::::::::::::::::::::::::::::::::: + +::::::::::::::::::::::::::::::::::::::: challenge +**Programmatic State Update and Binding:** * In `FractalViewModel` in `src/nova_tutorial/view_models/fractal_view_model.py`, after the line `self.fractal_type_bind = binding.new_bind(...)` in `__init__`, add the following lines: ```python print("Initial fractal type:", self._fractal_type) # Print initial value @@ -233,6 +260,8 @@ You should see `Fractal tool finished successfully.` printed to the console, alt * The message "Fractal type updated programmatically to: julia" is printed. * The final fractal type (after programmatic update) is printed as "julia". +:::::::::::::::::::::::::::::::::::::::::::::::::: + ## References * **Nova Documentation**: https://nova-application-development.readthedocs.io/en/latest/ diff --git a/episodes/05-Working-with-Trame.md b/episodes/05-Working-with-Trame.md index 3693ed65..474077c4 100755 --- a/episodes/05-Working-with-Trame.md +++ b/episodes/05-Working-with-Trame.md @@ -4,6 +4,30 @@ teaching: 20 exercises: 3 --- +::::::::::::::::::::::::::::::::::::::: objectives + +- Explain the purpose of Trame as a UI framework. +- Describe how `nova-trame` simplifies Trame development in NOVA applications. +- Identify key features and benefits of using Trame. +- Use `nova-trame` components to build a basic user interface. +- Incorporate common Vuetify components into a Trame application. +- Explore the Vuetify component library and identify components suitable for scientific applications. +- Add custom UI components, and tailor their appearance with attributes. + +:::::::::::::::::::::::::::::::::::::::::::::::::: + +:::::::::::::::::::::::::::::::::::::::: questions + +- What is Trame, and why should I use it for building UIs in NOVA? +- How does `nova-trame` make Trame development easier? +- What are the key advantages of using a declarative UI approach with Trame? +- How can I create a basic UI layout using `nova-trame` components? +- How can I add common Vuetify components (e.g., `VTextField`, `VCheckbox`, `VSlider`) to my Trame application? +- How can I customize the appearance of Vuetify components? +- Where can I find more information about available Vuetify components? + +:::::::::::::::::::::::::::::::::::::::::::::::::: + # 5. Web-based User Interface Development with Trame In this section, we will dive into Trame and the `nova-trame` library to build interactive web-based user interfaces for our NOVA applications. We\'ll explore how `nova-trame` simplifies UI development within the NOVA ecosystem and how to use common layout components. @@ -165,11 +189,20 @@ poetry run start You should now see the simple UI. When you click the "Sample Tab 1" and "Sample Tab 2" tabs, you should now see the updated content with the new UI components. -## Exercises +::::::::::::::::::::::::::::::::::::::: challenge +**Explore the `InputField` Component** +Modify the `InputField` component in `SampleTab1` to automatically retrieve the label, hint, and validation rules from a Pydantic model field. Create a simple Pydantic model with a `username` field with a `title`, `description`, and `min_length` constraint. +:::::::::::::::::::::::::::::::::::::::::::::::::: + +::::::::::::::::::::::::::::::::::::::: challenge +**Create a Complex Layout** +Combine `GridLayout`, `VBoxLayout`, and `HBoxLayout` components to create a more complex UI layout in `SampleTab2`. Try creating a layout with a header, a sidebar, and a main content area. +:::::::::::::::::::::::::::::::::::::::::::::::::: -1. **Explore the `InputField` Component:** Modify the `InputField` component in `SampleTab1` to automatically retrieve the label, hint, and validation rules from a Pydantic model field. Create a simple Pydantic model with a `username` field with a `title`, `description`, and `min_length` constraint. -2. **Create a Complex Layout:** Combine `GridLayout`, `VBoxLayout`, and `HBoxLayout` components to create a more complex UI layout in `SampleTab2`. Try creating a layout with a header, a sidebar, and a main content area. -3. **Customize Component Appearance:** Experiment with customizing the appearance of the Vuetify components using the various props and styles available. Try changing the color, size, font, and other visual attributes of the components. Refer to Vuetify\'s component documentation for details. +::::::::::::::::::::::::::::::::::::::: challenge +**Customize Component Appearance** +Experiment with customizing the appearance of the Vuetify components using the various props and styles available. Try changing the color, size, font, and other visual attributes of the components. Refer to Vuetify\'s component documentation for details. +:::::::::::::::::::::::::::::::::::::::::::::::::: ## References diff --git a/episodes/06-Advanced-Data-Modeling.md b/episodes/06-Advanced-Data-Modeling.md index 8774d759..24647116 100755 --- a/episodes/06-Advanced-Data-Modeling.md +++ b/episodes/06-Advanced-Data-Modeling.md @@ -4,6 +4,27 @@ teaching: 20 exercises: 0 --- +::::::::::::::::::::::::::::::::::::::: objectives + +- Define nested Pydantic models to represent complex data structures. +- Implement custom validation logic using Pydantic validator decorators (`@model_validator`). +- Trigger and observe validation errors for nested models. +- Apply custom validators to enforce business-specific rules. +- Explore different types of Pydantic validators (`@model_validator`, `@field_validator`, `@root_validator`) and understand their use cases. + +:::::::::::::::::::::::::::::::::::::::::::::::::: + +:::::::::::::::::::::::::::::::::::::::: questions + +- How can I represent complex data structures with nested relationships using Pydantic? +- How can I enforce validation rules that go beyond basic type checking using Pydantic? +- How do I define custom validation logic for Pydantic models? +- What are the different types of Pydantic validators, and when should I use each one? +- How can I trigger and observe validation errors in my Pydantic models? +- How do I use Pydantic models and validators effectively in conjunction with my viewmodel? + +:::::::::::::::::::::::::::::::::::::::::::::::::: + # 6. Data Validation with Pydantic: Ensuring Data Integrity In this section, we will explore Pydantic, a powerful Python library for data validation and settings management. We\'ll delve into the benefits of data validation, how Pydantic works, and best practices for using it effectively within the NOVA framework and the MVVM architecture. diff --git a/episodes/07-Advanced-Visualizations.md b/episodes/07-Advanced-Visualizations.md index 350700ef..ae1895f0 100755 --- a/episodes/07-Advanced-Visualizations.md +++ b/episodes/07-Advanced-Visualizations.md @@ -4,6 +4,29 @@ teaching: 10 exercises: 1 --- +::::::::::::::::::::::::::::::::::::::: objectives + +- Describe the purpose of Plotly for interactive 2D charts. +- Explain how to integrate Plotly charts into Trame applications using `trame-plotly`. +- Describe the purpose of PyVista for interactive 3D visualizations. +- Explain how to integrate PyVista visualizations into Trame applications using `trame-vtk`. +- Explain how to work directly with VTK for 3D visualizations within Trame applications. +- Understand the basic boilerplate code required to set up a VTK rendering pipeline in Trame. + +:::::::::::::::::::::::::::::::::::::::::::::::::: + +:::::::::::::::::::::::::::::::::::::::: questions + +- How can I create interactive 2D charts in my NOVA application? +- How can I integrate Plotly charts into Trame applications? +- How can I create interactive 3D visualizations in my NOVA application? +- What are the advantages and disadvantages of using PyVista vs. VTK for 3D visualizations? +- How can I integrate PyVista visualizations into Trame applications? +- How can I work directly with VTK for more advanced 3D visualizations in Trame? +- What are the key components of a VTK rendering pipeline? + +:::::::::::::::::::::::::::::::::::::::::::::::::: + # Advanced Visualizations In this section, we will look at a selection of the libraries that integrate well with Trame for producing more sophisticated visualizations of your data. Specifically, we will look at Plotly for interactive 2D charts, PyVista for interactive 3D visualizations, and VTK for advanced 3D visualizations. @@ -362,11 +385,20 @@ Since we\'ve seen plenty of examples of UI controls at this point, we've omitted return self.volume ``` -## Exercises +::::::::::::::::::::::::::::::::::::::: challenge +**Plotly Box Plot** +Add a box plot to the available plot types. Hint: you shouldn\'t need to change anything in the view class to do this. +:::::::::::::::::::::::::::::::::::::::::::::::::: + +::::::::::::::::::::::::::::::::::::::: challenge +**PyVista clim Control** +Add control(s) to the UI to control the `clim` argument for the `add_volume` method. +:::::::::::::::::::::::::::::::::::::::::::::::::: -1. **Plotly Box Plot:** Add a box plot to the available plot types. Hint: you shouldn\'t need to change anything in the view class to do this. -2. **PyVista clim Control:** Add control(s) to the UI to control the `clim` argument for the `add_volume` method. -3. **Investigate the lookup table and piecewise function:** We didn\'t look at `VTKConfig.init_lut` or `VTKConfig.init_pwf` during the tutorial. Read through these methods and then trys manipulating the opacity of the rendering. +::::::::::::::::::::::::::::::::::::::: challenge +**Investigate the lookup table and piecewise function** +We didn\'t look at `VTKConfig.init_lut` or `VTKConfig.init_pwf` during the tutorial. Read through these methods and then trys manipulating the opacity of the rendering. +:::::::::::::::::::::::::::::::::::::::::::::::::: ## References diff --git a/episodes/08-Next-Steps.md b/episodes/08-Next-Steps.md index 6472c7ce..7bbe3e51 100755 --- a/episodes/08-Next-Steps.md +++ b/episodes/08-Next-Steps.md @@ -1,5 +1,5 @@ --- -title: "Next Steps" +title: "Development Cycle and Next Steps" teaching: 10 exercises: 0 --- @@ -11,7 +11,7 @@ In this section, we will outline the process for taking an application like the The first step in deploying your application to the NOVA/NDIP platform is to package it as a Docker container. Docker containers provide a lightweight and portable way to package your application and all of its dependencies. This ensures that your application will run consistently across different environments. -Fortunately, the template application we used in this tutorial already includes a `dockerfiles/Dockerfile` that you can use as a starting point. The Dockerfile is a set of instructions that Docker uses to build your container image. +Fortunately, the template application we used in this tutorial already includes a `Dockerfile` that you can use as a starting point. The Dockerfile is a set of instructions that Docker uses to build your container image. Here\'s what the Dockerfile typically includes: * **Base Image:** Specifies the base operating system and environment for your application. @@ -28,7 +28,7 @@ To containerize your application, you would: After the docker container is deployed to a registry, it can then be used by the platform. ::::::::::::::::::::::::::::::::::::::::: callout -GPU acceleration in a container is possible but beyond the scope of this tutorial. Typically, a base container is chosen which already has all of the gpu dependencies installed such as ```regproxy.ornl.gov/hub_proxy/kitware/trame:py3.10-glvnd-2024-12```. The team has built similar containers already which can be used as a reference for development such as ```https://code.ornl.gov/ndip/trame-apps/ct-scan-visualizer/``` +GPU acceleration in a container is possible but beyond the scope of this tutorial. Typically, a base container is chosen which already has all of the gpu dependencies installed such as ```regproxy.ornl.gov/hub_proxy/kitware/trame:py3.10-glvnd-2024-12```. The team has built similar containers already which can be used as a reference for development, such as, ```https://code.ornl.gov/ndip/trame-apps/ct-scan-visualizer/``` :::::::::::::::::::::::::::::::::::::::::::::::::: ## Defining Your Tool with XML @@ -43,12 +43,31 @@ The XML file includes: * **Container Image:** Specifies the Docker image that should be used to run the tool. * **Command:** Specifies the command line that is executed inside the docker container. -You can find numerous examples of Galaxy tool XML files in the NDIP GitHub repository: +You can find numerous examples of Galaxy tool XML files in the NDIP GitLab repository: [https://code.ornl.gov/ndip/galaxy-tools](https://code.ornl.gov/ndip/galaxy-tools) Detailed documentation on creating tool XML files is available on the Calvera documentation site: [calvera.ornl.gov/docs/dev](calvera.ornl.gov/docs/dev) +## Development Lifecycle + +### How to get a new tool on NDIP + +After creating your tool\'s XML file, it needs to be added to the NDIP platform. For testing your tool on the platform, it should be uploaded to the *prototype* branch of the GitLab repository linked above. An automated CI job will push your tool to the calvera-test instance. Test your application via the web browser interface. After you\'ve verified that your tool is performing as expected, submit a merge request to the repository\'s *dev* branch and engage with our team. When first adding a tool to the platform, Calvera admins will need to configure Calvera to use the tool. + +Create an issue in the [galaxy tools](https://code.ornl.gov/ndip/galaxy-tools/-/issues/new) repository providing the following information: +The name of the XML file you've created (see more about XML files here) +The tool ID (i.e. neutrons_my_new_tool) +The section name where your tool should appear in the tool panel +Whether the tool will need a GPU +Additional developers who will be working on the tool (if this is their first time contributing to this repository) + +The *dev* branch is used as a staging branch for tools that are ready to be put in front of users. Tools here will be added to the NDIP production instance, Calvera, during the next deployment. + +### Continued Development + +The process for continuing development on an existing tool is very similar to getting a new tool on the platform except that the initial configuration does not need to be repeated. You will continue to develop on the *prototype* branch, where you can push and test changes. Once you are satisified with the new version of your tool, submit a merge request to update the the tool in the *dev* branch. Our team will review these changes, perform the merge, and the new version of the tool will be updated on the NDIP production instance, Calvera, during the next deployment. + ## Putting It All Together Once you have your Docker container and tool XML file, you would: diff --git a/episodes/fig/mvvm.png b/episodes/fig/mvvm.png new file mode 100644 index 0000000000000000000000000000000000000000..4f44f6e2c4d3ee895c8097abaea342467cf90e23 GIT binary patch literal 24104 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%0D*KN6WGN^29qAVT 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 literal 0 HcmV?d00001 -- GitLab From 52491fd7c73f5c5d863ede28f87cd3fee066a364 Mon Sep 17 00:00:00 2001 From: "Ayres, Andrew" Date: Thu, 6 Feb 2025 11:19:58 -0600 Subject: [PATCH 5/9] poetry lock updates --- .../src/nova_tutorial/app/models/fractal.py | 2 +- code/episode_5/poetry.lock | 329 +++++++++++++----- code/episode_6/poetry.lock | 249 ++++++++----- .../app/models/sample_tab_models.py | 4 +- 4 files changed, 424 insertions(+), 160 deletions(-) mode change 100755 => 100644 code/episode_5/poetry.lock mode change 100755 => 100644 code/episode_6/poetry.lock diff --git a/code/episode_3/src/nova_tutorial/app/models/fractal.py b/code/episode_3/src/nova_tutorial/app/models/fractal.py index a5c2b682..542f4ed8 100755 --- a/code/episode_3/src/nova_tutorial/app/models/fractal.py +++ b/code/episode_3/src/nova_tutorial/app/models/fractal.py @@ -19,7 +19,7 @@ class Fractal: ) nova = Nova(galaxy_url=self.galaxy_url, galaxy_key=self.galaxy_key) - tool = Tool(id="neutrons_fracta") + tool = Tool(id="neutrons_fractal") params = Parameters() params.add_input(name="option", value=self.fractal_type) diff --git a/code/episode_5/poetry.lock b/code/episode_5/poetry.lock old mode 100755 new mode 100644 index d2927940..5c404ed1 --- a/code/episode_5/poetry.lock +++ b/code/episode_5/poetry.lock @@ -1,9 +1,10 @@ -# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" version = "2.4.4" description = "Happy Eyeballs for asyncio" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -13,87 +14,93 @@ files = [ [[package]] name = "aiohttp" -version = "3.11.11" +version = "3.11.12" description = "Async http client/server framework (asyncio)" +category = "main" optional = false python-versions = ">=3.9" files = [ - {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a60804bff28662cbcf340a4d61598891f12eea3a66af48ecfdc975ceec21e3c8"}, - {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4b4fa1cb5f270fb3eab079536b764ad740bb749ce69a94d4ec30ceee1b5940d5"}, - {file = "aiohttp-3.11.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:731468f555656767cda219ab42e033355fe48c85fbe3ba83a349631541715ba2"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb23d8bb86282b342481cad4370ea0853a39e4a32a0042bb52ca6bdde132df43"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f047569d655f81cb70ea5be942ee5d4421b6219c3f05d131f64088c73bb0917f"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd7659baae9ccf94ae5fe8bfaa2c7bc2e94d24611528395ce88d009107e00c6d"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af01e42ad87ae24932138f154105e88da13ce7d202a6de93fafdafb2883a00ef"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5854be2f3e5a729800bac57a8d76af464e160f19676ab6aea74bde18ad19d438"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6526e5fb4e14f4bbf30411216780c9967c20c5a55f2f51d3abd6de68320cc2f3"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:85992ee30a31835fc482468637b3e5bd085fa8fe9392ba0bdcbdc1ef5e9e3c55"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:88a12ad8ccf325a8a5ed80e6d7c3bdc247d66175afedbe104ee2aaca72960d8e"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0a6d3fbf2232e3a08c41eca81ae4f1dff3d8f1a30bae415ebe0af2d2458b8a33"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84a585799c58b795573c7fa9b84c455adf3e1d72f19a2bf498b54a95ae0d194c"}, - {file = "aiohttp-3.11.11-cp310-cp310-win32.whl", hash = "sha256:bfde76a8f430cf5c5584553adf9926534352251d379dcb266ad2b93c54a29745"}, - {file = "aiohttp-3.11.11-cp310-cp310-win_amd64.whl", hash = "sha256:0fd82b8e9c383af11d2b26f27a478640b6b83d669440c0a71481f7c865a51da9"}, - {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ba74ec819177af1ef7f59063c6d35a214a8fde6f987f7661f4f0eecc468a8f76"}, - {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4af57160800b7a815f3fe0eba9b46bf28aafc195555f1824555fa2cfab6c1538"}, - {file = "aiohttp-3.11.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffa336210cf9cd8ed117011085817d00abe4c08f99968deef0013ea283547204"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81b8fe282183e4a3c7a1b72f5ade1094ed1c6345a8f153506d114af5bf8accd9"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af41686ccec6a0f2bdc66686dc0f403c41ac2089f80e2214a0f82d001052c03"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70d1f9dde0e5dd9e292a6d4d00058737052b01f3532f69c0c65818dac26dc287"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:249cc6912405917344192b9f9ea5cd5b139d49e0d2f5c7f70bdfaf6b4dbf3a2e"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0eb98d90b6690827dcc84c246811feeb4e1eea683c0eac6caed7549be9c84665"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec82bf1fda6cecce7f7b915f9196601a1bd1a3079796b76d16ae4cce6d0ef89b"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9fd46ce0845cfe28f108888b3ab17abff84ff695e01e73657eec3f96d72eef34"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bd176afcf8f5d2aed50c3647d4925d0db0579d96f75a31e77cbaf67d8a87742d"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ec2aa89305006fba9ffb98970db6c8221541be7bee4c1d027421d6f6df7d1ce2"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:92cde43018a2e17d48bb09c79e4d4cb0e236de5063ce897a5e40ac7cb4878773"}, - {file = "aiohttp-3.11.11-cp311-cp311-win32.whl", hash = "sha256:aba807f9569455cba566882c8938f1a549f205ee43c27b126e5450dc9f83cc62"}, - {file = "aiohttp-3.11.11-cp311-cp311-win_amd64.whl", hash = "sha256:ae545f31489548c87b0cced5755cfe5a5308d00407000e72c4fa30b19c3220ac"}, - {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e595c591a48bbc295ebf47cb91aebf9bd32f3ff76749ecf282ea7f9f6bb73886"}, - {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3ea1b59dc06396b0b424740a10a0a63974c725b1c64736ff788a3689d36c02d2"}, - {file = "aiohttp-3.11.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8811f3f098a78ffa16e0ea36dffd577eb031aea797cbdba81be039a4169e242c"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7227b87a355ce1f4bf83bfae4399b1f5bb42e0259cb9405824bd03d2f4336a"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d40f9da8cabbf295d3a9dae1295c69975b86d941bc20f0a087f0477fa0a66231"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffb3dc385f6bb1568aa974fe65da84723210e5d9707e360e9ecb51f59406cd2e"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8f5f7515f3552d899c61202d99dcb17d6e3b0de777900405611cd747cecd1b8"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3499c7ffbfd9c6a3d8d6a2b01c26639da7e43d47c7b4f788016226b1e711caa8"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8e2bf8029dbf0810c7bfbc3e594b51c4cc9101fbffb583a3923aea184724203c"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b6212a60e5c482ef90f2d788835387070a88d52cf6241d3916733c9176d39eab"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d119fafe7b634dbfa25a8c597718e69a930e4847f0b88e172744be24515140da"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:6fba278063559acc730abf49845d0e9a9e1ba74f85f0ee6efd5803f08b285853"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:92fc484e34b733704ad77210c7957679c5c3877bd1e6b6d74b185e9320cc716e"}, - {file = "aiohttp-3.11.11-cp312-cp312-win32.whl", hash = "sha256:9f5b3c1ed63c8fa937a920b6c1bec78b74ee09593b3f5b979ab2ae5ef60d7600"}, - {file = "aiohttp-3.11.11-cp312-cp312-win_amd64.whl", hash = "sha256:1e69966ea6ef0c14ee53ef7a3d68b564cc408121ea56c0caa2dc918c1b2f553d"}, - {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:541d823548ab69d13d23730a06f97460f4238ad2e5ed966aaf850d7c369782d9"}, - {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:929f3ed33743a49ab127c58c3e0a827de0664bfcda566108989a14068f820194"}, - {file = "aiohttp-3.11.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0882c2820fd0132240edbb4a51eb8ceb6eef8181db9ad5291ab3332e0d71df5f"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b63de12e44935d5aca7ed7ed98a255a11e5cb47f83a9fded7a5e41c40277d104"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa54f8ef31d23c506910c21163f22b124facb573bff73930735cf9fe38bf7dff"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a344d5dc18074e3872777b62f5f7d584ae4344cd6006c17ba12103759d407af3"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7fb429ab1aafa1f48578eb315ca45bd46e9c37de11fe45c7f5f4138091e2f1"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c341c7d868750e31961d6d8e60ff040fb9d3d3a46d77fd85e1ab8e76c3e9a5c4"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed9ee95614a71e87f1a70bc81603f6c6760128b140bc4030abe6abaa988f1c3d"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:de8d38f1c2810fa2a4f1d995a2e9c70bb8737b18da04ac2afbf3971f65781d87"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a9b7371665d4f00deb8f32208c7c5e652059b0fda41cf6dbcac6114a041f1cc2"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:620598717fce1b3bd14dd09947ea53e1ad510317c85dda2c9c65b622edc96b12"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf8d9bfee991d8acc72d060d53860f356e07a50f0e0d09a8dfedea1c554dd0d5"}, - {file = "aiohttp-3.11.11-cp313-cp313-win32.whl", hash = "sha256:9d73ee3725b7a737ad86c2eac5c57a4a97793d9f442599bea5ec67ac9f4bdc3d"}, - {file = "aiohttp-3.11.11-cp313-cp313-win_amd64.whl", hash = "sha256:c7a06301c2fb096bdb0bd25fe2011531c1453b9f2c163c8031600ec73af1cc99"}, - {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3e23419d832d969f659c208557de4a123e30a10d26e1e14b73431d3c13444c2e"}, - {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21fef42317cf02e05d3b09c028712e1d73a9606f02467fd803f7c1f39cc59add"}, - {file = "aiohttp-3.11.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1f21bb8d0235fc10c09ce1d11ffbd40fc50d3f08a89e4cf3a0c503dc2562247a"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1642eceeaa5ab6c9b6dfeaaa626ae314d808188ab23ae196a34c9d97efb68350"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2170816e34e10f2fd120f603e951630f8a112e1be3b60963a1f159f5699059a6"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8be8508d110d93061197fd2d6a74f7401f73b6d12f8822bbcd6d74f2b55d71b1"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4eed954b161e6b9b65f6be446ed448ed3921763cc432053ceb606f89d793927e"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6c9af134da4bc9b3bd3e6a70072509f295d10ee60c697826225b60b9959acdd"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:44167fc6a763d534a6908bdb2592269b4bf30a03239bcb1654781adf5e49caf1"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:479b8c6ebd12aedfe64563b85920525d05d394b85f166b7873c8bde6da612f9c"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:10b4ff0ad793d98605958089fabfa350e8e62bd5d40aa65cdc69d6785859f94e"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:b540bd67cfb54e6f0865ceccd9979687210d7ed1a1cc8c01f8e67e2f1e883d28"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1dac54e8ce2ed83b1f6b1a54005c87dfed139cf3f777fdc8afc76e7841101226"}, - {file = "aiohttp-3.11.11-cp39-cp39-win32.whl", hash = "sha256:568c1236b2fde93b7720f95a890741854c1200fba4a3471ff48b2934d2d93fd3"}, - {file = "aiohttp-3.11.11-cp39-cp39-win_amd64.whl", hash = "sha256:943a8b052e54dfd6439fd7989f67fc6a7f2138d0a2cf0a7de5f18aa4fe7eb3b1"}, - {file = "aiohttp-3.11.11.tar.gz", hash = "sha256:bb49c7f1e6ebf3821a42d81d494f538107610c3a705987f53068546b0e90303e"}, + {file = "aiohttp-3.11.12-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:aa8a8caca81c0a3e765f19c6953416c58e2f4cc1b84829af01dd1c771bb2f91f"}, + {file = "aiohttp-3.11.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:84ede78acde96ca57f6cf8ccb8a13fbaf569f6011b9a52f870c662d4dc8cd854"}, + {file = "aiohttp-3.11.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:584096938a001378484aa4ee54e05dc79c7b9dd933e271c744a97b3b6f644957"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:392432a2dde22b86f70dd4a0e9671a349446c93965f261dbaecfaf28813e5c42"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:88d385b8e7f3a870146bf5ea31786ef7463e99eb59e31db56e2315535d811f55"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b10a47e5390c4b30a0d58ee12581003be52eedd506862ab7f97da7a66805befb"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b5263dcede17b6b0c41ef0c3ccce847d82a7da98709e75cf7efde3e9e3b5cae"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50c5c7b8aa5443304c55c262c5693b108c35a3b61ef961f1e782dd52a2f559c7"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d1c031a7572f62f66f1257db37ddab4cb98bfaf9b9434a3b4840bf3560f5e788"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:7e44eba534381dd2687be50cbd5f2daded21575242ecfdaf86bbeecbc38dae8e"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:145a73850926018ec1681e734cedcf2716d6a8697d90da11284043b745c286d5"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:2c311e2f63e42c1bf86361d11e2c4a59f25d9e7aabdbdf53dc38b885c5435cdb"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ea756b5a7bac046d202a9a3889b9a92219f885481d78cd318db85b15cc0b7bcf"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:526c900397f3bbc2db9cb360ce9c35134c908961cdd0ac25b1ae6ffcaa2507ff"}, + {file = "aiohttp-3.11.12-cp310-cp310-win32.whl", hash = "sha256:b8d3bb96c147b39c02d3db086899679f31958c5d81c494ef0fc9ef5bb1359b3d"}, + {file = "aiohttp-3.11.12-cp310-cp310-win_amd64.whl", hash = "sha256:7fe3d65279bfbee8de0fb4f8c17fc4e893eed2dba21b2f680e930cc2b09075c5"}, + {file = "aiohttp-3.11.12-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:87a2e00bf17da098d90d4145375f1d985a81605267e7f9377ff94e55c5d769eb"}, + {file = "aiohttp-3.11.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b34508f1cd928ce915ed09682d11307ba4b37d0708d1f28e5774c07a7674cac9"}, + {file = "aiohttp-3.11.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:936d8a4f0f7081327014742cd51d320296b56aa6d324461a13724ab05f4b2933"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2de1378f72def7dfb5dbd73d86c19eda0ea7b0a6873910cc37d57e80f10d64e1"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9d45dbb3aaec05cf01525ee1a7ac72de46a8c425cb75c003acd29f76b1ffe94"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:930ffa1925393381e1e0a9b82137fa7b34c92a019b521cf9f41263976666a0d6"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8340def6737118f5429a5df4e88f440746b791f8f1c4ce4ad8a595f42c980bd5"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4016e383f91f2814e48ed61e6bda7d24c4d7f2402c75dd28f7e1027ae44ea204"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c0600bcc1adfaaac321422d615939ef300df81e165f6522ad096b73439c0f58"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:0450ada317a65383b7cce9576096150fdb97396dcfe559109b403c7242faffef"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:850ff6155371fd802a280f8d369d4e15d69434651b844bde566ce97ee2277420"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8fd12d0f989c6099e7b0f30dc6e0d1e05499f3337461f0b2b0dadea6c64b89df"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:76719dd521c20a58a6c256d058547b3a9595d1d885b830013366e27011ffe804"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:97fe431f2ed646a3b56142fc81d238abcbaff08548d6912acb0b19a0cadc146b"}, + {file = "aiohttp-3.11.12-cp311-cp311-win32.whl", hash = "sha256:e10c440d142fa8b32cfdb194caf60ceeceb3e49807072e0dc3a8887ea80e8c16"}, + {file = "aiohttp-3.11.12-cp311-cp311-win_amd64.whl", hash = "sha256:246067ba0cf5560cf42e775069c5d80a8989d14a7ded21af529a4e10e3e0f0e6"}, + {file = "aiohttp-3.11.12-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e392804a38353900c3fd8b7cacbea5132888f7129f8e241915e90b85f00e3250"}, + {file = "aiohttp-3.11.12-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8fa1510b96c08aaad49303ab11f8803787c99222288f310a62f493faf883ede1"}, + {file = "aiohttp-3.11.12-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dc065a4285307607df3f3686363e7f8bdd0d8ab35f12226362a847731516e42c"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddb31f8474695cd61fc9455c644fc1606c164b93bff2490390d90464b4655df"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dec0000d2d8621d8015c293e24589d46fa218637d820894cb7356c77eca3259"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3552fe98e90fdf5918c04769f338a87fa4f00f3b28830ea9b78b1bdc6140e0d"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dfe7f984f28a8ae94ff3a7953cd9678550dbd2a1f9bda5dd9c5ae627744c78e"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a481a574af914b6e84624412666cbfbe531a05667ca197804ecc19c97b8ab1b0"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1987770fb4887560363b0e1a9b75aa303e447433c41284d3af2840a2f226d6e0"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:a4ac6a0f0f6402854adca4e3259a623f5c82ec3f0c049374133bcb243132baf9"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c96a43822f1f9f69cc5c3706af33239489a6294be486a0447fb71380070d4d5f"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a5e69046f83c0d3cb8f0d5bd9b8838271b1bc898e01562a04398e160953e8eb9"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:68d54234c8d76d8ef74744f9f9fc6324f1508129e23da8883771cdbb5818cbef"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c9fd9dcf9c91affe71654ef77426f5cf8489305e1c66ed4816f5a21874b094b9"}, + {file = "aiohttp-3.11.12-cp312-cp312-win32.whl", hash = "sha256:0ed49efcd0dc1611378beadbd97beb5d9ca8fe48579fc04a6ed0844072261b6a"}, + {file = "aiohttp-3.11.12-cp312-cp312-win_amd64.whl", hash = "sha256:54775858c7f2f214476773ce785a19ee81d1294a6bedc5cc17225355aab74802"}, + {file = "aiohttp-3.11.12-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:413ad794dccb19453e2b97c2375f2ca3cdf34dc50d18cc2693bd5aed7d16f4b9"}, + {file = "aiohttp-3.11.12-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4a93d28ed4b4b39e6f46fd240896c29b686b75e39cc6992692e3922ff6982b4c"}, + {file = "aiohttp-3.11.12-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d589264dbba3b16e8951b6f145d1e6b883094075283dafcab4cdd564a9e353a0"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5148ca8955affdfeb864aca158ecae11030e952b25b3ae15d4e2b5ba299bad2"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:525410e0790aab036492eeea913858989c4cb070ff373ec3bc322d700bdf47c1"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bd8695be2c80b665ae3f05cb584093a1e59c35ecb7d794d1edd96e8cc9201d7"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0203433121484b32646a5f5ea93ae86f3d9559d7243f07e8c0eab5ff8e3f70e"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40cd36749a1035c34ba8d8aaf221b91ca3d111532e5ccb5fa8c3703ab1b967ed"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a7442662afebbf7b4c6d28cb7aab9e9ce3a5df055fc4116cc7228192ad6cb484"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:8a2fb742ef378284a50766e985804bd6adb5adb5aa781100b09befdbfa757b65"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2cee3b117a8d13ab98b38d5b6bdcd040cfb4181068d05ce0c474ec9db5f3c5bb"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f6a19bcab7fbd8f8649d6595624856635159a6527861b9cdc3447af288a00c00"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e4cecdb52aaa9994fbed6b81d4568427b6002f0a91c322697a4bfcc2b2363f5a"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:30f546358dfa0953db92ba620101fefc81574f87b2346556b90b5f3ef16e55ce"}, + {file = "aiohttp-3.11.12-cp313-cp313-win32.whl", hash = "sha256:ce1bb21fc7d753b5f8a5d5a4bae99566386b15e716ebdb410154c16c91494d7f"}, + {file = "aiohttp-3.11.12-cp313-cp313-win_amd64.whl", hash = "sha256:f7914ab70d2ee8ab91c13e5402122edbc77821c66d2758abb53aabe87f013287"}, + {file = "aiohttp-3.11.12-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c3623053b85b4296cd3925eeb725e386644fd5bc67250b3bb08b0f144803e7b"}, + {file = "aiohttp-3.11.12-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:67453e603cea8e85ed566b2700efa1f6916aefbc0c9fcb2e86aaffc08ec38e78"}, + {file = "aiohttp-3.11.12-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6130459189e61baac5a88c10019b21e1f0c6d00ebc770e9ce269475650ff7f73"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9060addfa4ff753b09392efe41e6af06ea5dd257829199747b9f15bfad819460"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:34245498eeb9ae54c687a07ad7f160053911b5745e186afe2d0c0f2898a1ab8a"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8dc0fba9a74b471c45ca1a3cb6e6913ebfae416678d90529d188886278e7f3f6"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a478aa11b328983c4444dacb947d4513cb371cd323f3845e53caeda6be5589d5"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c160a04283c8c6f55b5bf6d4cad59bb9c5b9c9cd08903841b25f1f7109ef1259"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:edb69b9589324bdc40961cdf0657815df674f1743a8d5ad9ab56a99e4833cfdd"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4ee84c2a22a809c4f868153b178fe59e71423e1f3d6a8cd416134bb231fbf6d3"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:bf4480a5438f80e0f1539e15a7eb8b5f97a26fe087e9828e2c0ec2be119a9f72"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:e6b2732ef3bafc759f653a98881b5b9cdef0716d98f013d376ee8dfd7285abf1"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:f752e80606b132140883bb262a457c475d219d7163d996dc9072434ffb0784c4"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ab3247d58b393bda5b1c8f31c9edece7162fc13265334217785518dd770792b8"}, + {file = "aiohttp-3.11.12-cp39-cp39-win32.whl", hash = "sha256:0d5176f310a7fe6f65608213cc74f4228e4f4ce9fd10bcb2bb6da8fc66991462"}, + {file = "aiohttp-3.11.12-cp39-cp39-win_amd64.whl", hash = "sha256:74bd573dde27e58c760d9ca8615c41a57e719bff315c9adb6f2a4281a28e8798"}, + {file = "aiohttp-3.11.12.tar.gz", hash = "sha256:7603ca26d75b1b86160ce1bbe2787a0b706e592af5b2504e12caa88a217767b0"}, ] [package.dependencies] @@ -113,6 +120,7 @@ speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] name = "aiosignal" version = "1.3.2" description = "aiosignal: a list of registered asynchronous callbacks" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -127,6 +135,7 @@ frozenlist = ">=1.1.0" name = "alabaster" version = "1.0.0" description = "A light, configurable Sphinx theme" +category = "dev" optional = false python-versions = ">=3.10" files = [ @@ -138,6 +147,7 @@ files = [ name = "annotated-types" version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -149,6 +159,7 @@ files = [ name = "async-timeout" version = "5.0.1" description = "Timeout context manager for asyncio programs" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -160,6 +171,7 @@ files = [ name = "attrs" version = "25.1.0" description = "Classes Without Boilerplate" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -179,6 +191,7 @@ tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] name = "babel" version = "2.17.0" description = "Internationalization utilities" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -189,10 +202,31 @@ files = [ [package.extras] dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest (>=6.0)", "pytest-cov", "pytz", "setuptools", "tzdata"] +[[package]] +name = "bioblend" +version = "1.4.0" +description = "Library for interacting with the Galaxy API" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "bioblend-1.4.0-py3-none-any.whl", hash = "sha256:20886e5f7658e1dc3e025cedb4be88538342374afba583ce4e2acb5c14a25c63"}, + {file = "bioblend-1.4.0.tar.gz", hash = "sha256:175d49d288e27d132ff59c870551c87cd95d7747be55ab94807c563291a3fa1d"}, +] + +[package.dependencies] +requests = ">=2.20.0" +requests-toolbelt = ">=0.5.1,<0.9.0 || >0.9.0" +tuspy = "*" + +[package.extras] +testing = ["pytest"] + [[package]] name = "certifi" version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -204,6 +238,7 @@ files = [ name = "cfgv" version = "3.4.0" description = "Validate configuration and produce human readable error messages." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -215,6 +250,7 @@ files = [ name = "charset-normalizer" version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -316,6 +352,7 @@ files = [ name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -327,6 +364,7 @@ files = [ name = "copier" version = "9.4.1" description = "A library for rendering project templates." +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -352,6 +390,7 @@ questionary = ">=1.8.1" name = "coverage" version = "7.6.10" description = "Code coverage measurement for Python" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -426,6 +465,7 @@ toml = ["tomli"] name = "deepdiff" version = "8.2.0" description = "Deep Difference and Search of any Python object/data. Recreate objects by adding adding deltas to each other." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -444,6 +484,7 @@ optimize = ["orjson"] name = "distlib" version = "0.3.9" description = "Distribution utilities" +category = "dev" optional = false python-versions = "*" files = [ @@ -455,6 +496,7 @@ files = [ name = "docutils" version = "0.21.2" description = "Docutils -- Python Documentation Utilities" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -466,6 +508,7 @@ files = [ name = "dunamai" version = "1.23.0" description = "Dynamic version generation" +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -480,6 +523,7 @@ packaging = ">=20.9" name = "exceptiongroup" version = "1.2.2" description = "Backport of PEP 654 (exception groups)" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -494,6 +538,7 @@ test = ["pytest (>=6)"] name = "filelock" version = "3.17.0" description = "A platform independent file lock." +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -510,6 +555,7 @@ typing = ["typing-extensions (>=4.12.2)"] name = "frozenlist" version = "1.5.0" description = "A list-like structure which implements collections.abc.MutableSequence" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -611,6 +657,7 @@ files = [ name = "funcy" version = "2.0" description = "A fancy and practical functional tools" +category = "dev" optional = false python-versions = "*" files = [ @@ -622,6 +669,7 @@ files = [ name = "identify" version = "2.6.6" description = "File identification library for Python" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -636,6 +684,7 @@ license = ["ukkonen"] name = "idna" version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -650,6 +699,7 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -661,6 +711,7 @@ files = [ name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -672,6 +723,7 @@ files = [ name = "jinja2" version = "3.1.5" description = "A very fast and expressive template engine." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -689,6 +741,7 @@ i18n = ["Babel (>=2.7)"] name = "jinja2-ansible-filters" version = "1.3.2" description = "A port of Ansible's jinja2 filters without requiring ansible core." +category = "dev" optional = false python-versions = "*" files = [ @@ -707,6 +760,7 @@ test = ["pytest", "pytest-cov"] name = "libsass" version = "0.23.0" description = "Sass for Python: A straightforward binding of libsass for Python." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -722,6 +776,7 @@ files = [ name = "markupsafe" version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -792,6 +847,7 @@ files = [ name = "mergedeep" version = "1.3.4" description = "A deep merge function for 🐍." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -803,6 +859,7 @@ files = [ name = "more-itertools" version = "10.6.0" description = "More routines for operating on iterables, beyond itertools" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -814,6 +871,7 @@ files = [ name = "msgpack" version = "1.1.0" description = "MessagePack serializer" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -887,6 +945,7 @@ files = [ name = "multidict" version = "6.1.0" description = "multidict implementation" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -991,6 +1050,7 @@ typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} name = "mypy" version = "1.15.0" description = "Optional static typing for Python" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1044,6 +1104,7 @@ reports = ["lxml"] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1055,6 +1116,7 @@ files = [ name = "nodeenv" version = "1.9.1" description = "Node.js virtual environment builder" +category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -1062,10 +1124,26 @@ files = [ {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] +[[package]] +name = "nova-galaxy" +version = "0.4.0" +description = "Utilties for accessing the ORNL Galaxy instance" +category = "main" +optional = false +python-versions = "<4.0,>=3.10" +files = [ + {file = "nova_galaxy-0.4.0-py3-none-any.whl", hash = "sha256:407ae4b272f5386bd23578daf8c0c9c48c3723fd9fd14aa7328ea38532427ab9"}, +] + +[package.dependencies] +bioblend = ">=1.3.0,<2.0.0" +tomli = ">=2.0.2,<3.0.0" + [[package]] name = "nova-mvvm" version = "0.9.0" description = "A Python Package for Model-View-ViewModel pattern" +category = "main" optional = false python-versions = "<4.0,>=3.10" files = [ @@ -1086,6 +1164,7 @@ pyqt6 = ["pyqt6 (>=6.7.0,<7.0.0)"] name = "nova-trame" version = "0.14.2" description = "A Python Package for injecting curated themes and custom components into Trame applications" +category = "main" optional = false python-versions = "<4.0,>=3.10" files = [ @@ -1106,6 +1185,7 @@ trame-vuetify = "*" name = "orderly-set" version = "5.3.0" description = "Orderly set" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1117,6 +1197,7 @@ files = [ name = "packaging" version = "24.2" description = "Core utilities for Python packages" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1128,6 +1209,7 @@ files = [ name = "pathspec" version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1139,6 +1221,7 @@ files = [ name = "platformdirs" version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1155,6 +1238,7 @@ type = ["mypy (>=1.11.2)"] name = "pluggy" version = "1.5.0" description = "plugin and hook calling mechanisms for python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1170,6 +1254,7 @@ testing = ["pytest", "pytest-benchmark"] name = "plumbum" version = "1.9.0" description = "Plumbum: shell combinators library" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1190,6 +1275,7 @@ test = ["coverage[toml]", "paramiko", "psutil", "pytest (>=6.0)", "pytest-cov", name = "pockets" version = "0.9.1" description = "A collection of helpful Python tools!" +category = "dev" optional = false python-versions = "*" files = [ @@ -1204,6 +1290,7 @@ six = ">=1.5.2" name = "pre-commit" version = "4.1.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1222,6 +1309,7 @@ virtualenv = ">=20.10.0" name = "prompt-toolkit" version = "3.0.50" description = "Library for building powerful interactive command lines in Python" +category = "dev" optional = false python-versions = ">=3.8.0" files = [ @@ -1236,6 +1324,7 @@ wcwidth = "*" name = "propcache" version = "0.2.1" description = "Accelerated property cache" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1327,6 +1416,7 @@ files = [ name = "pydantic" version = "2.10.6" description = "Data validation using Python type hints" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1347,6 +1437,7 @@ timezone = ["tzdata"] name = "pydantic-core" version = "2.27.2" description = "Core functionality for Pydantic validation and serialization" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1459,6 +1550,7 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" name = "pygments" version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1473,6 +1565,7 @@ windows-terminal = ["colorama (>=0.4.6)"] name = "pytest" version = "8.3.4" description = "pytest: simple powerful testing with Python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1495,6 +1588,7 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments name = "pytest-asyncio" version = "0.25.3" description = "Pytest support for asyncio" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1513,6 +1607,7 @@ testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] name = "pywin32" version = "308" description = "Python for Window Extensions" +category = "dev" optional = false python-versions = "*" files = [ @@ -1540,6 +1635,7 @@ files = [ name = "pyyaml" version = "6.0.2" description = "YAML parser and emitter for Python" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1602,6 +1698,7 @@ files = [ name = "questionary" version = "2.1.0" description = "Python library to build pretty command line user prompts ⭐️" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1616,6 +1713,7 @@ prompt_toolkit = ">=2.0,<4.0" name = "requests" version = "2.32.3" description = "Python HTTP for Humans." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1633,10 +1731,26 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] +[[package]] +name = "requests-toolbelt" +version = "1.0.0" +description = "A utility belt for advanced users of python-requests" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, +] + +[package.dependencies] +requests = ">=2.0.1,<3.0.0" + [[package]] name = "ruff" version = "0.9.4" description = "An extremely fast Python linter and code formatter, written in Rust." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1664,6 +1778,7 @@ files = [ name = "six" version = "1.17.0" description = "Python 2 and 3 compatibility utilities" +category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -1675,6 +1790,7 @@ files = [ name = "snowballstemmer" version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +category = "dev" optional = false python-versions = "*" files = [ @@ -1686,6 +1802,7 @@ files = [ name = "sphinx" version = "8.1.3" description = "Python documentation generator" +category = "dev" optional = false python-versions = ">=3.10" files = [ @@ -1721,6 +1838,7 @@ test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=8.0)", "setuptools name = "sphinx-rtd-theme" version = "3.0.2" description = "Read the Docs theme for Sphinx" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1740,6 +1858,7 @@ dev = ["bump2version", "transifex-client", "twine", "wheel"] name = "sphinxcontrib-applehelp" version = "2.0.0" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1756,6 +1875,7 @@ test = ["pytest"] name = "sphinxcontrib-devhelp" version = "2.0.0" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1772,6 +1892,7 @@ test = ["pytest"] name = "sphinxcontrib-htmlhelp" version = "2.1.0" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1788,6 +1909,7 @@ test = ["html5lib", "pytest"] name = "sphinxcontrib-jquery" version = "4.1" description = "Extension to include jQuery on newer Sphinx releases" +category = "dev" optional = false python-versions = ">=2.7" files = [ @@ -1802,6 +1924,7 @@ Sphinx = ">=1.8" name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1816,6 +1939,7 @@ test = ["flake8", "mypy", "pytest"] name = "sphinxcontrib-napoleon" version = "0.7" description = "Sphinx \"napoleon\" extension." +category = "dev" optional = false python-versions = "*" files = [ @@ -1831,6 +1955,7 @@ six = ">=1.5.2" name = "sphinxcontrib-qthelp" version = "2.0.0" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1847,6 +1972,7 @@ test = ["defusedxml (>=0.7.1)", "pytest"] name = "sphinxcontrib-serializinghtml" version = "2.0.0" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1859,10 +1985,23 @@ lint = ["mypy", "ruff (==0.5.5)", "types-docutils"] standalone = ["Sphinx (>=5)"] test = ["pytest"] +[[package]] +name = "tinydb" +version = "4.8.2" +description = "TinyDB is a tiny, document oriented database optimized for your happiness :)" +category = "main" +optional = false +python-versions = "<4.0,>=3.8" +files = [ + {file = "tinydb-4.8.2-py3-none-any.whl", hash = "sha256:f97030ee5cbc91eeadd1d7af07ab0e48ceb04aa63d4a983adbaca4cba16e86c3"}, + {file = "tinydb-4.8.2.tar.gz", hash = "sha256:f7dfc39b8d7fda7a1ca62a8dbb449ffd340a117c1206b68c50b1a481fb95181d"}, +] + [[package]] name = "tomli" version = "2.2.1" description = "A lil' TOML parser" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1904,6 +2043,7 @@ files = [ name = "trame" version = "3.8.0" description = "Trame, a framework to build applications in plain Python" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1925,6 +2065,7 @@ jupyter = ["jupyterlab"] name = "trame-client" version = "3.5.2" description = "Internal client of trame" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1940,6 +2081,7 @@ test = ["Pillow", "pixelmatch", "pytest", "pytest-xprocess", "seleniumbase"] name = "trame-server" version = "3.3.0" description = "Internal server side implementation of trame" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1958,6 +2100,7 @@ dev = ["pre-commit", "pytest", "pytest-asyncio", "ruff"] name = "trame-vega" version = "2.1.1" description = "Vega widget for trame" +category = "main" optional = false python-versions = "*" files = [ @@ -1972,6 +2115,7 @@ trame-client = "*" name = "trame-vuetify" version = "2.8.1" description = "Vuetify widgets for trame" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1985,10 +2129,32 @@ trame-client = ">=3.4,<4" [package.extras] dev = ["pre-commit", "pytest", "ruff"] +[[package]] +name = "tuspy" +version = "1.1.0" +description = "A Python client for the tus resumable upload protocol -> http://tus.io" +category = "main" +optional = false +python-versions = ">=3.5.3" +files = [ + {file = "tuspy-1.1.0-py3-none-any.whl", hash = "sha256:7fc5ac8fb25de37c96c90213f83a1ffdede7f48a471cb5a15a2f57846828a79a"}, + {file = "tuspy-1.1.0.tar.gz", hash = "sha256:156734eac5c61a046cfecd70f14119f05be92cce198eb5a1a99a664482bedb89"}, +] + +[package.dependencies] +aiohttp = ">=3.6.2" +requests = ">=2.18.4" +tinydb = ">=3.5.0" + +[package.extras] +dev = ["Sphinx (==1.7.1)", "sphinx-autobuild (==2021.3.14)", "tox (>=2.3.1)"] +test = ["aioresponses (>=0.6.2)", "coverage (>=4.2)", "parametrize (>=0.1.1)", "pytest (>=3.0.3)", "pytest-cov (>=2.3.1,<2.6)", "responses (>=0.5.1)"] + [[package]] name = "typing-extensions" version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2000,6 +2166,7 @@ files = [ name = "urllib3" version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -2017,6 +2184,7 @@ zstd = ["zstandard (>=0.18.0)"] name = "virtualenv" version = "20.29.1" description = "Virtual Python Environment builder" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2037,6 +2205,7 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess name = "wcwidth" version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" +category = "dev" optional = false python-versions = "*" files = [ @@ -2048,6 +2217,7 @@ files = [ name = "wslink" version = "2.2.2" description = "Python/JavaScript library for communicating over WebSocket" +category = "main" optional = false python-versions = "*" files = [ @@ -2066,6 +2236,7 @@ ssl = ["cryptography"] name = "yarl" version = "1.18.3" description = "Yet another URL library" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -2161,4 +2332,4 @@ propcache = ">=0.2.0" [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "1131a1a151f36bbe11b4fc723d87b3b6ff1d523b617c477bea8ff7b11b8c9997" +content-hash = "5a4cbc0db131ca92dbfbfa620080878ba0b5276d9ac85c0b77f3a260b574c7ed" diff --git a/code/episode_6/poetry.lock b/code/episode_6/poetry.lock old mode 100755 new mode 100644 index a938063c..5c404ed1 --- a/code/episode_6/poetry.lock +++ b/code/episode_6/poetry.lock @@ -1,9 +1,10 @@ -# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.1 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" version = "2.4.4" description = "Happy Eyeballs for asyncio" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -13,87 +14,93 @@ files = [ [[package]] name = "aiohttp" -version = "3.11.11" +version = "3.11.12" description = "Async http client/server framework (asyncio)" +category = "main" optional = false python-versions = ">=3.9" files = [ - {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a60804bff28662cbcf340a4d61598891f12eea3a66af48ecfdc975ceec21e3c8"}, - {file = "aiohttp-3.11.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4b4fa1cb5f270fb3eab079536b764ad740bb749ce69a94d4ec30ceee1b5940d5"}, - {file = "aiohttp-3.11.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:731468f555656767cda219ab42e033355fe48c85fbe3ba83a349631541715ba2"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb23d8bb86282b342481cad4370ea0853a39e4a32a0042bb52ca6bdde132df43"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f047569d655f81cb70ea5be942ee5d4421b6219c3f05d131f64088c73bb0917f"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd7659baae9ccf94ae5fe8bfaa2c7bc2e94d24611528395ce88d009107e00c6d"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af01e42ad87ae24932138f154105e88da13ce7d202a6de93fafdafb2883a00ef"}, - {file = "aiohttp-3.11.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5854be2f3e5a729800bac57a8d76af464e160f19676ab6aea74bde18ad19d438"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6526e5fb4e14f4bbf30411216780c9967c20c5a55f2f51d3abd6de68320cc2f3"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:85992ee30a31835fc482468637b3e5bd085fa8fe9392ba0bdcbdc1ef5e9e3c55"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:88a12ad8ccf325a8a5ed80e6d7c3bdc247d66175afedbe104ee2aaca72960d8e"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:0a6d3fbf2232e3a08c41eca81ae4f1dff3d8f1a30bae415ebe0af2d2458b8a33"}, - {file = "aiohttp-3.11.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:84a585799c58b795573c7fa9b84c455adf3e1d72f19a2bf498b54a95ae0d194c"}, - {file = "aiohttp-3.11.11-cp310-cp310-win32.whl", hash = "sha256:bfde76a8f430cf5c5584553adf9926534352251d379dcb266ad2b93c54a29745"}, - {file = "aiohttp-3.11.11-cp310-cp310-win_amd64.whl", hash = "sha256:0fd82b8e9c383af11d2b26f27a478640b6b83d669440c0a71481f7c865a51da9"}, - {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ba74ec819177af1ef7f59063c6d35a214a8fde6f987f7661f4f0eecc468a8f76"}, - {file = "aiohttp-3.11.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4af57160800b7a815f3fe0eba9b46bf28aafc195555f1824555fa2cfab6c1538"}, - {file = "aiohttp-3.11.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffa336210cf9cd8ed117011085817d00abe4c08f99968deef0013ea283547204"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81b8fe282183e4a3c7a1b72f5ade1094ed1c6345a8f153506d114af5bf8accd9"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3af41686ccec6a0f2bdc66686dc0f403c41ac2089f80e2214a0f82d001052c03"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:70d1f9dde0e5dd9e292a6d4d00058737052b01f3532f69c0c65818dac26dc287"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:249cc6912405917344192b9f9ea5cd5b139d49e0d2f5c7f70bdfaf6b4dbf3a2e"}, - {file = "aiohttp-3.11.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0eb98d90b6690827dcc84c246811feeb4e1eea683c0eac6caed7549be9c84665"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ec82bf1fda6cecce7f7b915f9196601a1bd1a3079796b76d16ae4cce6d0ef89b"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9fd46ce0845cfe28f108888b3ab17abff84ff695e01e73657eec3f96d72eef34"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bd176afcf8f5d2aed50c3647d4925d0db0579d96f75a31e77cbaf67d8a87742d"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:ec2aa89305006fba9ffb98970db6c8221541be7bee4c1d027421d6f6df7d1ce2"}, - {file = "aiohttp-3.11.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:92cde43018a2e17d48bb09c79e4d4cb0e236de5063ce897a5e40ac7cb4878773"}, - {file = "aiohttp-3.11.11-cp311-cp311-win32.whl", hash = "sha256:aba807f9569455cba566882c8938f1a549f205ee43c27b126e5450dc9f83cc62"}, - {file = "aiohttp-3.11.11-cp311-cp311-win_amd64.whl", hash = "sha256:ae545f31489548c87b0cced5755cfe5a5308d00407000e72c4fa30b19c3220ac"}, - {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e595c591a48bbc295ebf47cb91aebf9bd32f3ff76749ecf282ea7f9f6bb73886"}, - {file = "aiohttp-3.11.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3ea1b59dc06396b0b424740a10a0a63974c725b1c64736ff788a3689d36c02d2"}, - {file = "aiohttp-3.11.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8811f3f098a78ffa16e0ea36dffd577eb031aea797cbdba81be039a4169e242c"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7227b87a355ce1f4bf83bfae4399b1f5bb42e0259cb9405824bd03d2f4336a"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d40f9da8cabbf295d3a9dae1295c69975b86d941bc20f0a087f0477fa0a66231"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffb3dc385f6bb1568aa974fe65da84723210e5d9707e360e9ecb51f59406cd2e"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8f5f7515f3552d899c61202d99dcb17d6e3b0de777900405611cd747cecd1b8"}, - {file = "aiohttp-3.11.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3499c7ffbfd9c6a3d8d6a2b01c26639da7e43d47c7b4f788016226b1e711caa8"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8e2bf8029dbf0810c7bfbc3e594b51c4cc9101fbffb583a3923aea184724203c"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b6212a60e5c482ef90f2d788835387070a88d52cf6241d3916733c9176d39eab"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d119fafe7b634dbfa25a8c597718e69a930e4847f0b88e172744be24515140da"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:6fba278063559acc730abf49845d0e9a9e1ba74f85f0ee6efd5803f08b285853"}, - {file = "aiohttp-3.11.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:92fc484e34b733704ad77210c7957679c5c3877bd1e6b6d74b185e9320cc716e"}, - {file = "aiohttp-3.11.11-cp312-cp312-win32.whl", hash = "sha256:9f5b3c1ed63c8fa937a920b6c1bec78b74ee09593b3f5b979ab2ae5ef60d7600"}, - {file = "aiohttp-3.11.11-cp312-cp312-win_amd64.whl", hash = "sha256:1e69966ea6ef0c14ee53ef7a3d68b564cc408121ea56c0caa2dc918c1b2f553d"}, - {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:541d823548ab69d13d23730a06f97460f4238ad2e5ed966aaf850d7c369782d9"}, - {file = "aiohttp-3.11.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:929f3ed33743a49ab127c58c3e0a827de0664bfcda566108989a14068f820194"}, - {file = "aiohttp-3.11.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0882c2820fd0132240edbb4a51eb8ceb6eef8181db9ad5291ab3332e0d71df5f"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b63de12e44935d5aca7ed7ed98a255a11e5cb47f83a9fded7a5e41c40277d104"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa54f8ef31d23c506910c21163f22b124facb573bff73930735cf9fe38bf7dff"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a344d5dc18074e3872777b62f5f7d584ae4344cd6006c17ba12103759d407af3"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7fb429ab1aafa1f48578eb315ca45bd46e9c37de11fe45c7f5f4138091e2f1"}, - {file = "aiohttp-3.11.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c341c7d868750e31961d6d8e60ff040fb9d3d3a46d77fd85e1ab8e76c3e9a5c4"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ed9ee95614a71e87f1a70bc81603f6c6760128b140bc4030abe6abaa988f1c3d"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:de8d38f1c2810fa2a4f1d995a2e9c70bb8737b18da04ac2afbf3971f65781d87"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:a9b7371665d4f00deb8f32208c7c5e652059b0fda41cf6dbcac6114a041f1cc2"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:620598717fce1b3bd14dd09947ea53e1ad510317c85dda2c9c65b622edc96b12"}, - {file = "aiohttp-3.11.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf8d9bfee991d8acc72d060d53860f356e07a50f0e0d09a8dfedea1c554dd0d5"}, - {file = "aiohttp-3.11.11-cp313-cp313-win32.whl", hash = "sha256:9d73ee3725b7a737ad86c2eac5c57a4a97793d9f442599bea5ec67ac9f4bdc3d"}, - {file = "aiohttp-3.11.11-cp313-cp313-win_amd64.whl", hash = "sha256:c7a06301c2fb096bdb0bd25fe2011531c1453b9f2c163c8031600ec73af1cc99"}, - {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3e23419d832d969f659c208557de4a123e30a10d26e1e14b73431d3c13444c2e"}, - {file = "aiohttp-3.11.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21fef42317cf02e05d3b09c028712e1d73a9606f02467fd803f7c1f39cc59add"}, - {file = "aiohttp-3.11.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1f21bb8d0235fc10c09ce1d11ffbd40fc50d3f08a89e4cf3a0c503dc2562247a"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1642eceeaa5ab6c9b6dfeaaa626ae314d808188ab23ae196a34c9d97efb68350"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2170816e34e10f2fd120f603e951630f8a112e1be3b60963a1f159f5699059a6"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8be8508d110d93061197fd2d6a74f7401f73b6d12f8822bbcd6d74f2b55d71b1"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4eed954b161e6b9b65f6be446ed448ed3921763cc432053ceb606f89d793927e"}, - {file = "aiohttp-3.11.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6c9af134da4bc9b3bd3e6a70072509f295d10ee60c697826225b60b9959acdd"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:44167fc6a763d534a6908bdb2592269b4bf30a03239bcb1654781adf5e49caf1"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:479b8c6ebd12aedfe64563b85920525d05d394b85f166b7873c8bde6da612f9c"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:10b4ff0ad793d98605958089fabfa350e8e62bd5d40aa65cdc69d6785859f94e"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:b540bd67cfb54e6f0865ceccd9979687210d7ed1a1cc8c01f8e67e2f1e883d28"}, - {file = "aiohttp-3.11.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1dac54e8ce2ed83b1f6b1a54005c87dfed139cf3f777fdc8afc76e7841101226"}, - {file = "aiohttp-3.11.11-cp39-cp39-win32.whl", hash = "sha256:568c1236b2fde93b7720f95a890741854c1200fba4a3471ff48b2934d2d93fd3"}, - {file = "aiohttp-3.11.11-cp39-cp39-win_amd64.whl", hash = "sha256:943a8b052e54dfd6439fd7989f67fc6a7f2138d0a2cf0a7de5f18aa4fe7eb3b1"}, - {file = "aiohttp-3.11.11.tar.gz", hash = "sha256:bb49c7f1e6ebf3821a42d81d494f538107610c3a705987f53068546b0e90303e"}, + {file = "aiohttp-3.11.12-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:aa8a8caca81c0a3e765f19c6953416c58e2f4cc1b84829af01dd1c771bb2f91f"}, + {file = "aiohttp-3.11.12-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:84ede78acde96ca57f6cf8ccb8a13fbaf569f6011b9a52f870c662d4dc8cd854"}, + {file = "aiohttp-3.11.12-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:584096938a001378484aa4ee54e05dc79c7b9dd933e271c744a97b3b6f644957"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:392432a2dde22b86f70dd4a0e9671a349446c93965f261dbaecfaf28813e5c42"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:88d385b8e7f3a870146bf5ea31786ef7463e99eb59e31db56e2315535d811f55"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b10a47e5390c4b30a0d58ee12581003be52eedd506862ab7f97da7a66805befb"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b5263dcede17b6b0c41ef0c3ccce847d82a7da98709e75cf7efde3e9e3b5cae"}, + {file = "aiohttp-3.11.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50c5c7b8aa5443304c55c262c5693b108c35a3b61ef961f1e782dd52a2f559c7"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d1c031a7572f62f66f1257db37ddab4cb98bfaf9b9434a3b4840bf3560f5e788"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:7e44eba534381dd2687be50cbd5f2daded21575242ecfdaf86bbeecbc38dae8e"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:145a73850926018ec1681e734cedcf2716d6a8697d90da11284043b745c286d5"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:2c311e2f63e42c1bf86361d11e2c4a59f25d9e7aabdbdf53dc38b885c5435cdb"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ea756b5a7bac046d202a9a3889b9a92219f885481d78cd318db85b15cc0b7bcf"}, + {file = "aiohttp-3.11.12-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:526c900397f3bbc2db9cb360ce9c35134c908961cdd0ac25b1ae6ffcaa2507ff"}, + {file = "aiohttp-3.11.12-cp310-cp310-win32.whl", hash = "sha256:b8d3bb96c147b39c02d3db086899679f31958c5d81c494ef0fc9ef5bb1359b3d"}, + {file = "aiohttp-3.11.12-cp310-cp310-win_amd64.whl", hash = "sha256:7fe3d65279bfbee8de0fb4f8c17fc4e893eed2dba21b2f680e930cc2b09075c5"}, + {file = "aiohttp-3.11.12-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:87a2e00bf17da098d90d4145375f1d985a81605267e7f9377ff94e55c5d769eb"}, + {file = "aiohttp-3.11.12-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b34508f1cd928ce915ed09682d11307ba4b37d0708d1f28e5774c07a7674cac9"}, + {file = "aiohttp-3.11.12-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:936d8a4f0f7081327014742cd51d320296b56aa6d324461a13724ab05f4b2933"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2de1378f72def7dfb5dbd73d86c19eda0ea7b0a6873910cc37d57e80f10d64e1"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9d45dbb3aaec05cf01525ee1a7ac72de46a8c425cb75c003acd29f76b1ffe94"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:930ffa1925393381e1e0a9b82137fa7b34c92a019b521cf9f41263976666a0d6"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8340def6737118f5429a5df4e88f440746b791f8f1c4ce4ad8a595f42c980bd5"}, + {file = "aiohttp-3.11.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4016e383f91f2814e48ed61e6bda7d24c4d7f2402c75dd28f7e1027ae44ea204"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c0600bcc1adfaaac321422d615939ef300df81e165f6522ad096b73439c0f58"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:0450ada317a65383b7cce9576096150fdb97396dcfe559109b403c7242faffef"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:850ff6155371fd802a280f8d369d4e15d69434651b844bde566ce97ee2277420"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8fd12d0f989c6099e7b0f30dc6e0d1e05499f3337461f0b2b0dadea6c64b89df"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:76719dd521c20a58a6c256d058547b3a9595d1d885b830013366e27011ffe804"}, + {file = "aiohttp-3.11.12-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:97fe431f2ed646a3b56142fc81d238abcbaff08548d6912acb0b19a0cadc146b"}, + {file = "aiohttp-3.11.12-cp311-cp311-win32.whl", hash = "sha256:e10c440d142fa8b32cfdb194caf60ceeceb3e49807072e0dc3a8887ea80e8c16"}, + {file = "aiohttp-3.11.12-cp311-cp311-win_amd64.whl", hash = "sha256:246067ba0cf5560cf42e775069c5d80a8989d14a7ded21af529a4e10e3e0f0e6"}, + {file = "aiohttp-3.11.12-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e392804a38353900c3fd8b7cacbea5132888f7129f8e241915e90b85f00e3250"}, + {file = "aiohttp-3.11.12-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8fa1510b96c08aaad49303ab11f8803787c99222288f310a62f493faf883ede1"}, + {file = "aiohttp-3.11.12-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dc065a4285307607df3f3686363e7f8bdd0d8ab35f12226362a847731516e42c"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddb31f8474695cd61fc9455c644fc1606c164b93bff2490390d90464b4655df"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dec0000d2d8621d8015c293e24589d46fa218637d820894cb7356c77eca3259"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e3552fe98e90fdf5918c04769f338a87fa4f00f3b28830ea9b78b1bdc6140e0d"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dfe7f984f28a8ae94ff3a7953cd9678550dbd2a1f9bda5dd9c5ae627744c78e"}, + {file = "aiohttp-3.11.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a481a574af914b6e84624412666cbfbe531a05667ca197804ecc19c97b8ab1b0"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1987770fb4887560363b0e1a9b75aa303e447433c41284d3af2840a2f226d6e0"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:a4ac6a0f0f6402854adca4e3259a623f5c82ec3f0c049374133bcb243132baf9"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c96a43822f1f9f69cc5c3706af33239489a6294be486a0447fb71380070d4d5f"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a5e69046f83c0d3cb8f0d5bd9b8838271b1bc898e01562a04398e160953e8eb9"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:68d54234c8d76d8ef74744f9f9fc6324f1508129e23da8883771cdbb5818cbef"}, + {file = "aiohttp-3.11.12-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c9fd9dcf9c91affe71654ef77426f5cf8489305e1c66ed4816f5a21874b094b9"}, + {file = "aiohttp-3.11.12-cp312-cp312-win32.whl", hash = "sha256:0ed49efcd0dc1611378beadbd97beb5d9ca8fe48579fc04a6ed0844072261b6a"}, + {file = "aiohttp-3.11.12-cp312-cp312-win_amd64.whl", hash = "sha256:54775858c7f2f214476773ce785a19ee81d1294a6bedc5cc17225355aab74802"}, + {file = "aiohttp-3.11.12-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:413ad794dccb19453e2b97c2375f2ca3cdf34dc50d18cc2693bd5aed7d16f4b9"}, + {file = "aiohttp-3.11.12-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4a93d28ed4b4b39e6f46fd240896c29b686b75e39cc6992692e3922ff6982b4c"}, + {file = "aiohttp-3.11.12-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d589264dbba3b16e8951b6f145d1e6b883094075283dafcab4cdd564a9e353a0"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5148ca8955affdfeb864aca158ecae11030e952b25b3ae15d4e2b5ba299bad2"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:525410e0790aab036492eeea913858989c4cb070ff373ec3bc322d700bdf47c1"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bd8695be2c80b665ae3f05cb584093a1e59c35ecb7d794d1edd96e8cc9201d7"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0203433121484b32646a5f5ea93ae86f3d9559d7243f07e8c0eab5ff8e3f70e"}, + {file = "aiohttp-3.11.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40cd36749a1035c34ba8d8aaf221b91ca3d111532e5ccb5fa8c3703ab1b967ed"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a7442662afebbf7b4c6d28cb7aab9e9ce3a5df055fc4116cc7228192ad6cb484"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:8a2fb742ef378284a50766e985804bd6adb5adb5aa781100b09befdbfa757b65"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2cee3b117a8d13ab98b38d5b6bdcd040cfb4181068d05ce0c474ec9db5f3c5bb"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f6a19bcab7fbd8f8649d6595624856635159a6527861b9cdc3447af288a00c00"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e4cecdb52aaa9994fbed6b81d4568427b6002f0a91c322697a4bfcc2b2363f5a"}, + {file = "aiohttp-3.11.12-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:30f546358dfa0953db92ba620101fefc81574f87b2346556b90b5f3ef16e55ce"}, + {file = "aiohttp-3.11.12-cp313-cp313-win32.whl", hash = "sha256:ce1bb21fc7d753b5f8a5d5a4bae99566386b15e716ebdb410154c16c91494d7f"}, + {file = "aiohttp-3.11.12-cp313-cp313-win_amd64.whl", hash = "sha256:f7914ab70d2ee8ab91c13e5402122edbc77821c66d2758abb53aabe87f013287"}, + {file = "aiohttp-3.11.12-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c3623053b85b4296cd3925eeb725e386644fd5bc67250b3bb08b0f144803e7b"}, + {file = "aiohttp-3.11.12-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:67453e603cea8e85ed566b2700efa1f6916aefbc0c9fcb2e86aaffc08ec38e78"}, + {file = "aiohttp-3.11.12-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6130459189e61baac5a88c10019b21e1f0c6d00ebc770e9ce269475650ff7f73"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9060addfa4ff753b09392efe41e6af06ea5dd257829199747b9f15bfad819460"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:34245498eeb9ae54c687a07ad7f160053911b5745e186afe2d0c0f2898a1ab8a"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8dc0fba9a74b471c45ca1a3cb6e6913ebfae416678d90529d188886278e7f3f6"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a478aa11b328983c4444dacb947d4513cb371cd323f3845e53caeda6be5589d5"}, + {file = "aiohttp-3.11.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c160a04283c8c6f55b5bf6d4cad59bb9c5b9c9cd08903841b25f1f7109ef1259"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:edb69b9589324bdc40961cdf0657815df674f1743a8d5ad9ab56a99e4833cfdd"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:4ee84c2a22a809c4f868153b178fe59e71423e1f3d6a8cd416134bb231fbf6d3"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:bf4480a5438f80e0f1539e15a7eb8b5f97a26fe087e9828e2c0ec2be119a9f72"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:e6b2732ef3bafc759f653a98881b5b9cdef0716d98f013d376ee8dfd7285abf1"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:f752e80606b132140883bb262a457c475d219d7163d996dc9072434ffb0784c4"}, + {file = "aiohttp-3.11.12-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ab3247d58b393bda5b1c8f31c9edece7162fc13265334217785518dd770792b8"}, + {file = "aiohttp-3.11.12-cp39-cp39-win32.whl", hash = "sha256:0d5176f310a7fe6f65608213cc74f4228e4f4ce9fd10bcb2bb6da8fc66991462"}, + {file = "aiohttp-3.11.12-cp39-cp39-win_amd64.whl", hash = "sha256:74bd573dde27e58c760d9ca8615c41a57e719bff315c9adb6f2a4281a28e8798"}, + {file = "aiohttp-3.11.12.tar.gz", hash = "sha256:7603ca26d75b1b86160ce1bbe2787a0b706e592af5b2504e12caa88a217767b0"}, ] [package.dependencies] @@ -113,6 +120,7 @@ speedups = ["Brotli", "aiodns (>=3.2.0)", "brotlicffi"] name = "aiosignal" version = "1.3.2" description = "aiosignal: a list of registered asynchronous callbacks" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -127,6 +135,7 @@ frozenlist = ">=1.1.0" name = "alabaster" version = "1.0.0" description = "A light, configurable Sphinx theme" +category = "dev" optional = false python-versions = ">=3.10" files = [ @@ -138,6 +147,7 @@ files = [ name = "annotated-types" version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -149,6 +159,7 @@ files = [ name = "async-timeout" version = "5.0.1" description = "Timeout context manager for asyncio programs" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -160,6 +171,7 @@ files = [ name = "attrs" version = "25.1.0" description = "Classes Without Boilerplate" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -179,6 +191,7 @@ tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] name = "babel" version = "2.17.0" description = "Internationalization utilities" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -193,6 +206,7 @@ dev = ["backports.zoneinfo", "freezegun (>=1.0,<2.0)", "jinja2 (>=3.0)", "pytest name = "bioblend" version = "1.4.0" description = "Library for interacting with the Galaxy API" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -212,6 +226,7 @@ testing = ["pytest"] name = "certifi" version = "2025.1.31" description = "Python package for providing Mozilla's CA Bundle." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -223,6 +238,7 @@ files = [ name = "cfgv" version = "3.4.0" description = "Validate configuration and produce human readable error messages." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -234,6 +250,7 @@ files = [ name = "charset-normalizer" version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -335,6 +352,7 @@ files = [ name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -346,6 +364,7 @@ files = [ name = "copier" version = "9.4.1" description = "A library for rendering project templates." +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -371,6 +390,7 @@ questionary = ">=1.8.1" name = "coverage" version = "7.6.10" description = "Code coverage measurement for Python" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -445,6 +465,7 @@ toml = ["tomli"] name = "deepdiff" version = "8.2.0" description = "Deep Difference and Search of any Python object/data. Recreate objects by adding adding deltas to each other." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -463,6 +484,7 @@ optimize = ["orjson"] name = "distlib" version = "0.3.9" description = "Distribution utilities" +category = "dev" optional = false python-versions = "*" files = [ @@ -474,6 +496,7 @@ files = [ name = "docutils" version = "0.21.2" description = "Docutils -- Python Documentation Utilities" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -485,6 +508,7 @@ files = [ name = "dunamai" version = "1.23.0" description = "Dynamic version generation" +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -499,6 +523,7 @@ packaging = ">=20.9" name = "exceptiongroup" version = "1.2.2" description = "Backport of PEP 654 (exception groups)" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -513,6 +538,7 @@ test = ["pytest (>=6)"] name = "filelock" version = "3.17.0" description = "A platform independent file lock." +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -529,6 +555,7 @@ typing = ["typing-extensions (>=4.12.2)"] name = "frozenlist" version = "1.5.0" description = "A list-like structure which implements collections.abc.MutableSequence" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -630,6 +657,7 @@ files = [ name = "funcy" version = "2.0" description = "A fancy and practical functional tools" +category = "dev" optional = false python-versions = "*" files = [ @@ -641,6 +669,7 @@ files = [ name = "identify" version = "2.6.6" description = "File identification library for Python" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -655,6 +684,7 @@ license = ["ukkonen"] name = "idna" version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -669,6 +699,7 @@ all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2 name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -680,6 +711,7 @@ files = [ name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -691,6 +723,7 @@ files = [ name = "jinja2" version = "3.1.5" description = "A very fast and expressive template engine." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -708,6 +741,7 @@ i18n = ["Babel (>=2.7)"] name = "jinja2-ansible-filters" version = "1.3.2" description = "A port of Ansible's jinja2 filters without requiring ansible core." +category = "dev" optional = false python-versions = "*" files = [ @@ -726,6 +760,7 @@ test = ["pytest", "pytest-cov"] name = "libsass" version = "0.23.0" description = "Sass for Python: A straightforward binding of libsass for Python." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -741,6 +776,7 @@ files = [ name = "markupsafe" version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -811,6 +847,7 @@ files = [ name = "mergedeep" version = "1.3.4" description = "A deep merge function for 🐍." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -822,6 +859,7 @@ files = [ name = "more-itertools" version = "10.6.0" description = "More routines for operating on iterables, beyond itertools" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -833,6 +871,7 @@ files = [ name = "msgpack" version = "1.1.0" description = "MessagePack serializer" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -906,6 +945,7 @@ files = [ name = "multidict" version = "6.1.0" description = "multidict implementation" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1010,6 +1050,7 @@ typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""} name = "mypy" version = "1.15.0" description = "Optional static typing for Python" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1063,6 +1104,7 @@ reports = ["lxml"] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1074,6 +1116,7 @@ files = [ name = "nodeenv" version = "1.9.1" description = "Node.js virtual environment builder" +category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -1085,6 +1128,7 @@ files = [ name = "nova-galaxy" version = "0.4.0" description = "Utilties for accessing the ORNL Galaxy instance" +category = "main" optional = false python-versions = "<4.0,>=3.10" files = [ @@ -1099,6 +1143,7 @@ tomli = ">=2.0.2,<3.0.0" name = "nova-mvvm" version = "0.9.0" description = "A Python Package for Model-View-ViewModel pattern" +category = "main" optional = false python-versions = "<4.0,>=3.10" files = [ @@ -1119,6 +1164,7 @@ pyqt6 = ["pyqt6 (>=6.7.0,<7.0.0)"] name = "nova-trame" version = "0.14.2" description = "A Python Package for injecting curated themes and custom components into Trame applications" +category = "main" optional = false python-versions = "<4.0,>=3.10" files = [ @@ -1139,6 +1185,7 @@ trame-vuetify = "*" name = "orderly-set" version = "5.3.0" description = "Orderly set" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1150,6 +1197,7 @@ files = [ name = "packaging" version = "24.2" description = "Core utilities for Python packages" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1161,6 +1209,7 @@ files = [ name = "pathspec" version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1172,6 +1221,7 @@ files = [ name = "platformdirs" version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1188,6 +1238,7 @@ type = ["mypy (>=1.11.2)"] name = "pluggy" version = "1.5.0" description = "plugin and hook calling mechanisms for python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1203,6 +1254,7 @@ testing = ["pytest", "pytest-benchmark"] name = "plumbum" version = "1.9.0" description = "Plumbum: shell combinators library" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1223,6 +1275,7 @@ test = ["coverage[toml]", "paramiko", "psutil", "pytest (>=6.0)", "pytest-cov", name = "pockets" version = "0.9.1" description = "A collection of helpful Python tools!" +category = "dev" optional = false python-versions = "*" files = [ @@ -1237,6 +1290,7 @@ six = ">=1.5.2" name = "pre-commit" version = "4.1.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1255,6 +1309,7 @@ virtualenv = ">=20.10.0" name = "prompt-toolkit" version = "3.0.50" description = "Library for building powerful interactive command lines in Python" +category = "dev" optional = false python-versions = ">=3.8.0" files = [ @@ -1269,6 +1324,7 @@ wcwidth = "*" name = "propcache" version = "0.2.1" description = "Accelerated property cache" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1360,6 +1416,7 @@ files = [ name = "pydantic" version = "2.10.6" description = "Data validation using Python type hints" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1380,6 +1437,7 @@ timezone = ["tzdata"] name = "pydantic-core" version = "2.27.2" description = "Core functionality for Pydantic validation and serialization" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1492,6 +1550,7 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" name = "pygments" version = "2.19.1" description = "Pygments is a syntax highlighting package written in Python." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1506,6 +1565,7 @@ windows-terminal = ["colorama (>=0.4.6)"] name = "pytest" version = "8.3.4" description = "pytest: simple powerful testing with Python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1528,6 +1588,7 @@ dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments name = "pytest-asyncio" version = "0.25.3" description = "Pytest support for asyncio" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1546,6 +1607,7 @@ testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] name = "pywin32" version = "308" description = "Python for Window Extensions" +category = "dev" optional = false python-versions = "*" files = [ @@ -1573,6 +1635,7 @@ files = [ name = "pyyaml" version = "6.0.2" description = "YAML parser and emitter for Python" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1635,6 +1698,7 @@ files = [ name = "questionary" version = "2.1.0" description = "Python library to build pretty command line user prompts ⭐️" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1649,6 +1713,7 @@ prompt_toolkit = ">=2.0,<4.0" name = "requests" version = "2.32.3" description = "Python HTTP for Humans." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1670,6 +1735,7 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "requests-toolbelt" version = "1.0.0" description = "A utility belt for advanced users of python-requests" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1684,6 +1750,7 @@ requests = ">=2.0.1,<3.0.0" name = "ruff" version = "0.9.4" description = "An extremely fast Python linter and code formatter, written in Rust." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1711,6 +1778,7 @@ files = [ name = "six" version = "1.17.0" description = "Python 2 and 3 compatibility utilities" +category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -1722,6 +1790,7 @@ files = [ name = "snowballstemmer" version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +category = "dev" optional = false python-versions = "*" files = [ @@ -1733,6 +1802,7 @@ files = [ name = "sphinx" version = "8.1.3" description = "Python documentation generator" +category = "dev" optional = false python-versions = ">=3.10" files = [ @@ -1768,6 +1838,7 @@ test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=8.0)", "setuptools name = "sphinx-rtd-theme" version = "3.0.2" description = "Read the Docs theme for Sphinx" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1787,6 +1858,7 @@ dev = ["bump2version", "transifex-client", "twine", "wheel"] name = "sphinxcontrib-applehelp" version = "2.0.0" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1803,6 +1875,7 @@ test = ["pytest"] name = "sphinxcontrib-devhelp" version = "2.0.0" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1819,6 +1892,7 @@ test = ["pytest"] name = "sphinxcontrib-htmlhelp" version = "2.1.0" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1835,6 +1909,7 @@ test = ["html5lib", "pytest"] name = "sphinxcontrib-jquery" version = "4.1" description = "Extension to include jQuery on newer Sphinx releases" +category = "dev" optional = false python-versions = ">=2.7" files = [ @@ -1849,6 +1924,7 @@ Sphinx = ">=1.8" name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1863,6 +1939,7 @@ test = ["flake8", "mypy", "pytest"] name = "sphinxcontrib-napoleon" version = "0.7" description = "Sphinx \"napoleon\" extension." +category = "dev" optional = false python-versions = "*" files = [ @@ -1878,6 +1955,7 @@ six = ">=1.5.2" name = "sphinxcontrib-qthelp" version = "2.0.0" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1894,6 +1972,7 @@ test = ["defusedxml (>=0.7.1)", "pytest"] name = "sphinxcontrib-serializinghtml" version = "2.0.0" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" +category = "dev" optional = false python-versions = ">=3.9" files = [ @@ -1910,6 +1989,7 @@ test = ["pytest"] name = "tinydb" version = "4.8.2" description = "TinyDB is a tiny, document oriented database optimized for your happiness :)" +category = "main" optional = false python-versions = "<4.0,>=3.8" files = [ @@ -1921,6 +2001,7 @@ files = [ name = "tomli" version = "2.2.1" description = "A lil' TOML parser" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1962,6 +2043,7 @@ files = [ name = "trame" version = "3.8.0" description = "Trame, a framework to build applications in plain Python" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1983,6 +2065,7 @@ jupyter = ["jupyterlab"] name = "trame-client" version = "3.5.2" description = "Internal client of trame" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1998,6 +2081,7 @@ test = ["Pillow", "pixelmatch", "pytest", "pytest-xprocess", "seleniumbase"] name = "trame-server" version = "3.3.0" description = "Internal server side implementation of trame" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2016,6 +2100,7 @@ dev = ["pre-commit", "pytest", "pytest-asyncio", "ruff"] name = "trame-vega" version = "2.1.1" description = "Vega widget for trame" +category = "main" optional = false python-versions = "*" files = [ @@ -2030,6 +2115,7 @@ trame-client = "*" name = "trame-vuetify" version = "2.8.1" description = "Vuetify widgets for trame" +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -2047,6 +2133,7 @@ dev = ["pre-commit", "pytest", "ruff"] name = "tuspy" version = "1.1.0" description = "A Python client for the tus resumable upload protocol -> http://tus.io" +category = "main" optional = false python-versions = ">=3.5.3" files = [ @@ -2067,6 +2154,7 @@ test = ["aioresponses (>=0.6.2)", "coverage (>=4.2)", "parametrize (>=0.1.1)", " name = "typing-extensions" version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2078,6 +2166,7 @@ files = [ name = "urllib3" version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" optional = false python-versions = ">=3.9" files = [ @@ -2095,6 +2184,7 @@ zstd = ["zstandard (>=0.18.0)"] name = "virtualenv" version = "20.29.1" description = "Virtual Python Environment builder" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2115,6 +2205,7 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess name = "wcwidth" version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" +category = "dev" optional = false python-versions = "*" files = [ @@ -2126,6 +2217,7 @@ files = [ name = "wslink" version = "2.2.2" description = "Python/JavaScript library for communicating over WebSocket" +category = "main" optional = false python-versions = "*" files = [ @@ -2144,6 +2236,7 @@ ssl = ["cryptography"] name = "yarl" version = "1.18.3" description = "Yet another URL library" +category = "main" optional = false python-versions = ">=3.9" files = [ diff --git a/code/episode_6/src/nova_tutorial/app/models/sample_tab_models.py b/code/episode_6/src/nova_tutorial/app/models/sample_tab_models.py index 134a72ae..5bedf753 100755 --- a/code/episode_6/src/nova_tutorial/app/models/sample_tab_models.py +++ b/code/episode_6/src/nova_tutorial/app/models/sample_tab_models.py @@ -3,8 +3,8 @@ from pydantic import BaseModel, Field class SampleTab1Model(BaseModel): """Data model for Sample Tab 1.""" username: str = Field(default="test_user", min_length=3, title="Username", description="Your username.") - firstName: str = Field(default="", title="First Name") - lastName: str = Field(default="", title="Last Name") + firstName: str = Field(default="", pattern="^[a-zA-Z]+$", title="First Name") + lastName: str = Field(default="", pattern="^[a-zA-Z]+$", title="Last Name") rememberMe: bool = Field(default=False, title="Remember Me") enableNotifications: bool = Field(default=True, title="Enable Notifications") -- GitLab From 86259fe3f6c664142e1b2b4fe1104598ae0938b4 Mon Sep 17 00:00:00 2001 From: "Ayres, Andrew" Date: Thu, 6 Feb 2025 11:55:30 -0600 Subject: [PATCH 6/9] Lots of random fixes --- code/episode_7/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/episode_7/pyproject.toml b/code/episode_7/pyproject.toml index 4f452f8a..9dde56fb 100755 --- a/code/episode_7/pyproject.toml +++ b/code/episode_7/pyproject.toml @@ -14,7 +14,7 @@ packages = [ [tool.poetry.dependencies] python = "^3.10" -nova-galaxy = "^0.4.0" +nova-galaxy = "^0.7.0" nova-mvvm = "0.9.0" nova-trame = "0.14.0" pandas = "^2.2.3" -- GitLab From 431e12a968e6f79ac40bbf2d27155eaf280b652c Mon Sep 17 00:00:00 2001 From: "Ayres, Andrew" Date: Thu, 6 Feb 2025 11:56:08 -0600 Subject: [PATCH 7/9] Lots of random fixes --- code/episode_3/pyproject.toml | 2 +- .../src/nova_tutorial/app/models/fractal.py | 6 +++--- code/episode_4/pyproject.toml | 2 +- .../src/nova_tutorial/app/models/fractal.py | 6 +++--- code/episode_5/pyproject.toml | 2 +- .../src/nova_tutorial/app/models/fractal.py | 6 +++--- code/episode_6/pyproject.toml | 2 +- .../src/nova_tutorial/app/models/fractal.py | 6 +++--- episodes/01-Introduction.md | 2 ++ episodes/03-Nova-Galaxy.md | 6 +++++- episodes/04-MVVM-Deisgn-Pattern.md | 2 +- episodes/fig/Topaz.png | Bin 0 -> 91058 bytes episodes/fig/pyvista_bone_break.png | Bin 0 -> 165833 bytes 13 files changed, 24 insertions(+), 18 deletions(-) create mode 100644 episodes/fig/Topaz.png create mode 100644 episodes/fig/pyvista_bone_break.png diff --git a/code/episode_3/pyproject.toml b/code/episode_3/pyproject.toml index 13d8b571..1237ea40 100755 --- a/code/episode_3/pyproject.toml +++ b/code/episode_3/pyproject.toml @@ -15,7 +15,7 @@ packages = [ [tool.poetry.dependencies] python = "^3.10" nova-trame = "*" -nova-galaxy = "^0.4.0" +nova-galaxy = "^0.7.0" [build-system] requires = ["poetry-core"] diff --git a/code/episode_3/src/nova_tutorial/app/models/fractal.py b/code/episode_3/src/nova_tutorial/app/models/fractal.py index 542f4ed8..b1602f2a 100755 --- a/code/episode_3/src/nova_tutorial/app/models/fractal.py +++ b/code/episode_3/src/nova_tutorial/app/models/fractal.py @@ -1,5 +1,5 @@ import os -from nova.galaxy import Nova, Parameters, Tool +from nova.galaxy import Connection, Parameters, Tool class Fractal: @@ -18,12 +18,12 @@ class Fractal: "You must specify GALAXY_URL and GALAXY_API_KEY as environment variables." ) - nova = Nova(galaxy_url=self.galaxy_url, galaxy_key=self.galaxy_key) + conn = Connection(galaxy_url=self.galaxy_url, galaxy_key=self.galaxy_key) tool = Tool(id="neutrons_fractal") params = Parameters() params.add_input(name="option", value=self.fractal_type) - with nova.connect() as galaxy_connection: + with conn.connect() as galaxy_connection: data_store = galaxy_connection.create_data_store(name="fractal_store") data_store.persist() output = tool.run(data_store, params) diff --git a/code/episode_4/pyproject.toml b/code/episode_4/pyproject.toml index 13d8b571..1237ea40 100755 --- a/code/episode_4/pyproject.toml +++ b/code/episode_4/pyproject.toml @@ -15,7 +15,7 @@ packages = [ [tool.poetry.dependencies] python = "^3.10" nova-trame = "*" -nova-galaxy = "^0.4.0" +nova-galaxy = "^0.7.0" [build-system] requires = ["poetry-core"] diff --git a/code/episode_4/src/nova_tutorial/app/models/fractal.py b/code/episode_4/src/nova_tutorial/app/models/fractal.py index 0a0bfdc7..86f95cc9 100755 --- a/code/episode_4/src/nova_tutorial/app/models/fractal.py +++ b/code/episode_4/src/nova_tutorial/app/models/fractal.py @@ -3,7 +3,7 @@ import base64 from typing import Literal from pydantic import BaseModel, Field -from nova.galaxy import Nova, Parameters, Tool +from nova.galaxy import Connection, Parameters, Tool class Fractal(BaseModel): @@ -22,11 +22,11 @@ class Fractal(BaseModel): "You must specify GALAXY_URL and GALAXY_API_KEY as environment variables." ) - nova = Nova(galaxy_url=self.galaxy_url, galaxy_key=self.galaxy_key) + conn = Connection(galaxy_url=self.galaxy_url, galaxy_key=self.galaxy_key) tool = Tool(id="neutrons_fractal") params = Parameters() - with nova.connect() as galaxy_connection: + with conn.connect() as galaxy_connection: data_store = galaxy_connection.create_data_store(name="fractal_store") data_store.persist() output = tool.run(data_store, params) diff --git a/code/episode_5/pyproject.toml b/code/episode_5/pyproject.toml index 13d8b571..1237ea40 100755 --- a/code/episode_5/pyproject.toml +++ b/code/episode_5/pyproject.toml @@ -15,7 +15,7 @@ packages = [ [tool.poetry.dependencies] python = "^3.10" nova-trame = "*" -nova-galaxy = "^0.4.0" +nova-galaxy = "^0.7.0" [build-system] requires = ["poetry-core"] diff --git a/code/episode_5/src/nova_tutorial/app/models/fractal.py b/code/episode_5/src/nova_tutorial/app/models/fractal.py index 7c5a5e5c..2a06b71b 100755 --- a/code/episode_5/src/nova_tutorial/app/models/fractal.py +++ b/code/episode_5/src/nova_tutorial/app/models/fractal.py @@ -1,6 +1,6 @@ import os from pydantic import BaseModel, Field -from nova.galaxy import Nova, Parameters, Tool +from nova.galaxy import Connection, Parameters, Tool class Fractal(BaseModel): @@ -18,11 +18,11 @@ class Fractal(BaseModel): "You must specify GALAXY_URL and GALAXY_API_KEY as environment variables." ) - nova = Nova(galaxy_url=self.galaxy_url, galaxy_key=self.galaxy_key) + conn = Connection(galaxy_url=self.galaxy_url, galaxy_key=self.galaxy_key) tool = Tool(id="neutrons_fractal") params = Parameters() - with nova.connect() as galaxy_connection: + with conn.connect() as galaxy_connection: data_store = galaxy_connection.create_data_store(name="fractal_store") data_store.persist() tool.run(data_store, params) diff --git a/code/episode_6/pyproject.toml b/code/episode_6/pyproject.toml index 13d8b571..1237ea40 100755 --- a/code/episode_6/pyproject.toml +++ b/code/episode_6/pyproject.toml @@ -15,7 +15,7 @@ packages = [ [tool.poetry.dependencies] python = "^3.10" nova-trame = "*" -nova-galaxy = "^0.4.0" +nova-galaxy = "^0.7.0" [build-system] requires = ["poetry-core"] diff --git a/code/episode_6/src/nova_tutorial/app/models/fractal.py b/code/episode_6/src/nova_tutorial/app/models/fractal.py index 7c5a5e5c..2a06b71b 100755 --- a/code/episode_6/src/nova_tutorial/app/models/fractal.py +++ b/code/episode_6/src/nova_tutorial/app/models/fractal.py @@ -1,6 +1,6 @@ import os from pydantic import BaseModel, Field -from nova.galaxy import Nova, Parameters, Tool +from nova.galaxy import Connection, Parameters, Tool class Fractal(BaseModel): @@ -18,11 +18,11 @@ class Fractal(BaseModel): "You must specify GALAXY_URL and GALAXY_API_KEY as environment variables." ) - nova = Nova(galaxy_url=self.galaxy_url, galaxy_key=self.galaxy_key) + conn = Connection(galaxy_url=self.galaxy_url, galaxy_key=self.galaxy_key) tool = Tool(id="neutrons_fractal") params = Parameters() - with nova.connect() as galaxy_connection: + with conn.connect() as galaxy_connection: data_store = galaxy_connection.create_data_store(name="fractal_store") data_store.persist() tool.run(data_store, params) diff --git a/episodes/01-Introduction.md b/episodes/01-Introduction.md index 98e389fe..9fd96055 100755 --- a/episodes/01-Introduction.md +++ b/episodes/01-Introduction.md @@ -41,6 +41,8 @@ NOVA is a framework that aims to simplify the development of applications that i * **`nova-mvvm`**: This library simplifies implementation of the Model-View-ViewModel (MVVM) design pattern. By utilizing this library, users can create structured applications that are more testable and easier to maintain. +## NDIP and NOVA Together + To better understand how NOVA works with NDIP, consider this simplified architecture: NOTE: THIS WILL BE REPLACED WITH AN ACTUAL DIAGRAM ONCE CHANGES SETTLE diff --git a/episodes/03-Nova-Galaxy.md b/episodes/03-Nova-Galaxy.md index eab7da60..b657b1b7 100755 --- a/episodes/03-Nova-Galaxy.md +++ b/episodes/03-Nova-Galaxy.md @@ -45,7 +45,7 @@ The basic workflow for running a tool with `nova-galaxy` involves these steps: 3. **Set Parameters**: Create a `Parameters` instance and add the necessary input parameters and their values for the tool. 4. **Run the Tool**: Use the `tool.run()` method to submit the job to NDIP. This typically involves creating a datastore to hold the job\'s input and output data. -## Creating a Model of a Tool +## Running the Fractal tool Let\'s create a `Fractal` class that uses `nova-galaxy` to run the `neutrons_fractal` tool on NDIP. You can find the complete code for this episode in the `code/episode_3` directory. Here, we will focus on the key code snippets and explain the important parts. @@ -120,6 +120,10 @@ By default, trame will open a new tab in the browser and bring it to focus. If t At times, it may be desirable to execute a tool or workflow without waiting on the result. The class Tool method run has an optional `wait` parameter. The default is true so that the tool is run in a blocking manner. However, by setting the parameter to false, the tool will be run asynchronously in a non-blocking manner. +``` + output = tool.run(data_store, params, wait=False) +``` + ## Next Steps In this section, you learned how to use the `nova-galaxy` library to run a tool on NDIP. In the next sections, we will expand on this to create a full user interface to make this functionality accessible to the end user. diff --git a/episodes/04-MVVM-Deisgn-Pattern.md b/episodes/04-MVVM-Deisgn-Pattern.md index 34e23fbb..8185956e 100755 --- a/episodes/04-MVVM-Deisgn-Pattern.md +++ b/episodes/04-MVVM-Deisgn-Pattern.md @@ -45,7 +45,7 @@ The MVVM pattern consists of three core components: * Data validation (ensuring the data is in a valid state). * Business rules (the logic that governs how the data is manipulated and used). - The Model is *agnostic* to the UI. It doesn\'t know anything about how the data will be displayed or how the user will interact with it. It simply provides the data and the means to manipulate it. +The Model is *agnostic* to the UI. It doesn\'t know anything about how the data will be displayed or how the user will interact with it. It simply provides the data and the means to manipulate it. *In the context of our NOVA tutorial, the Model will often include the logic for interacting with the NDIP platform via `nova-galaxy`.* diff --git a/episodes/fig/Topaz.png b/episodes/fig/Topaz.png new file mode 100644 index 0000000000000000000000000000000000000000..0b2ecd5de5d923e6ff9f88082eb09c48c78d10f8 GIT binary patch literal 91058 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⋙AKaCE5uhqSm0rDl*oXVO-|u_9FZ#*qC0$=0 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

X!j)}*37nspp_!$ZNJCV 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 N!PC{xWt~$(69A&g7100y literal 0 HcmV?d00001 diff --git a/episodes/fig/pyvista_bone_break.png b/episodes/fig/pyvista_bone_break.png new file mode 100644 index 0000000000000000000000000000000000000000..3293be124c3f8370b1fabbf83341c85c9ac26786 GIT binary patch literal 165833 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

sl24&|zbN1B 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 Date: Thu, 6 Feb 2025 12:11:28 -0600 Subject: [PATCH 8/9] Move project dependencies section --- episodes/02-Copy-Template.md | 17 +++++++++++++++++ episodes/03-Nova-Galaxy.md | 4 ++++ learners/setup.md | 21 ++------------------- 3 files changed, 23 insertions(+), 19 deletions(-) diff --git a/episodes/02-Copy-Template.md b/episodes/02-Copy-Template.md index fb8ac114..a80924f9 100755 --- a/episodes/02-Copy-Template.md +++ b/episodes/02-Copy-Template.md @@ -23,6 +23,7 @@ exercises: 3 # 2. Getting Started with a Template Application + As mentioned in the introduction, all code examples in this tutorial are based on a template application. In this episode, we will create this starting point by cloning a template using the `copier` library. This template provides a basic project structure and pre-configured files that will help us get started quickly with our NOVA project, saving us from setting up everything from scratch. ::::::::::::::::::::::::::::::::::::::::: callout @@ -30,6 +31,22 @@ The setup section detailed the prerequisites required for the tutorial. One of t :::::::::::::::::::::::::::::::::::::::::::::::::: +## Install Project Dependencies + +1. **Clone the Template:** Follow the instructions in the "Getting Started with a Template Application" episode to clone the NOVA template using `copier`. This will create a new directory (e.g., `nova_tutorial`) containing your project files. +2. **Navigate to the Project Directory:** Open your terminal and navigate to the newly created project directory: + + ```bash + cd nova_tutorial + ``` + +3. **Install Dependencies with Poetry:** Use Poetry to install the project dependencies defined in the `pyproject.toml` file: + + ```bash + poetry install + ``` + + This command will create a virtual environment for your project and install all required libraries, including the NOVA libraries and Trame. ## Cloning the Template diff --git a/episodes/03-Nova-Galaxy.md b/episodes/03-Nova-Galaxy.md index b657b1b7..1fe8c74a 100755 --- a/episodes/03-Nova-Galaxy.md +++ b/episodes/03-Nova-Galaxy.md @@ -124,6 +124,10 @@ At times, it may be desirable to execute a tool or workflow without waiting on t output = tool.run(data_store, params, wait=False) ``` +## Tool output + +After the tool finishes running on NDIP, the result of the tool is returned as an output. In this example, the output is a single image file of the generated fractal. Tools can return single files or a collection of files as a zip. The output can be used by the rest of your application, saved, or simply discarded. A copy of the output also resides on the NDIP platform, so it is not necessary to maintain a local copy. + ## Next Steps In this section, you learned how to use the `nova-galaxy` library to run a tool on NDIP. In the next sections, we will expand on this to create a full user interface to make this functionality accessible to the end user. diff --git a/learners/setup.md b/learners/setup.md index ab623548..0374b1c0 100755 --- a/learners/setup.md +++ b/learners/setup.md @@ -18,24 +18,7 @@ Before proceeding, ensure you have met the following prerequisites: * **A Text Editor or IDE:** You will need a text editor or IDE (such as VS Code, Sublime Text, or Atom) for writing code. * **Familiarity with the Command Line:** You will need to be comfortable using the command line or terminal. -## 2. Install Project Dependencies - -1. **Clone the Template:** Follow the instructions in the "Getting Started with a Template Application" episode to clone the NOVA template using `copier`. This will create a new directory (e.g., `nova_tutorial`) containing your project files. -2. **Navigate to the Project Directory:** Open your terminal and navigate to the newly created project directory: - - ```bash - cd nova_tutorial - ``` - -3. **Install Dependencies with Poetry:** Use Poetry to install the project dependencies defined in the `pyproject.toml` file: - - ```bash - poetry install - ``` - - This command will create a virtual environment for your project and install all required libraries, including the NOVA libraries and Trame. - -## 3. Configure Environment Variables +## 2. Configure Environment Variables The NOVA framework requires you to set environment variables for your NDIP URL and API key. These variables are used to authenticate with the NDIP platform. @@ -64,7 +47,7 @@ For this tutorial, we will be using calvera-test.ornl.gov as our galaxy endpoint **Important:** For security reasons, it is recommended to avoid hardcoding your API key directly in your code. Using environment variables is a more secure and flexible approach. -## 4. Verify Your Setup +## 3. Verify Your Setup To ensure your setup is correct, run the following command in your terminal within the `nova_tutorial` directory: -- GitLab From 0e4940a34fe4192bffba9e3cc2a3f23b6312d62c Mon Sep 17 00:00:00 2001 From: "Ayres, Andrew" Date: Thu, 6 Feb 2025 12:20:18 -0600 Subject: [PATCH 9/9] poetry lock --- code/episode_3/poetry.lock | 6 +++--- code/episode_4/poetry.lock | 6 +++--- code/episode_5/poetry.lock | 6 +++--- code/episode_6/poetry.lock | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/code/episode_3/poetry.lock b/code/episode_3/poetry.lock index 5c404ed1..4e9d65c3 100644 --- a/code/episode_3/poetry.lock +++ b/code/episode_3/poetry.lock @@ -1126,13 +1126,13 @@ files = [ [[package]] name = "nova-galaxy" -version = "0.4.0" +version = "0.7.0" description = "Utilties for accessing the ORNL Galaxy instance" category = "main" optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "nova_galaxy-0.4.0-py3-none-any.whl", hash = "sha256:407ae4b272f5386bd23578daf8c0c9c48c3723fd9fd14aa7328ea38532427ab9"}, + {file = "nova_galaxy-0.7.0-py3-none-any.whl", hash = "sha256:1ff51e5e7fcf050f7678a52dc4248ba3283f3bb222f45d24d7c13efba0d2c91f"}, ] [package.dependencies] @@ -2332,4 +2332,4 @@ propcache = ">=0.2.0" [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "5a4cbc0db131ca92dbfbfa620080878ba0b5276d9ac85c0b77f3a260b574c7ed" +content-hash = "21cb4efdfeedffeac02c47e0e53c8fa5e296badf0f246a4f72738eb878ebcc21" diff --git a/code/episode_4/poetry.lock b/code/episode_4/poetry.lock index 5c404ed1..4e9d65c3 100644 --- a/code/episode_4/poetry.lock +++ b/code/episode_4/poetry.lock @@ -1126,13 +1126,13 @@ files = [ [[package]] name = "nova-galaxy" -version = "0.4.0" +version = "0.7.0" description = "Utilties for accessing the ORNL Galaxy instance" category = "main" optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "nova_galaxy-0.4.0-py3-none-any.whl", hash = "sha256:407ae4b272f5386bd23578daf8c0c9c48c3723fd9fd14aa7328ea38532427ab9"}, + {file = "nova_galaxy-0.7.0-py3-none-any.whl", hash = "sha256:1ff51e5e7fcf050f7678a52dc4248ba3283f3bb222f45d24d7c13efba0d2c91f"}, ] [package.dependencies] @@ -2332,4 +2332,4 @@ propcache = ">=0.2.0" [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "5a4cbc0db131ca92dbfbfa620080878ba0b5276d9ac85c0b77f3a260b574c7ed" +content-hash = "21cb4efdfeedffeac02c47e0e53c8fa5e296badf0f246a4f72738eb878ebcc21" diff --git a/code/episode_5/poetry.lock b/code/episode_5/poetry.lock index 5c404ed1..4e9d65c3 100644 --- a/code/episode_5/poetry.lock +++ b/code/episode_5/poetry.lock @@ -1126,13 +1126,13 @@ files = [ [[package]] name = "nova-galaxy" -version = "0.4.0" +version = "0.7.0" description = "Utilties for accessing the ORNL Galaxy instance" category = "main" optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "nova_galaxy-0.4.0-py3-none-any.whl", hash = "sha256:407ae4b272f5386bd23578daf8c0c9c48c3723fd9fd14aa7328ea38532427ab9"}, + {file = "nova_galaxy-0.7.0-py3-none-any.whl", hash = "sha256:1ff51e5e7fcf050f7678a52dc4248ba3283f3bb222f45d24d7c13efba0d2c91f"}, ] [package.dependencies] @@ -2332,4 +2332,4 @@ propcache = ">=0.2.0" [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "5a4cbc0db131ca92dbfbfa620080878ba0b5276d9ac85c0b77f3a260b574c7ed" +content-hash = "21cb4efdfeedffeac02c47e0e53c8fa5e296badf0f246a4f72738eb878ebcc21" diff --git a/code/episode_6/poetry.lock b/code/episode_6/poetry.lock index 5c404ed1..4e9d65c3 100644 --- a/code/episode_6/poetry.lock +++ b/code/episode_6/poetry.lock @@ -1126,13 +1126,13 @@ files = [ [[package]] name = "nova-galaxy" -version = "0.4.0" +version = "0.7.0" description = "Utilties for accessing the ORNL Galaxy instance" category = "main" optional = false python-versions = "<4.0,>=3.10" files = [ - {file = "nova_galaxy-0.4.0-py3-none-any.whl", hash = "sha256:407ae4b272f5386bd23578daf8c0c9c48c3723fd9fd14aa7328ea38532427ab9"}, + {file = "nova_galaxy-0.7.0-py3-none-any.whl", hash = "sha256:1ff51e5e7fcf050f7678a52dc4248ba3283f3bb222f45d24d7c13efba0d2c91f"}, ] [package.dependencies] @@ -2332,4 +2332,4 @@ propcache = ">=0.2.0" [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "5a4cbc0db131ca92dbfbfa620080878ba0b5276d9ac85c0b77f3a260b574c7ed" +content-hash = "21cb4efdfeedffeac02c47e0e53c8fa5e296badf0f246a4f72738eb878ebcc21" -- GitLab