nova-mvvm 0.14.0__tar.gz → 0.15.0__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.0}/PKG-INFO +1 -1
  2. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/pixi.lock +203 -218
  3. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/pyproject.toml +1 -1
  4. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/src/nova/mvvm/pydantic_utils.py +2 -0
  5. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/src/nova/mvvm/trame_binding/binding.py +19 -2
  6. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/tests/test_trame_bindings.py +13 -0
  7. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/.copier-answers.yml +0 -0
  8. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/.dockerignore +0 -0
  9. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/.github/workflows/build-test.yml +0 -0
  10. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/.github/workflows/nova-mvvm.yml +0 -0
  11. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/.gitignore +0 -0
  12. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/.pre-commit-config.yaml +0 -0
  13. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/.readthedocs.yml +0 -0
  14. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/.vscode/extensions.json +0 -0
  15. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/.vscode/launch.json +0 -0
  16. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/.vscode/settings.json +0 -0
  17. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/CODE_OF_CONDUCT.md +0 -0
  18. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/CONTRIBUTING.md +0 -0
  19. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/DEVELOPMENT.MD +0 -0
  20. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/LICENSE +0 -0
  21. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/README.md +0 -0
  22. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/build_docs.sh +0 -0
  23. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/dockerfiles/Dockerfile +0 -0
  24. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/docs/api_reference.rst +0 -0
  25. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/docs/conf.py +0 -0
  26. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/docs/core_concepts/data_binding.rst +0 -0
  27. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/docs/core_concepts/index.rst +0 -0
  28. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/docs/core_concepts/mvvm.png +0 -0
  29. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/docs/core_concepts/mvvm.rst +0 -0
  30. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/docs/core_concepts/pydantic.rst +0 -0
  31. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/docs/examples/basic_usage.rst +0 -0
  32. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/docs/examples/index.rst +0 -0
  33. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/docs/index.rst +0 -0
  34. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/docs/installation.rst +0 -0
  35. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/docs/interface.rst +0 -0
  36. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/src/nova/__init__.py +0 -0
  37. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/src/nova/mvvm/__init__.py +0 -0
  38. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/src/nova/mvvm/_internal/pydantic_utils.py +0 -0
  39. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/src/nova/mvvm/_internal/pyqt_communicator.py +0 -0
  40. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/src/nova/mvvm/_internal/utils.py +0 -0
  41. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/src/nova/mvvm/bindings_map.py +0 -0
  42. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/src/nova/mvvm/interface.py +0 -0
  43. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/src/nova/mvvm/panel_binding/__init__.py +0 -0
  44. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/src/nova/mvvm/panel_binding/binding.py +0 -0
  45. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/src/nova/mvvm/pyqt5_binding/__init__.py +0 -0
  46. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/src/nova/mvvm/pyqt5_binding/binding.py +0 -0
  47. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/src/nova/mvvm/pyqt5_binding/pyqt5_worker.py +0 -0
  48. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/src/nova/mvvm/pyqt6_binding/__init__.py +0 -0
  49. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/src/nova/mvvm/pyqt6_binding/binding.py +0 -0
  50. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/src/nova/mvvm/pyqt6_binding/pyqt6_worker.py +0 -0
  51. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/src/nova/mvvm/trame_binding/__init__.py +0 -0
  52. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/src/nova/mvvm/trame_binding/trame_worker.py +0 -0
  53. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/tests/__init__.py +0 -0
  54. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/tests/model.py +0 -0
  55. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/tests/test_panel_bindings.py +0 -0
  56. {nova_mvvm-0.14.0 → nova_mvvm-0.15.0}/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.0
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,22 +82,22 @@ 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
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
101
  - pypi: https://files.pythonhosted.org/packages/b0/2d/a159ff23441ad2fc8081ea553a53804d3f1625bb6b1b7e1b4d2eb9371676/panel-1.8.5-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
@@ -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,22 +230,22 @@ 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
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
251
249
  - pypi: https://files.pythonhosted.org/packages/b0/2d/a159ff23441ad2fc8081ea553a53804d3f1625bb6b1b7e1b4d2eb9371676/panel-1.8.5-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
@@ -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.0
1569
+ sha256: 5d05608440e40865e7c58e93067aa242f1c5029837545a8d4420f693d73d14d3
1574
1570
  requires_dist:
1575
1571
  - trame
1576
1572
  - deepdiff
@@ -1628,193 +1624,191 @@ 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'
1809
+ - xlsxwriter>=3.2.0 ; extra == 'all'
1810
+ - zstandard>=0.23.0 ; extra == 'all'
1811
+ requires_python: '>=3.11'
1818
1812
  - pypi: https://files.pythonhosted.org/packages/b0/2d/a159ff23441ad2fc8081ea553a53804d3f1625bb6b1b7e1b4d2eb9371676/panel-1.8.5-py3-none-any.whl
1819
1813
  name: panel
1820
1814
  version: 1.8.5
@@ -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.0"
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,21 @@ 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
+
179
189
  if is_async():
180
190
  with self.state:
181
- self.state[name_in_state] = value
191
+ state_obj[name_in_state] = value
182
192
  self.state.dirty(name_in_state)
183
193
  else:
184
- self.state[name_in_state] = value
194
+ state_obj[name_in_state] = value
185
195
  self.state.dirty(name_in_state)
186
196
 
187
197
  def _get_name_in_state(self, attribute_name: str) -> str:
@@ -207,6 +217,9 @@ class StateConnection:
207
217
  name_in_state = self._get_name_in_state(attribute_name)
208
218
  self.state.setdefault(name_in_state, None)
209
219
 
220
+ # Set the initial error state.
221
+ self._set_variable_in_state(f"{state_variable_name}.{ERROR_FIELD_NAME}", [])
222
+
210
223
  # this updates ViewModel on state change
211
224
  if self.viewmodel_linked_object:
212
225
  if self.linked_object_attributes:
@@ -234,6 +247,7 @@ class StateConnection:
234
247
  updated = False
235
248
  except ValidationError as e:
236
249
  errors = get_errored_fields_from_validation_error(e)
250
+ self._set_variable_in_state(f"{state_variable_name}.{ERROR_FIELD_NAME}", errors)
237
251
  error = e
238
252
  updated = True
239
253
  self.has_errors = True
@@ -248,6 +262,7 @@ class StateConnection:
248
262
  if self.has_errors and not errors:
249
263
  updated = True
250
264
  self.has_errors = False
265
+ self._set_variable_in_state(f"{state_variable_name}.{ERROR_FIELD_NAME}", [])
251
266
  if updated:
252
267
  await self._handle_callback({"updated": updates, "errored": errors, "error": error})
253
268
 
@@ -260,8 +275,10 @@ class StateConnection:
260
275
  name_in_state = self._get_name_in_state(attribute_name)
261
276
  value_to_change = rgetattr(value, attribute_name)
262
277
  self._set_variable_in_state(name_in_state, value_to_change)
278
+ self._set_variable_in_state(f"{name_in_state}.{ERROR_FIELD_NAME}", [])
263
279
  elif self.state_variable_name:
264
280
  self._set_variable_in_state(self.state_variable_name, value)
281
+ self._set_variable_in_state(f"{self.state_variable_name}.{ERROR_FIELD_NAME}", [])
265
282
 
266
283
  def get_callback(self) -> ConnectCallbackType:
267
284
  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,18 @@ 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
+
183
196
 
184
197
  res = 0
185
198
  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