metaobjects 0.19.5__tar.gz → 0.19.7__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.5 → metaobjects-0.19.7}/PKG-INFO +1 -1
  2. {metaobjects-0.19.5 → metaobjects-0.19.7}/pyproject.toml +1 -1
  3. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/loader/validation_passes.py +70 -29
  4. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/prompt.json +2 -1
  5. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_template_toolcall.py +2 -0
  6. {metaobjects-0.19.5 → metaobjects-0.19.7}/uv.lock +1 -1
  7. {metaobjects-0.19.5 → metaobjects-0.19.7}/.gitignore +0 -0
  8. {metaobjects-0.19.5 → metaobjects-0.19.7}/LICENSE +0 -0
  9. {metaobjects-0.19.5 → metaobjects-0.19.7}/README.md +0 -0
  10. {metaobjects-0.19.5 → metaobjects-0.19.7}/hatch_build.py +0 -0
  11. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/__init__.py +0 -0
  12. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/agent_context/__init__.py +0 -0
  13. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/agent_context/scaffold.py +0 -0
  14. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/apidocs/__init__.py +0 -0
  15. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/apidocs/api_model.py +0 -0
  16. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/apidocs/builder.py +0 -0
  17. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/apidocs/naming.py +0 -0
  18. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/apidocs/paths.py +0 -0
  19. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/apidocs/renderer.py +0 -0
  20. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/attr_class_map.py +0 -0
  21. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/cli.py +0 -0
  22. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/KNOWN_GAPS.md +0 -0
  23. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/__init__.py +0 -0
  24. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/config.py +0 -0
  25. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/constants.py +0 -0
  26. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/extract_delegate_emitter.py +0 -0
  27. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/extract_schema_emitter.py +0 -0
  28. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/format.py +0 -0
  29. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/fr010_field_mapping.py +0 -0
  30. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/generator.py +0 -0
  31. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/generator_registry.py +0 -0
  32. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/__init__.py +0 -0
  33. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/entity_model.py +0 -0
  34. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/extractor_generator.py +0 -0
  35. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/filter_allowlist_generator.py +0 -0
  36. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/fr019_shared_enum.py +0 -0
  37. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/m2m_codegen.py +0 -0
  38. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/output_parser_generator.py +0 -0
  39. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/output_prompt_generator.py +0 -0
  40. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/payload_vo_generator.py +0 -0
  41. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/render_helper_generator.py +0 -0
  42. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/router_generator.py +0 -0
  43. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/template_generator.py +0 -0
  44. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/tph_plan.py +0 -0
  45. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/trace_helper_generator.py +0 -0
  46. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/instance_artifacts.py +0 -0
  47. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/output_format_spec_emitter.py +0 -0
  48. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/overwrite_policy.py +0 -0
  49. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/runner.py +0 -0
  50. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/runtime/__init__.py +0 -0
  51. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/runtime/filter_parser.py +0 -0
  52. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/template_codegen/__init__.py +0 -0
  53. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/template_codegen/output_pattern.py +0 -0
  54. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/template_codegen/template_data.py +0 -0
  55. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/template_codegen/template_spec.py +0 -0
  56. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/codegen/type_map.py +0 -0
  57. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/core_types.py +0 -0
  58. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/datatype.py +0 -0
  59. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/documentation/__init__.py +0 -0
  60. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/documentation/doc_constants.py +0 -0
  61. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/documentation/doc_provider.py +0 -0
  62. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/documentation/doc_schema.py +0 -0
  63. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/errors.py +0 -0
  64. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/loader/__init__.py +0 -0
  65. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/loader/merge.py +0 -0
  66. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/loader/meta_data_loader.py +0 -0
  67. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/loader/registered_validation.py +0 -0
  68. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/loader/sources/__init__.py +0 -0
  69. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/loader/sources/directory_source.py +0 -0
  70. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/loader/sources/file_source.py +0 -0
  71. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/loader/sources/meta_data_source.py +0 -0
  72. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/loader/sources/uri_source.py +0 -0
  73. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/loader/validate_discriminator.py +0 -0
  74. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/loader/validate_field_readonly.py +0 -0
  75. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/loader/validate_source_escapes.py +0 -0
  76. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/loader/validate_source_parameter_ref.py +0 -0
  77. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/loader/validate_source_physical_names.py +0 -0
  78. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/__init__.py +0 -0
  79. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/__init__.py +0 -0
  80. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/attr/__init__.py +0 -0
  81. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/attr/attr_constants.py +0 -0
  82. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/attr/meta_attr.py +0 -0
  83. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/field/__init__.py +0 -0
  84. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/field/field_constants.py +0 -0
  85. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/field/meta_field.py +0 -0
  86. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/identity/__init__.py +0 -0
  87. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/identity/identity_constants.py +0 -0
  88. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/identity/meta_identity.py +0 -0
  89. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/index/__init__.py +0 -0
  90. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/index/index_constants.py +0 -0
  91. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/index/meta_index.py +0 -0
  92. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/object/__init__.py +0 -0
  93. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/object/meta_object.py +0 -0
  94. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/object/meta_object_aware.py +0 -0
  95. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/object/object_class_registry.py +0 -0
  96. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/object/object_constants.py +0 -0
  97. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/object/object_extract.py +0 -0
  98. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/object/value_object.py +0 -0
  99. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/relationship/__init__.py +0 -0
  100. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/relationship/derive_m2m_fields.py +0 -0
  101. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/relationship/meta_relationship.py +0 -0
  102. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/relationship/relationship_constants.py +0 -0
  103. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/validator/__init__.py +0 -0
  104. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/core/validator/validator_constants.py +0 -0
  105. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/meta_data.py +0 -0
  106. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/meta_root.py +0 -0
  107. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/persistence/__init__.py +0 -0
  108. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/persistence/db/__init__.py +0 -0
  109. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/persistence/db/db_constants.py +0 -0
  110. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/persistence/db/db_provider.py +0 -0
  111. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/persistence/origin/__init__.py +0 -0
  112. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/persistence/origin/meta_origin.py +0 -0
  113. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/persistence/origin/origin_constants.py +0 -0
  114. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/persistence/source/__init__.py +0 -0
  115. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/persistence/source/meta_source.py +0 -0
  116. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/persistence/source/source_constants.py +0 -0
  117. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/presentation/__init__.py +0 -0
  118. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/presentation/layout/__init__.py +0 -0
  119. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/presentation/layout/layout_constants.py +0 -0
  120. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/presentation/layout/meta_layout.py +0 -0
  121. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/presentation/ui/__init__.py +0 -0
  122. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/presentation/ui/ui_provider.py +0 -0
  123. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/presentation/view/__init__.py +0 -0
  124. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/presentation/view/meta_view.py +0 -0
  125. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/presentation/view/view_constants.py +0 -0
  126. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/provider_extends.py +0 -0
  127. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/template/__init__.py +0 -0
  128. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/template/meta_template.py +0 -0
  129. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/template/prompt_provider.py +0 -0
  130. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/meta/template/template_constants.py +0 -0
  131. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/naming_refs.py +0 -0
  132. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/parser.py +0 -0
  133. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/parser_yaml.py +0 -0
  134. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/provider.py +0 -0
  135. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/py.typed +0 -0
  136. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/registry.py +0 -0
  137. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/registry_manifest.py +0 -0
  138. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/__init__.py +0 -0
  139. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/email_document.py +0 -0
  140. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/escapers.py +0 -0
  141. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/extract/KNOWN_GAPS.md +0 -0
  142. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/extract/__init__.py +0 -0
  143. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/extract/coerce.py +0 -0
  144. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/extract/extract.py +0 -0
  145. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/extract/extract_map.py +0 -0
  146. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/extract/json_forgiving_reader.py +0 -0
  147. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/extract/locate.py +0 -0
  148. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/extract/normalize.py +0 -0
  149. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/extract/strip.py +0 -0
  150. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/extract/types.py +0 -0
  151. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/extract/xml_forgiving_reader.py +0 -0
  152. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/filesystem_provider.py +0 -0
  153. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/prompt/__init__.py +0 -0
  154. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/prompt/output_format_renderer.py +0 -0
  155. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/prompt/output_format_spec.py +0 -0
  156. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/prompt/prompt_field.py +0 -0
  157. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/prompt/prompt_overrides.py +0 -0
  158. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/prompt/prompt_style.py +0 -0
  159. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/renderer.py +0 -0
  160. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/render/verify.py +0 -0
  161. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/runtime/__init__.py +0 -0
  162. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/runtime/llm_recorder.py +0 -0
  163. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/runtime/n2m_resolver.py +0 -0
  164. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/runtime/object_manager.py +0 -0
  165. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/runtime/tph.py +0 -0
  166. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/serializer_json.py +0 -0
  167. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/shared/__init__.py +0 -0
  168. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/shared/base_types.py +0 -0
  169. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/shared/separators.py +0 -0
  170. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/shared/structural.py +0 -0
  171. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/source/__init__.py +0 -0
  172. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/source/error_source.py +0 -0
  173. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/source/json_path.py +0 -0
  174. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/source/semantic_diff.py +0 -0
  175. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/source/yaml_positions.py +0 -0
  176. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/__init__.py +0 -0
  177. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/attr.json +0 -0
  178. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/db.json +0 -0
  179. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/documentation.json +0 -0
  180. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/field.json +0 -0
  181. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/identity.json +0 -0
  182. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/index.json +0 -0
  183. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/layout.json +0 -0
  184. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/object.json +0 -0
  185. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/origin.json +0 -0
  186. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/relationship.json +0 -0
  187. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/source.json +0 -0
  188. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/template.json +0 -0
  189. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/ui-web.json +0 -0
  190. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/ui.json +0 -0
  191. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/validator.json +0 -0
  192. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/view.json +0 -0
  193. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/super_resolve.py +0 -0
  194. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/validation_types.py +0 -0
  195. {metaobjects-0.19.5 → metaobjects-0.19.7}/src/metaobjects/yaml_desugar.py +0 -0
  196. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/__init__.py +0 -0
  197. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/__init__.py +0 -0
  198. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/golden/extends/expected/BaseEntity.py +0 -0
  199. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/golden/extends/expected/Program.py +0 -0
  200. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/golden/extends/meta.json +0 -0
  201. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/golden/nested-array/expected/AuthorBrief.py +0 -0
  202. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/golden/nested-array/expected/PostBrief.py +0 -0
  203. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/golden/nested-array/meta.json +0 -0
  204. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/golden/scalars/expected/Metric.py +0 -0
  205. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/golden/scalars/expected/Report.py +0 -0
  206. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/golden/scalars/meta.json +0 -0
  207. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/golden/vanilla/expected/Subscriber.py +0 -0
  208. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/golden/vanilla/meta.json +0 -0
  209. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_abstract_conformance.py +0 -0
  210. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_api_docs_builder.py +0 -0
  211. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_api_docs_paths.py +0 -0
  212. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_cli.py +0 -0
  213. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_cli_providers.py +0 -0
  214. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_cli_registry.py +0 -0
  215. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_cli_staleness_nudge.py +0 -0
  216. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_cli_verify_strict.py +0 -0
  217. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_cli_verify_subverbs.py +0 -0
  218. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_constants_config.py +0 -0
  219. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_entity_model.py +0 -0
  220. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_enum_conformance.py +0 -0
  221. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_extends_abstract_field_inheritance.py +0 -0
  222. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_extractor_generator.py +0 -0
  223. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_filter_allowlist_generator.py +0 -0
  224. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_format.py +0 -0
  225. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_fr010_nested_object_prompt.py +0 -0
  226. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_fr010_output_codegen.py +0 -0
  227. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_fr019_shared_provided_conformance.py +0 -0
  228. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_generator.py +0 -0
  229. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_generator_extension_seams.py +0 -0
  230. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_golden.py +0 -0
  231. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_inherit_without_restate_gate.py +0 -0
  232. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_inheritance_conformance.py +0 -0
  233. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_instance_artifacts.py +0 -0
  234. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_m2m_codegen.py +0 -0
  235. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_origin_nullability.py +0 -0
  236. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_output_parser_generator.py +0 -0
  237. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_overwrite_policy.py +0 -0
  238. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_payload_vo_generator.py +0 -0
  239. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_projection_compile.py +0 -0
  240. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_render_helper_conformance.py +0 -0
  241. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_render_helper_generator.py +0 -0
  242. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_reverse_finders.py +0 -0
  243. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_router_autoset.py +0 -0
  244. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_router_generator.py +0 -0
  245. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_runner.py +0 -0
  246. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_template_data.py +0 -0
  247. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_template_generator.py +0 -0
  248. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_template_output_pattern.py +0 -0
  249. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_template_scope_helpers.py +0 -0
  250. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_template_scope_walk.py +0 -0
  251. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_template_spec.py +0 -0
  252. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_tph_codegen.py +0 -0
  253. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_trace_helper_generator.py +0 -0
  254. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_type_map.py +0 -0
  255. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_validation_conformance.py +0 -0
  256. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/codegen/test_write_through.py +0 -0
  257. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/__init__.py +0 -0
  258. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/capabilities.py +0 -0
  259. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/conformance-expected-failures.json +0 -0
  260. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/conformance_adapter.py +0 -0
  261. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/corpus.py +0 -0
  262. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/expected_failures.py +0 -0
  263. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/fixture_discovery.py +0 -0
  264. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/navigator.py +0 -0
  265. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/test_api_docs_cross_port_conformance.py +0 -0
  266. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/test_conformance.py +0 -0
  267. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/test_extract_conformance.py +0 -0
  268. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/test_extract_object_verdict.py +0 -0
  269. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/test_fr010_loader_attrs.py +0 -0
  270. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/test_fr011_attrs.py +0 -0
  271. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/test_generator_registry_conformance.py +0 -0
  272. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/test_object_model_conformance.py +0 -0
  273. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/test_provider_composition_conformance.py +0 -0
  274. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/test_registry_conformance.py +0 -0
  275. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/test_runner_hardfail.py +0 -0
  276. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/test_spec_metamodel_embed.py +0 -0
  277. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/test_strict_attr_load.py +0 -0
  278. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/test_template_codegen_conformance.py +0 -0
  279. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/test_template_generator_conformance.py +0 -0
  280. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/test_yaml_conformance.py +0 -0
  281. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/conformance/yaml-conformance-expected-failures.json +0 -0
  282. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/__init__.py +0 -0
  283. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/api_contract_assertions.py +0 -0
  284. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/api_contract_jsonb_server.py +0 -0
  285. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/api_contract_m2m_server.py +0 -0
  286. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/api_contract_server.py +0 -0
  287. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/generated_jsonb_app.py +0 -0
  288. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/generated_m2m_app.py +0 -0
  289. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/generated_router_app.py +0 -0
  290. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/generated_tph_app.py +0 -0
  291. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/meta_ai_trace.yaml +0 -0
  292. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/normalization.py +0 -0
  293. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/postgres_container.py +0 -0
  294. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/query_runner.py +0 -0
  295. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/scenarios.py +0 -0
  296. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/test_api_contract.py +0 -0
  297. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/test_api_contract_generated.py +0 -0
  298. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/test_api_contract_jsonb.py +0 -0
  299. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/test_api_contract_m2m.py +0 -0
  300. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/test_api_contract_m2m_generated.py +0 -0
  301. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/test_api_contract_tph_generated.py +0 -0
  302. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/test_generated_router_uuid_pk.py +0 -0
  303. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/test_llm_call_trace.py +0 -0
  304. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/test_normalization.py +0 -0
  305. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/test_query_scenarios.py +0 -0
  306. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/integration/test_runtime_return_types.py +0 -0
  307. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/open_closed_proof_test.py +0 -0
  308. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/__init__.py +0 -0
  309. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/extract/__init__.py +0 -0
  310. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/extract/test_coerce.py +0 -0
  311. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/extract/test_extract.py +0 -0
  312. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/extract/test_extract_map.py +0 -0
  313. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/extract/test_json_forgiving_reader.py +0 -0
  314. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/extract/test_locate.py +0 -0
  315. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/extract/test_model.py +0 -0
  316. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/extract/test_normalize.py +0 -0
  317. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/extract/test_strip.py +0 -0
  318. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/extract/test_xml_forgiving_reader.py +0 -0
  319. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/prompt/__init__.py +0 -0
  320. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/prompt/test_output_format_renderer.py +0 -0
  321. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/test_email_document.py +0 -0
  322. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/test_filesystem_provider.py +0 -0
  323. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/test_output_format_renderer_nested.py +0 -0
  324. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/test_output_prompt_conformance.py +0 -0
  325. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/test_render_conformance.py +0 -0
  326. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/test_render_max_chars.py +0 -0
  327. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/test_verify.py +0 -0
  328. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/render/test_verify_conformance.py +0 -0
  329. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/source/__init__.py +0 -0
  330. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/source/test_fr5c_merge_attribution.py +0 -0
  331. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/source/test_fr5d_reference_resolution.py +0 -0
  332. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/source/test_fr5e_database_source_shape.py +0 -0
  333. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/source/test_json_path.py +0 -0
  334. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/source/test_semantic_diff.py +0 -0
  335. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/source/test_source_on_node.py +0 -0
  336. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/source/test_yaml_positions.py +0 -0
  337. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/test_api_docs_accuracy.py +0 -0
  338. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/__init__.py +0 -0
  339. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_agent_context_staleness.py +0 -0
  340. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_capabilities.py +0 -0
  341. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_common_attrs.py +0 -0
  342. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_core_types.py +0 -0
  343. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_effective_package.py +0 -0
  344. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_errors.py +0 -0
  345. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_field_enum.py +0 -0
  346. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_field_map_validation.py +0 -0
  347. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_field_uuid_dbcolumntype.py +0 -0
  348. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_fr016_source_name_and_kind_aliases.py +0 -0
  349. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_index_lookup.py +0 -0
  350. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_llm_recorder.py +0 -0
  351. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_loader.py +0 -0
  352. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_loader_bom.py +0 -0
  353. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_loader_class.py +0 -0
  354. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_merge.py +0 -0
  355. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_meta_attr.py +0 -0
  356. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_meta_data.py +0 -0
  357. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_meta_source.py +0 -0
  358. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_module_shortcuts.py +0 -0
  359. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_n2m_resolver.py +0 -0
  360. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_n2m_resolver_inherited.py +0 -0
  361. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_object_manager_autoset_stamping.py +0 -0
  362. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_object_manager_uuid_coercion.py +0 -0
  363. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_object_manager_write_through.py +0 -0
  364. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_one_primary_source.py +0 -0
  365. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_parser.py +0 -0
  366. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_parser_yaml.py +0 -0
  367. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_provider.py +0 -0
  368. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_provider_extension.py +0 -0
  369. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_registry.py +0 -0
  370. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_registry_completeness.py +0 -0
  371. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_registry_extend.py +0 -0
  372. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_registry_sealed.py +0 -0
  373. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_relationship_referential_actions.py +0 -0
  374. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_resolution_key.py +0 -0
  375. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_runtime_resolution_key_binding.py +0 -0
  376. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_serializer.py +0 -0
  377. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_shared_constants.py +0 -0
  378. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_smoke.py +0 -0
  379. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_source_escapes.py +0 -0
  380. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_sources.py +0 -0
  381. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_strict_child_placement.py +0 -0
  382. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_super_resolve.py +0 -0
  383. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_template_wrong_subtype_attrs.py +0 -0
  384. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_validation_attr_schema.py +0 -0
  385. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_validation_filter_values.py +0 -0
  386. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_validation_origin_195.py +0 -0
  387. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_validation_origin_paths.py +0 -0
  388. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_validation_sort_field.py +0 -0
  389. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_validation_warnings.py +0 -0
  390. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_write_coercion_arrays.py +0 -0
  391. {metaobjects-0.19.5 → metaobjects-0.19.7}/tests/unit/test_yaml_desugar.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: metaobjects
3
- Version: 0.19.5
3
+ Version: 0.19.7
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.5"
3
+ version = "0.19.7"
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"
@@ -110,6 +110,7 @@ from ..meta.core.relationship.relationship_constants import (
110
110
  from ..meta.core.identity.identity_constants import (
111
111
  IDENTITY_SUBTYPE_REFERENCE,
112
112
  IDENTITY_REFERENCE_ATTR_REFERENCES,
113
+ IDENTITY_REFERENCE_ATTR_ENFORCE,
113
114
  )
114
115
  from ..shared.separators import PACKAGE_SEP
115
116
  from ..meta.core.object.object_constants import (
@@ -123,21 +124,23 @@ from ..meta.core.index.index_constants import INDEX_ATTR_FIELDS, INDEX_SUBTYPE_L
123
124
  from ..source import resolved_source
124
125
  from ..naming_refs import did_you_mean_hint, resolve_object_ref
125
126
 
126
- # A subtype-specific template attr is valid ONLY on the subtype it is registered
127
+ # A subtype-specific template attr is valid ONLY on the subtype(s) it is registered
127
128
  # for. The metamodel registers these per-subtype (see the core_types template block),
128
129
  # but the lenient loader does not reject a misplaced one — _validate_templates does.
129
130
  # Mirrors the per-subtype TEMPLATE_ATTRS_MAP split across the other ports.
130
- _TEMPLATE_SUBTYPE_ONLY_ATTRS: dict[str, str] = {
131
- tc.TEMPLATE_ATTR_MAX_TOKENS: tc.TEMPLATE_SUBTYPE_PROMPT,
132
- tc.TEMPLATE_ATTR_REQUIRED_SLOTS: tc.TEMPLATE_SUBTYPE_PROMPT,
133
- tc.TEMPLATE_ATTR_MODEL: tc.TEMPLATE_SUBTYPE_PROMPT,
134
- tc.TEMPLATE_ATTR_RESPONSE_REF: tc.TEMPLATE_SUBTYPE_PROMPT,
135
- tc.TEMPLATE_ATTR_PROMPT_STYLE: tc.TEMPLATE_SUBTYPE_OUTPUT,
136
- tc.TEMPLATE_ATTR_KIND: tc.TEMPLATE_SUBTYPE_OUTPUT,
137
- tc.TEMPLATE_ATTR_SUBJECT_REF: tc.TEMPLATE_SUBTYPE_OUTPUT,
138
- tc.TEMPLATE_ATTR_HTML_BODY_REF: tc.TEMPLATE_SUBTYPE_OUTPUT,
139
- tc.TEMPLATE_ATTR_TEXT_BODY_REF: tc.TEMPLATE_SUBTYPE_OUTPUT,
140
- tc.TEMPLATE_ATTR_TOOL_NAME: tc.TEMPLATE_SUBTYPE_TOOLCALL,
131
+ # #237: @maxTokens is registered on BOTH prompt AND toolcall (a vendor-agnostic token
132
+ # budget), so the value is a SET of allowed subtypes, not a single one.
133
+ _TEMPLATE_SUBTYPE_ONLY_ATTRS: dict[str, frozenset[str]] = {
134
+ tc.TEMPLATE_ATTR_MAX_TOKENS: frozenset({tc.TEMPLATE_SUBTYPE_PROMPT, tc.TEMPLATE_SUBTYPE_TOOLCALL}),
135
+ tc.TEMPLATE_ATTR_REQUIRED_SLOTS: frozenset({tc.TEMPLATE_SUBTYPE_PROMPT}),
136
+ tc.TEMPLATE_ATTR_MODEL: frozenset({tc.TEMPLATE_SUBTYPE_PROMPT}),
137
+ tc.TEMPLATE_ATTR_RESPONSE_REF: frozenset({tc.TEMPLATE_SUBTYPE_PROMPT}),
138
+ tc.TEMPLATE_ATTR_PROMPT_STYLE: frozenset({tc.TEMPLATE_SUBTYPE_OUTPUT}),
139
+ tc.TEMPLATE_ATTR_KIND: frozenset({tc.TEMPLATE_SUBTYPE_OUTPUT}),
140
+ tc.TEMPLATE_ATTR_SUBJECT_REF: frozenset({tc.TEMPLATE_SUBTYPE_OUTPUT}),
141
+ tc.TEMPLATE_ATTR_HTML_BODY_REF: frozenset({tc.TEMPLATE_SUBTYPE_OUTPUT}),
142
+ tc.TEMPLATE_ATTR_TEXT_BODY_REF: frozenset({tc.TEMPLATE_SUBTYPE_OUTPUT}),
143
+ tc.TEMPLATE_ATTR_TOOL_NAME: frozenset({tc.TEMPLATE_SUBTYPE_TOOLCALL}),
141
144
  }
142
145
 
143
146
  # ---------------------------------------------------------------------------
@@ -436,18 +439,22 @@ def _validate_attr_schema(
436
439
 
437
440
  # --- Check 1: required attrs must be present (uses node.attrs() = effective,
438
441
  # so an inherited attr from the super chain satisfies the requirement) ---
439
- present_attrs = node.attrs()
440
- for schema in schemas:
441
- if not schema.required:
442
- continue
443
- if schema.name not in present_attrs:
444
- errors.append(
445
- MetaError(
446
- f"{_node_label(node)} is missing required attribute '@{schema.name}'",
447
- ErrorCode.ERR_MISSING_REQUIRED_ATTR,
448
- envelope=node.source,
442
+ # #236: an ABSTRACT node is a template, not instantiated — it may omit a required
443
+ # attr for concrete subtypes / `extends` to supply. Enforcement stays at the
444
+ # concrete level (a concrete's resolving attrs() must satisfy it). ADR-0039.
445
+ if not node.is_abstract:
446
+ present_attrs = node.attrs()
447
+ for schema in schemas:
448
+ if not schema.required:
449
+ continue
450
+ if schema.name not in present_attrs:
451
+ errors.append(
452
+ MetaError(
453
+ f"{_node_label(node)} is missing required attribute '@{schema.name}'",
454
+ ErrorCode.ERR_MISSING_REQUIRED_ATTR,
455
+ envelope=node.source,
456
+ )
449
457
  )
450
- )
451
458
 
452
459
  # --- Checks 2 + 3: own attrs only (inherited attrs were already checked on
453
460
  # the node that declared them; re-checking would double-report) ---
@@ -2290,6 +2297,20 @@ def _validate_relationships(root: MetaData, errors: list[MetaError]) -> None:
2290
2297
  ),
2291
2298
  ))
2292
2299
  continue
2300
+ # A junction is a physical join table — it MUST be an object.entity.
2301
+ # ADR-0046 lets a value carry navigation-only references, so value-purity
2302
+ # no longer implicitly guarantees a two-reference junction is an entity;
2303
+ # assert it here. (A value/projection has no table to join through.)
2304
+ if junction.sub_type != OBJECT_SUBTYPE_ENTITY:
2305
+ errors.append(MetaError(
2306
+ f'relationship "{obj.name}.{rel.name}" '
2307
+ f'@{RELATIONSHIP_ATTR_THROUGH} "{through}" resolves to '
2308
+ f"{junction.type}.{junction.sub_type}, not an entity — a junction is a "
2309
+ f"persisted join table and must be object.entity.",
2310
+ ErrorCode.ERR_INVALID_RELATIONSHIP,
2311
+ envelope=rel.source,
2312
+ ))
2313
+ continue
2293
2314
  ref_count = _count_junction_references(junction)
2294
2315
  if ref_count != 2:
2295
2316
  errors.append(MetaError(
@@ -2619,12 +2640,31 @@ def _validate_max_occurs(
2619
2640
  )
2620
2641
 
2621
2642
 
2622
- # FR-024 value purity (ADR-0028): a value object is a pure data shape — it
2623
- # carries NO identity of any subtype and NO source. Mirrors TS subtype-rules.ts
2624
- # validateValuePurity (effective children; envelope = the offending child).
2643
+ # FR-024 value purity (ADR-0028): a value object owns NO identity and NO source.
2644
+ # ADR-0046 admits ONE exception: a navigation-only identity.reference with explicit
2645
+ # @enforce: false an outbound pointer to an entity (a DTO/message referencing X by
2646
+ # id) is not persistence. Its target still resolves (dangling → ERR_INVALID_REFERENCE
2647
+ # via the registry-derived pass) and codegen emits no FK/DDL. The value's OWN identity
2648
+ # (primary/secondary) and any enforced reference (a physical FK it has no table to
2649
+ # hold) stay banned. Mirrors TS subtype-rules.ts validateValuePurity.
2625
2650
  def _validate_value_purity(node: MetaObject, errors: list[MetaError]) -> None:
2626
2651
  for child in node.children():
2627
2652
  if child.type == TYPE_IDENTITY:
2653
+ if child.sub_type == IDENTITY_SUBTYPE_REFERENCE:
2654
+ # ADR-0046: navigation-only reference is the sanctioned exception.
2655
+ if child.get_meta_attr(IDENTITY_REFERENCE_ATTR_ENFORCE) is False:
2656
+ continue
2657
+ errors.append(
2658
+ MetaError(
2659
+ f"value object '{node.fqn()}' has an enforced reference "
2660
+ f"({TYPE_IDENTITY}.{child.sub_type} '{child.name}') — a value is not "
2661
+ f"persisted and has no table to hold a physical FK; declare a "
2662
+ f"navigation-only reference with @enforce: false (FR-024, ADR-0028, ADR-0046)",
2663
+ ErrorCode.ERR_SUBTYPE_RULE_VIOLATION,
2664
+ envelope=child.source,
2665
+ )
2666
+ )
2667
+ continue
2628
2668
  errors.append(
2629
2669
  MetaError(
2630
2670
  f"value object '{node.fqn()}' must not have an identity "
@@ -2968,13 +3008,14 @@ def _validate_templates(root: MetaData, errors: list[MetaError]) -> None:
2968
3008
  # e.g. @maxTokens (prompt-only) on a template.output, or @promptStyle
2969
3009
  # (output-only) on a template.prompt. ADR-0039: resolving — a subtype-only
2970
3010
  # attr may be inherited via extends, so read the effective value.
2971
- for attr_name, allowed_sub in _TEMPLATE_SUBTYPE_ONLY_ATTRS.items():
2972
- if tpl.get_meta_attr(attr_name) is not None and tpl.sub_type != allowed_sub:
3011
+ for attr_name, allowed_subs in _TEMPLATE_SUBTYPE_ONLY_ATTRS.items():
3012
+ if tpl.get_meta_attr(attr_name) is not None and tpl.sub_type not in allowed_subs:
3013
+ valid_on = " / ".join(f"template.{s}" for s in sorted(allowed_subs))
2973
3014
  errors.append(MetaError(
2974
3015
  code=ErrorCode.ERR_INVALID_TEMPLATE,
2975
3016
  message=(
2976
3017
  f'template.{tpl.sub_type} "{tpl.name}" carries @{attr_name}, '
2977
- f"which is only valid on template.{allowed_sub}"
3018
+ f"which is only valid on {valid_on}"
2978
3019
  ),
2979
3020
  envelope=tpl.source,
2980
3021
  ))
@@ -69,7 +69,8 @@
69
69
  { "type": "attr", "subType": "string", "name": "toolName", "min": 1, "max": 1, "description": "Wire tool name surfaced to the LLM (vendor-specific format)." },
70
70
  { "type": "attr", "subType": "string", "name": "payloadRef", "min": 1, "max": 1, "description": "Output value-object the tool produces (resolved against the metamodel)." },
71
71
  { "type": "attr", "subType": "string", "name": "owner", "min": 0, "max": 1, "description": "Governance: the owner of this toolcall." },
72
- { "type": "attr", "subType": "string", "name": "since", "min": 0, "max": 1, "description": "Governance: the version this toolcall was introduced in." }
72
+ { "type": "attr", "subType": "string", "name": "since", "min": 0, "max": 1, "description": "Governance: the version this toolcall was introduced in." },
73
+ { "type": "attr", "subType": "int", "name": "maxTokens", "min": 0, "max": 1, "description": "Per-call token budget for the tool-call's structured response (LLM-specific). Vendor-agnostic config; peer of @maxTokens on template.prompt (#237)." }
73
74
  ]
74
75
  }
75
76
  ]
@@ -51,6 +51,7 @@ def test_template_toolcall_attr_schema_does_not_inherit_generic_attrs() -> None:
51
51
  tc.TEMPLATE_ATTR_PAYLOAD_REF,
52
52
  tc.TEMPLATE_ATTR_OWNER,
53
53
  tc.TEMPLATE_ATTR_SINCE,
54
+ tc.TEMPLATE_ATTR_MAX_TOKENS, # #237 — vendor-agnostic per-call token budget
54
55
  }
55
56
  assert tc.TEMPLATE_ATTR_TEXT_REF not in attrs, "toolcall must NOT carry @textRef"
56
57
  assert tc.TEMPLATE_ATTR_FORMAT not in attrs, "toolcall must NOT carry @format"
@@ -59,6 +60,7 @@ def test_template_toolcall_attr_schema_does_not_inherit_generic_attrs() -> None:
59
60
  assert attrs[tc.TEMPLATE_ATTR_PAYLOAD_REF].required is True
60
61
  assert attrs[tc.TEMPLATE_ATTR_OWNER].required is False
61
62
  assert attrs[tc.TEMPLATE_ATTR_SINCE].required is False
63
+ assert attrs[tc.TEMPLATE_ATTR_MAX_TOKENS].required is False
62
64
 
63
65
 
64
66
  # ---------------------------------------------------------------------------
@@ -250,7 +250,7 @@ wheels = [
250
250
 
251
251
  [[package]]
252
252
  name = "metaobjects"
253
- version = "0.19.1"
253
+ version = "0.19.6"
254
254
  source = { editable = "." }
255
255
  dependencies = [
256
256
  { name = "pyyaml" },
File without changes
File without changes
File without changes