fh-pydantic-form 0.3.7__tar.gz → 0.3.8__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.

Potentially problematic release.


This version of fh-pydantic-form might be problematic. Click here for more details.

Files changed (23) hide show
  1. {fh_pydantic_form-0.3.7 → fh_pydantic_form-0.3.8}/.github/workflows/build.yaml +1 -1
  2. fh_pydantic_form-0.3.7/README.md → fh_pydantic_form-0.3.8/PKG-INFO +57 -0
  3. fh_pydantic_form-0.3.7/PKG-INFO → fh_pydantic_form-0.3.8/README.md +32 -25
  4. {fh_pydantic_form-0.3.7 → fh_pydantic_form-0.3.8}/RELEASE_NOTES.md +21 -0
  5. {fh_pydantic_form-0.3.7 → fh_pydantic_form-0.3.8}/pyproject.toml +3 -3
  6. fh_pydantic_form-0.3.8/src/fh_pydantic_form/comparison_form.py +1626 -0
  7. {fh_pydantic_form-0.3.7 → fh_pydantic_form-0.3.8}/src/fh_pydantic_form/field_renderers.py +175 -31
  8. {fh_pydantic_form-0.3.7 → fh_pydantic_form-0.3.8}/src/fh_pydantic_form/form_renderer.py +50 -45
  9. fh_pydantic_form-0.3.7/src/fh_pydantic_form/comparison_form.py +0 -637
  10. {fh_pydantic_form-0.3.7 → fh_pydantic_form-0.3.8}/.github/workflows/publish.yaml +0 -0
  11. {fh_pydantic_form-0.3.7 → fh_pydantic_form-0.3.8}/.gitignore +0 -0
  12. {fh_pydantic_form-0.3.7 → fh_pydantic_form-0.3.8}/.pre-commit-config.yaml +0 -0
  13. {fh_pydantic_form-0.3.7 → fh_pydantic_form-0.3.8}/LICENSE +0 -0
  14. {fh_pydantic_form-0.3.7 → fh_pydantic_form-0.3.8}/src/fh_pydantic_form/__init__.py +0 -0
  15. {fh_pydantic_form-0.3.7 → fh_pydantic_form-0.3.8}/src/fh_pydantic_form/color_utils.py +0 -0
  16. {fh_pydantic_form-0.3.7 → fh_pydantic_form-0.3.8}/src/fh_pydantic_form/constants.py +0 -0
  17. {fh_pydantic_form-0.3.7 → fh_pydantic_form-0.3.8}/src/fh_pydantic_form/defaults.py +0 -0
  18. {fh_pydantic_form-0.3.7 → fh_pydantic_form-0.3.8}/src/fh_pydantic_form/form_parser.py +0 -0
  19. {fh_pydantic_form-0.3.7 → fh_pydantic_form-0.3.8}/src/fh_pydantic_form/list_path.py +0 -0
  20. {fh_pydantic_form-0.3.7 → fh_pydantic_form-0.3.8}/src/fh_pydantic_form/py.typed +0 -0
  21. {fh_pydantic_form-0.3.7 → fh_pydantic_form-0.3.8}/src/fh_pydantic_form/registry.py +0 -0
  22. {fh_pydantic_form-0.3.7 → fh_pydantic_form-0.3.8}/src/fh_pydantic_form/type_helpers.py +0 -0
  23. {fh_pydantic_form-0.3.7 → fh_pydantic_form-0.3.8}/src/fh_pydantic_form/ui_style.py +0 -0
@@ -27,7 +27,7 @@ jobs:
27
27
  uses: astral-sh/setup-uv@v5
28
28
  with:
29
29
  enable-cache: true
30
- cache-dependency-glob: "uv.lock"
30
+ cache-dependency-glob: "pyproject.toml"
31
31
 
32
32
  - name: "Set up Python"
33
33
  uses: actions/setup-python@v5
@@ -1,3 +1,28 @@
1
+ Metadata-Version: 2.4
2
+ Name: fh-pydantic-form
3
+ Version: 0.3.8
4
+ Summary: a library to turn any pydantic BaseModel object into a fasthtml/monsterui input form
5
+ Project-URL: Homepage, https://github.com/Marcura/fh-pydantic-form
6
+ Project-URL: Repository, https://github.com/Marcura/fh-pydantic-form
7
+ Project-URL: Documentation, https://github.com/Marcura/fh-pydantic-form
8
+ Author-email: Oege Dijk <o.dijk@marcura.com>
9
+ Maintainer-email: Oege Dijk <o.dijk@marcura.com>
10
+ License-File: LICENSE
11
+ Keywords: fasthtml,forms,monsterui,pydantic,ui,web
12
+ Classifier: License :: OSI Approved :: Apache Software License
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Content Management System
19
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
+ Requires-Python: >=3.10
21
+ Requires-Dist: monsterui>=1.0.29
22
+ Requires-Dist: pydantic>=2.0
23
+ Requires-Dist: python-fasthtml>=0.12.29
24
+ Description-Content-Type: text/markdown
25
+
1
26
  # fh-pydantic-form
2
27
 
3
28
  [![PyPI](https://img.shields.io/pypi/v/fh-pydantic-form)](https://pypi.org/project/fh-pydantic-form/)
@@ -876,6 +901,38 @@ comparison_form.register_routes(app)
876
901
  - **Metrics Integration**: Right side typically shows LLM output quality scores
877
902
  - **Flexible Layout**: Responsive design works on desktop and mobile
878
903
  - **Form Validation**: Standard validation works with either form
904
+ - **Intelligent List Copying**: Copy lists between forms with automatic length adjustment
905
+
906
+ ### Copying Between Forms
907
+
908
+ The ComparisonForm provides granular copy functionality at multiple levels. When you enable copy buttons (via `copy_left=True` or `copy_right=True`), each field, nested model, and list item gets its own copy button for maximum flexibility:
909
+
910
+ ```python
911
+ # Enable copy buttons (copy FROM right TO left)
912
+ comparison_form = ComparisonForm(
913
+ name="extraction_evaluation",
914
+ left_form=left_form,
915
+ right_form=right_form,
916
+ left_label="Ground Truth",
917
+ right_label="LLM Output",
918
+ copy_left=True, # Show copy buttons on right form to copy TO left
919
+ )
920
+ ```
921
+
922
+ **Copy Granularity Levels:**
923
+
924
+ The copy feature works at five different levels of granularity:
925
+
926
+ 1. **Individual Fields** - Copy a single field value (e.g., `name`, `price`, `status`)
927
+
928
+ 2. **Nested BaseModel (Entire Object)** - Copy all fields within a nested model at once
929
+
930
+ 3. **Individual Fields in Nested Models** - Copy a specific field within a nested object
931
+
932
+ 4. **Full List Fields** - Copy entire lists with automatic length adjustment
933
+
934
+ 5. **Individual List Items** - Add a single item from one list to another
935
+
879
936
 
880
937
  ### Common Patterns
881
938
 
@@ -1,28 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: fh-pydantic-form
3
- Version: 0.3.7
4
- Summary: a library to turn any pydantic BaseModel object into a fasthtml/monsterui input form
5
- Project-URL: Homepage, https://github.com/Marcura/fh-pydantic-form
6
- Project-URL: Repository, https://github.com/Marcura/fh-pydantic-form
7
- Project-URL: Documentation, https://github.com/Marcura/fh-pydantic-form
8
- Author-email: Oege Dijk <o.dijk@marcura.com>
9
- Maintainer-email: Oege Dijk <o.dijk@marcura.com>
10
- License-File: LICENSE
11
- Keywords: fasthtml,forms,monsterui,pydantic,ui,web
12
- Classifier: License :: OSI Approved :: Apache Software License
13
- Classifier: Operating System :: OS Independent
14
- Classifier: Programming Language :: Python :: 3
15
- Classifier: Programming Language :: Python :: 3.10
16
- Classifier: Programming Language :: Python :: 3.11
17
- Classifier: Programming Language :: Python :: 3.12
18
- Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Content Management System
19
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
- Requires-Python: >=3.10
21
- Requires-Dist: monsterui>=1.0.19
22
- Requires-Dist: pydantic>=2.0
23
- Requires-Dist: python-fasthtml>=0.12.12
24
- Description-Content-Type: text/markdown
25
-
26
1
  # fh-pydantic-form
27
2
 
28
3
  [![PyPI](https://img.shields.io/pypi/v/fh-pydantic-form)](https://pypi.org/project/fh-pydantic-form/)
@@ -901,6 +876,38 @@ comparison_form.register_routes(app)
901
876
  - **Metrics Integration**: Right side typically shows LLM output quality scores
902
877
  - **Flexible Layout**: Responsive design works on desktop and mobile
903
878
  - **Form Validation**: Standard validation works with either form
879
+ - **Intelligent List Copying**: Copy lists between forms with automatic length adjustment
880
+
881
+ ### Copying Between Forms
882
+
883
+ The ComparisonForm provides granular copy functionality at multiple levels. When you enable copy buttons (via `copy_left=True` or `copy_right=True`), each field, nested model, and list item gets its own copy button for maximum flexibility:
884
+
885
+ ```python
886
+ # Enable copy buttons (copy FROM right TO left)
887
+ comparison_form = ComparisonForm(
888
+ name="extraction_evaluation",
889
+ left_form=left_form,
890
+ right_form=right_form,
891
+ left_label="Ground Truth",
892
+ right_label="LLM Output",
893
+ copy_left=True, # Show copy buttons on right form to copy TO left
894
+ )
895
+ ```
896
+
897
+ **Copy Granularity Levels:**
898
+
899
+ The copy feature works at five different levels of granularity:
900
+
901
+ 1. **Individual Fields** - Copy a single field value (e.g., `name`, `price`, `status`)
902
+
903
+ 2. **Nested BaseModel (Entire Object)** - Copy all fields within a nested model at once
904
+
905
+ 3. **Individual Fields in Nested Models** - Copy a specific field within a nested object
906
+
907
+ 4. **Full List Fields** - Copy entire lists with automatic length adjustment
908
+
909
+ 5. **Individual List Items** - Add a single item from one list to another
910
+
904
911
 
905
912
  ### Common Patterns
906
913
 
@@ -1,5 +1,26 @@
1
1
  # Release Notes
2
2
 
3
+ ## Version 0.3.8 (2025-10-02)
4
+
5
+ ### 🎉 New Features
6
+
7
+ #### Intelligent Copying in ComparisonForm
8
+ - **NEW**: Comprehensive copy functionality at multiple granularity levels
9
+ - Individual field copying
10
+ - Full nested BaseModel object copying
11
+ - Individual fields within nested models
12
+ - **Full list field copying with automatic length alignment**
13
+ - Individual list item copying with smart insertion
14
+
15
+
16
+ ### 🔧 Bug Fixes & Improvements
17
+
18
+ #### SkipJsonSchema Field Handling
19
+ - **FIXED**: SkipJsonSchema fields now properly preserve initial values when provided
20
+ - **IMPROVED**: Better handling of skip fields with default values
21
+ - **ENHANCED**: More robust field introspection for SkipJsonSchema annotation
22
+
23
+
3
24
  ## Version 0.3.7 (2025-09-19)
4
25
 
5
26
  ### 🎉 New Features
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fh-pydantic-form"
3
- version = "0.3.7"
3
+ version = "0.3.8"
4
4
  description = "a library to turn any pydantic BaseModel object into a fasthtml/monsterui input form"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -29,9 +29,9 @@ classifiers = [
29
29
  "Operating System :: OS Independent",
30
30
  ]
31
31
  dependencies = [
32
- "monsterui>=1.0.19",
32
+ "monsterui>=1.0.29",
33
33
  "pydantic>=2.0",
34
- "python-fasthtml>=0.12.12",
34
+ "python-fasthtml>=0.12.29",
35
35
  ]
36
36
 
37
37
  [project.urls]