nova-mvvm 0.15.1__tar.gz → 0.16.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.15.1 → nova_mvvm-0.16.0}/PKG-INFO +1 -1
  2. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/pixi.lock +80 -78
  3. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/pyproject.toml +1 -1
  4. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/src/nova/mvvm/_internal/pydantic_utils.py +5 -0
  5. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/src/nova/mvvm/pydantic_utils.py +16 -2
  6. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/tests/model.py +16 -0
  7. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/tests/test_trame_bindings.py +16 -1
  8. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/.copier-answers.yml +0 -0
  9. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/.dockerignore +0 -0
  10. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/.github/workflows/build-test.yml +0 -0
  11. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/.github/workflows/nova-mvvm.yml +0 -0
  12. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/.gitignore +0 -0
  13. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/.pre-commit-config.yaml +0 -0
  14. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/.readthedocs.yml +0 -0
  15. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/.vscode/extensions.json +0 -0
  16. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/.vscode/launch.json +0 -0
  17. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/.vscode/settings.json +0 -0
  18. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/CODE_OF_CONDUCT.md +0 -0
  19. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/CONTRIBUTING.md +0 -0
  20. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/DEVELOPMENT.MD +0 -0
  21. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/LICENSE +0 -0
  22. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/README.md +0 -0
  23. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/build_docs.sh +0 -0
  24. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/dockerfiles/Dockerfile +0 -0
  25. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/docs/api_reference.rst +0 -0
  26. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/docs/conf.py +0 -0
  27. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/docs/core_concepts/data_binding.rst +0 -0
  28. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/docs/core_concepts/index.rst +0 -0
  29. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/docs/core_concepts/mvvm.png +0 -0
  30. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/docs/core_concepts/mvvm.rst +0 -0
  31. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/docs/core_concepts/pydantic.rst +0 -0
  32. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/docs/examples/basic_usage.rst +0 -0
  33. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/docs/examples/index.rst +0 -0
  34. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/docs/index.rst +0 -0
  35. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/docs/installation.rst +0 -0
  36. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/docs/interface.rst +0 -0
  37. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/src/nova/__init__.py +0 -0
  38. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/src/nova/mvvm/__init__.py +0 -0
  39. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/src/nova/mvvm/_internal/pyqt_communicator.py +0 -0
  40. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/src/nova/mvvm/_internal/utils.py +0 -0
  41. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/src/nova/mvvm/bindings_map.py +0 -0
  42. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/src/nova/mvvm/interface.py +0 -0
  43. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/src/nova/mvvm/panel_binding/__init__.py +0 -0
  44. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/src/nova/mvvm/panel_binding/binding.py +0 -0
  45. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/src/nova/mvvm/pyqt5_binding/__init__.py +0 -0
  46. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/src/nova/mvvm/pyqt5_binding/binding.py +0 -0
  47. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/src/nova/mvvm/pyqt5_binding/pyqt5_worker.py +0 -0
  48. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/src/nova/mvvm/pyqt6_binding/__init__.py +0 -0
  49. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/src/nova/mvvm/pyqt6_binding/binding.py +0 -0
  50. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/src/nova/mvvm/pyqt6_binding/pyqt6_worker.py +0 -0
  51. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/src/nova/mvvm/trame_binding/__init__.py +0 -0
  52. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/src/nova/mvvm/trame_binding/binding.py +0 -0
  53. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/src/nova/mvvm/trame_binding/trame_worker.py +0 -0
  54. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/tests/__init__.py +0 -0
  55. {nova_mvvm-0.15.1 → nova_mvvm-0.16.0}/tests/test_panel_bindings.py +0 -0
  56. {nova_mvvm-0.15.1 → nova_mvvm-0.16.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.15.1
3
+ Version: 0.16.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
@@ -42,7 +42,7 @@ environments:
42
42
  - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl
43
43
  - pypi: https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl
44
44
  - pypi: https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl
45
- - pypi: https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl
45
+ - pypi: https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl
46
46
  - pypi: https://files.pythonhosted.org/packages/82/a2/ac67e79e137eb98aead66c7162bafe3cffcb82ef9cdeb6367ec18d88fbce/backports_zstd-1.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
47
47
  - pypi: https://files.pythonhosted.org/packages/cd/3a/577b549de0cc09d95f11087ee63c739bba856cd3952697eec4c4bb91350a/bleach-6.3.0-py3-none-any.whl
48
48
  - pypi: https://files.pythonhosted.org/packages/f6/a8/877f306720bc114c612579c5af36bcb359026b83d051226945499b306b1a/bokeh-3.8.2-py3-none-any.whl
@@ -54,8 +54,8 @@ environments:
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
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
- - pypi: https://files.pythonhosted.org/packages/c9/56/e7e69b427c3878352c2fb9b450bd0e19ed552753491d39d7d0a2f5226d41/cryptography-46.0.3-cp311-abi3-manylinux_2_28_x86_64.whl
57
+ - pypi: https://files.pythonhosted.org/packages/6f/99/97b600225fbf631e6f5bfd3ad5bcaf87fbb9e34ff87492e5a572ff01bbe2/coverage-7.13.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
58
+ - pypi: https://files.pythonhosted.org/packages/2b/08/f83e2e0814248b844265802d081f2fac2f1cbe6cd258e72ba14ff006823a/cryptography-46.0.4-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
61
61
  - pypi: https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl
@@ -92,15 +92,15 @@ environments:
92
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
- - pypi: https://files.pythonhosted.org/packages/3d/2e/cf2ffeb386ac3763526151163ad7da9f1b586aac96d2b4f7de1eaebf0c61/narwhals-2.15.0-py3-none-any.whl
95
+ - pypi: https://files.pythonhosted.org/packages/03/cc/7cb74758e6df95e0c4e1253f203b6dd7f348bf2f29cf89e9210a2416d535/narwhals-2.16.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
- - 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
97
+ - pypi: https://files.pythonhosted.org/packages/04/dc/46066ce18d01645541f0186877377b9371b8fa8017fa8262002b4ef22612/numpy-2.4.2-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
99
  - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl
100
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
101
+ - pypi: https://files.pythonhosted.org/packages/47/75/689e2ebb7fca5c7c67ce2e2a91538b66b75a3e27a7496aa9ed96c349b2a6/panel-1.8.7-py3-none-any.whl
102
102
  - pypi: https://files.pythonhosted.org/packages/11/da/9d476e9aadfa854719f3cb917e3f7a170a657a182d8d1d6e546594a4872b/param-2.3.1-py3-none-any.whl
103
- - pypi: https://files.pythonhosted.org/packages/32/2b/121e912bd60eebd623f873fd090de0e84f322972ab25a7f9044c056804ed/pathspec-1.0.3-py3-none-any.whl
103
+ - pypi: https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl
104
104
  - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl
105
105
  - pypi: https://files.pythonhosted.org/packages/01/9a/632e58ec89a32738cabfd9ec418f0e9898a2b4719afc581f07c04a05e3c9/pillow-12.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
106
106
  - pypi: https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl
@@ -130,7 +130,7 @@ environments:
130
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
131
131
  - pypi: https://files.pythonhosted.org/packages/3c/26/1062c7ec1b053db9e499b4d2d5bc231743201b74051c973dadeac80a8f43/questionary-2.1.1-py3-none-any.whl
132
132
  - pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl
133
- - pypi: https://files.pythonhosted.org/packages/87/2a/a1810c8627b9ec8c57ec5ec325d306701ae7be50235e8fd81266e002a3cc/rich-14.3.1-py3-none-any.whl
133
+ - pypi: https://files.pythonhosted.org/packages/ef/45/615f5babd880b4bd7d405cc0dc348234c5ffb6ed1ea33e152ede08b2072d/rich-14.3.2-py3-none-any.whl
134
134
  - pypi: https://files.pythonhosted.org/packages/04/54/6f679c435d28e0a568d8e8a7c0a93a09010818634c3c3907fc98d8983770/roman_numerals-4.1.0-py3-none-any.whl
135
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
136
136
  - pypi: https://files.pythonhosted.org/packages/b7/46/f5af3402b579fd5e11573ce652019a67074317e18c1935cc0b4ba9b35552/secretstorage-3.5.0-py3-none-any.whl
@@ -151,7 +151,7 @@ environments:
151
151
  - pypi: https://files.pythonhosted.org/packages/c7/18/c86eb8e0202e32dd3df50d43d7ff9854f8e0603945ff398974c1d91ac1ef/tomli_w-1.2.0-py3-none-any.whl
152
152
  - pypi: https://files.pythonhosted.org/packages/b5/11/87d6d29fb5d237229d67973a6c9e06e048f01cf4994dee194ab0ea841814/tomlkit-0.14.0-py3-none-any.whl
153
153
  - pypi: https://files.pythonhosted.org/packages/50/d4/e51d52047e7eb9a582da59f32125d17c0482d065afd5d3bc435ff2120dc5/tornado-6.5.4-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
154
- - pypi: https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl
154
+ - pypi: https://files.pythonhosted.org/packages/f5/e2/31eac96de2915cf20ccaed0225035db149dfb9165a9ed28d4b252ef3f7f7/tqdm-4.67.2-py3-none-any.whl
155
155
  - pypi: https://files.pythonhosted.org/packages/70/15/5869b2c7556fce52306b6b65b06ec7c088f063b865cdfa75ad30bc229b7c/trame-3.12.0-py3-none-any.whl
156
156
  - pypi: https://files.pythonhosted.org/packages/0f/3b/defac846c42dfaf27090d8294fbda0cbbeeb2e80b4b651841cc0e8f35d34/trame_client-3.11.2-py3-none-any.whl
157
157
  - pypi: https://files.pythonhosted.org/packages/f4/69/daf207ff13168c454b984e3d90cbb5765cf3db43243bf6d69eae5c749ca1/trame_common-1.1.1-py3-none-any.whl
@@ -162,9 +162,9 @@ environments:
162
162
  - pypi: https://files.pythonhosted.org/packages/37/87/1f677586e8ac487e29672e4b17455758fce261de06a0d086167bb760361a/uc_micro_py-1.0.3-py3-none-any.whl
163
163
  - pypi: https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl
164
164
  - pypi: https://files.pythonhosted.org/packages/43/99/3ec6335ded5b88c2f7ed25c56ffd952546f7ed007ffb1e1539dc3b57015a/userpath-1.9.2-py3-none-any.whl
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
165
+ - pypi: https://files.pythonhosted.org/packages/9a/fd/82561751105ed232f1781747bc336b20e8d57ee07b4d2ed3fa6cf2718d71/uv-0.9.28-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
166
166
  - pypi: https://files.pythonhosted.org/packages/6a/2a/dc2228b2888f51192c7dc766106cd475f1b768c10caaf9727659726f7391/virtualenv-20.36.1-py3-none-any.whl
167
- - pypi: https://files.pythonhosted.org/packages/b7/f6/da704c5e77281d71723bffbd926b754c0efd57cbcd02e74c2ca374c14cef/wcwidth-0.4.0-py3-none-any.whl
167
+ - pypi: https://files.pythonhosted.org/packages/3c/c1/d73f12f8cdb1891334a2ccf7389eed244d3941e74d80dd220badb937f3fb/wcwidth-0.5.3-py3-none-any.whl
168
168
  - pypi: https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl
169
169
  - pypi: https://files.pythonhosted.org/packages/a2/33/44baf508511b036e455693cd874088f622b8f68e61415e92581a3ffdbbee/wslink-2.5.0-py3-none-any.whl
170
170
  - pypi: https://files.pythonhosted.org/packages/ef/5c/2c189d18d495dd0fa3f27ccc60762bbc787eed95b9b0147266e72bb76585/xyzservices-2025.11.0-py3-none-any.whl
@@ -193,7 +193,7 @@ environments:
193
193
  - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl
194
194
  - pypi: https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl
195
195
  - pypi: https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl
196
- - pypi: https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl
196
+ - pypi: https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl
197
197
  - pypi: https://files.pythonhosted.org/packages/0c/7d/53e8da5950cdfc5e8fe23efd5165ce2f4fed5222f9a3292e0cdb03dd8c0d/backports_zstd-1.3.0-cp313-cp313-macosx_10_13_x86_64.whl
198
198
  - pypi: https://files.pythonhosted.org/packages/cd/3a/577b549de0cc09d95f11087ee63c739bba856cd3952697eec4c4bb91350a/bleach-6.3.0-py3-none-any.whl
199
199
  - pypi: https://files.pythonhosted.org/packages/f6/a8/877f306720bc114c612579c5af36bcb359026b83d051226945499b306b1a/bokeh-3.8.2-py3-none-any.whl
@@ -204,7 +204,7 @@ environments:
204
204
  - pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl
205
205
  - pypi: https://files.pythonhosted.org/packages/68/35/0167aad910bbdb9599272bd96d01a9ec6852f36b9455cf2ca67bd4cc2d23/contourpy-1.3.3-cp313-cp313-macosx_10_13_x86_64.whl
206
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
207
+ - pypi: https://files.pythonhosted.org/packages/81/f3/4c333da7b373e8c8bfb62517e8174a01dcc373d7a9083698e3b39d50d59c/coverage-7.13.3-cp313-cp313-macosx_10_13_x86_64.whl
208
208
  - pypi: https://files.pythonhosted.org/packages/f7/e6/efe534ef0952b531b630780e19cabd416e2032697019d5295defc6ef9bd9/deepdiff-8.6.1-py3-none-any.whl
209
209
  - pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
210
210
  - pypi: https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl
@@ -240,15 +240,15 @@ environments:
240
240
  - pypi: https://files.pythonhosted.org/packages/c7/75/bc704ae15fee974f8fccd871305e254754167dce5f9e42d88a2def741a1d/multidict-6.7.1-cp313-cp313-macosx_10_13_x86_64.whl
241
241
  - pypi: https://files.pythonhosted.org/packages/de/9f/a6abae693f7a0c697dbb435aac52e958dc8da44e92e08ba88d2e42326176/mypy-1.19.1-cp313-cp313-macosx_10_13_x86_64.whl
242
242
  - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl
243
- - pypi: https://files.pythonhosted.org/packages/3d/2e/cf2ffeb386ac3763526151163ad7da9f1b586aac96d2b4f7de1eaebf0c61/narwhals-2.15.0-py3-none-any.whl
243
+ - pypi: https://files.pythonhosted.org/packages/03/cc/7cb74758e6df95e0c4e1253f203b6dd7f348bf2f29cf89e9210a2416d535/narwhals-2.16.0-py3-none-any.whl
244
244
  - pypi: https://files.pythonhosted.org/packages/88/b2/d0896bdcdc8d28a7fc5717c305f1a861c26e18c05047949fb371034d98bd/nodeenv-1.10.0-py2.py3-none-any.whl
245
- - pypi: https://files.pythonhosted.org/packages/04/68/732d4b7811c00775f3bd522a21e8dd5a23f77eb11acdeb663e4a4ebf0ef4/numpy-2.4.1-cp313-cp313-macosx_10_13_x86_64.whl
245
+ - pypi: https://files.pythonhosted.org/packages/a1/22/815b9fe25d1d7ae7d492152adbc7226d3eff731dffc38fe970589fcaaa38/numpy-2.4.2-cp313-cp313-macosx_10_13_x86_64.whl
246
246
  - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl
247
247
  - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl
248
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
249
+ - pypi: https://files.pythonhosted.org/packages/47/75/689e2ebb7fca5c7c67ce2e2a91538b66b75a3e27a7496aa9ed96c349b2a6/panel-1.8.7-py3-none-any.whl
250
250
  - pypi: https://files.pythonhosted.org/packages/11/da/9d476e9aadfa854719f3cb917e3f7a170a657a182d8d1d6e546594a4872b/param-2.3.1-py3-none-any.whl
251
- - pypi: https://files.pythonhosted.org/packages/32/2b/121e912bd60eebd623f873fd090de0e84f322972ab25a7f9044c056804ed/pathspec-1.0.3-py3-none-any.whl
251
+ - pypi: https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl
252
252
  - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl
253
253
  - pypi: https://files.pythonhosted.org/packages/4f/bf/28ab865de622e14b747f0cd7877510848252d950e43002e224fb1c9ababf/pillow-12.1.0-cp313-cp313-macosx_10_13_x86_64.whl
254
254
  - pypi: https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl
@@ -267,7 +267,7 @@ environments:
267
267
  - pypi: https://files.pythonhosted.org/packages/46/90/bf01ac2132400997a3474051dd680a583381ebf98b2f5d64d4e54138dc42/pyqt5_qt5-5.15.18-py3-none-macosx_10_13_x86_64.whl
268
268
  - pypi: https://files.pythonhosted.org/packages/79/67/8d43d0fea10ff48ddecc8534aead8b855dc80df80653b8b1bf9e1f993063/pyqt5_sip-12.18.0-cp313-cp313-macosx_10_13_universal2.whl
269
269
  - pypi: https://files.pythonhosted.org/packages/fb/3f/f073a980969aa485ef288eb2e3b94c223ba9c7ac9941543f19b51659b98d/pyqt6-6.10.2-cp39-abi3-macosx_10_14_universal2.whl
270
- - pypi: https://files.pythonhosted.org/packages/54/1b/137184632cad83a210e7955226744a77945260ca2e75892fe36299d26ada/pyqt6_qt6-6.10.1-py3-none-macosx_10_14_x86_64.whl
270
+ - pypi: https://files.pythonhosted.org/packages/9a/eb/f04d547d8ed9f20c7b246db4ef5d93b49cab4692009a10652ed0a8b9d2aa/pyqt6_qt6-6.10.2-py3-none-macosx_10_14_x86_64.whl
271
271
  - pypi: https://files.pythonhosted.org/packages/df/a0/46abcae4fce175a326185460a02c13ab81332bca7dd55c1e853ba6aee71e/pyqt6_sip-13.11.0-cp313-cp313-macosx_10_13_universal2.whl
272
272
  - pypi: https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl
273
273
  - pypi: https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl
@@ -277,7 +277,7 @@ environments:
277
277
  - pypi: https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl
278
278
  - pypi: https://files.pythonhosted.org/packages/3c/26/1062c7ec1b053db9e499b4d2d5bc231743201b74051c973dadeac80a8f43/questionary-2.1.1-py3-none-any.whl
279
279
  - pypi: https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl
280
- - pypi: https://files.pythonhosted.org/packages/87/2a/a1810c8627b9ec8c57ec5ec325d306701ae7be50235e8fd81266e002a3cc/rich-14.3.1-py3-none-any.whl
280
+ - pypi: https://files.pythonhosted.org/packages/ef/45/615f5babd880b4bd7d405cc0dc348234c5ffb6ed1ea33e152ede08b2072d/rich-14.3.2-py3-none-any.whl
281
281
  - pypi: https://files.pythonhosted.org/packages/04/54/6f679c435d28e0a568d8e8a7c0a93a09010818634c3c3907fc98d8983770/roman_numerals-4.1.0-py3-none-any.whl
282
282
  - pypi: https://files.pythonhosted.org/packages/46/c8/09b3ab245d8652eafe5256ab59718641429f68681ee713ff06c5c549f156/ruff-0.14.4-py3-none-macosx_10_12_x86_64.whl
283
283
  - pypi: https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl
@@ -297,7 +297,7 @@ environments:
297
297
  - pypi: https://files.pythonhosted.org/packages/c7/18/c86eb8e0202e32dd3df50d43d7ff9854f8e0603945ff398974c1d91ac1ef/tomli_w-1.2.0-py3-none-any.whl
298
298
  - pypi: https://files.pythonhosted.org/packages/b5/11/87d6d29fb5d237229d67973a6c9e06e048f01cf4994dee194ab0ea841814/tomlkit-0.14.0-py3-none-any.whl
299
299
  - pypi: https://files.pythonhosted.org/packages/db/7e/f7b8d8c4453f305a51f80dbb49014257bb7d28ccb4bbb8dd328ea995ecad/tornado-6.5.4-cp39-abi3-macosx_10_9_x86_64.whl
300
- - pypi: https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl
300
+ - pypi: https://files.pythonhosted.org/packages/f5/e2/31eac96de2915cf20ccaed0225035db149dfb9165a9ed28d4b252ef3f7f7/tqdm-4.67.2-py3-none-any.whl
301
301
  - pypi: https://files.pythonhosted.org/packages/70/15/5869b2c7556fce52306b6b65b06ec7c088f063b865cdfa75ad30bc229b7c/trame-3.12.0-py3-none-any.whl
302
302
  - pypi: https://files.pythonhosted.org/packages/0f/3b/defac846c42dfaf27090d8294fbda0cbbeeb2e80b4b651841cc0e8f35d34/trame_client-3.11.2-py3-none-any.whl
303
303
  - pypi: https://files.pythonhosted.org/packages/f4/69/daf207ff13168c454b984e3d90cbb5765cf3db43243bf6d69eae5c749ca1/trame_common-1.1.1-py3-none-any.whl
@@ -308,9 +308,9 @@ environments:
308
308
  - pypi: https://files.pythonhosted.org/packages/37/87/1f677586e8ac487e29672e4b17455758fce261de06a0d086167bb760361a/uc_micro_py-1.0.3-py3-none-any.whl
309
309
  - pypi: https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl
310
310
  - pypi: https://files.pythonhosted.org/packages/43/99/3ec6335ded5b88c2f7ed25c56ffd952546f7ed007ffb1e1539dc3b57015a/userpath-1.9.2-py3-none-any.whl
311
- - pypi: https://files.pythonhosted.org/packages/a5/8b/68ac5825a615a8697e324f52ac0b92feb47a0ec36a63759c5f2931f0c3a0/uv-0.9.26-py3-none-macosx_10_12_x86_64.whl
311
+ - pypi: https://files.pythonhosted.org/packages/f0/ed/77294752bf722e1d6b666bd6592b6ac975dabcf1fde49e98a75cac23d45c/uv-0.9.28-py3-none-macosx_10_12_x86_64.whl
312
312
  - pypi: https://files.pythonhosted.org/packages/6a/2a/dc2228b2888f51192c7dc766106cd475f1b768c10caaf9727659726f7391/virtualenv-20.36.1-py3-none-any.whl
313
- - pypi: https://files.pythonhosted.org/packages/b7/f6/da704c5e77281d71723bffbd926b754c0efd57cbcd02e74c2ca374c14cef/wcwidth-0.4.0-py3-none-any.whl
313
+ - pypi: https://files.pythonhosted.org/packages/3c/c1/d73f12f8cdb1891334a2ccf7389eed244d3941e74d80dd220badb937f3fb/wcwidth-0.5.3-py3-none-any.whl
314
314
  - pypi: https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl
315
315
  - pypi: https://files.pythonhosted.org/packages/a2/33/44baf508511b036e455693cd874088f622b8f68e61415e92581a3ffdbbee/wslink-2.5.0-py3-none-any.whl
316
316
  - pypi: https://files.pythonhosted.org/packages/ef/5c/2c189d18d495dd0fa3f27ccc60762bbc787eed95b9b0147266e72bb76585/xyzservices-2025.11.0-py3-none-any.whl
@@ -361,7 +361,7 @@ environments:
361
361
  - pypi: https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl
362
362
  - pypi: https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
363
363
  - pypi: https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl
364
- - pypi: https://files.pythonhosted.org/packages/c9/56/e7e69b427c3878352c2fb9b450bd0e19ed552753491d39d7d0a2f5226d41/cryptography-46.0.3-cp311-abi3-manylinux_2_28_x86_64.whl
364
+ - pypi: https://files.pythonhosted.org/packages/2b/08/f83e2e0814248b844265802d081f2fac2f1cbe6cd258e72ba14ff006823a/cryptography-46.0.4-cp311-abi3-manylinux_2_28_x86_64.whl
365
365
  - pypi: https://files.pythonhosted.org/packages/f7/e6/efe534ef0952b531b630780e19cabd416e2032697019d5295defc6ef9bd9/deepdiff-8.6.1-py3-none-any.whl
366
366
  - pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
367
367
  - pypi: https://files.pythonhosted.org/packages/b5/36/7fb70f04bf00bc646cd5bb45aa9eddb15e19437a28b8fb2b4a5249fac770/filelock-3.20.3-py3-none-any.whl
@@ -385,7 +385,7 @@ environments:
385
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
386
386
  - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl
387
387
  - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl
388
- - pypi: https://files.pythonhosted.org/packages/32/2b/121e912bd60eebd623f873fd090de0e84f322972ab25a7f9044c056804ed/pathspec-1.0.3-py3-none-any.whl
388
+ - pypi: https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl
389
389
  - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl
390
390
  - pypi: https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl
391
391
  - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl
@@ -397,7 +397,7 @@ environments:
397
397
  - pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl
398
398
  - pypi: https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl
399
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
400
- - pypi: https://files.pythonhosted.org/packages/87/2a/a1810c8627b9ec8c57ec5ec325d306701ae7be50235e8fd81266e002a3cc/rich-14.3.1-py3-none-any.whl
400
+ - pypi: https://files.pythonhosted.org/packages/ef/45/615f5babd880b4bd7d405cc0dc348234c5ffb6ed1ea33e152ede08b2072d/rich-14.3.2-py3-none-any.whl
401
401
  - pypi: https://files.pythonhosted.org/packages/b7/46/f5af3402b579fd5e11573ce652019a67074317e18c1935cc0b4ba9b35552/secretstorage-3.5.0-py3-none-any.whl
402
402
  - pypi: https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl
403
403
  - pypi: https://files.pythonhosted.org/packages/c7/18/c86eb8e0202e32dd3df50d43d7ff9854f8e0603945ff398974c1d91ac1ef/tomli_w-1.2.0-py3-none-any.whl
@@ -410,7 +410,7 @@ environments:
410
410
  - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl
411
411
  - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl
412
412
  - pypi: https://files.pythonhosted.org/packages/43/99/3ec6335ded5b88c2f7ed25c56ffd952546f7ed007ffb1e1539dc3b57015a/userpath-1.9.2-py3-none-any.whl
413
- - pypi: https://files.pythonhosted.org/packages/38/16/a07593a040fe6403c36f3b0a99b309f295cbfe19a1074dbadb671d5d4ef7/uv-0.9.26-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
413
+ - pypi: https://files.pythonhosted.org/packages/9a/fd/82561751105ed232f1781747bc336b20e8d57ee07b4d2ed3fa6cf2718d71/uv-0.9.28-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
414
414
  - pypi: https://files.pythonhosted.org/packages/6a/2a/dc2228b2888f51192c7dc766106cd475f1b768c10caaf9727659726f7391/virtualenv-20.36.1-py3-none-any.whl
415
415
  - pypi: https://files.pythonhosted.org/packages/a2/33/44baf508511b036e455693cd874088f622b8f68e61415e92581a3ffdbbee/wslink-2.5.0-py3-none-any.whl
416
416
  - pypi: https://files.pythonhosted.org/packages/11/c9/cd8538dc2e7727095e0c1d867bad1e40c98f37763e6d995c1939f5fdc7b1/yarl-1.22.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
@@ -462,7 +462,7 @@ environments:
462
462
  - pypi: https://files.pythonhosted.org/packages/c7/75/bc704ae15fee974f8fccd871305e254754167dce5f9e42d88a2def741a1d/multidict-6.7.1-cp313-cp313-macosx_10_13_x86_64.whl
463
463
  - pypi: https://files.pythonhosted.org/packages/12/27/fb8d7338b4d551900fa3e580acbe7a0cf655d940e164cb5c00ec31961094/orderly_set-5.5.0-py3-none-any.whl
464
464
  - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl
465
- - pypi: https://files.pythonhosted.org/packages/32/2b/121e912bd60eebd623f873fd090de0e84f322972ab25a7f9044c056804ed/pathspec-1.0.3-py3-none-any.whl
465
+ - pypi: https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl
466
466
  - pypi: https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl
467
467
  - pypi: https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl
468
468
  - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl
@@ -473,7 +473,7 @@ environments:
473
473
  - pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl
474
474
  - pypi: https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl
475
475
  - pypi: https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl
476
- - pypi: https://files.pythonhosted.org/packages/87/2a/a1810c8627b9ec8c57ec5ec325d306701ae7be50235e8fd81266e002a3cc/rich-14.3.1-py3-none-any.whl
476
+ - pypi: https://files.pythonhosted.org/packages/ef/45/615f5babd880b4bd7d405cc0dc348234c5ffb6ed1ea33e152ede08b2072d/rich-14.3.2-py3-none-any.whl
477
477
  - pypi: https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl
478
478
  - pypi: https://files.pythonhosted.org/packages/c7/18/c86eb8e0202e32dd3df50d43d7ff9854f8e0603945ff398974c1d91ac1ef/tomli_w-1.2.0-py3-none-any.whl
479
479
  - pypi: https://files.pythonhosted.org/packages/b5/11/87d6d29fb5d237229d67973a6c9e06e048f01cf4994dee194ab0ea841814/tomlkit-0.14.0-py3-none-any.whl
@@ -485,7 +485,7 @@ environments:
485
485
  - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl
486
486
  - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl
487
487
  - pypi: https://files.pythonhosted.org/packages/43/99/3ec6335ded5b88c2f7ed25c56ffd952546f7ed007ffb1e1539dc3b57015a/userpath-1.9.2-py3-none-any.whl
488
- - pypi: https://files.pythonhosted.org/packages/a5/8b/68ac5825a615a8697e324f52ac0b92feb47a0ec36a63759c5f2931f0c3a0/uv-0.9.26-py3-none-macosx_10_12_x86_64.whl
488
+ - pypi: https://files.pythonhosted.org/packages/f0/ed/77294752bf722e1d6b666bd6592b6ac975dabcf1fde49e98a75cac23d45c/uv-0.9.28-py3-none-macosx_10_12_x86_64.whl
489
489
  - pypi: https://files.pythonhosted.org/packages/6a/2a/dc2228b2888f51192c7dc766106cd475f1b768c10caaf9727659726f7391/virtualenv-20.36.1-py3-none-any.whl
490
490
  - pypi: https://files.pythonhosted.org/packages/a2/33/44baf508511b036e455693cd874088f622b8f68e61415e92581a3ffdbbee/wslink-2.5.0-py3-none-any.whl
491
491
  - pypi: https://files.pythonhosted.org/packages/01/88/04d98af0b47e0ef42597b9b28863b9060bb515524da0a65d5f4db160b2d5/yarl-1.22.0-cp313-cp313-macosx_10_13_x86_64.whl
@@ -589,10 +589,10 @@ packages:
589
589
  version: 25.4.0
590
590
  sha256: adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373
591
591
  requires_python: '>=3.9'
592
- - pypi: https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl
592
+ - pypi: https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl
593
593
  name: babel
594
- version: 2.17.0
595
- sha256: 4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2
594
+ version: 2.18.0
595
+ sha256: e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35
596
596
  requires_dist:
597
597
  - pytz>=2015.7 ; python_full_version < '3.9'
598
598
  - tzdata ; sys_platform == 'win32' and extra == 'dev'
@@ -777,31 +777,31 @@ packages:
777
777
  - questionary>=1.8.1
778
778
  - typing-extensions>=4.0.0,<5.0.0 ; python_full_version < '3.11'
779
779
  requires_python: '>=3.10'
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
780
+ - pypi: https://files.pythonhosted.org/packages/6f/99/97b600225fbf631e6f5bfd3ad5bcaf87fbb9e34ff87492e5a572ff01bbe2/coverage-7.13.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
781
781
  name: coverage
782
- version: 7.13.2
783
- sha256: 7be4d613638d678b2b3773b8f687537b284d7074695a43fe2fbbfc0e31ceaed1
782
+ version: 7.13.3
783
+ sha256: 16d23d6579cf80a474ad160ca14d8b319abaa6db62759d6eef53b2fc979b58c8
784
784
  requires_dist:
785
785
  - tomli ; python_full_version <= '3.11' and extra == 'toml'
786
786
  requires_python: '>=3.10'
787
- - pypi: https://files.pythonhosted.org/packages/a7/f0/3d3eac7568ab6096ff23791a526b0048a1ff3f49d0e236b2af6fb6558e88/coverage-7.13.2-cp313-cp313-macosx_10_13_x86_64.whl
787
+ - pypi: https://files.pythonhosted.org/packages/81/f3/4c333da7b373e8c8bfb62517e8174a01dcc373d7a9083698e3b39d50d59c/coverage-7.13.3-cp313-cp313-macosx_10_13_x86_64.whl
788
788
  name: coverage
789
- version: 7.13.2
790
- sha256: ed75de7d1217cf3b99365d110975f83af0528c849ef5180a12fd91b5064df9d6
789
+ version: 7.13.3
790
+ sha256: 853c3d3c79ff0db65797aad79dee6be020efd218ac4510f15a205f1e8d13ce25
791
791
  requires_dist:
792
792
  - tomli ; python_full_version <= '3.11' and extra == 'toml'
793
793
  requires_python: '>=3.10'
794
- - pypi: https://files.pythonhosted.org/packages/c9/56/e7e69b427c3878352c2fb9b450bd0e19ed552753491d39d7d0a2f5226d41/cryptography-46.0.3-cp311-abi3-manylinux_2_28_x86_64.whl
794
+ - pypi: https://files.pythonhosted.org/packages/2b/08/f83e2e0814248b844265802d081f2fac2f1cbe6cd258e72ba14ff006823a/cryptography-46.0.4-cp311-abi3-manylinux_2_28_x86_64.whl
795
795
  name: cryptography
796
- version: 46.0.3
797
- sha256: a2c0cd47381a3229c403062f764160d57d4d175e022c1df84e168c6251a22eec
796
+ version: 46.0.4
797
+ sha256: 0a9ad24359fee86f131836a9ac3bffc9329e956624a2d379b613f8f8abaf5255
798
798
  requires_dist:
799
799
  - cffi>=1.14 ; python_full_version == '3.8.*' and platform_python_implementation != 'PyPy'
800
800
  - cffi>=2.0.0 ; python_full_version >= '3.9' and platform_python_implementation != 'PyPy'
801
801
  - typing-extensions>=4.13.2 ; python_full_version < '3.11'
802
802
  - bcrypt>=3.1.5 ; extra == 'ssh'
803
803
  - nox[uv]>=2024.4.15 ; extra == 'nox'
804
- - cryptography-vectors==46.0.3 ; extra == 'test'
804
+ - cryptography-vectors==46.0.4 ; extra == 'test'
805
805
  - pytest>=7.4.0 ; extra == 'test'
806
806
  - pytest-benchmark>=4.0 ; extra == 'test'
807
807
  - pytest-cov>=2.10.1 ; extra == 'test'
@@ -1519,12 +1519,12 @@ packages:
1519
1519
  version: 1.1.0
1520
1520
  sha256: 1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505
1521
1521
  requires_python: '>=3.8'
1522
- - pypi: https://files.pythonhosted.org/packages/3d/2e/cf2ffeb386ac3763526151163ad7da9f1b586aac96d2b4f7de1eaebf0c61/narwhals-2.15.0-py3-none-any.whl
1522
+ - pypi: https://files.pythonhosted.org/packages/03/cc/7cb74758e6df95e0c4e1253f203b6dd7f348bf2f29cf89e9210a2416d535/narwhals-2.16.0-py3-none-any.whl
1523
1523
  name: narwhals
1524
- version: 2.15.0
1525
- sha256: cbfe21ca19d260d9fd67f995ec75c44592d1f106933b03ddd375df7ac841f9d6
1524
+ version: 2.16.0
1525
+ sha256: 846f1fd7093ac69d63526e50732033e86c30ea0026a44d9b23991010c7d1485d
1526
1526
  requires_dist:
1527
- - cudf>=24.10.0 ; extra == 'cudf'
1527
+ - cudf-cu12>=24.10.0 ; extra == 'cudf'
1528
1528
  - dask[dataframe]>=2024.8 ; extra == 'dask'
1529
1529
  - duckdb>=1.1 ; extra == 'duckdb'
1530
1530
  - ibis-framework>=6.0.0 ; extra == 'ibis'
@@ -1537,6 +1537,8 @@ packages:
1537
1537
  - pyarrow>=13.0.0 ; extra == 'pyarrow'
1538
1538
  - pyspark>=3.5.0 ; extra == 'pyspark'
1539
1539
  - pyspark[connect]>=3.5.0 ; extra == 'pyspark-connect'
1540
+ - duckdb>=1.1 ; extra == 'sql'
1541
+ - sqlparse ; extra == 'sql'
1540
1542
  - sqlframe>=3.22.0,!=3.39.3 ; extra == 'sqlframe'
1541
1543
  requires_python: '>=3.9'
1542
1544
  - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
@@ -1565,8 +1567,8 @@ packages:
1565
1567
  requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*'
1566
1568
  - pypi: ./
1567
1569
  name: nova-mvvm
1568
- version: 0.15.1
1569
- sha256: 2465026d50835e407095f9cbd2e320371daf37b624d999d5b626e9fbba29498a
1570
+ version: 0.16.0
1571
+ sha256: 884aeeb063a23bf686d3ef56a1d2ac87a2877206c358e2ef9ce88a401a419f5c
1570
1572
  requires_dist:
1571
1573
  - trame
1572
1574
  - deepdiff
@@ -1575,15 +1577,15 @@ packages:
1575
1577
  - pyqt6 ; extra == 'pyqt6'
1576
1578
  - panel ; extra == 'panel'
1577
1579
  requires_python: '>=3.10,<3.14'
1578
- - pypi: https://files.pythonhosted.org/packages/04/68/732d4b7811c00775f3bd522a21e8dd5a23f77eb11acdeb663e4a4ebf0ef4/numpy-2.4.1-cp313-cp313-macosx_10_13_x86_64.whl
1580
+ - pypi: https://files.pythonhosted.org/packages/04/dc/46066ce18d01645541f0186877377b9371b8fa8017fa8262002b4ef22612/numpy-2.4.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
1579
1581
  name: numpy
1580
- version: 2.4.1
1581
- sha256: d797454e37570cfd61143b73b8debd623c3c0952959adb817dd310a483d58a1b
1582
+ version: 2.4.2
1583
+ sha256: d0d9b7c93578baafcbc5f0b83eaf17b79d345c6f36917ba0c67f45226911d499
1582
1584
  requires_python: '>=3.11'
1583
- - 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
1585
+ - pypi: https://files.pythonhosted.org/packages/a1/22/815b9fe25d1d7ae7d492152adbc7226d3eff731dffc38fe970589fcaaa38/numpy-2.4.2-cp313-cp313-macosx_10_13_x86_64.whl
1584
1586
  name: numpy
1585
- version: 2.4.1
1586
- sha256: d3e3087f53e2b4428766b54932644d148613c5a595150533ae7f00dab2f319a8
1587
+ version: 2.4.2
1588
+ sha256: 25f2059807faea4b077a2b6837391b5d830864b3543627f381821c646f31a63c
1587
1589
  requires_python: '>=3.11'
1588
1590
  - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda
1589
1591
  sha256: a47271202f4518a484956968335b2521409c8173e123ab381e775c358c67fe6d
@@ -1809,10 +1811,10 @@ packages:
1809
1811
  - xlsxwriter>=3.2.0 ; extra == 'all'
1810
1812
  - zstandard>=0.23.0 ; extra == 'all'
1811
1813
  requires_python: '>=3.11'
1812
- - pypi: https://files.pythonhosted.org/packages/f2/f9/08b9a36815074e99ff3ded1ad1a20dca1dc9a7c116628b3c9808df451da4/panel-1.8.6-py3-none-any.whl
1814
+ - pypi: https://files.pythonhosted.org/packages/47/75/689e2ebb7fca5c7c67ce2e2a91538b66b75a3e27a7496aa9ed96c349b2a6/panel-1.8.7-py3-none-any.whl
1813
1815
  name: panel
1814
- version: 1.8.6
1815
- sha256: 658d7c6586787719ee12ebf359dbfdf4f9800b4792f296de6ca0af250d971b7a
1816
+ version: 1.8.7
1817
+ sha256: 6cc60a8b5497628a896b935706701ff9b640ed001f6a48d0bd67163938b546da
1816
1818
  requires_dist:
1817
1819
  - bleach
1818
1820
  - bokeh>=3.7.0,<3.9.0
@@ -1918,10 +1920,10 @@ packages:
1918
1920
  - nest-asyncio ; extra == 'tests-pypy'
1919
1921
  - numpy ; extra == 'tests-pypy'
1920
1922
  requires_python: '>=3.10'
1921
- - pypi: https://files.pythonhosted.org/packages/32/2b/121e912bd60eebd623f873fd090de0e84f322972ab25a7f9044c056804ed/pathspec-1.0.3-py3-none-any.whl
1923
+ - pypi: https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl
1922
1924
  name: pathspec
1923
- version: 1.0.3
1924
- sha256: e80767021c1cc524aa3fb14bedda9c34406591343cc42797b386ce7b9354fb6c
1925
+ version: 1.0.4
1926
+ sha256: fb6ae2fd4e7c921a165808a552060e722767cfa526f99ca5156ed2ce45a5c723
1925
1927
  requires_dist:
1926
1928
  - hyperscan>=0.7 ; extra == 'hyperscan'
1927
1929
  - typing-extensions>=4 ; extra == 'optional'
@@ -2169,10 +2171,10 @@ packages:
2169
2171
  name: pyqt6-qt6
2170
2172
  version: 6.9.2
2171
2173
  sha256: 9abfc0ee4a8293a6442128ae3f87f68e82e2a949d7b9caabd98c86ba5679ab48
2172
- - pypi: https://files.pythonhosted.org/packages/54/1b/137184632cad83a210e7955226744a77945260ca2e75892fe36299d26ada/pyqt6_qt6-6.10.1-py3-none-macosx_10_14_x86_64.whl
2174
+ - pypi: https://files.pythonhosted.org/packages/9a/eb/f04d547d8ed9f20c7b246db4ef5d93b49cab4692009a10652ed0a8b9d2aa/pyqt6_qt6-6.10.2-py3-none-macosx_10_14_x86_64.whl
2173
2175
  name: pyqt6-qt6
2174
- version: 6.10.1
2175
- sha256: 4bb2798a95f624b462b70c4f185422235b714b01e55abab32af1740f147948e2
2176
+ version: 6.10.2
2177
+ sha256: 5761cfccc721da2311c3f1213577f0ff1df07bbbbe3fa3a209a256b82cf057e3
2176
2178
  - pypi: https://files.pythonhosted.org/packages/0e/38/27c3aa3f153fcd83a0765fedf8e44a1136f189a322bcc9c494c5b3793cd7/pyqt6_sip-13.11.0-cp313-cp313-manylinux1_x86_64.manylinux_2_5_x86_64.whl
2177
2179
  name: pyqt6-sip
2178
2180
  version: 13.11.0
@@ -2369,10 +2371,10 @@ packages:
2369
2371
  - pysocks>=1.5.6,!=1.5.7 ; extra == 'socks'
2370
2372
  - chardet>=3.0.2,<6 ; extra == 'use-chardet-on-py3'
2371
2373
  requires_python: '>=3.9'
2372
- - pypi: https://files.pythonhosted.org/packages/87/2a/a1810c8627b9ec8c57ec5ec325d306701ae7be50235e8fd81266e002a3cc/rich-14.3.1-py3-none-any.whl
2374
+ - pypi: https://files.pythonhosted.org/packages/ef/45/615f5babd880b4bd7d405cc0dc348234c5ffb6ed1ea33e152ede08b2072d/rich-14.3.2-py3-none-any.whl
2373
2375
  name: rich
2374
- version: 14.3.1
2375
- sha256: da750b1aebbff0b372557426fb3f35ba56de8ef954b3190315eb64076d6fb54e
2376
+ version: 14.3.2
2377
+ sha256: 08e67c3e90884651da3239ea668222d19bea7b589149d8014a21c633420dbb69
2376
2378
  requires_dist:
2377
2379
  - ipywidgets>=7.5.1,<9 ; extra == 'jupyter'
2378
2380
  - markdown-it-py>=2.2.0
@@ -2585,10 +2587,10 @@ packages:
2585
2587
  version: 6.5.4
2586
2588
  sha256: 2d50f63dda1d2cac3ae1fa23d254e16b5e38153758470e9956cbc3d813d40843
2587
2589
  requires_python: '>=3.9'
2588
- - pypi: https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl
2590
+ - pypi: https://files.pythonhosted.org/packages/f5/e2/31eac96de2915cf20ccaed0225035db149dfb9165a9ed28d4b252ef3f7f7/tqdm-4.67.2-py3-none-any.whl
2589
2591
  name: tqdm
2590
- version: 4.67.1
2591
- sha256: 26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2
2592
+ version: 4.67.2
2593
+ sha256: 9a12abcbbff58b6036b2167d9d3853042b9d436fe7330f06ae047867f2f8e0a7
2592
2594
  requires_dist:
2593
2595
  - colorama ; sys_platform == 'win32'
2594
2596
  - pytest>=6 ; extra == 'dev'
@@ -2708,15 +2710,15 @@ packages:
2708
2710
  requires_dist:
2709
2711
  - click
2710
2712
  requires_python: '>=3.7'
2711
- - pypi: https://files.pythonhosted.org/packages/38/16/a07593a040fe6403c36f3b0a99b309f295cbfe19a1074dbadb671d5d4ef7/uv-0.9.26-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
2713
+ - pypi: https://files.pythonhosted.org/packages/9a/fd/82561751105ed232f1781747bc336b20e8d57ee07b4d2ed3fa6cf2718d71/uv-0.9.28-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
2712
2714
  name: uv
2713
- version: 0.9.26
2714
- sha256: b7e89798bd3df7dcc4b2b4ac4e2fc11d6b3ff4fe7d764aa3012d664c635e2922
2715
+ version: 0.9.28
2716
+ sha256: 7b8460a2b624d8ab27cb293a2c9f2393f9efc4e36e0fb886a6c2360e23fb48be
2715
2717
  requires_python: '>=3.8'
2716
- - pypi: https://files.pythonhosted.org/packages/a5/8b/68ac5825a615a8697e324f52ac0b92feb47a0ec36a63759c5f2931f0c3a0/uv-0.9.26-py3-none-macosx_10_12_x86_64.whl
2718
+ - pypi: https://files.pythonhosted.org/packages/f0/ed/77294752bf722e1d6b666bd6592b6ac975dabcf1fde49e98a75cac23d45c/uv-0.9.28-py3-none-macosx_10_12_x86_64.whl
2717
2719
  name: uv
2718
- version: 0.9.26
2719
- sha256: b815e3b26eeed00e00f831343daba7a9d99c1506883c189453bb4d215f54faac
2720
+ version: 0.9.28
2721
+ sha256: 3fe9aa2822d24f6ecec035a06dfdd1fbed570ed40b83a864e71714bad37ddfd3
2720
2722
  requires_python: '>=3.8'
2721
2723
  - pypi: https://files.pythonhosted.org/packages/6a/2a/dc2228b2888f51192c7dc766106cd475f1b768c10caaf9727659726f7391/virtualenv-20.36.1-py3-none-any.whl
2722
2724
  name: virtualenv
@@ -2749,10 +2751,10 @@ packages:
2749
2751
  - setuptools>=68 ; extra == 'test'
2750
2752
  - time-machine>=2.10 ; platform_python_implementation == 'CPython' and extra == 'test'
2751
2753
  requires_python: '>=3.8'
2752
- - pypi: https://files.pythonhosted.org/packages/b7/f6/da704c5e77281d71723bffbd926b754c0efd57cbcd02e74c2ca374c14cef/wcwidth-0.4.0-py3-none-any.whl
2754
+ - pypi: https://files.pythonhosted.org/packages/3c/c1/d73f12f8cdb1891334a2ccf7389eed244d3941e74d80dd220badb937f3fb/wcwidth-0.5.3-py3-none-any.whl
2753
2755
  name: wcwidth
2754
- version: 0.4.0
2755
- sha256: 8af2c81174b3aa17adf05058c543c267e4e5b6767a28e31a673a658c1d766783
2756
+ version: 0.5.3
2757
+ sha256: d584eff31cd4753e1e5ff6c12e1edfdb324c995713f75d26c29807bb84bf649e
2756
2758
  requires_python: '>=3.8'
2757
2759
  - pypi: https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl
2758
2760
  name: webencodings
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "nova-mvvm"
3
- version = "0.15.1"
3
+ version = "0.16.0"
4
4
  description = "A Python Package for Model-View-ViewModel pattern"
5
5
  authors = [
6
6
  { name = "Sergey Yakubov", email = "yakubovs@ornl.gov" },
@@ -75,10 +75,15 @@ def get_nested_pydantic_field(model: BaseModel, field_path: str) -> FieldInfo:
75
75
 
76
76
  for field in fields:
77
77
  if "[" in field:
78
+ original_model = current_model
78
79
  base = field.split("[")[0]
79
80
  current_model = getattr(current_model, base)
80
81
  for _ in range(field.count("[")):
81
82
  current_model = current_model[0]
83
+ # If the nested field we've found is not a Pydantic model, then it won't have any field information. In this
84
+ # case, we need to revert to returning the base field as it will instead contain field info.
85
+ if not issubclass(type(current_model), BaseModel):
86
+ return original_model.__class__.model_fields[base]
82
87
  continue
83
88
  if issubclass(type(getattr(current_model, field)), BaseModel):
84
89
  current_model = getattr(current_model, field)
@@ -2,7 +2,7 @@
2
2
 
3
3
  import logging
4
4
  import re
5
- from typing import Any
5
+ from typing import Any, List
6
6
 
7
7
  from pydantic import ValidationError
8
8
  from pydantic.fields import FieldInfo
@@ -83,10 +83,24 @@ def validate_pydantic_parameter(name: str, value: Any) -> str | bool:
83
83
  else:
84
84
  current_model = getattr(current_model, field)
85
85
  final_field = fields[-1]
86
+ indices = []
87
+ if "[" in final_field:
88
+ # If the final field is nested, then we need to parse the base field name and all indices in order to modify it.
89
+ indices = re.findall(r"\[(\d+)\]", final_field)
90
+ indices = [int(num) for num in indices]
91
+ final_field = final_field.split("[")[0]
92
+
86
93
  # copy model so we do not modify the current one
87
94
  model = current_model.copy(deep=True)
88
95
  # force set field value
89
- setattr(model, final_field, value)
96
+ if indices:
97
+ # Now we use the base field name and indices to modify the nested field.
98
+ target_field: List = getattr(model, final_field)
99
+ for i in indices[:-1]:
100
+ target_field = target_field[i]
101
+ target_field[indices[-1]] = value
102
+ else:
103
+ setattr(model, final_field, value)
90
104
  # validate changed model
91
105
  try:
92
106
  model.__class__(**model.model_dump(warnings=False))
@@ -5,6 +5,22 @@ from typing import Any, List, Optional
5
5
  from pydantic import BaseModel, Field, field_validator, model_validator
6
6
 
7
7
 
8
+ class NestedList(BaseModel):
9
+ """A Pydantic model with a validation rule for a nested list."""
10
+
11
+ values: List[List[int]] = Field(default=[[0], [0], [0]], title="Set Less Than Zero For Error")
12
+
13
+ @field_validator("values", mode="after")
14
+ @classmethod
15
+ def validate_values(cls, values: List[List[int]]) -> List[List[int]]:
16
+ for inner_list in values:
17
+ for value in inner_list:
18
+ if value < 0:
19
+ raise ValueError("Value must be >= 0")
20
+
21
+ return values
22
+
23
+
8
24
  class Range(BaseModel):
9
25
  """A Pydantic model for range with a model validation rule."""
10
26
 
@@ -15,7 +15,7 @@ from nova.mvvm.pydantic_utils import ERROR_FIELD_NAME
15
15
  from nova.mvvm.trame_binding import TrameBinding
16
16
  from nova.mvvm.trame_binding.trame_worker import ProgressCallback
17
17
 
18
- from .model import Range, User
18
+ from .model import NestedList, Range, User
19
19
 
20
20
 
21
21
  @pytest_asyncio.fixture(scope="function", autouse=True) # Default scope
@@ -167,6 +167,21 @@ async def test_binding_same_object(server: Server) -> None:
167
167
  binding.connect("test_object1")
168
168
 
169
169
 
170
+ @pytest.mark.asyncio
171
+ async def test_binding_list_value(server: Server) -> None:
172
+ test_nested_list = NestedList()
173
+
174
+ binding = TrameBinding(server.state).new_bind(test_nested_list)
175
+ binding.connect("test_nested_list")
176
+
177
+ with server.state:
178
+ server.state.test_nested_list["values"][1][0] = -1
179
+ server.state.dirty("test_nested_list")
180
+ server.state.flush()
181
+ await asyncio.sleep(1)
182
+ assert server.state.test_nested_list["pydantic_errors"] == ["values"]
183
+
184
+
170
185
  @pytest.mark.asyncio
171
186
  async def test_binding_incorrect_value(server: Server) -> None:
172
187
  test_range = Range()
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