nova-mvvm 0.14.0__tar.gz → 0.15.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/PKG-INFO +1 -1
  2. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/pixi.lock +208 -223
  3. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/pyproject.toml +1 -1
  4. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/src/nova/mvvm/pydantic_utils.py +2 -0
  5. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/src/nova/mvvm/trame_binding/binding.py +24 -2
  6. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/tests/test_trame_bindings.py +17 -0
  7. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/.copier-answers.yml +0 -0
  8. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/.dockerignore +0 -0
  9. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/.github/workflows/build-test.yml +0 -0
  10. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/.github/workflows/nova-mvvm.yml +0 -0
  11. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/.gitignore +0 -0
  12. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/.pre-commit-config.yaml +0 -0
  13. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/.readthedocs.yml +0 -0
  14. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/.vscode/extensions.json +0 -0
  15. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/.vscode/launch.json +0 -0
  16. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/.vscode/settings.json +0 -0
  17. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/CODE_OF_CONDUCT.md +0 -0
  18. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/CONTRIBUTING.md +0 -0
  19. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/DEVELOPMENT.MD +0 -0
  20. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/LICENSE +0 -0
  21. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/README.md +0 -0
  22. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/build_docs.sh +0 -0
  23. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/dockerfiles/Dockerfile +0 -0
  24. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/docs/api_reference.rst +0 -0
  25. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/docs/conf.py +0 -0
  26. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/docs/core_concepts/data_binding.rst +0 -0
  27. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/docs/core_concepts/index.rst +0 -0
  28. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/docs/core_concepts/mvvm.png +0 -0
  29. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/docs/core_concepts/mvvm.rst +0 -0
  30. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/docs/core_concepts/pydantic.rst +0 -0
  31. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/docs/examples/basic_usage.rst +0 -0
  32. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/docs/examples/index.rst +0 -0
  33. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/docs/index.rst +0 -0
  34. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/docs/installation.rst +0 -0
  35. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/docs/interface.rst +0 -0
  36. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/src/nova/__init__.py +0 -0
  37. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/src/nova/mvvm/__init__.py +0 -0
  38. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/src/nova/mvvm/_internal/pydantic_utils.py +0 -0
  39. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/src/nova/mvvm/_internal/pyqt_communicator.py +0 -0
  40. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/src/nova/mvvm/_internal/utils.py +0 -0
  41. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/src/nova/mvvm/bindings_map.py +0 -0
  42. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/src/nova/mvvm/interface.py +0 -0
  43. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/src/nova/mvvm/panel_binding/__init__.py +0 -0
  44. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/src/nova/mvvm/panel_binding/binding.py +0 -0
  45. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/src/nova/mvvm/pyqt5_binding/__init__.py +0 -0
  46. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/src/nova/mvvm/pyqt5_binding/binding.py +0 -0
  47. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/src/nova/mvvm/pyqt5_binding/pyqt5_worker.py +0 -0
  48. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/src/nova/mvvm/pyqt6_binding/__init__.py +0 -0
  49. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/src/nova/mvvm/pyqt6_binding/binding.py +0 -0
  50. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/src/nova/mvvm/pyqt6_binding/pyqt6_worker.py +0 -0
  51. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/src/nova/mvvm/trame_binding/__init__.py +0 -0
  52. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/src/nova/mvvm/trame_binding/trame_worker.py +0 -0
  53. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/tests/__init__.py +0 -0
  54. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/tests/model.py +0 -0
  55. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/tests/test_panel_bindings.py +0 -0
  56. {nova_mvvm-0.14.0 → nova_mvvm-0.15.1}/tests/test_pyqt6_bindings.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nova-mvvm
3
- Version: 0.14.0
3
+ Version: 0.15.1
4
4
  Summary: A Python Package for Model-View-ViewModel pattern
5
5
  Author-email: Sergey Yakubov <yakubovs@ornl.gov>, John Duggan <dugganjw@ornl.gov>, Greg Watson <watsongr@ornl.gov>
6
6
  License-Expression: MIT
@@ -53,8 +53,8 @@ environments:
53
53
  - pypi: https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl
54
54
  - pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl
55
55
  - pypi: https://files.pythonhosted.org/packages/4b/32/e0f13a1c5b0f8572d0ec6ae2f6c677b7991fafd95da523159c19eff0696a/contourpy-1.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
56
- - pypi: https://files.pythonhosted.org/packages/07/fe/75192a53862a756e85d775428bac3d4a9c35157deb84a5db09a70a23998c/copier-9.11.2-py3-none-any.whl
57
- - pypi: https://files.pythonhosted.org/packages/12/da/91a52516e9d5aea87d32d1523f9cdcf7a35a3b298e6be05d6509ba3cfab2/coverage-7.13.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
56
+ - pypi: https://files.pythonhosted.org/packages/b8/01/74922a1c552137c05a41fee0c61153753dddc9117d19c7c5902c146c25ab/copier-9.11.3-py3-none-any.whl
57
+ - pypi: https://files.pythonhosted.org/packages/8e/78/befa6640f74092b86961f957f26504c8fba3d7da57cc2ab7407391870495/coverage-7.13.2-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
58
58
  - pypi: https://files.pythonhosted.org/packages/c9/56/e7e69b427c3878352c2fb9b450bd0e19ed552753491d39d7d0a2f5226d41/cryptography-46.0.3-cp311-abi3-manylinux_2_28_x86_64.whl
59
59
  - pypi: https://files.pythonhosted.org/packages/f7/e6/efe534ef0952b531b630780e19cabd416e2032697019d5295defc6ef9bd9/deepdiff-8.6.1-py3-none-any.whl
60
60
  - pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
@@ -82,23 +82,23 @@ environments:
82
82
  - pypi: https://files.pythonhosted.org/packages/81/db/e655086b7f3a705df045bf0933bdd9c2f79bb3c97bfef1384598bb79a217/keyring-25.7.0-py3-none-any.whl
83
83
  - pypi: https://files.pythonhosted.org/packages/88/26/e24ef01305954fc4d771f1f09f3dd682f9eb610e1bec188ffb719374d26e/librt-0.7.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
84
84
  - pypi: https://files.pythonhosted.org/packages/04/1e/b832de447dee8b582cac175871d2f6c3d5077cc56d5575cadba1fd1cccfa/linkify_it_py-2.0.3-py3-none-any.whl
85
- - pypi: https://files.pythonhosted.org/packages/70/81/54e3ce63502cd085a0c556652a4e1b919c45a446bd1e5300e10c44c8c521/markdown-3.10-py3-none-any.whl
85
+ - pypi: https://files.pythonhosted.org/packages/59/1b/6ef961f543593969d25b2afe57a3564200280528caa9bd1082eecdd7b3bc/markdown-3.10.1-py3-none-any.whl
86
86
  - pypi: https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl
87
87
  - pypi: https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
88
88
  - pypi: https://files.pythonhosted.org/packages/fb/86/dd6e5db36df29e76c7a7699123569a4a18c1623ce68d826ed96c62643cae/mdit_py_plugins-0.5.0-py3-none-any.whl
89
89
  - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl
90
90
  - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl
91
91
  - pypi: https://files.pythonhosted.org/packages/5d/ba/459f18c16f2b3fc1a1ca871f72f07d70c07bf768ad0a507a698b8052ac58/msgpack-1.1.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
92
- - pypi: https://files.pythonhosted.org/packages/c6/2d/f0b184fa88d6630aa267680bdb8623fb69cb0d024b8c6f0d23f9a0f406d3/multidict-6.7.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
92
+ - pypi: https://files.pythonhosted.org/packages/b0/73/6e1b01cbeb458807aa0831742232dbdd1fa92bfa33f52a3f176b4ff3dc11/multidict-6.7.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
93
93
  - pypi: https://files.pythonhosted.org/packages/d1/32/dd260d52babf67bad8e6770f8e1102021877ce0edea106e72df5626bb0ec/mypy-1.19.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
94
94
  - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl
95
95
  - pypi: https://files.pythonhosted.org/packages/3d/2e/cf2ffeb386ac3763526151163ad7da9f1b586aac96d2b4f7de1eaebf0c61/narwhals-2.15.0-py3-none-any.whl
96
96
  - pypi: https://files.pythonhosted.org/packages/88/b2/d0896bdcdc8d28a7fc5717c305f1a861c26e18c05047949fb371034d98bd/nodeenv-1.10.0-py2.py3-none-any.whl
97
97
  - pypi: https://files.pythonhosted.org/packages/ba/87/d341e519956273b39d8d47969dd1eaa1af740615394fe67d06f1efa68773/numpy-2.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
98
98
  - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl
99
- - pypi: https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl
100
- - pypi: https://files.pythonhosted.org/packages/15/07/284f757f63f8a8d69ed4472bfd85122bd086e637bf4ed09de572d575a693/pandas-2.3.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
101
- - pypi: https://files.pythonhosted.org/packages/b0/2d/a159ff23441ad2fc8081ea553a53804d3f1625bb6b1b7e1b4d2eb9371676/panel-1.8.5-py3-none-any.whl
99
+ - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl
100
+ - pypi: https://files.pythonhosted.org/packages/f7/a3/51e02ebc2a14974170d51e2410dfdab58870ea9bcd37cda15bd553d24dc4/pandas-3.0.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
101
+ - pypi: https://files.pythonhosted.org/packages/f2/f9/08b9a36815074e99ff3ded1ad1a20dca1dc9a7c116628b3c9808df451da4/panel-1.8.6-py3-none-any.whl
102
102
  - pypi: https://files.pythonhosted.org/packages/11/da/9d476e9aadfa854719f3cb917e3f7a170a657a182d8d1d6e546594a4872b/param-2.3.1-py3-none-any.whl
103
103
  - pypi: https://files.pythonhosted.org/packages/32/2b/121e912bd60eebd623f873fd090de0e84f322972ab25a7f9044c056804ed/pathspec-1.0.3-py3-none-any.whl
104
104
  - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl
@@ -126,12 +126,11 @@ environments:
126
126
  - pypi: https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl
127
127
  - pypi: https://files.pythonhosted.org/packages/cc/d0/8339b888ad64a3d4e508fed8245a402b503846e1972c10ad60955883dcbb/pytest_qt-4.5.0-py3-none-any.whl
128
128
  - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl
129
- - pypi: https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl
130
129
  - pypi: https://files.pythonhosted.org/packages/13/5a/f8c0868199bbb231a02616286ce8a4ccb85f5387b9215510297dcfedd214/pyviz_comms-3.0.6-py3-none-any.whl
131
130
  - pypi: https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
132
131
  - pypi: https://files.pythonhosted.org/packages/3c/26/1062c7ec1b053db9e499b4d2d5bc231743201b74051c973dadeac80a8f43/questionary-2.1.1-py3-none-any.whl
133
132
  - pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl
134
- - pypi: https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl
133
+ - pypi: https://files.pythonhosted.org/packages/87/2a/a1810c8627b9ec8c57ec5ec325d306701ae7be50235e8fd81266e002a3cc/rich-14.3.1-py3-none-any.whl
135
134
  - pypi: https://files.pythonhosted.org/packages/04/54/6f679c435d28e0a568d8e8a7c0a93a09010818634c3c3907fc98d8983770/roman_numerals-4.1.0-py3-none-any.whl
136
135
  - pypi: https://files.pythonhosted.org/packages/ee/79/6ad4dda2cfd55e41ac9ed6d73ef9ab9475b1eef69f3a85957210c74ba12c/ruff-0.14.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
137
136
  - pypi: https://files.pythonhosted.org/packages/b7/46/f5af3402b579fd5e11573ce652019a67074317e18c1935cc0b4ba9b35552/secretstorage-3.5.0-py3-none-any.whl
@@ -160,13 +159,12 @@ environments:
160
159
  - pypi: https://files.pythonhosted.org/packages/bb/4a/2e5583e544bc437d5e8e54b47db87430df9031b29b48d17f26d129fa60c0/trove_classifiers-2026.1.14.14-py3-none-any.whl
161
160
  - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl
162
161
  - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl
163
- - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl
164
162
  - pypi: https://files.pythonhosted.org/packages/37/87/1f677586e8ac487e29672e4b17455758fce261de06a0d086167bb760361a/uc_micro_py-1.0.3-py3-none-any.whl
165
163
  - pypi: https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl
166
164
  - pypi: https://files.pythonhosted.org/packages/43/99/3ec6335ded5b88c2f7ed25c56ffd952546f7ed007ffb1e1539dc3b57015a/userpath-1.9.2-py3-none-any.whl
167
165
  - pypi: https://files.pythonhosted.org/packages/38/16/a07593a040fe6403c36f3b0a99b309f295cbfe19a1074dbadb671d5d4ef7/uv-0.9.26-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
168
166
  - pypi: https://files.pythonhosted.org/packages/6a/2a/dc2228b2888f51192c7dc766106cd475f1b768c10caaf9727659726f7391/virtualenv-20.36.1-py3-none-any.whl
169
- - pypi: https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl
167
+ - pypi: https://files.pythonhosted.org/packages/b7/f6/da704c5e77281d71723bffbd926b754c0efd57cbcd02e74c2ca374c14cef/wcwidth-0.4.0-py3-none-any.whl
170
168
  - pypi: https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl
171
169
  - pypi: https://files.pythonhosted.org/packages/a2/33/44baf508511b036e455693cd874088f622b8f68e61415e92581a3ffdbbee/wslink-2.5.0-py3-none-any.whl
172
170
  - pypi: https://files.pythonhosted.org/packages/ef/5c/2c189d18d495dd0fa3f27ccc60762bbc787eed95b9b0147266e72bb76585/xyzservices-2025.11.0-py3-none-any.whl
@@ -205,8 +203,8 @@ environments:
205
203
  - pypi: https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl
206
204
  - pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl
207
205
  - pypi: https://files.pythonhosted.org/packages/68/35/0167aad910bbdb9599272bd96d01a9ec6852f36b9455cf2ca67bd4cc2d23/contourpy-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl
208
- - pypi: https://files.pythonhosted.org/packages/07/fe/75192a53862a756e85d775428bac3d4a9c35157deb84a5db09a70a23998c/copier-9.11.2-py3-none-any.whl
209
- - pypi: https://files.pythonhosted.org/packages/a3/a4/e98e689347a1ff1a7f67932ab535cef82eb5e78f32a9e4132e114bbb3a0a/coverage-7.13.1-cp313-cp313-macosx_10_13_x86_64.whl
206
+ - pypi: https://files.pythonhosted.org/packages/b8/01/74922a1c552137c05a41fee0c61153753dddc9117d19c7c5902c146c25ab/copier-9.11.3-py3-none-any.whl
207
+ - pypi: https://files.pythonhosted.org/packages/a7/f0/3d3eac7568ab6096ff23791a526b0048a1ff3f49d0e236b2af6fb6558e88/coverage-7.13.2-cp313-cp313-macosx_10_13_x86_64.whl
210
208
  - pypi: https://files.pythonhosted.org/packages/f7/e6/efe534ef0952b531b630780e19cabd416e2032697019d5295defc6ef9bd9/deepdiff-8.6.1-py3-none-any.whl
211
209
  - pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
212
210
  - pypi: https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl
@@ -232,23 +230,23 @@ environments:
232
230
  - pypi: https://files.pythonhosted.org/packages/81/db/e655086b7f3a705df045bf0933bdd9c2f79bb3c97bfef1384598bb79a217/keyring-25.7.0-py3-none-any.whl
233
231
  - pypi: https://files.pythonhosted.org/packages/a1/fe/b1f9de2829cf7fc7649c1dcd202cfd873837c5cc2fc9e526b0e7f716c3d2/librt-0.7.8-cp313-cp313-macosx_10_13_x86_64.whl
234
232
  - pypi: https://files.pythonhosted.org/packages/04/1e/b832de447dee8b582cac175871d2f6c3d5077cc56d5575cadba1fd1cccfa/linkify_it_py-2.0.3-py3-none-any.whl
235
- - pypi: https://files.pythonhosted.org/packages/70/81/54e3ce63502cd085a0c556652a4e1b919c45a446bd1e5300e10c44c8c521/markdown-3.10-py3-none-any.whl
233
+ - pypi: https://files.pythonhosted.org/packages/59/1b/6ef961f543593969d25b2afe57a3564200280528caa9bd1082eecdd7b3bc/markdown-3.10.1-py3-none-any.whl
236
234
  - pypi: https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl
237
235
  - pypi: https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl
238
236
  - pypi: https://files.pythonhosted.org/packages/fb/86/dd6e5db36df29e76c7a7699123569a4a18c1623ce68d826ed96c62643cae/mdit_py_plugins-0.5.0-py3-none-any.whl
239
237
  - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl
240
238
  - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl
241
239
  - pypi: https://files.pythonhosted.org/packages/6b/31/b46518ecc604d7edf3a4f94cb3bf021fc62aa301f0cb849936968164ef23/msgpack-1.1.2-cp313-cp313-macosx_10_13_x86_64.whl
242
- - pypi: https://files.pythonhosted.org/packages/91/1c/eb97db117a1ebe46d457a3d235a7b9d2e6dcab174f42d1b67663dd9e5371/multidict-6.7.0-cp313-cp313-macosx_10_13_x86_64.whl
240
+ - pypi: https://files.pythonhosted.org/packages/c7/75/bc704ae15fee974f8fccd871305e254754167dce5f9e42d88a2def741a1d/multidict-6.7.1-cp313-cp313-macosx_10_13_x86_64.whl
243
241
  - pypi: https://files.pythonhosted.org/packages/de/9f/a6abae693f7a0c697dbb435aac52e958dc8da44e92e08ba88d2e42326176/mypy-1.19.1-cp313-cp313-macosx_10_13_x86_64.whl
244
242
  - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl
245
243
  - pypi: https://files.pythonhosted.org/packages/3d/2e/cf2ffeb386ac3763526151163ad7da9f1b586aac96d2b4f7de1eaebf0c61/narwhals-2.15.0-py3-none-any.whl
246
244
  - pypi: https://files.pythonhosted.org/packages/88/b2/d0896bdcdc8d28a7fc5717c305f1a861c26e18c05047949fb371034d98bd/nodeenv-1.10.0-py2.py3-none-any.whl
247
245
  - pypi: https://files.pythonhosted.org/packages/04/68/732d4b7811c00775f3bd522a21e8dd5a23f77eb11acdeb663e4a4ebf0ef4/numpy-2.4.1-cp313-cp313-macosx_10_13_x86_64.whl
248
246
  - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl
249
- - pypi: https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl
250
- - pypi: https://files.pythonhosted.org/packages/cd/4b/18b035ee18f97c1040d94debd8f2e737000ad70ccc8f5513f4eefad75f4b/pandas-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl
251
- - pypi: https://files.pythonhosted.org/packages/b0/2d/a159ff23441ad2fc8081ea553a53804d3f1625bb6b1b7e1b4d2eb9371676/panel-1.8.5-py3-none-any.whl
247
+ - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl
248
+ - pypi: https://files.pythonhosted.org/packages/6f/fa/7f0ac4ca8877c57537aaff2a842f8760e630d8e824b730eb2e859ffe96ca/pandas-3.0.0-cp313-cp313-macosx_10_13_x86_64.whl
249
+ - pypi: https://files.pythonhosted.org/packages/f2/f9/08b9a36815074e99ff3ded1ad1a20dca1dc9a7c116628b3c9808df451da4/panel-1.8.6-py3-none-any.whl
252
250
  - pypi: https://files.pythonhosted.org/packages/11/da/9d476e9aadfa854719f3cb917e3f7a170a657a182d8d1d6e546594a4872b/param-2.3.1-py3-none-any.whl
253
251
  - pypi: https://files.pythonhosted.org/packages/32/2b/121e912bd60eebd623f873fd090de0e84f322972ab25a7f9044c056804ed/pathspec-1.0.3-py3-none-any.whl
254
252
  - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl
@@ -275,12 +273,11 @@ environments:
275
273
  - pypi: https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl
276
274
  - pypi: https://files.pythonhosted.org/packages/cc/d0/8339b888ad64a3d4e508fed8245a402b503846e1972c10ad60955883dcbb/pytest_qt-4.5.0-py3-none-any.whl
277
275
  - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl
278
- - pypi: https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl
279
276
  - pypi: https://files.pythonhosted.org/packages/13/5a/f8c0868199bbb231a02616286ce8a4ccb85f5387b9215510297dcfedd214/pyviz_comms-3.0.6-py3-none-any.whl
280
277
  - pypi: https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl
281
278
  - pypi: https://files.pythonhosted.org/packages/3c/26/1062c7ec1b053db9e499b4d2d5bc231743201b74051c973dadeac80a8f43/questionary-2.1.1-py3-none-any.whl
282
279
  - pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl
283
- - pypi: https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl
280
+ - pypi: https://files.pythonhosted.org/packages/87/2a/a1810c8627b9ec8c57ec5ec325d306701ae7be50235e8fd81266e002a3cc/rich-14.3.1-py3-none-any.whl
284
281
  - pypi: https://files.pythonhosted.org/packages/04/54/6f679c435d28e0a568d8e8a7c0a93a09010818634c3c3907fc98d8983770/roman_numerals-4.1.0-py3-none-any.whl
285
282
  - pypi: https://files.pythonhosted.org/packages/46/c8/09b3ab245d8652eafe5256ab59718641429f68681ee713ff06c5c549f156/ruff-0.14.4-py3-none-macosx_10_12_x86_64.whl
286
283
  - pypi: https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl
@@ -308,13 +305,12 @@ environments:
308
305
  - pypi: https://files.pythonhosted.org/packages/bb/4a/2e5583e544bc437d5e8e54b47db87430df9031b29b48d17f26d129fa60c0/trove_classifiers-2026.1.14.14-py3-none-any.whl
309
306
  - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl
310
307
  - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl
311
- - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl
312
308
  - pypi: https://files.pythonhosted.org/packages/37/87/1f677586e8ac487e29672e4b17455758fce261de06a0d086167bb760361a/uc_micro_py-1.0.3-py3-none-any.whl
313
309
  - pypi: https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl
314
310
  - pypi: https://files.pythonhosted.org/packages/43/99/3ec6335ded5b88c2f7ed25c56ffd952546f7ed007ffb1e1539dc3b57015a/userpath-1.9.2-py3-none-any.whl
315
311
  - pypi: https://files.pythonhosted.org/packages/a5/8b/68ac5825a615a8697e324f52ac0b92feb47a0ec36a63759c5f2931f0c3a0/uv-0.9.26-py3-none-macosx_10_12_x86_64.whl
316
312
  - pypi: https://files.pythonhosted.org/packages/6a/2a/dc2228b2888f51192c7dc766106cd475f1b768c10caaf9727659726f7391/virtualenv-20.36.1-py3-none-any.whl
317
- - pypi: https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl
313
+ - pypi: https://files.pythonhosted.org/packages/b7/f6/da704c5e77281d71723bffbd926b754c0efd57cbcd02e74c2ca374c14cef/wcwidth-0.4.0-py3-none-any.whl
318
314
  - pypi: https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl
319
315
  - pypi: https://files.pythonhosted.org/packages/a2/33/44baf508511b036e455693cd874088f622b8f68e61415e92581a3ffdbbee/wslink-2.5.0-py3-none-any.whl
320
316
  - pypi: https://files.pythonhosted.org/packages/ef/5c/2c189d18d495dd0fa3f27ccc60762bbc787eed95b9b0147266e72bb76585/xyzservices-2025.11.0-py3-none-any.whl
@@ -386,9 +382,9 @@ environments:
386
382
  - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl
387
383
  - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl
388
384
  - pypi: https://files.pythonhosted.org/packages/5d/ba/459f18c16f2b3fc1a1ca871f72f07d70c07bf768ad0a507a698b8052ac58/msgpack-1.1.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
389
- - pypi: https://files.pythonhosted.org/packages/c6/2d/f0b184fa88d6630aa267680bdb8623fb69cb0d024b8c6f0d23f9a0f406d3/multidict-6.7.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
385
+ - pypi: https://files.pythonhosted.org/packages/b0/73/6e1b01cbeb458807aa0831742232dbdd1fa92bfa33f52a3f176b4ff3dc11/multidict-6.7.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
390
386
  - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl
391
- - pypi: https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl
387
+ - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl
392
388
  - pypi: https://files.pythonhosted.org/packages/32/2b/121e912bd60eebd623f873fd090de0e84f322972ab25a7f9044c056804ed/pathspec-1.0.3-py3-none-any.whl
393
389
  - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl
394
390
  - pypi: https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl
@@ -401,7 +397,7 @@ environments:
401
397
  - pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl
402
398
  - pypi: https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl
403
399
  - pypi: https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
404
- - pypi: https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl
400
+ - pypi: https://files.pythonhosted.org/packages/87/2a/a1810c8627b9ec8c57ec5ec325d306701ae7be50235e8fd81266e002a3cc/rich-14.3.1-py3-none-any.whl
405
401
  - pypi: https://files.pythonhosted.org/packages/b7/46/f5af3402b579fd5e11573ce652019a67074317e18c1935cc0b4ba9b35552/secretstorage-3.5.0-py3-none-any.whl
406
402
  - pypi: https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl
407
403
  - pypi: https://files.pythonhosted.org/packages/c7/18/c86eb8e0202e32dd3df50d43d7ff9854f8e0603945ff398974c1d91ac1ef/tomli_w-1.2.0-py3-none-any.whl
@@ -463,9 +459,9 @@ environments:
463
459
  - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl
464
460
  - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl
465
461
  - pypi: https://files.pythonhosted.org/packages/6b/31/b46518ecc604d7edf3a4f94cb3bf021fc62aa301f0cb849936968164ef23/msgpack-1.1.2-cp313-cp313-macosx_10_13_x86_64.whl
466
- - pypi: https://files.pythonhosted.org/packages/91/1c/eb97db117a1ebe46d457a3d235a7b9d2e6dcab174f42d1b67663dd9e5371/multidict-6.7.0-cp313-cp313-macosx_10_13_x86_64.whl
462
+ - pypi: https://files.pythonhosted.org/packages/c7/75/bc704ae15fee974f8fccd871305e254754167dce5f9e42d88a2def741a1d/multidict-6.7.1-cp313-cp313-macosx_10_13_x86_64.whl
467
463
  - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl
468
- - pypi: https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl
464
+ - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl
469
465
  - pypi: https://files.pythonhosted.org/packages/32/2b/121e912bd60eebd623f873fd090de0e84f322972ab25a7f9044c056804ed/pathspec-1.0.3-py3-none-any.whl
470
466
  - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl
471
467
  - pypi: https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl
@@ -477,7 +473,7 @@ environments:
477
473
  - pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl
478
474
  - pypi: https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl
479
475
  - pypi: https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl
480
- - pypi: https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl
476
+ - pypi: https://files.pythonhosted.org/packages/87/2a/a1810c8627b9ec8c57ec5ec325d306701ae7be50235e8fd81266e002a3cc/rich-14.3.1-py3-none-any.whl
481
477
  - pypi: https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl
482
478
  - pypi: https://files.pythonhosted.org/packages/c7/18/c86eb8e0202e32dd3df50d43d7ff9854f8e0603945ff398974c1d91ac1ef/tomli_w-1.2.0-py3-none-any.whl
483
479
  - pypi: https://files.pythonhosted.org/packages/b5/11/87d6d29fb5d237229d67973a6c9e06e048f01cf4994dee194ab0ea841814/tomlkit-0.14.0-py3-none-any.whl
@@ -761,10 +757,10 @@ packages:
761
757
  - pytest-xdist ; extra == 'test-no-images'
762
758
  - wurlitzer ; extra == 'test-no-images'
763
759
  requires_python: '>=3.11'
764
- - pypi: https://files.pythonhosted.org/packages/07/fe/75192a53862a756e85d775428bac3d4a9c35157deb84a5db09a70a23998c/copier-9.11.2-py3-none-any.whl
760
+ - pypi: https://files.pythonhosted.org/packages/b8/01/74922a1c552137c05a41fee0c61153753dddc9117d19c7c5902c146c25ab/copier-9.11.3-py3-none-any.whl
765
761
  name: copier
766
- version: 9.11.2
767
- sha256: ae860df9e954e04e8b5d0b79711dceb3b5e0c304490fcae224adb68d56963e5a
762
+ version: 9.11.3
763
+ sha256: ab4bc7e2944edc030b4c14ec84fffd6bf810b9b8fd56938e8ccbab1b169ea6ca
768
764
  requires_dist:
769
765
  - colorama>=0.4.6
770
766
  - dunamai>=1.7.0
@@ -781,17 +777,17 @@ packages:
781
777
  - questionary>=1.8.1
782
778
  - typing-extensions>=4.0.0,<5.0.0 ; python_full_version < '3.11'
783
779
  requires_python: '>=3.10'
784
- - pypi: https://files.pythonhosted.org/packages/12/da/91a52516e9d5aea87d32d1523f9cdcf7a35a3b298e6be05d6509ba3cfab2/coverage-7.13.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
780
+ - pypi: https://files.pythonhosted.org/packages/8e/78/befa6640f74092b86961f957f26504c8fba3d7da57cc2ab7407391870495/coverage-7.13.2-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
785
781
  name: coverage
786
- version: 7.13.1
787
- sha256: fa3edde1aa8807de1d05934982416cb3ec46d1d4d91e280bcce7cca01c507992
782
+ version: 7.13.2
783
+ sha256: 7be4d613638d678b2b3773b8f687537b284d7074695a43fe2fbbfc0e31ceaed1
788
784
  requires_dist:
789
785
  - tomli ; python_full_version <= '3.11' and extra == 'toml'
790
786
  requires_python: '>=3.10'
791
- - pypi: https://files.pythonhosted.org/packages/a3/a4/e98e689347a1ff1a7f67932ab535cef82eb5e78f32a9e4132e114bbb3a0a/coverage-7.13.1-cp313-cp313-macosx_10_13_x86_64.whl
787
+ - pypi: https://files.pythonhosted.org/packages/a7/f0/3d3eac7568ab6096ff23791a526b0048a1ff3f49d0e236b2af6fb6558e88/coverage-7.13.2-cp313-cp313-macosx_10_13_x86_64.whl
792
788
  name: coverage
793
- version: 7.13.1
794
- sha256: cb237bfd0ef4d5eb6a19e29f9e528ac67ac3be932ea6b44fb6cc09b9f3ecff78
789
+ version: 7.13.2
790
+ sha256: ed75de7d1217cf3b99365d110975f83af0528c849ef5180a12fd91b5064df9d6
795
791
  requires_dist:
796
792
  - tomli ; python_full_version <= '3.11' and extra == 'toml'
797
793
  requires_python: '>=3.10'
@@ -1380,17 +1376,17 @@ packages:
1380
1376
  - coverage ; extra == 'test'
1381
1377
  - pytest-cov ; extra == 'test'
1382
1378
  requires_python: '>=3.7'
1383
- - pypi: https://files.pythonhosted.org/packages/70/81/54e3ce63502cd085a0c556652a4e1b919c45a446bd1e5300e10c44c8c521/markdown-3.10-py3-none-any.whl
1379
+ - pypi: https://files.pythonhosted.org/packages/59/1b/6ef961f543593969d25b2afe57a3564200280528caa9bd1082eecdd7b3bc/markdown-3.10.1-py3-none-any.whl
1384
1380
  name: markdown
1385
- version: '3.10'
1386
- sha256: b5b99d6951e2e4948d939255596523444c0e677c669700b1d17aa4a8a464cb7c
1381
+ version: 3.10.1
1382
+ sha256: 867d788939fe33e4b736426f5b9f651ad0c0ae0ecf89df0ca5d1176c70812fe3
1387
1383
  requires_dist:
1388
1384
  - coverage ; extra == 'testing'
1389
1385
  - pyyaml ; extra == 'testing'
1390
1386
  - mkdocs>=1.6 ; extra == 'docs'
1391
1387
  - mkdocs-nature>=0.6 ; extra == 'docs'
1392
1388
  - mdx-gh-links>=0.2 ; extra == 'docs'
1393
- - mkdocstrings[python] ; extra == 'docs'
1389
+ - mkdocstrings[python]>=0.28.3 ; extra == 'docs'
1394
1390
  - mkdocs-gen-files ; extra == 'docs'
1395
1391
  - mkdocs-section-index ; extra == 'docs'
1396
1392
  - mkdocs-literate-nav ; extra == 'docs'
@@ -1472,17 +1468,17 @@ packages:
1472
1468
  version: 1.1.2
1473
1469
  sha256: 4efd7b5979ccb539c221a4c4e16aac1a533efc97f3b759bb5a5ac9f6d10383bf
1474
1470
  requires_python: '>=3.9'
1475
- - pypi: https://files.pythonhosted.org/packages/91/1c/eb97db117a1ebe46d457a3d235a7b9d2e6dcab174f42d1b67663dd9e5371/multidict-6.7.0-cp313-cp313-macosx_10_13_x86_64.whl
1471
+ - pypi: https://files.pythonhosted.org/packages/b0/73/6e1b01cbeb458807aa0831742232dbdd1fa92bfa33f52a3f176b4ff3dc11/multidict-6.7.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
1476
1472
  name: multidict
1477
- version: 6.7.0
1478
- sha256: 7ef6b61cad77091056ce0e7ce69814ef72afacb150b7ac6a3e9470def2198159
1473
+ version: 6.7.1
1474
+ sha256: 9d624335fd4fa1c08a53f8b4be7676ebde19cd092b3895c421045ca87895b429
1479
1475
  requires_dist:
1480
1476
  - typing-extensions>=4.1.0 ; python_full_version < '3.11'
1481
1477
  requires_python: '>=3.9'
1482
- - pypi: https://files.pythonhosted.org/packages/c6/2d/f0b184fa88d6630aa267680bdb8623fb69cb0d024b8c6f0d23f9a0f406d3/multidict-6.7.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
1478
+ - pypi: https://files.pythonhosted.org/packages/c7/75/bc704ae15fee974f8fccd871305e254754167dce5f9e42d88a2def741a1d/multidict-6.7.1-cp313-cp313-macosx_10_13_x86_64.whl
1483
1479
  name: multidict
1484
- version: 6.7.0
1485
- sha256: 9ff96e8815eecacc6645da76c413eb3b3d34cfca256c70b16b286a687d013c32
1480
+ version: 6.7.1
1481
+ sha256: 84e61e3af5463c19b67ced91f6c634effb89ef8bfc5ca0267f954451ed4bb6a2
1486
1482
  requires_dist:
1487
1483
  - typing-extensions>=4.1.0 ; python_full_version < '3.11'
1488
1484
  requires_python: '>=3.9'
@@ -1569,8 +1565,8 @@ packages:
1569
1565
  requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*'
1570
1566
  - pypi: ./
1571
1567
  name: nova-mvvm
1572
- version: 0.14.0
1573
- sha256: 380ed0031bcba2aa6cee7f4c4b42401048af982db0a17d55a65707262ff51942
1568
+ version: 0.15.1
1569
+ sha256: 2465026d50835e407095f9cbd2e320371daf37b624d999d5b626e9fbba29498a
1574
1570
  requires_dist:
1575
1571
  - trame
1576
1572
  - deepdiff
@@ -1628,197 +1624,195 @@ packages:
1628
1624
  - pytest-cov~=6.0.0 ; extra == 'test'
1629
1625
  - python-dotenv~=1.0.0 ; extra == 'test'
1630
1626
  requires_python: '>=3.8'
1631
- - pypi: https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl
1627
+ - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl
1632
1628
  name: packaging
1633
- version: '25.0'
1634
- sha256: 29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484
1629
+ version: '26.0'
1630
+ sha256: b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529
1635
1631
  requires_python: '>=3.8'
1636
- - pypi: https://files.pythonhosted.org/packages/15/07/284f757f63f8a8d69ed4472bfd85122bd086e637bf4ed09de572d575a693/pandas-2.3.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
1632
+ - pypi: https://files.pythonhosted.org/packages/6f/fa/7f0ac4ca8877c57537aaff2a842f8760e630d8e824b730eb2e859ffe96ca/pandas-3.0.0-cp313-cp313-macosx_10_13_x86_64.whl
1637
1633
  name: pandas
1638
- version: 2.3.3
1639
- sha256: 318d77e0e42a628c04dc56bcef4b40de67918f7041c2b061af1da41dcff670ac
1634
+ version: 3.0.0
1635
+ sha256: b78d646249b9a2bc191040988c7bb524c92fa8534fb0898a0741d7e6f2ffafa6
1640
1636
  requires_dist:
1641
- - numpy>=1.22.4 ; python_full_version < '3.11'
1642
- - numpy>=1.23.2 ; python_full_version == '3.11.*'
1643
- - numpy>=1.26.0 ; python_full_version >= '3.12'
1637
+ - numpy>=1.26.0 ; python_full_version < '3.14'
1638
+ - numpy>=2.3.3 ; python_full_version >= '3.14'
1644
1639
  - python-dateutil>=2.8.2
1645
- - pytz>=2020.1
1646
- - tzdata>=2022.7
1647
- - hypothesis>=6.46.1 ; extra == 'test'
1648
- - pytest>=7.3.2 ; extra == 'test'
1649
- - pytest-xdist>=2.2.0 ; extra == 'test'
1650
- - pyarrow>=10.0.1 ; extra == 'pyarrow'
1651
- - bottleneck>=1.3.6 ; extra == 'performance'
1652
- - numba>=0.56.4 ; extra == 'performance'
1653
- - numexpr>=2.8.4 ; extra == 'performance'
1654
- - scipy>=1.10.0 ; extra == 'computation'
1655
- - xarray>=2022.12.0 ; extra == 'computation'
1656
- - fsspec>=2022.11.0 ; extra == 'fss'
1657
- - s3fs>=2022.11.0 ; extra == 'aws'
1658
- - gcsfs>=2022.11.0 ; extra == 'gcp'
1659
- - pandas-gbq>=0.19.0 ; extra == 'gcp'
1640
+ - tzdata ; sys_platform == 'win32'
1641
+ - tzdata ; sys_platform == 'emscripten'
1642
+ - hypothesis>=6.116.0 ; extra == 'test'
1643
+ - pytest>=8.3.4 ; extra == 'test'
1644
+ - pytest-xdist>=3.6.1 ; extra == 'test'
1645
+ - pyarrow>=13.0.0 ; extra == 'pyarrow'
1646
+ - bottleneck>=1.4.2 ; extra == 'performance'
1647
+ - numba>=0.60.0 ; extra == 'performance'
1648
+ - numexpr>=2.10.2 ; extra == 'performance'
1649
+ - scipy>=1.14.1 ; extra == 'computation'
1650
+ - xarray>=2024.10.0 ; extra == 'computation'
1651
+ - fsspec>=2024.10.0 ; extra == 'fss'
1652
+ - s3fs>=2024.10.0 ; extra == 'aws'
1653
+ - gcsfs>=2024.10.0 ; extra == 'gcp'
1660
1654
  - odfpy>=1.4.1 ; extra == 'excel'
1661
- - openpyxl>=3.1.0 ; extra == 'excel'
1662
- - python-calamine>=0.1.7 ; extra == 'excel'
1655
+ - openpyxl>=3.1.5 ; extra == 'excel'
1656
+ - python-calamine>=0.3.0 ; extra == 'excel'
1663
1657
  - pyxlsb>=1.0.10 ; extra == 'excel'
1664
1658
  - xlrd>=2.0.1 ; extra == 'excel'
1665
- - xlsxwriter>=3.0.5 ; extra == 'excel'
1666
- - pyarrow>=10.0.1 ; extra == 'parquet'
1667
- - pyarrow>=10.0.1 ; extra == 'feather'
1668
- - tables>=3.8.0 ; extra == 'hdf5'
1669
- - pyreadstat>=1.2.0 ; extra == 'spss'
1670
- - sqlalchemy>=2.0.0 ; extra == 'postgresql'
1671
- - psycopg2>=2.9.6 ; extra == 'postgresql'
1672
- - adbc-driver-postgresql>=0.8.0 ; extra == 'postgresql'
1673
- - sqlalchemy>=2.0.0 ; extra == 'mysql'
1674
- - pymysql>=1.0.2 ; extra == 'mysql'
1675
- - sqlalchemy>=2.0.0 ; extra == 'sql-other'
1676
- - adbc-driver-postgresql>=0.8.0 ; extra == 'sql-other'
1677
- - adbc-driver-sqlite>=0.8.0 ; extra == 'sql-other'
1678
- - beautifulsoup4>=4.11.2 ; extra == 'html'
1659
+ - xlsxwriter>=3.2.0 ; extra == 'excel'
1660
+ - pyarrow>=13.0.0 ; extra == 'parquet'
1661
+ - pyarrow>=13.0.0 ; extra == 'feather'
1662
+ - pyiceberg>=0.8.1 ; extra == 'iceberg'
1663
+ - tables>=3.10.1 ; extra == 'hdf5'
1664
+ - pyreadstat>=1.2.8 ; extra == 'spss'
1665
+ - sqlalchemy>=2.0.36 ; extra == 'postgresql'
1666
+ - psycopg2>=2.9.10 ; extra == 'postgresql'
1667
+ - adbc-driver-postgresql>=1.2.0 ; extra == 'postgresql'
1668
+ - sqlalchemy>=2.0.36 ; extra == 'mysql'
1669
+ - pymysql>=1.1.1 ; extra == 'mysql'
1670
+ - sqlalchemy>=2.0.36 ; extra == 'sql-other'
1671
+ - adbc-driver-postgresql>=1.2.0 ; extra == 'sql-other'
1672
+ - adbc-driver-sqlite>=1.2.0 ; extra == 'sql-other'
1673
+ - beautifulsoup4>=4.12.3 ; extra == 'html'
1679
1674
  - html5lib>=1.1 ; extra == 'html'
1680
- - lxml>=4.9.2 ; extra == 'html'
1681
- - lxml>=4.9.2 ; extra == 'xml'
1682
- - matplotlib>=3.6.3 ; extra == 'plot'
1683
- - jinja2>=3.1.2 ; extra == 'output-formatting'
1675
+ - lxml>=5.3.0 ; extra == 'html'
1676
+ - lxml>=5.3.0 ; extra == 'xml'
1677
+ - matplotlib>=3.9.3 ; extra == 'plot'
1678
+ - jinja2>=3.1.5 ; extra == 'output-formatting'
1684
1679
  - tabulate>=0.9.0 ; extra == 'output-formatting'
1685
1680
  - pyqt5>=5.15.9 ; extra == 'clipboard'
1686
- - qtpy>=2.3.0 ; extra == 'clipboard'
1687
- - zstandard>=0.19.0 ; extra == 'compression'
1688
- - dataframe-api-compat>=0.1.7 ; extra == 'consortium-standard'
1689
- - adbc-driver-postgresql>=0.8.0 ; extra == 'all'
1690
- - adbc-driver-sqlite>=0.8.0 ; extra == 'all'
1691
- - beautifulsoup4>=4.11.2 ; extra == 'all'
1692
- - bottleneck>=1.3.6 ; extra == 'all'
1693
- - dataframe-api-compat>=0.1.7 ; extra == 'all'
1694
- - fastparquet>=2022.12.0 ; extra == 'all'
1695
- - fsspec>=2022.11.0 ; extra == 'all'
1696
- - gcsfs>=2022.11.0 ; extra == 'all'
1681
+ - qtpy>=2.4.2 ; extra == 'clipboard'
1682
+ - zstandard>=0.23.0 ; extra == 'compression'
1683
+ - pytz>=2024.2 ; extra == 'timezone'
1684
+ - adbc-driver-postgresql>=1.2.0 ; extra == 'all'
1685
+ - adbc-driver-sqlite>=1.2.0 ; extra == 'all'
1686
+ - beautifulsoup4>=4.12.3 ; extra == 'all'
1687
+ - bottleneck>=1.4.2 ; extra == 'all'
1688
+ - fastparquet>=2024.11.0 ; extra == 'all'
1689
+ - fsspec>=2024.10.0 ; extra == 'all'
1690
+ - gcsfs>=2024.10.0 ; extra == 'all'
1697
1691
  - html5lib>=1.1 ; extra == 'all'
1698
- - hypothesis>=6.46.1 ; extra == 'all'
1699
- - jinja2>=3.1.2 ; extra == 'all'
1700
- - lxml>=4.9.2 ; extra == 'all'
1701
- - matplotlib>=3.6.3 ; extra == 'all'
1702
- - numba>=0.56.4 ; extra == 'all'
1703
- - numexpr>=2.8.4 ; extra == 'all'
1692
+ - hypothesis>=6.116.0 ; extra == 'all'
1693
+ - jinja2>=3.1.5 ; extra == 'all'
1694
+ - lxml>=5.3.0 ; extra == 'all'
1695
+ - matplotlib>=3.9.3 ; extra == 'all'
1696
+ - numba>=0.60.0 ; extra == 'all'
1697
+ - numexpr>=2.10.2 ; extra == 'all'
1704
1698
  - odfpy>=1.4.1 ; extra == 'all'
1705
- - openpyxl>=3.1.0 ; extra == 'all'
1706
- - pandas-gbq>=0.19.0 ; extra == 'all'
1707
- - psycopg2>=2.9.6 ; extra == 'all'
1708
- - pyarrow>=10.0.1 ; extra == 'all'
1709
- - pymysql>=1.0.2 ; extra == 'all'
1699
+ - openpyxl>=3.1.5 ; extra == 'all'
1700
+ - psycopg2>=2.9.10 ; extra == 'all'
1701
+ - pyarrow>=13.0.0 ; extra == 'all'
1702
+ - pyiceberg>=0.8.1 ; extra == 'all'
1703
+ - pymysql>=1.1.1 ; extra == 'all'
1710
1704
  - pyqt5>=5.15.9 ; extra == 'all'
1711
- - pyreadstat>=1.2.0 ; extra == 'all'
1712
- - pytest>=7.3.2 ; extra == 'all'
1713
- - pytest-xdist>=2.2.0 ; extra == 'all'
1714
- - python-calamine>=0.1.7 ; extra == 'all'
1705
+ - pyreadstat>=1.2.8 ; extra == 'all'
1706
+ - pytest>=8.3.4 ; extra == 'all'
1707
+ - pytest-xdist>=3.6.1 ; extra == 'all'
1708
+ - python-calamine>=0.3.0 ; extra == 'all'
1709
+ - pytz>=2024.2 ; extra == 'all'
1715
1710
  - pyxlsb>=1.0.10 ; extra == 'all'
1716
- - qtpy>=2.3.0 ; extra == 'all'
1717
- - scipy>=1.10.0 ; extra == 'all'
1718
- - s3fs>=2022.11.0 ; extra == 'all'
1719
- - sqlalchemy>=2.0.0 ; extra == 'all'
1720
- - tables>=3.8.0 ; extra == 'all'
1711
+ - qtpy>=2.4.2 ; extra == 'all'
1712
+ - scipy>=1.14.1 ; extra == 'all'
1713
+ - s3fs>=2024.10.0 ; extra == 'all'
1714
+ - sqlalchemy>=2.0.36 ; extra == 'all'
1715
+ - tables>=3.10.1 ; extra == 'all'
1721
1716
  - tabulate>=0.9.0 ; extra == 'all'
1722
- - xarray>=2022.12.0 ; extra == 'all'
1717
+ - xarray>=2024.10.0 ; extra == 'all'
1723
1718
  - xlrd>=2.0.1 ; extra == 'all'
1724
- - xlsxwriter>=3.0.5 ; extra == 'all'
1725
- - zstandard>=0.19.0 ; extra == 'all'
1726
- requires_python: '>=3.9'
1727
- - pypi: https://files.pythonhosted.org/packages/cd/4b/18b035ee18f97c1040d94debd8f2e737000ad70ccc8f5513f4eefad75f4b/pandas-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl
1719
+ - xlsxwriter>=3.2.0 ; extra == 'all'
1720
+ - zstandard>=0.23.0 ; extra == 'all'
1721
+ requires_python: '>=3.11'
1722
+ - pypi: https://files.pythonhosted.org/packages/f7/a3/51e02ebc2a14974170d51e2410dfdab58870ea9bcd37cda15bd553d24dc4/pandas-3.0.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
1728
1723
  name: pandas
1729
- version: 2.3.3
1730
- sha256: 56851a737e3470de7fa88e6131f41281ed440d29a9268dcbf0002da5ac366713
1724
+ version: 3.0.0
1725
+ sha256: 95683af6175d884ee89471842acfca29172a85031fccdabc35e50c0984470a0e
1731
1726
  requires_dist:
1732
- - numpy>=1.22.4 ; python_full_version < '3.11'
1733
- - numpy>=1.23.2 ; python_full_version == '3.11.*'
1734
- - numpy>=1.26.0 ; python_full_version >= '3.12'
1727
+ - numpy>=1.26.0 ; python_full_version < '3.14'
1728
+ - numpy>=2.3.3 ; python_full_version >= '3.14'
1735
1729
  - python-dateutil>=2.8.2
1736
- - pytz>=2020.1
1737
- - tzdata>=2022.7
1738
- - hypothesis>=6.46.1 ; extra == 'test'
1739
- - pytest>=7.3.2 ; extra == 'test'
1740
- - pytest-xdist>=2.2.0 ; extra == 'test'
1741
- - pyarrow>=10.0.1 ; extra == 'pyarrow'
1742
- - bottleneck>=1.3.6 ; extra == 'performance'
1743
- - numba>=0.56.4 ; extra == 'performance'
1744
- - numexpr>=2.8.4 ; extra == 'performance'
1745
- - scipy>=1.10.0 ; extra == 'computation'
1746
- - xarray>=2022.12.0 ; extra == 'computation'
1747
- - fsspec>=2022.11.0 ; extra == 'fss'
1748
- - s3fs>=2022.11.0 ; extra == 'aws'
1749
- - gcsfs>=2022.11.0 ; extra == 'gcp'
1750
- - pandas-gbq>=0.19.0 ; extra == 'gcp'
1730
+ - tzdata ; sys_platform == 'win32'
1731
+ - tzdata ; sys_platform == 'emscripten'
1732
+ - hypothesis>=6.116.0 ; extra == 'test'
1733
+ - pytest>=8.3.4 ; extra == 'test'
1734
+ - pytest-xdist>=3.6.1 ; extra == 'test'
1735
+ - pyarrow>=13.0.0 ; extra == 'pyarrow'
1736
+ - bottleneck>=1.4.2 ; extra == 'performance'
1737
+ - numba>=0.60.0 ; extra == 'performance'
1738
+ - numexpr>=2.10.2 ; extra == 'performance'
1739
+ - scipy>=1.14.1 ; extra == 'computation'
1740
+ - xarray>=2024.10.0 ; extra == 'computation'
1741
+ - fsspec>=2024.10.0 ; extra == 'fss'
1742
+ - s3fs>=2024.10.0 ; extra == 'aws'
1743
+ - gcsfs>=2024.10.0 ; extra == 'gcp'
1751
1744
  - odfpy>=1.4.1 ; extra == 'excel'
1752
- - openpyxl>=3.1.0 ; extra == 'excel'
1753
- - python-calamine>=0.1.7 ; extra == 'excel'
1745
+ - openpyxl>=3.1.5 ; extra == 'excel'
1746
+ - python-calamine>=0.3.0 ; extra == 'excel'
1754
1747
  - pyxlsb>=1.0.10 ; extra == 'excel'
1755
1748
  - xlrd>=2.0.1 ; extra == 'excel'
1756
- - xlsxwriter>=3.0.5 ; extra == 'excel'
1757
- - pyarrow>=10.0.1 ; extra == 'parquet'
1758
- - pyarrow>=10.0.1 ; extra == 'feather'
1759
- - tables>=3.8.0 ; extra == 'hdf5'
1760
- - pyreadstat>=1.2.0 ; extra == 'spss'
1761
- - sqlalchemy>=2.0.0 ; extra == 'postgresql'
1762
- - psycopg2>=2.9.6 ; extra == 'postgresql'
1763
- - adbc-driver-postgresql>=0.8.0 ; extra == 'postgresql'
1764
- - sqlalchemy>=2.0.0 ; extra == 'mysql'
1765
- - pymysql>=1.0.2 ; extra == 'mysql'
1766
- - sqlalchemy>=2.0.0 ; extra == 'sql-other'
1767
- - adbc-driver-postgresql>=0.8.0 ; extra == 'sql-other'
1768
- - adbc-driver-sqlite>=0.8.0 ; extra == 'sql-other'
1769
- - beautifulsoup4>=4.11.2 ; extra == 'html'
1749
+ - xlsxwriter>=3.2.0 ; extra == 'excel'
1750
+ - pyarrow>=13.0.0 ; extra == 'parquet'
1751
+ - pyarrow>=13.0.0 ; extra == 'feather'
1752
+ - pyiceberg>=0.8.1 ; extra == 'iceberg'
1753
+ - tables>=3.10.1 ; extra == 'hdf5'
1754
+ - pyreadstat>=1.2.8 ; extra == 'spss'
1755
+ - sqlalchemy>=2.0.36 ; extra == 'postgresql'
1756
+ - psycopg2>=2.9.10 ; extra == 'postgresql'
1757
+ - adbc-driver-postgresql>=1.2.0 ; extra == 'postgresql'
1758
+ - sqlalchemy>=2.0.36 ; extra == 'mysql'
1759
+ - pymysql>=1.1.1 ; extra == 'mysql'
1760
+ - sqlalchemy>=2.0.36 ; extra == 'sql-other'
1761
+ - adbc-driver-postgresql>=1.2.0 ; extra == 'sql-other'
1762
+ - adbc-driver-sqlite>=1.2.0 ; extra == 'sql-other'
1763
+ - beautifulsoup4>=4.12.3 ; extra == 'html'
1770
1764
  - html5lib>=1.1 ; extra == 'html'
1771
- - lxml>=4.9.2 ; extra == 'html'
1772
- - lxml>=4.9.2 ; extra == 'xml'
1773
- - matplotlib>=3.6.3 ; extra == 'plot'
1774
- - jinja2>=3.1.2 ; extra == 'output-formatting'
1765
+ - lxml>=5.3.0 ; extra == 'html'
1766
+ - lxml>=5.3.0 ; extra == 'xml'
1767
+ - matplotlib>=3.9.3 ; extra == 'plot'
1768
+ - jinja2>=3.1.5 ; extra == 'output-formatting'
1775
1769
  - tabulate>=0.9.0 ; extra == 'output-formatting'
1776
1770
  - pyqt5>=5.15.9 ; extra == 'clipboard'
1777
- - qtpy>=2.3.0 ; extra == 'clipboard'
1778
- - zstandard>=0.19.0 ; extra == 'compression'
1779
- - dataframe-api-compat>=0.1.7 ; extra == 'consortium-standard'
1780
- - adbc-driver-postgresql>=0.8.0 ; extra == 'all'
1781
- - adbc-driver-sqlite>=0.8.0 ; extra == 'all'
1782
- - beautifulsoup4>=4.11.2 ; extra == 'all'
1783
- - bottleneck>=1.3.6 ; extra == 'all'
1784
- - dataframe-api-compat>=0.1.7 ; extra == 'all'
1785
- - fastparquet>=2022.12.0 ; extra == 'all'
1786
- - fsspec>=2022.11.0 ; extra == 'all'
1787
- - gcsfs>=2022.11.0 ; extra == 'all'
1771
+ - qtpy>=2.4.2 ; extra == 'clipboard'
1772
+ - zstandard>=0.23.0 ; extra == 'compression'
1773
+ - pytz>=2024.2 ; extra == 'timezone'
1774
+ - adbc-driver-postgresql>=1.2.0 ; extra == 'all'
1775
+ - adbc-driver-sqlite>=1.2.0 ; extra == 'all'
1776
+ - beautifulsoup4>=4.12.3 ; extra == 'all'
1777
+ - bottleneck>=1.4.2 ; extra == 'all'
1778
+ - fastparquet>=2024.11.0 ; extra == 'all'
1779
+ - fsspec>=2024.10.0 ; extra == 'all'
1780
+ - gcsfs>=2024.10.0 ; extra == 'all'
1788
1781
  - html5lib>=1.1 ; extra == 'all'
1789
- - hypothesis>=6.46.1 ; extra == 'all'
1790
- - jinja2>=3.1.2 ; extra == 'all'
1791
- - lxml>=4.9.2 ; extra == 'all'
1792
- - matplotlib>=3.6.3 ; extra == 'all'
1793
- - numba>=0.56.4 ; extra == 'all'
1794
- - numexpr>=2.8.4 ; extra == 'all'
1782
+ - hypothesis>=6.116.0 ; extra == 'all'
1783
+ - jinja2>=3.1.5 ; extra == 'all'
1784
+ - lxml>=5.3.0 ; extra == 'all'
1785
+ - matplotlib>=3.9.3 ; extra == 'all'
1786
+ - numba>=0.60.0 ; extra == 'all'
1787
+ - numexpr>=2.10.2 ; extra == 'all'
1795
1788
  - odfpy>=1.4.1 ; extra == 'all'
1796
- - openpyxl>=3.1.0 ; extra == 'all'
1797
- - pandas-gbq>=0.19.0 ; extra == 'all'
1798
- - psycopg2>=2.9.6 ; extra == 'all'
1799
- - pyarrow>=10.0.1 ; extra == 'all'
1800
- - pymysql>=1.0.2 ; extra == 'all'
1789
+ - openpyxl>=3.1.5 ; extra == 'all'
1790
+ - psycopg2>=2.9.10 ; extra == 'all'
1791
+ - pyarrow>=13.0.0 ; extra == 'all'
1792
+ - pyiceberg>=0.8.1 ; extra == 'all'
1793
+ - pymysql>=1.1.1 ; extra == 'all'
1801
1794
  - pyqt5>=5.15.9 ; extra == 'all'
1802
- - pyreadstat>=1.2.0 ; extra == 'all'
1803
- - pytest>=7.3.2 ; extra == 'all'
1804
- - pytest-xdist>=2.2.0 ; extra == 'all'
1805
- - python-calamine>=0.1.7 ; extra == 'all'
1795
+ - pyreadstat>=1.2.8 ; extra == 'all'
1796
+ - pytest>=8.3.4 ; extra == 'all'
1797
+ - pytest-xdist>=3.6.1 ; extra == 'all'
1798
+ - python-calamine>=0.3.0 ; extra == 'all'
1799
+ - pytz>=2024.2 ; extra == 'all'
1806
1800
  - pyxlsb>=1.0.10 ; extra == 'all'
1807
- - qtpy>=2.3.0 ; extra == 'all'
1808
- - scipy>=1.10.0 ; extra == 'all'
1809
- - s3fs>=2022.11.0 ; extra == 'all'
1810
- - sqlalchemy>=2.0.0 ; extra == 'all'
1811
- - tables>=3.8.0 ; extra == 'all'
1801
+ - qtpy>=2.4.2 ; extra == 'all'
1802
+ - scipy>=1.14.1 ; extra == 'all'
1803
+ - s3fs>=2024.10.0 ; extra == 'all'
1804
+ - sqlalchemy>=2.0.36 ; extra == 'all'
1805
+ - tables>=3.10.1 ; extra == 'all'
1812
1806
  - tabulate>=0.9.0 ; extra == 'all'
1813
- - xarray>=2022.12.0 ; extra == 'all'
1807
+ - xarray>=2024.10.0 ; extra == 'all'
1814
1808
  - xlrd>=2.0.1 ; extra == 'all'
1815
- - xlsxwriter>=3.0.5 ; extra == 'all'
1816
- - zstandard>=0.19.0 ; extra == 'all'
1817
- requires_python: '>=3.9'
1818
- - pypi: https://files.pythonhosted.org/packages/b0/2d/a159ff23441ad2fc8081ea553a53804d3f1625bb6b1b7e1b4d2eb9371676/panel-1.8.5-py3-none-any.whl
1809
+ - xlsxwriter>=3.2.0 ; extra == 'all'
1810
+ - zstandard>=0.23.0 ; extra == 'all'
1811
+ requires_python: '>=3.11'
1812
+ - pypi: https://files.pythonhosted.org/packages/f2/f9/08b9a36815074e99ff3ded1ad1a20dca1dc9a7c116628b3c9808df451da4/panel-1.8.6-py3-none-any.whl
1819
1813
  name: panel
1820
- version: 1.8.5
1821
- sha256: b2baf010fcfac4c92eeffe71f469907b2f7fadcffdd36e42f87c541cbb48c3b3
1814
+ version: 1.8.6
1815
+ sha256: 658d7c6586787719ee12ebf359dbfdf4f9800b4792f296de6ca0af250d971b7a
1822
1816
  requires_dist:
1823
1817
  - bleach
1824
1818
  - bokeh>=3.7.0,<3.9.0
@@ -2304,10 +2298,6 @@ packages:
2304
2298
  purls: []
2305
2299
  size: 7002
2306
2300
  timestamp: 1752805902938
2307
- - pypi: https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl
2308
- name: pytz
2309
- version: '2025.2'
2310
- sha256: 5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00
2311
2301
  - pypi: https://files.pythonhosted.org/packages/13/5a/f8c0868199bbb231a02616286ce8a4ccb85f5387b9215510297dcfedd214/pyviz_comms-3.0.6-py3-none-any.whl
2312
2302
  name: pyviz-comms
2313
2303
  version: 3.0.6
@@ -2379,10 +2369,10 @@ packages:
2379
2369
  - pysocks>=1.5.6,!=1.5.7 ; extra == 'socks'
2380
2370
  - chardet>=3.0.2,<6 ; extra == 'use-chardet-on-py3'
2381
2371
  requires_python: '>=3.9'
2382
- - pypi: https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl
2372
+ - pypi: https://files.pythonhosted.org/packages/87/2a/a1810c8627b9ec8c57ec5ec325d306701ae7be50235e8fd81266e002a3cc/rich-14.3.1-py3-none-any.whl
2383
2373
  name: rich
2384
- version: 14.2.0
2385
- sha256: 76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd
2374
+ version: 14.3.1
2375
+ sha256: da750b1aebbff0b372557426fb3f35ba56de8ef954b3190315eb64076d6fb54e
2386
2376
  requires_dist:
2387
2377
  - ipywidgets>=7.5.1,<9 ; extra == 'jupyter'
2388
2378
  - markdown-it-py>=2.2.0
@@ -2684,11 +2674,6 @@ packages:
2684
2674
  requires_dist:
2685
2675
  - typing-extensions>=4.12.0
2686
2676
  requires_python: '>=3.9'
2687
- - pypi: https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl
2688
- name: tzdata
2689
- version: '2025.3'
2690
- sha256: 06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1
2691
- requires_python: '>=2'
2692
2677
  - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
2693
2678
  sha256: 5aaa366385d716557e365f0a4e9c3fca43ba196872abbbe3d56bb610d131e192
2694
2679
  md5: 4222072737ccff51314b5ece9c7d6f5a
@@ -2764,11 +2749,11 @@ packages:
2764
2749
  - setuptools>=68 ; extra == 'test'
2765
2750
  - time-machine>=2.10 ; platform_python_implementation == 'CPython' and extra == 'test'
2766
2751
  requires_python: '>=3.8'
2767
- - pypi: https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl
2752
+ - pypi: https://files.pythonhosted.org/packages/b7/f6/da704c5e77281d71723bffbd926b754c0efd57cbcd02e74c2ca374c14cef/wcwidth-0.4.0-py3-none-any.whl
2768
2753
  name: wcwidth
2769
- version: 0.2.14
2770
- sha256: a7bb560c8aee30f9957e5f9895805edd20602f2d7f720186dfd906e82b4982e1
2771
- requires_python: '>=3.6'
2754
+ version: 0.4.0
2755
+ sha256: 8af2c81174b3aa17adf05058c543c267e4e5b6767a28e31a673a658c1d766783
2756
+ requires_python: '>=3.8'
2772
2757
  - pypi: https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl
2773
2758
  name: webencodings
2774
2759
  version: 0.5.1
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "nova-mvvm"
3
- version = "0.14.0"
3
+ version = "0.15.1"
4
4
  description = "A Python Package for Model-View-ViewModel pattern"
5
5
  authors = [
6
6
  { name = "Sergey Yakubov", email = "yakubovs@ornl.gov" },
@@ -12,6 +12,8 @@ from ._internal.pydantic_utils import get_nested_pydantic_field
12
12
 
13
13
  logger = logging.getLogger(__name__)
14
14
 
15
+ ERROR_FIELD_NAME = "pydantic_errors"
16
+
15
17
 
16
18
  def get_field_info(field_name: str) -> FieldInfo:
17
19
  """
@@ -28,6 +28,7 @@ from ..interface import (
28
28
  LinkedObjectType,
29
29
  Worker,
30
30
  )
31
+ from ..pydantic_utils import ERROR_FIELD_NAME
31
32
  from .trame_worker import TrameWorker
32
33
 
33
34
 
@@ -176,12 +177,26 @@ class StateConnection:
176
177
  return update
177
178
 
178
179
  def _set_variable_in_state(self, name_in_state: str, value: Any) -> None:
180
+ if "." in name_in_state:
181
+ base_name, name_in_state = name_in_state.split(".", maxsplit=1)
182
+ if self.state[base_name] is None:
183
+ self.state[base_name] = {}
184
+ state_obj = self.state[base_name]
185
+ else:
186
+ base_name = name_in_state
187
+ state_obj = self.state
188
+
189
+ if not isinstance(state_obj, State) and not isinstance(state_obj, dict):
190
+ # TODO: it would be preferred to disallow non-Pydantic objects from use, but
191
+ # until that is complete we need to skip error tracking for them.
192
+ return
193
+
179
194
  if is_async():
180
195
  with self.state:
181
- self.state[name_in_state] = value
196
+ state_obj[name_in_state] = value
182
197
  self.state.dirty(name_in_state)
183
198
  else:
184
- self.state[name_in_state] = value
199
+ state_obj[name_in_state] = value
185
200
  self.state.dirty(name_in_state)
186
201
 
187
202
  def _get_name_in_state(self, attribute_name: str) -> str:
@@ -207,6 +222,9 @@ class StateConnection:
207
222
  name_in_state = self._get_name_in_state(attribute_name)
208
223
  self.state.setdefault(name_in_state, None)
209
224
 
225
+ # Set the initial error state.
226
+ self._set_variable_in_state(f"{state_variable_name}.{ERROR_FIELD_NAME}", [])
227
+
210
228
  # this updates ViewModel on state change
211
229
  if self.viewmodel_linked_object:
212
230
  if self.linked_object_attributes:
@@ -234,6 +252,7 @@ class StateConnection:
234
252
  updated = False
235
253
  except ValidationError as e:
236
254
  errors = get_errored_fields_from_validation_error(e)
255
+ self._set_variable_in_state(f"{state_variable_name}.{ERROR_FIELD_NAME}", errors)
237
256
  error = e
238
257
  updated = True
239
258
  self.has_errors = True
@@ -248,6 +267,7 @@ class StateConnection:
248
267
  if self.has_errors and not errors:
249
268
  updated = True
250
269
  self.has_errors = False
270
+ self._set_variable_in_state(f"{state_variable_name}.{ERROR_FIELD_NAME}", [])
251
271
  if updated:
252
272
  await self._handle_callback({"updated": updates, "errored": errors, "error": error})
253
273
 
@@ -260,8 +280,10 @@ class StateConnection:
260
280
  name_in_state = self._get_name_in_state(attribute_name)
261
281
  value_to_change = rgetattr(value, attribute_name)
262
282
  self._set_variable_in_state(name_in_state, value_to_change)
283
+ self._set_variable_in_state(f"{name_in_state}.{ERROR_FIELD_NAME}", [])
263
284
  elif self.state_variable_name:
264
285
  self._set_variable_in_state(self.state_variable_name, value)
286
+ self._set_variable_in_state(f"{self.state_variable_name}.{ERROR_FIELD_NAME}", [])
265
287
 
266
288
  def get_callback(self) -> ConnectCallbackType:
267
289
  return None
@@ -11,6 +11,7 @@ from trame_server import Server
11
11
 
12
12
  from nova.mvvm import bindings_map
13
13
  from nova.mvvm._internal.utils import rgetattr, rsetdictvalue
14
+ from nova.mvvm.pydantic_utils import ERROR_FIELD_NAME
14
15
  from nova.mvvm.trame_binding import TrameBinding
15
16
  from nova.mvvm.trame_binding.trame_worker import ProgressCallback
16
17
 
@@ -180,6 +181,22 @@ async def test_binding_incorrect_value(server: Server) -> None:
180
181
  binding2.connect("test_empty")
181
182
  binding2.update_in_view(test_user)
182
183
 
184
+ # Verify that the Pydantic errors field is included in the state for both bindings.
185
+ assert server.state.test_range[ERROR_FIELD_NAME] == []
186
+ assert server.state.test_empty[ERROR_FIELD_NAME] == []
187
+
188
+ # Verify that an error is added correctly on change
189
+ with server.state:
190
+ server.state.test_range["min_value"] = 11
191
+ server.state.dirty("test_range")
192
+ server.state.flush()
193
+ await asyncio.sleep(1)
194
+ assert len(server.state.test_range[ERROR_FIELD_NAME]) == 1
195
+
196
+ binding3 = TrameBinding(server.state).new_bind([])
197
+ binding3.connect("test_non_pydantic")
198
+ binding3.update_in_view(["test"])
199
+
183
200
 
184
201
  res = 0
185
202
  progress_value: float = -1
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes