diff --git a/generate_models.sh b/generate_models.sh index a45543c..f6e79ad 100755 --- a/generate_models.sh +++ b/generate_models.sh @@ -66,6 +66,7 @@ mkdir -p "$OUTPUT_DIR" # Run generation using uv # We use --use-schema-description to use descriptions from JSON schema as docstrings # We use --field-constraints to include validation constraints (regex, min/max, etc.) +# We use --reuse-model to collapse structurally identical generated types. # Note: Formatting is done as a post-processing step. uv run \ --link-mode=copy \ @@ -83,6 +84,7 @@ uv run \ --use-double-quotes \ --allow-extra-fields \ --use-type-alias \ + --reuse-model \ --custom-template-dir templates \ --additional-imports pydantic.ConfigDict diff --git a/src/ucp_sdk/models/schemas/capability.py b/src/ucp_sdk/models/schemas/capability.py index 475e6dd..81213b0 100644 --- a/src/ucp_sdk/models/schemas/capability.py +++ b/src/ucp_sdk/models/schemas/capability.py @@ -58,23 +58,10 @@ """ -Extends2 = TypeAliasType( - "Extends2", - Annotated[ - str, Field(..., pattern="^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9_]*)+$") - ], -) -""" -Parent capability(s) this extends. Present for extensions, absent for root capabilities. Use array for multi-parent extensions. -""" +Extends2 = TypeAliasType("Extends2", Extends) -Extends3Item = TypeAliasType( - "Extends3Item", - Annotated[ - str, Field(..., pattern="^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9_]*)+$") - ], -) +Extends3Item = TypeAliasType("Extends3Item", Extends1Item) Extends3 = TypeAliasType( @@ -85,23 +72,10 @@ """ -Extends4 = TypeAliasType( - "Extends4", - Annotated[ - str, Field(..., pattern="^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9_]*)+$") - ], -) -""" -Parent capability(s) this extends. Present for extensions, absent for root capabilities. Use array for multi-parent extensions. -""" +Extends4 = TypeAliasType("Extends4", Extends) -Extends5Item = TypeAliasType( - "Extends5Item", - Annotated[ - str, Field(..., pattern="^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9_]*)+$") - ], -) +Extends5Item = TypeAliasType("Extends5Item", Extends1Item) Extends5 = TypeAliasType( @@ -112,23 +86,10 @@ """ -Extends6 = TypeAliasType( - "Extends6", - Annotated[ - str, Field(..., pattern="^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9_]*)+$") - ], -) -""" -Parent capability(s) this extends. Present for extensions, absent for root capabilities. Use array for multi-parent extensions. -""" +Extends6 = TypeAliasType("Extends6", Extends) -Extends7Item = TypeAliasType( - "Extends7Item", - Annotated[ - str, Field(..., pattern="^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9_]*)+$") - ], -) +Extends7Item = TypeAliasType("Extends7Item", Extends1Item) Extends7 = TypeAliasType(