metaobjects 0.19.6__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.6 → metaobjects-0.19.7}/PKG-INFO +1 -1
  2. {metaobjects-0.19.6 → metaobjects-0.19.7}/pyproject.toml +1 -1
  3. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/loader/validation_passes.py +33 -26
  4. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/prompt.json +2 -1
  5. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_template_toolcall.py +2 -0
  6. {metaobjects-0.19.6 → metaobjects-0.19.7}/.gitignore +0 -0
  7. {metaobjects-0.19.6 → metaobjects-0.19.7}/LICENSE +0 -0
  8. {metaobjects-0.19.6 → metaobjects-0.19.7}/README.md +0 -0
  9. {metaobjects-0.19.6 → metaobjects-0.19.7}/hatch_build.py +0 -0
  10. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/__init__.py +0 -0
  11. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/agent_context/__init__.py +0 -0
  12. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/agent_context/scaffold.py +0 -0
  13. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/apidocs/__init__.py +0 -0
  14. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/apidocs/api_model.py +0 -0
  15. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/apidocs/builder.py +0 -0
  16. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/apidocs/naming.py +0 -0
  17. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/apidocs/paths.py +0 -0
  18. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/apidocs/renderer.py +0 -0
  19. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/attr_class_map.py +0 -0
  20. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/cli.py +0 -0
  21. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/KNOWN_GAPS.md +0 -0
  22. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/__init__.py +0 -0
  23. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/config.py +0 -0
  24. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/constants.py +0 -0
  25. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/extract_delegate_emitter.py +0 -0
  26. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/extract_schema_emitter.py +0 -0
  27. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/format.py +0 -0
  28. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/fr010_field_mapping.py +0 -0
  29. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/generator.py +0 -0
  30. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/generator_registry.py +0 -0
  31. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/__init__.py +0 -0
  32. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/entity_model.py +0 -0
  33. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/extractor_generator.py +0 -0
  34. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/filter_allowlist_generator.py +0 -0
  35. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/fr019_shared_enum.py +0 -0
  36. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/m2m_codegen.py +0 -0
  37. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/output_parser_generator.py +0 -0
  38. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/output_prompt_generator.py +0 -0
  39. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/payload_vo_generator.py +0 -0
  40. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/render_helper_generator.py +0 -0
  41. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/router_generator.py +0 -0
  42. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/template_generator.py +0 -0
  43. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/tph_plan.py +0 -0
  44. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/generators/trace_helper_generator.py +0 -0
  45. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/instance_artifacts.py +0 -0
  46. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/output_format_spec_emitter.py +0 -0
  47. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/overwrite_policy.py +0 -0
  48. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/runner.py +0 -0
  49. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/runtime/__init__.py +0 -0
  50. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/runtime/filter_parser.py +0 -0
  51. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/template_codegen/__init__.py +0 -0
  52. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/template_codegen/output_pattern.py +0 -0
  53. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/template_codegen/template_data.py +0 -0
  54. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/template_codegen/template_spec.py +0 -0
  55. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/codegen/type_map.py +0 -0
  56. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/core_types.py +0 -0
  57. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/datatype.py +0 -0
  58. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/documentation/__init__.py +0 -0
  59. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/documentation/doc_constants.py +0 -0
  60. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/documentation/doc_provider.py +0 -0
  61. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/documentation/doc_schema.py +0 -0
  62. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/errors.py +0 -0
  63. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/loader/__init__.py +0 -0
  64. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/loader/merge.py +0 -0
  65. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/loader/meta_data_loader.py +0 -0
  66. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/loader/registered_validation.py +0 -0
  67. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/loader/sources/__init__.py +0 -0
  68. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/loader/sources/directory_source.py +0 -0
  69. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/loader/sources/file_source.py +0 -0
  70. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/loader/sources/meta_data_source.py +0 -0
  71. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/loader/sources/uri_source.py +0 -0
  72. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/loader/validate_discriminator.py +0 -0
  73. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/loader/validate_field_readonly.py +0 -0
  74. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/loader/validate_source_escapes.py +0 -0
  75. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/loader/validate_source_parameter_ref.py +0 -0
  76. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/loader/validate_source_physical_names.py +0 -0
  77. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/__init__.py +0 -0
  78. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/__init__.py +0 -0
  79. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/attr/__init__.py +0 -0
  80. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/attr/attr_constants.py +0 -0
  81. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/attr/meta_attr.py +0 -0
  82. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/field/__init__.py +0 -0
  83. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/field/field_constants.py +0 -0
  84. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/field/meta_field.py +0 -0
  85. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/identity/__init__.py +0 -0
  86. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/identity/identity_constants.py +0 -0
  87. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/identity/meta_identity.py +0 -0
  88. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/index/__init__.py +0 -0
  89. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/index/index_constants.py +0 -0
  90. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/index/meta_index.py +0 -0
  91. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/object/__init__.py +0 -0
  92. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/object/meta_object.py +0 -0
  93. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/object/meta_object_aware.py +0 -0
  94. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/object/object_class_registry.py +0 -0
  95. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/object/object_constants.py +0 -0
  96. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/object/object_extract.py +0 -0
  97. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/object/value_object.py +0 -0
  98. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/relationship/__init__.py +0 -0
  99. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/relationship/derive_m2m_fields.py +0 -0
  100. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/relationship/meta_relationship.py +0 -0
  101. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/relationship/relationship_constants.py +0 -0
  102. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/validator/__init__.py +0 -0
  103. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/core/validator/validator_constants.py +0 -0
  104. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/meta_data.py +0 -0
  105. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/meta_root.py +0 -0
  106. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/persistence/__init__.py +0 -0
  107. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/persistence/db/__init__.py +0 -0
  108. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/persistence/db/db_constants.py +0 -0
  109. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/persistence/db/db_provider.py +0 -0
  110. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/persistence/origin/__init__.py +0 -0
  111. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/persistence/origin/meta_origin.py +0 -0
  112. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/persistence/origin/origin_constants.py +0 -0
  113. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/persistence/source/__init__.py +0 -0
  114. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/persistence/source/meta_source.py +0 -0
  115. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/persistence/source/source_constants.py +0 -0
  116. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/presentation/__init__.py +0 -0
  117. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/presentation/layout/__init__.py +0 -0
  118. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/presentation/layout/layout_constants.py +0 -0
  119. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/presentation/layout/meta_layout.py +0 -0
  120. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/presentation/ui/__init__.py +0 -0
  121. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/presentation/ui/ui_provider.py +0 -0
  122. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/presentation/view/__init__.py +0 -0
  123. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/presentation/view/meta_view.py +0 -0
  124. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/presentation/view/view_constants.py +0 -0
  125. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/provider_extends.py +0 -0
  126. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/template/__init__.py +0 -0
  127. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/template/meta_template.py +0 -0
  128. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/template/prompt_provider.py +0 -0
  129. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/meta/template/template_constants.py +0 -0
  130. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/naming_refs.py +0 -0
  131. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/parser.py +0 -0
  132. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/parser_yaml.py +0 -0
  133. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/provider.py +0 -0
  134. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/py.typed +0 -0
  135. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/registry.py +0 -0
  136. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/registry_manifest.py +0 -0
  137. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/__init__.py +0 -0
  138. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/email_document.py +0 -0
  139. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/escapers.py +0 -0
  140. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/extract/KNOWN_GAPS.md +0 -0
  141. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/extract/__init__.py +0 -0
  142. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/extract/coerce.py +0 -0
  143. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/extract/extract.py +0 -0
  144. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/extract/extract_map.py +0 -0
  145. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/extract/json_forgiving_reader.py +0 -0
  146. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/extract/locate.py +0 -0
  147. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/extract/normalize.py +0 -0
  148. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/extract/strip.py +0 -0
  149. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/extract/types.py +0 -0
  150. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/extract/xml_forgiving_reader.py +0 -0
  151. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/filesystem_provider.py +0 -0
  152. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/prompt/__init__.py +0 -0
  153. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/prompt/output_format_renderer.py +0 -0
  154. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/prompt/output_format_spec.py +0 -0
  155. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/prompt/prompt_field.py +0 -0
  156. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/prompt/prompt_overrides.py +0 -0
  157. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/prompt/prompt_style.py +0 -0
  158. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/renderer.py +0 -0
  159. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/render/verify.py +0 -0
  160. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/runtime/__init__.py +0 -0
  161. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/runtime/llm_recorder.py +0 -0
  162. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/runtime/n2m_resolver.py +0 -0
  163. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/runtime/object_manager.py +0 -0
  164. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/runtime/tph.py +0 -0
  165. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/serializer_json.py +0 -0
  166. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/shared/__init__.py +0 -0
  167. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/shared/base_types.py +0 -0
  168. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/shared/separators.py +0 -0
  169. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/shared/structural.py +0 -0
  170. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/source/__init__.py +0 -0
  171. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/source/error_source.py +0 -0
  172. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/source/json_path.py +0 -0
  173. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/source/semantic_diff.py +0 -0
  174. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/source/yaml_positions.py +0 -0
  175. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/__init__.py +0 -0
  176. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/attr.json +0 -0
  177. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/db.json +0 -0
  178. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/documentation.json +0 -0
  179. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/field.json +0 -0
  180. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/identity.json +0 -0
  181. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/index.json +0 -0
  182. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/layout.json +0 -0
  183. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/object.json +0 -0
  184. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/origin.json +0 -0
  185. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/relationship.json +0 -0
  186. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/source.json +0 -0
  187. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/template.json +0 -0
  188. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/ui-web.json +0 -0
  189. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/ui.json +0 -0
  190. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/validator.json +0 -0
  191. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/spec_metamodel/view.json +0 -0
  192. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/super_resolve.py +0 -0
  193. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/validation_types.py +0 -0
  194. {metaobjects-0.19.6 → metaobjects-0.19.7}/src/metaobjects/yaml_desugar.py +0 -0
  195. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/__init__.py +0 -0
  196. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/__init__.py +0 -0
  197. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/golden/extends/expected/BaseEntity.py +0 -0
  198. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/golden/extends/expected/Program.py +0 -0
  199. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/golden/extends/meta.json +0 -0
  200. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/golden/nested-array/expected/AuthorBrief.py +0 -0
  201. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/golden/nested-array/expected/PostBrief.py +0 -0
  202. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/golden/nested-array/meta.json +0 -0
  203. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/golden/scalars/expected/Metric.py +0 -0
  204. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/golden/scalars/expected/Report.py +0 -0
  205. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/golden/scalars/meta.json +0 -0
  206. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/golden/vanilla/expected/Subscriber.py +0 -0
  207. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/golden/vanilla/meta.json +0 -0
  208. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_abstract_conformance.py +0 -0
  209. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_api_docs_builder.py +0 -0
  210. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_api_docs_paths.py +0 -0
  211. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_cli.py +0 -0
  212. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_cli_providers.py +0 -0
  213. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_cli_registry.py +0 -0
  214. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_cli_staleness_nudge.py +0 -0
  215. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_cli_verify_strict.py +0 -0
  216. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_cli_verify_subverbs.py +0 -0
  217. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_constants_config.py +0 -0
  218. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_entity_model.py +0 -0
  219. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_enum_conformance.py +0 -0
  220. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_extends_abstract_field_inheritance.py +0 -0
  221. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_extractor_generator.py +0 -0
  222. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_filter_allowlist_generator.py +0 -0
  223. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_format.py +0 -0
  224. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_fr010_nested_object_prompt.py +0 -0
  225. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_fr010_output_codegen.py +0 -0
  226. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_fr019_shared_provided_conformance.py +0 -0
  227. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_generator.py +0 -0
  228. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_generator_extension_seams.py +0 -0
  229. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_golden.py +0 -0
  230. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_inherit_without_restate_gate.py +0 -0
  231. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_inheritance_conformance.py +0 -0
  232. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_instance_artifacts.py +0 -0
  233. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_m2m_codegen.py +0 -0
  234. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_origin_nullability.py +0 -0
  235. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_output_parser_generator.py +0 -0
  236. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_overwrite_policy.py +0 -0
  237. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_payload_vo_generator.py +0 -0
  238. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_projection_compile.py +0 -0
  239. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_render_helper_conformance.py +0 -0
  240. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_render_helper_generator.py +0 -0
  241. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_reverse_finders.py +0 -0
  242. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_router_autoset.py +0 -0
  243. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_router_generator.py +0 -0
  244. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_runner.py +0 -0
  245. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_template_data.py +0 -0
  246. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_template_generator.py +0 -0
  247. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_template_output_pattern.py +0 -0
  248. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_template_scope_helpers.py +0 -0
  249. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_template_scope_walk.py +0 -0
  250. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_template_spec.py +0 -0
  251. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_tph_codegen.py +0 -0
  252. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_trace_helper_generator.py +0 -0
  253. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_type_map.py +0 -0
  254. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_validation_conformance.py +0 -0
  255. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/codegen/test_write_through.py +0 -0
  256. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/__init__.py +0 -0
  257. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/capabilities.py +0 -0
  258. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/conformance-expected-failures.json +0 -0
  259. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/conformance_adapter.py +0 -0
  260. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/corpus.py +0 -0
  261. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/expected_failures.py +0 -0
  262. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/fixture_discovery.py +0 -0
  263. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/navigator.py +0 -0
  264. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/test_api_docs_cross_port_conformance.py +0 -0
  265. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/test_conformance.py +0 -0
  266. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/test_extract_conformance.py +0 -0
  267. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/test_extract_object_verdict.py +0 -0
  268. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/test_fr010_loader_attrs.py +0 -0
  269. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/test_fr011_attrs.py +0 -0
  270. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/test_generator_registry_conformance.py +0 -0
  271. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/test_object_model_conformance.py +0 -0
  272. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/test_provider_composition_conformance.py +0 -0
  273. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/test_registry_conformance.py +0 -0
  274. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/test_runner_hardfail.py +0 -0
  275. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/test_spec_metamodel_embed.py +0 -0
  276. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/test_strict_attr_load.py +0 -0
  277. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/test_template_codegen_conformance.py +0 -0
  278. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/test_template_generator_conformance.py +0 -0
  279. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/test_yaml_conformance.py +0 -0
  280. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/conformance/yaml-conformance-expected-failures.json +0 -0
  281. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/__init__.py +0 -0
  282. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/api_contract_assertions.py +0 -0
  283. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/api_contract_jsonb_server.py +0 -0
  284. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/api_contract_m2m_server.py +0 -0
  285. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/api_contract_server.py +0 -0
  286. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/generated_jsonb_app.py +0 -0
  287. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/generated_m2m_app.py +0 -0
  288. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/generated_router_app.py +0 -0
  289. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/generated_tph_app.py +0 -0
  290. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/meta_ai_trace.yaml +0 -0
  291. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/normalization.py +0 -0
  292. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/postgres_container.py +0 -0
  293. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/query_runner.py +0 -0
  294. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/scenarios.py +0 -0
  295. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/test_api_contract.py +0 -0
  296. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/test_api_contract_generated.py +0 -0
  297. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/test_api_contract_jsonb.py +0 -0
  298. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/test_api_contract_m2m.py +0 -0
  299. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/test_api_contract_m2m_generated.py +0 -0
  300. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/test_api_contract_tph_generated.py +0 -0
  301. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/test_generated_router_uuid_pk.py +0 -0
  302. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/test_llm_call_trace.py +0 -0
  303. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/test_normalization.py +0 -0
  304. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/test_query_scenarios.py +0 -0
  305. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/integration/test_runtime_return_types.py +0 -0
  306. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/open_closed_proof_test.py +0 -0
  307. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/__init__.py +0 -0
  308. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/extract/__init__.py +0 -0
  309. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/extract/test_coerce.py +0 -0
  310. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/extract/test_extract.py +0 -0
  311. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/extract/test_extract_map.py +0 -0
  312. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/extract/test_json_forgiving_reader.py +0 -0
  313. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/extract/test_locate.py +0 -0
  314. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/extract/test_model.py +0 -0
  315. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/extract/test_normalize.py +0 -0
  316. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/extract/test_strip.py +0 -0
  317. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/extract/test_xml_forgiving_reader.py +0 -0
  318. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/prompt/__init__.py +0 -0
  319. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/prompt/test_output_format_renderer.py +0 -0
  320. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/test_email_document.py +0 -0
  321. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/test_filesystem_provider.py +0 -0
  322. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/test_output_format_renderer_nested.py +0 -0
  323. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/test_output_prompt_conformance.py +0 -0
  324. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/test_render_conformance.py +0 -0
  325. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/test_render_max_chars.py +0 -0
  326. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/test_verify.py +0 -0
  327. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/render/test_verify_conformance.py +0 -0
  328. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/source/__init__.py +0 -0
  329. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/source/test_fr5c_merge_attribution.py +0 -0
  330. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/source/test_fr5d_reference_resolution.py +0 -0
  331. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/source/test_fr5e_database_source_shape.py +0 -0
  332. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/source/test_json_path.py +0 -0
  333. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/source/test_semantic_diff.py +0 -0
  334. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/source/test_source_on_node.py +0 -0
  335. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/source/test_yaml_positions.py +0 -0
  336. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/test_api_docs_accuracy.py +0 -0
  337. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/__init__.py +0 -0
  338. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_agent_context_staleness.py +0 -0
  339. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_capabilities.py +0 -0
  340. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_common_attrs.py +0 -0
  341. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_core_types.py +0 -0
  342. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_effective_package.py +0 -0
  343. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_errors.py +0 -0
  344. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_field_enum.py +0 -0
  345. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_field_map_validation.py +0 -0
  346. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_field_uuid_dbcolumntype.py +0 -0
  347. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_fr016_source_name_and_kind_aliases.py +0 -0
  348. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_index_lookup.py +0 -0
  349. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_llm_recorder.py +0 -0
  350. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_loader.py +0 -0
  351. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_loader_bom.py +0 -0
  352. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_loader_class.py +0 -0
  353. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_merge.py +0 -0
  354. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_meta_attr.py +0 -0
  355. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_meta_data.py +0 -0
  356. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_meta_source.py +0 -0
  357. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_module_shortcuts.py +0 -0
  358. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_n2m_resolver.py +0 -0
  359. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_n2m_resolver_inherited.py +0 -0
  360. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_object_manager_autoset_stamping.py +0 -0
  361. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_object_manager_uuid_coercion.py +0 -0
  362. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_object_manager_write_through.py +0 -0
  363. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_one_primary_source.py +0 -0
  364. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_parser.py +0 -0
  365. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_parser_yaml.py +0 -0
  366. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_provider.py +0 -0
  367. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_provider_extension.py +0 -0
  368. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_registry.py +0 -0
  369. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_registry_completeness.py +0 -0
  370. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_registry_extend.py +0 -0
  371. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_registry_sealed.py +0 -0
  372. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_relationship_referential_actions.py +0 -0
  373. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_resolution_key.py +0 -0
  374. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_runtime_resolution_key_binding.py +0 -0
  375. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_serializer.py +0 -0
  376. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_shared_constants.py +0 -0
  377. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_smoke.py +0 -0
  378. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_source_escapes.py +0 -0
  379. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_sources.py +0 -0
  380. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_strict_child_placement.py +0 -0
  381. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_super_resolve.py +0 -0
  382. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_template_wrong_subtype_attrs.py +0 -0
  383. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_validation_attr_schema.py +0 -0
  384. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_validation_filter_values.py +0 -0
  385. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_validation_origin_195.py +0 -0
  386. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_validation_origin_paths.py +0 -0
  387. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_validation_sort_field.py +0 -0
  388. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_validation_warnings.py +0 -0
  389. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_write_coercion_arrays.py +0 -0
  390. {metaobjects-0.19.6 → metaobjects-0.19.7}/tests/unit/test_yaml_desugar.py +0 -0
  391. {metaobjects-0.19.6 → metaobjects-0.19.7}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: metaobjects
3
- Version: 0.19.6
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.6"
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"
@@ -124,21 +124,23 @@ from ..meta.core.index.index_constants import INDEX_ATTR_FIELDS, INDEX_SUBTYPE_L
124
124
  from ..source import resolved_source
125
125
  from ..naming_refs import did_you_mean_hint, resolve_object_ref
126
126
 
127
- # 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
128
128
  # for. The metamodel registers these per-subtype (see the core_types template block),
129
129
  # but the lenient loader does not reject a misplaced one — _validate_templates does.
130
130
  # Mirrors the per-subtype TEMPLATE_ATTRS_MAP split across the other ports.
131
- _TEMPLATE_SUBTYPE_ONLY_ATTRS: dict[str, str] = {
132
- tc.TEMPLATE_ATTR_MAX_TOKENS: tc.TEMPLATE_SUBTYPE_PROMPT,
133
- tc.TEMPLATE_ATTR_REQUIRED_SLOTS: tc.TEMPLATE_SUBTYPE_PROMPT,
134
- tc.TEMPLATE_ATTR_MODEL: tc.TEMPLATE_SUBTYPE_PROMPT,
135
- tc.TEMPLATE_ATTR_RESPONSE_REF: tc.TEMPLATE_SUBTYPE_PROMPT,
136
- tc.TEMPLATE_ATTR_PROMPT_STYLE: tc.TEMPLATE_SUBTYPE_OUTPUT,
137
- tc.TEMPLATE_ATTR_KIND: tc.TEMPLATE_SUBTYPE_OUTPUT,
138
- tc.TEMPLATE_ATTR_SUBJECT_REF: tc.TEMPLATE_SUBTYPE_OUTPUT,
139
- tc.TEMPLATE_ATTR_HTML_BODY_REF: tc.TEMPLATE_SUBTYPE_OUTPUT,
140
- tc.TEMPLATE_ATTR_TEXT_BODY_REF: tc.TEMPLATE_SUBTYPE_OUTPUT,
141
- 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}),
142
144
  }
143
145
 
144
146
  # ---------------------------------------------------------------------------
@@ -437,18 +439,22 @@ def _validate_attr_schema(
437
439
 
438
440
  # --- Check 1: required attrs must be present (uses node.attrs() = effective,
439
441
  # so an inherited attr from the super chain satisfies the requirement) ---
440
- present_attrs = node.attrs()
441
- for schema in schemas:
442
- if not schema.required:
443
- continue
444
- if schema.name not in present_attrs:
445
- errors.append(
446
- MetaError(
447
- f"{_node_label(node)} is missing required attribute '@{schema.name}'",
448
- ErrorCode.ERR_MISSING_REQUIRED_ATTR,
449
- 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
+ )
450
457
  )
451
- )
452
458
 
453
459
  # --- Checks 2 + 3: own attrs only (inherited attrs were already checked on
454
460
  # the node that declared them; re-checking would double-report) ---
@@ -3002,13 +3008,14 @@ def _validate_templates(root: MetaData, errors: list[MetaError]) -> None:
3002
3008
  # e.g. @maxTokens (prompt-only) on a template.output, or @promptStyle
3003
3009
  # (output-only) on a template.prompt. ADR-0039: resolving — a subtype-only
3004
3010
  # attr may be inherited via extends, so read the effective value.
3005
- for attr_name, allowed_sub in _TEMPLATE_SUBTYPE_ONLY_ATTRS.items():
3006
- 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))
3007
3014
  errors.append(MetaError(
3008
3015
  code=ErrorCode.ERR_INVALID_TEMPLATE,
3009
3016
  message=(
3010
3017
  f'template.{tpl.sub_type} "{tpl.name}" carries @{attr_name}, '
3011
- f"which is only valid on template.{allowed_sub}"
3018
+ f"which is only valid on {valid_on}"
3012
3019
  ),
3013
3020
  envelope=tpl.source,
3014
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
  # ---------------------------------------------------------------------------
File without changes
File without changes
File without changes