metaobjects 0.19.7__tar.gz → 0.19.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.
Files changed (391) hide show
  1. {metaobjects-0.19.7 → metaobjects-0.19.8}/PKG-INFO +1 -1
  2. {metaobjects-0.19.7 → metaobjects-0.19.8}/pyproject.toml +1 -1
  3. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/type_map.py +8 -0
  4. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/core_types.py +9 -0
  5. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/field/field_constants.py +5 -0
  6. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/spec_metamodel/field.json +9 -3
  7. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_validation_conformance.py +19 -3
  8. {metaobjects-0.19.7 → metaobjects-0.19.8}/.gitignore +0 -0
  9. {metaobjects-0.19.7 → metaobjects-0.19.8}/LICENSE +0 -0
  10. {metaobjects-0.19.7 → metaobjects-0.19.8}/README.md +0 -0
  11. {metaobjects-0.19.7 → metaobjects-0.19.8}/hatch_build.py +0 -0
  12. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/__init__.py +0 -0
  13. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/agent_context/__init__.py +0 -0
  14. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/agent_context/scaffold.py +0 -0
  15. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/apidocs/__init__.py +0 -0
  16. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/apidocs/api_model.py +0 -0
  17. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/apidocs/builder.py +0 -0
  18. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/apidocs/naming.py +0 -0
  19. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/apidocs/paths.py +0 -0
  20. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/apidocs/renderer.py +0 -0
  21. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/attr_class_map.py +0 -0
  22. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/cli.py +0 -0
  23. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/KNOWN_GAPS.md +0 -0
  24. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/__init__.py +0 -0
  25. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/config.py +0 -0
  26. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/constants.py +0 -0
  27. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/extract_delegate_emitter.py +0 -0
  28. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/extract_schema_emitter.py +0 -0
  29. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/format.py +0 -0
  30. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/fr010_field_mapping.py +0 -0
  31. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/generator.py +0 -0
  32. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/generator_registry.py +0 -0
  33. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/generators/__init__.py +0 -0
  34. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/generators/entity_model.py +0 -0
  35. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/generators/extractor_generator.py +0 -0
  36. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/generators/filter_allowlist_generator.py +0 -0
  37. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/generators/fr019_shared_enum.py +0 -0
  38. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/generators/m2m_codegen.py +0 -0
  39. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/generators/output_parser_generator.py +0 -0
  40. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/generators/output_prompt_generator.py +0 -0
  41. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/generators/payload_vo_generator.py +0 -0
  42. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/generators/render_helper_generator.py +0 -0
  43. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/generators/router_generator.py +0 -0
  44. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/generators/template_generator.py +0 -0
  45. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/generators/tph_plan.py +0 -0
  46. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/generators/trace_helper_generator.py +0 -0
  47. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/instance_artifacts.py +0 -0
  48. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/output_format_spec_emitter.py +0 -0
  49. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/overwrite_policy.py +0 -0
  50. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/runner.py +0 -0
  51. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/runtime/__init__.py +0 -0
  52. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/runtime/filter_parser.py +0 -0
  53. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/template_codegen/__init__.py +0 -0
  54. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/template_codegen/output_pattern.py +0 -0
  55. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/template_codegen/template_data.py +0 -0
  56. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/codegen/template_codegen/template_spec.py +0 -0
  57. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/datatype.py +0 -0
  58. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/documentation/__init__.py +0 -0
  59. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/documentation/doc_constants.py +0 -0
  60. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/documentation/doc_provider.py +0 -0
  61. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/documentation/doc_schema.py +0 -0
  62. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/errors.py +0 -0
  63. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/loader/__init__.py +0 -0
  64. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/loader/merge.py +0 -0
  65. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/loader/meta_data_loader.py +0 -0
  66. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/loader/registered_validation.py +0 -0
  67. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/loader/sources/__init__.py +0 -0
  68. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/loader/sources/directory_source.py +0 -0
  69. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/loader/sources/file_source.py +0 -0
  70. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/loader/sources/meta_data_source.py +0 -0
  71. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/loader/sources/uri_source.py +0 -0
  72. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/loader/validate_discriminator.py +0 -0
  73. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/loader/validate_field_readonly.py +0 -0
  74. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/loader/validate_source_escapes.py +0 -0
  75. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/loader/validate_source_parameter_ref.py +0 -0
  76. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/loader/validate_source_physical_names.py +0 -0
  77. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/loader/validation_passes.py +0 -0
  78. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/__init__.py +0 -0
  79. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/__init__.py +0 -0
  80. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/attr/__init__.py +0 -0
  81. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/attr/attr_constants.py +0 -0
  82. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/attr/meta_attr.py +0 -0
  83. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/field/__init__.py +0 -0
  84. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/field/meta_field.py +0 -0
  85. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/identity/__init__.py +0 -0
  86. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/identity/identity_constants.py +0 -0
  87. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/identity/meta_identity.py +0 -0
  88. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/index/__init__.py +0 -0
  89. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/index/index_constants.py +0 -0
  90. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/index/meta_index.py +0 -0
  91. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/object/__init__.py +0 -0
  92. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/object/meta_object.py +0 -0
  93. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/object/meta_object_aware.py +0 -0
  94. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/object/object_class_registry.py +0 -0
  95. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/object/object_constants.py +0 -0
  96. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/object/object_extract.py +0 -0
  97. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/object/value_object.py +0 -0
  98. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/relationship/__init__.py +0 -0
  99. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/relationship/derive_m2m_fields.py +0 -0
  100. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/relationship/meta_relationship.py +0 -0
  101. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/relationship/relationship_constants.py +0 -0
  102. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/validator/__init__.py +0 -0
  103. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/core/validator/validator_constants.py +0 -0
  104. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/meta_data.py +0 -0
  105. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/meta_root.py +0 -0
  106. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/persistence/__init__.py +0 -0
  107. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/persistence/db/__init__.py +0 -0
  108. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/persistence/db/db_constants.py +0 -0
  109. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/persistence/db/db_provider.py +0 -0
  110. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/persistence/origin/__init__.py +0 -0
  111. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/persistence/origin/meta_origin.py +0 -0
  112. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/persistence/origin/origin_constants.py +0 -0
  113. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/persistence/source/__init__.py +0 -0
  114. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/persistence/source/meta_source.py +0 -0
  115. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/persistence/source/source_constants.py +0 -0
  116. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/presentation/__init__.py +0 -0
  117. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/presentation/layout/__init__.py +0 -0
  118. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/presentation/layout/layout_constants.py +0 -0
  119. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/presentation/layout/meta_layout.py +0 -0
  120. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/presentation/ui/__init__.py +0 -0
  121. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/presentation/ui/ui_provider.py +0 -0
  122. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/presentation/view/__init__.py +0 -0
  123. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/presentation/view/meta_view.py +0 -0
  124. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/presentation/view/view_constants.py +0 -0
  125. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/provider_extends.py +0 -0
  126. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/template/__init__.py +0 -0
  127. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/template/meta_template.py +0 -0
  128. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/template/prompt_provider.py +0 -0
  129. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/meta/template/template_constants.py +0 -0
  130. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/naming_refs.py +0 -0
  131. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/parser.py +0 -0
  132. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/parser_yaml.py +0 -0
  133. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/provider.py +0 -0
  134. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/py.typed +0 -0
  135. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/registry.py +0 -0
  136. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/registry_manifest.py +0 -0
  137. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/__init__.py +0 -0
  138. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/email_document.py +0 -0
  139. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/escapers.py +0 -0
  140. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/extract/KNOWN_GAPS.md +0 -0
  141. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/extract/__init__.py +0 -0
  142. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/extract/coerce.py +0 -0
  143. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/extract/extract.py +0 -0
  144. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/extract/extract_map.py +0 -0
  145. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/extract/json_forgiving_reader.py +0 -0
  146. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/extract/locate.py +0 -0
  147. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/extract/normalize.py +0 -0
  148. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/extract/strip.py +0 -0
  149. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/extract/types.py +0 -0
  150. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/extract/xml_forgiving_reader.py +0 -0
  151. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/filesystem_provider.py +0 -0
  152. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/prompt/__init__.py +0 -0
  153. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/prompt/output_format_renderer.py +0 -0
  154. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/prompt/output_format_spec.py +0 -0
  155. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/prompt/prompt_field.py +0 -0
  156. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/prompt/prompt_overrides.py +0 -0
  157. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/prompt/prompt_style.py +0 -0
  158. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/renderer.py +0 -0
  159. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/render/verify.py +0 -0
  160. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/runtime/__init__.py +0 -0
  161. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/runtime/llm_recorder.py +0 -0
  162. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/runtime/n2m_resolver.py +0 -0
  163. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/runtime/object_manager.py +0 -0
  164. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/runtime/tph.py +0 -0
  165. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/serializer_json.py +0 -0
  166. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/shared/__init__.py +0 -0
  167. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/shared/base_types.py +0 -0
  168. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/shared/separators.py +0 -0
  169. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/shared/structural.py +0 -0
  170. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/source/__init__.py +0 -0
  171. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/source/error_source.py +0 -0
  172. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/source/json_path.py +0 -0
  173. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/source/semantic_diff.py +0 -0
  174. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/source/yaml_positions.py +0 -0
  175. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/spec_metamodel/__init__.py +0 -0
  176. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/spec_metamodel/attr.json +0 -0
  177. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/spec_metamodel/db.json +0 -0
  178. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/spec_metamodel/documentation.json +0 -0
  179. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/spec_metamodel/identity.json +0 -0
  180. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/spec_metamodel/index.json +0 -0
  181. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/spec_metamodel/layout.json +0 -0
  182. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/spec_metamodel/object.json +0 -0
  183. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/spec_metamodel/origin.json +0 -0
  184. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/spec_metamodel/prompt.json +0 -0
  185. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/spec_metamodel/relationship.json +0 -0
  186. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/spec_metamodel/source.json +0 -0
  187. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/spec_metamodel/template.json +0 -0
  188. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/spec_metamodel/ui-web.json +0 -0
  189. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/spec_metamodel/ui.json +0 -0
  190. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/spec_metamodel/validator.json +0 -0
  191. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/spec_metamodel/view.json +0 -0
  192. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/super_resolve.py +0 -0
  193. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/validation_types.py +0 -0
  194. {metaobjects-0.19.7 → metaobjects-0.19.8}/src/metaobjects/yaml_desugar.py +0 -0
  195. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/__init__.py +0 -0
  196. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/__init__.py +0 -0
  197. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/golden/extends/expected/BaseEntity.py +0 -0
  198. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/golden/extends/expected/Program.py +0 -0
  199. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/golden/extends/meta.json +0 -0
  200. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/golden/nested-array/expected/AuthorBrief.py +0 -0
  201. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/golden/nested-array/expected/PostBrief.py +0 -0
  202. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/golden/nested-array/meta.json +0 -0
  203. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/golden/scalars/expected/Metric.py +0 -0
  204. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/golden/scalars/expected/Report.py +0 -0
  205. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/golden/scalars/meta.json +0 -0
  206. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/golden/vanilla/expected/Subscriber.py +0 -0
  207. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/golden/vanilla/meta.json +0 -0
  208. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_abstract_conformance.py +0 -0
  209. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_api_docs_builder.py +0 -0
  210. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_api_docs_paths.py +0 -0
  211. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_cli.py +0 -0
  212. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_cli_providers.py +0 -0
  213. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_cli_registry.py +0 -0
  214. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_cli_staleness_nudge.py +0 -0
  215. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_cli_verify_strict.py +0 -0
  216. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_cli_verify_subverbs.py +0 -0
  217. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_constants_config.py +0 -0
  218. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_entity_model.py +0 -0
  219. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_enum_conformance.py +0 -0
  220. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_extends_abstract_field_inheritance.py +0 -0
  221. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_extractor_generator.py +0 -0
  222. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_filter_allowlist_generator.py +0 -0
  223. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_format.py +0 -0
  224. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_fr010_nested_object_prompt.py +0 -0
  225. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_fr010_output_codegen.py +0 -0
  226. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_fr019_shared_provided_conformance.py +0 -0
  227. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_generator.py +0 -0
  228. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_generator_extension_seams.py +0 -0
  229. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_golden.py +0 -0
  230. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_inherit_without_restate_gate.py +0 -0
  231. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_inheritance_conformance.py +0 -0
  232. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_instance_artifacts.py +0 -0
  233. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_m2m_codegen.py +0 -0
  234. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_origin_nullability.py +0 -0
  235. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_output_parser_generator.py +0 -0
  236. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_overwrite_policy.py +0 -0
  237. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_payload_vo_generator.py +0 -0
  238. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_projection_compile.py +0 -0
  239. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_render_helper_conformance.py +0 -0
  240. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_render_helper_generator.py +0 -0
  241. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_reverse_finders.py +0 -0
  242. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_router_autoset.py +0 -0
  243. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_router_generator.py +0 -0
  244. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_runner.py +0 -0
  245. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_template_data.py +0 -0
  246. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_template_generator.py +0 -0
  247. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_template_output_pattern.py +0 -0
  248. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_template_scope_helpers.py +0 -0
  249. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_template_scope_walk.py +0 -0
  250. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_template_spec.py +0 -0
  251. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_tph_codegen.py +0 -0
  252. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_trace_helper_generator.py +0 -0
  253. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_type_map.py +0 -0
  254. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/codegen/test_write_through.py +0 -0
  255. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/__init__.py +0 -0
  256. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/capabilities.py +0 -0
  257. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/conformance-expected-failures.json +0 -0
  258. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/conformance_adapter.py +0 -0
  259. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/corpus.py +0 -0
  260. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/expected_failures.py +0 -0
  261. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/fixture_discovery.py +0 -0
  262. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/navigator.py +0 -0
  263. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/test_api_docs_cross_port_conformance.py +0 -0
  264. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/test_conformance.py +0 -0
  265. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/test_extract_conformance.py +0 -0
  266. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/test_extract_object_verdict.py +0 -0
  267. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/test_fr010_loader_attrs.py +0 -0
  268. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/test_fr011_attrs.py +0 -0
  269. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/test_generator_registry_conformance.py +0 -0
  270. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/test_object_model_conformance.py +0 -0
  271. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/test_provider_composition_conformance.py +0 -0
  272. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/test_registry_conformance.py +0 -0
  273. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/test_runner_hardfail.py +0 -0
  274. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/test_spec_metamodel_embed.py +0 -0
  275. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/test_strict_attr_load.py +0 -0
  276. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/test_template_codegen_conformance.py +0 -0
  277. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/test_template_generator_conformance.py +0 -0
  278. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/test_yaml_conformance.py +0 -0
  279. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/conformance/yaml-conformance-expected-failures.json +0 -0
  280. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/__init__.py +0 -0
  281. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/api_contract_assertions.py +0 -0
  282. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/api_contract_jsonb_server.py +0 -0
  283. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/api_contract_m2m_server.py +0 -0
  284. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/api_contract_server.py +0 -0
  285. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/generated_jsonb_app.py +0 -0
  286. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/generated_m2m_app.py +0 -0
  287. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/generated_router_app.py +0 -0
  288. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/generated_tph_app.py +0 -0
  289. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/meta_ai_trace.yaml +0 -0
  290. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/normalization.py +0 -0
  291. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/postgres_container.py +0 -0
  292. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/query_runner.py +0 -0
  293. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/scenarios.py +0 -0
  294. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/test_api_contract.py +0 -0
  295. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/test_api_contract_generated.py +0 -0
  296. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/test_api_contract_jsonb.py +0 -0
  297. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/test_api_contract_m2m.py +0 -0
  298. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/test_api_contract_m2m_generated.py +0 -0
  299. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/test_api_contract_tph_generated.py +0 -0
  300. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/test_generated_router_uuid_pk.py +0 -0
  301. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/test_llm_call_trace.py +0 -0
  302. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/test_normalization.py +0 -0
  303. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/test_query_scenarios.py +0 -0
  304. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/integration/test_runtime_return_types.py +0 -0
  305. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/open_closed_proof_test.py +0 -0
  306. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/__init__.py +0 -0
  307. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/extract/__init__.py +0 -0
  308. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/extract/test_coerce.py +0 -0
  309. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/extract/test_extract.py +0 -0
  310. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/extract/test_extract_map.py +0 -0
  311. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/extract/test_json_forgiving_reader.py +0 -0
  312. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/extract/test_locate.py +0 -0
  313. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/extract/test_model.py +0 -0
  314. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/extract/test_normalize.py +0 -0
  315. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/extract/test_strip.py +0 -0
  316. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/extract/test_xml_forgiving_reader.py +0 -0
  317. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/prompt/__init__.py +0 -0
  318. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/prompt/test_output_format_renderer.py +0 -0
  319. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/test_email_document.py +0 -0
  320. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/test_filesystem_provider.py +0 -0
  321. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/test_output_format_renderer_nested.py +0 -0
  322. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/test_output_prompt_conformance.py +0 -0
  323. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/test_render_conformance.py +0 -0
  324. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/test_render_max_chars.py +0 -0
  325. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/test_verify.py +0 -0
  326. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/render/test_verify_conformance.py +0 -0
  327. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/source/__init__.py +0 -0
  328. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/source/test_fr5c_merge_attribution.py +0 -0
  329. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/source/test_fr5d_reference_resolution.py +0 -0
  330. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/source/test_fr5e_database_source_shape.py +0 -0
  331. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/source/test_json_path.py +0 -0
  332. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/source/test_semantic_diff.py +0 -0
  333. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/source/test_source_on_node.py +0 -0
  334. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/source/test_yaml_positions.py +0 -0
  335. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/test_api_docs_accuracy.py +0 -0
  336. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/__init__.py +0 -0
  337. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_agent_context_staleness.py +0 -0
  338. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_capabilities.py +0 -0
  339. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_common_attrs.py +0 -0
  340. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_core_types.py +0 -0
  341. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_effective_package.py +0 -0
  342. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_errors.py +0 -0
  343. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_field_enum.py +0 -0
  344. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_field_map_validation.py +0 -0
  345. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_field_uuid_dbcolumntype.py +0 -0
  346. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_fr016_source_name_and_kind_aliases.py +0 -0
  347. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_index_lookup.py +0 -0
  348. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_llm_recorder.py +0 -0
  349. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_loader.py +0 -0
  350. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_loader_bom.py +0 -0
  351. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_loader_class.py +0 -0
  352. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_merge.py +0 -0
  353. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_meta_attr.py +0 -0
  354. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_meta_data.py +0 -0
  355. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_meta_source.py +0 -0
  356. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_module_shortcuts.py +0 -0
  357. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_n2m_resolver.py +0 -0
  358. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_n2m_resolver_inherited.py +0 -0
  359. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_object_manager_autoset_stamping.py +0 -0
  360. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_object_manager_uuid_coercion.py +0 -0
  361. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_object_manager_write_through.py +0 -0
  362. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_one_primary_source.py +0 -0
  363. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_parser.py +0 -0
  364. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_parser_yaml.py +0 -0
  365. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_provider.py +0 -0
  366. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_provider_extension.py +0 -0
  367. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_registry.py +0 -0
  368. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_registry_completeness.py +0 -0
  369. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_registry_extend.py +0 -0
  370. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_registry_sealed.py +0 -0
  371. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_relationship_referential_actions.py +0 -0
  372. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_resolution_key.py +0 -0
  373. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_runtime_resolution_key_binding.py +0 -0
  374. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_serializer.py +0 -0
  375. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_shared_constants.py +0 -0
  376. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_smoke.py +0 -0
  377. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_source_escapes.py +0 -0
  378. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_sources.py +0 -0
  379. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_strict_child_placement.py +0 -0
  380. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_super_resolve.py +0 -0
  381. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_template_toolcall.py +0 -0
  382. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_template_wrong_subtype_attrs.py +0 -0
  383. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_validation_attr_schema.py +0 -0
  384. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_validation_filter_values.py +0 -0
  385. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_validation_origin_195.py +0 -0
  386. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_validation_origin_paths.py +0 -0
  387. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_validation_sort_field.py +0 -0
  388. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_validation_warnings.py +0 -0
  389. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_write_coercion_arrays.py +0 -0
  390. {metaobjects-0.19.7 → metaobjects-0.19.8}/tests/unit/test_yaml_desugar.py +0 -0
  391. {metaobjects-0.19.7 → metaobjects-0.19.8}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: metaobjects
3
- Version: 0.19.7
3
+ Version: 0.19.8
4
4
  Summary: Cross-language metadata standard: declare typed entities once, generate idiomatic drift-checked code across languages — Python port.
5
5
  Project-URL: Homepage, https://metaobjects.dev
6
6
  Project-URL: Repository, https://github.com/metaobjectsdev/metaobjects
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "metaobjects"
3
- version = "0.19.7"
3
+ version = "0.19.8"
4
4
  description = "Cross-language metadata standard: declare typed entities once, generate idiomatic drift-checked code across languages — Python port."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -116,6 +116,14 @@ def py_type_for(field: MetaField) -> PyType:
116
116
  # z.unknown() (#97) — since jsonb can hold any JSON value. (Other ports whose
117
117
  # drivers return jsonb as raw text correctly keep their string type.)
118
118
  base = PyType("Any", ("from typing import Any",))
119
+ elif (
120
+ field.sub_type in (fc.FIELD_SUBTYPE_URI, fc.FIELD_SUBTYPE_INET)
121
+ and field.attrs().get(fc.FIELD_ATTR_LENIENT) is True
122
+ ):
123
+ # #234 — @lenient opts a field.uri / field.inet out of strict well-formedness:
124
+ # bind a plain ``str`` (not Pydantic AnyUrl / IPvAnyAddress, whose construction
125
+ # IS the validator) so a not-strictly-valid value round-trips unchanged.
126
+ base = PyType("str")
119
127
  else:
120
128
  base = _SCALAR.get(field.sub_type, PyType("str"))
121
129
  if field_is_array(field):
@@ -391,6 +391,15 @@ for _def in core_provider._defs: # noqa: SLF001 (provider build-time enrichment
391
391
  )
392
392
  break
393
393
 
394
+ # #234 — field.uri / field.inet carry the @lenient attr (opt out of strict URI / IP-literal
395
+ # well-formedness; codegen binds a plain string, and field.inet a text column) IN ADDITION to the
396
+ # common field attrs. Mirrors the @stringFormat enrichment above (and TS/Java/C#).
397
+ for _def in core_provider._defs: # noqa: SLF001 (provider build-time enrichment)
398
+ if _def.type == TYPE_FIELD and _def.sub_type in (fc.FIELD_SUBTYPE_URI, fc.FIELD_SUBTYPE_INET):
399
+ _def.attrs.append(
400
+ AttrSchema(name=fc.FIELD_ATTR_LENIENT, value_type=ATTR_SUBTYPE_BOOLEAN, required=False)
401
+ )
402
+
394
403
  # field.map carries the @valueType attr (scalar value subtype) IN ADDITION to the
395
404
  # common field attrs (@objectRef is already common). The bulk loop registered
396
405
  # field.map with the common attrs; append @valueType to that definition (mirrors
@@ -132,6 +132,11 @@ STRING_FORMAT_EMAIL = "email"
132
132
  STRING_FORMAT_HOSTNAME = "hostname"
133
133
  STRING_FORMAT_VALUES = (STRING_FORMAT_EMAIL, STRING_FORMAT_HOSTNAME)
134
134
 
135
+ # #234: opt a field.uri / field.inet OUT of strict well-formedness enforcement (optional boolean;
136
+ # default strict). When true, codegen binds a plain string (no URL/IP validator, no native type;
137
+ # field.inet uses a text column). Only on field.uri / field.inet. Mirrors TS FIELD_ATTR_LENIENT.
138
+ FIELD_ATTR_LENIENT = "lenient"
139
+
135
140
  # @autoSet allowed values (cross-port).
136
141
  AUTO_SET_ON_CREATE = "onCreate"
137
142
  AUTO_SET_ON_UPDATE = "onUpdate"
@@ -167,15 +167,21 @@
167
167
  "dataType": "string",
168
168
  "extendsBase": true,
169
169
  "description": "A URI/URL string (ADR-0036/0037 — a concept with a native type + behavior, so a subtype not a @stringFormat). Binds to TS string (TS has no native URI type, same as field.uuid); other ports bind to their native URI type (Java java.net.URI, C# System.Uri, Python urllib.parse, Kotlin java.net.URI) and parse scheme/authority/path. DB column is text (Postgres has no uri type). Codegen emits a URL/URI validator (TS Zod z.string().url()). v1 ships WITHOUT @kind — the native type subsumes url/urn; @kind is reserved for a later url|urn value-constraint.",
170
- "whenToUse": "A field holds a URL or URI. Use it for a typed URI column + URL validation instead of a plain string."
170
+ "whenToUse": "A field holds a URL or URI. Use it for a typed URI column + URL validation instead of a plain string.",
171
+ "children": [
172
+ { "type": "attr", "subType": "boolean", "name": "lenient", "min": 0, "max": 1, "description": "#234: opt this field out of strict well-formedness enforcement. When true, codegen binds a plain string (no URL/IP validator, no native URI/InetAddress type; field.inet uses a text column, not the native inet type) so a not-strictly-valid value round-trips unchanged. Default (absent/false) is strict: an absolute-scheme URI / an IPv4-or-IPv6 literal." }
173
+ ]
171
174
  },
172
175
  {
173
176
  "type": "field",
174
177
  "subType": "inet",
175
178
  "dataType": "string",
176
179
  "extendsBase": true,
177
- "description": "An IP-address string (IPv4 or IPv6) (ADR-0036/0037 — a concept with a native type + behavior, so a subtype not a @stringFormat). Binds to TS string (TS has no native IP type, same as field.uuid); other ports bind to their native IP type (Java java.net.InetAddress, C# System.Net.IPAddress, Python ipaddress, Kotlin java.net.InetAddress). DB column is the Postgres-native inet type. Codegen emits an IP validator accepting both v4 and v6 (TS Zod z.string().ip()). v1 ships WITHOUT @kind — the native type subsumes ipv4/ipv6; @kind is reserved for a later ipv4|ipv6 value-constraint.",
178
- "whenToUse": "A field holds an IPv4 or IPv6 address. Use it for a native Postgres inet column + IP validation instead of a plain string."
180
+ "description": "An IP-address string (IPv4 or IPv6) (ADR-0036/0037 — a concept with a native type + behavior, so a subtype not a @stringFormat). Binds to TS string (TS has no native IP type, same as field.uuid); other ports bind to their native IP type (Java java.net.InetAddress, C# System.Net.IPAddress, Python ipaddress, Kotlin java.net.InetAddress). DB column is the Postgres-native inet type. Codegen emits an IPv4-or-IPv6 literal validator (a Zod regex union in TS z.string().ip() was removed in Zod 4 — native IP-type parsing in the other ports); add @lenient to bind a plain string with no validator. v1 ships WITHOUT @kind — the native type subsumes ipv4/ipv6; @kind is reserved for a later ipv4|ipv6 value-constraint.",
181
+ "whenToUse": "A field holds an IPv4 or IPv6 address. Use it for a native Postgres inet column + IP validation instead of a plain string.",
182
+ "children": [
183
+ { "type": "attr", "subType": "boolean", "name": "lenient", "min": 0, "max": 1, "description": "#234: opt this field out of strict well-formedness enforcement. When true, codegen binds a plain string (no URL/IP validator, no native URI/InetAddress type; field.inet uses a text column, not the native inet type) so a not-strictly-valid value round-trips unchanged. Default (absent/false) is strict: an absolute-scheme URI / an IPv4-or-IPv6 literal." }
184
+ ]
179
185
  }
180
186
  ]
181
187
  }
@@ -15,7 +15,10 @@ model, so asserting against the read model would no longer exercise Pin 1 at all
15
15
  """
16
16
  from __future__ import annotations
17
17
 
18
+ import importlib.util
18
19
  import json
20
+ import sys
21
+ import tempfile
19
22
  from pathlib import Path
20
23
 
21
24
  import pytest
@@ -52,9 +55,22 @@ def _build_generated_model() -> type[BaseModel]:
52
55
  artifact), not the plain ``Account`` read model: FR-036 Pin 1 lives on the wire
53
56
  tier only."""
54
57
  source = render_entity_model(_load_account_entity())
55
- namespace: dict[str, object] = {}
56
- exec(compile(source, "<generated Account.py>", "exec"), namespace) # noqa: S102
57
- model = namespace["AccountCreate"]
58
+ # Import the generated source as a REAL module rather than exec'ing it into a
59
+ # bare dict: under ``from __future__ import annotations`` Pydantic resolves
60
+ # type annotations lazily via the class's module globals, so a non-builtin
61
+ # import (e.g. ``AnyUrl``/``IPvAnyAddress`` for field.uri/field.inet) only
62
+ # resolves when ``__name__`` and the module's imports are in scope. A bare
63
+ # exec namespace has no ``__name__`` (forward refs fall back to builtins and
64
+ # fail — #234); a proper module import mirrors the TS runner's temp-module.
65
+ tmp_dir = tempfile.mkdtemp()
66
+ mod_path = Path(tmp_dir) / "generated_account.py"
67
+ mod_path.write_text(source)
68
+ spec = importlib.util.spec_from_file_location("generated_account", mod_path)
69
+ assert spec and spec.loader
70
+ module = importlib.util.module_from_spec(spec)
71
+ sys.modules["generated_account"] = module
72
+ spec.loader.exec_module(module)
73
+ model = module.AccountCreate
58
74
  assert isinstance(model, type) and issubclass(model, BaseModel)
59
75
  return model
60
76
 
File without changes
File without changes
File without changes