metaobjects 0.15.5__tar.gz → 0.15.6__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 (381) hide show
  1. {metaobjects-0.15.5 → metaobjects-0.15.6}/PKG-INFO +1 -1
  2. {metaobjects-0.15.5 → metaobjects-0.15.6}/pyproject.toml +1 -1
  3. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/cli.py +122 -7
  4. metaobjects-0.15.6/tests/codegen/test_cli_providers.py +146 -0
  5. {metaobjects-0.15.5 → metaobjects-0.15.6}/uv.lock +1 -1
  6. {metaobjects-0.15.5 → metaobjects-0.15.6}/.gitignore +0 -0
  7. {metaobjects-0.15.5 → metaobjects-0.15.6}/LICENSE +0 -0
  8. {metaobjects-0.15.5 → metaobjects-0.15.6}/README.md +0 -0
  9. {metaobjects-0.15.5 → metaobjects-0.15.6}/hatch_build.py +0 -0
  10. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/__init__.py +0 -0
  11. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/agent_context/__init__.py +0 -0
  12. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/agent_context/scaffold.py +0 -0
  13. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/apidocs/__init__.py +0 -0
  14. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/apidocs/api_model.py +0 -0
  15. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/apidocs/builder.py +0 -0
  16. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/apidocs/naming.py +0 -0
  17. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/apidocs/paths.py +0 -0
  18. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/apidocs/renderer.py +0 -0
  19. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/attr_class_map.py +0 -0
  20. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/KNOWN_GAPS.md +0 -0
  21. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/__init__.py +0 -0
  22. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/config.py +0 -0
  23. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/constants.py +0 -0
  24. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/extract_delegate_emitter.py +0 -0
  25. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/extract_schema_emitter.py +0 -0
  26. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/format.py +0 -0
  27. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/fr010_field_mapping.py +0 -0
  28. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/generator.py +0 -0
  29. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/generator_registry.py +0 -0
  30. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/generators/__init__.py +0 -0
  31. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/generators/entity_model.py +0 -0
  32. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/generators/extractor_generator.py +0 -0
  33. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/generators/filter_allowlist_generator.py +0 -0
  34. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/generators/fr019_shared_enum.py +0 -0
  35. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/generators/m2m_codegen.py +0 -0
  36. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/generators/output_parser_generator.py +0 -0
  37. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/generators/output_prompt_generator.py +0 -0
  38. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/generators/payload_vo_generator.py +0 -0
  39. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/generators/render_helper_generator.py +0 -0
  40. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/generators/router_generator.py +0 -0
  41. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/generators/template_generator.py +0 -0
  42. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/generators/tph_plan.py +0 -0
  43. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/generators/trace_helper_generator.py +0 -0
  44. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/instance_artifacts.py +0 -0
  45. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/output_format_spec_emitter.py +0 -0
  46. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/overwrite_policy.py +0 -0
  47. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/runner.py +0 -0
  48. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/runtime/__init__.py +0 -0
  49. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/runtime/filter_parser.py +0 -0
  50. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/template_codegen/__init__.py +0 -0
  51. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/template_codegen/output_pattern.py +0 -0
  52. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/template_codegen/template_data.py +0 -0
  53. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/template_codegen/template_spec.py +0 -0
  54. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/codegen/type_map.py +0 -0
  55. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/core_types.py +0 -0
  56. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/datatype.py +0 -0
  57. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/documentation/__init__.py +0 -0
  58. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/documentation/doc_constants.py +0 -0
  59. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/documentation/doc_provider.py +0 -0
  60. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/documentation/doc_schema.py +0 -0
  61. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/errors.py +0 -0
  62. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/loader/__init__.py +0 -0
  63. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/loader/merge.py +0 -0
  64. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/loader/meta_data_loader.py +0 -0
  65. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/loader/registered_validation.py +0 -0
  66. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/loader/sources/__init__.py +0 -0
  67. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/loader/sources/directory_source.py +0 -0
  68. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/loader/sources/file_source.py +0 -0
  69. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/loader/sources/meta_data_source.py +0 -0
  70. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/loader/sources/uri_source.py +0 -0
  71. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/loader/validate_discriminator.py +0 -0
  72. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/loader/validate_field_readonly.py +0 -0
  73. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/loader/validate_source_parameter_ref.py +0 -0
  74. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/loader/validate_source_physical_names.py +0 -0
  75. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/loader/validation_passes.py +0 -0
  76. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/__init__.py +0 -0
  77. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/__init__.py +0 -0
  78. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/attr/__init__.py +0 -0
  79. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/attr/attr_constants.py +0 -0
  80. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/attr/meta_attr.py +0 -0
  81. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/field/__init__.py +0 -0
  82. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/field/field_constants.py +0 -0
  83. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/field/meta_field.py +0 -0
  84. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/identity/__init__.py +0 -0
  85. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/identity/identity_constants.py +0 -0
  86. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/identity/meta_identity.py +0 -0
  87. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/index/__init__.py +0 -0
  88. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/index/index_constants.py +0 -0
  89. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/index/meta_index.py +0 -0
  90. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/object/__init__.py +0 -0
  91. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/object/meta_object.py +0 -0
  92. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/object/meta_object_aware.py +0 -0
  93. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/object/object_class_registry.py +0 -0
  94. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/object/object_constants.py +0 -0
  95. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/object/object_extract.py +0 -0
  96. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/object/value_object.py +0 -0
  97. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/relationship/__init__.py +0 -0
  98. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/relationship/derive_m2m_fields.py +0 -0
  99. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/relationship/meta_relationship.py +0 -0
  100. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/relationship/relationship_constants.py +0 -0
  101. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/validator/__init__.py +0 -0
  102. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/core/validator/validator_constants.py +0 -0
  103. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/meta_data.py +0 -0
  104. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/meta_root.py +0 -0
  105. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/persistence/__init__.py +0 -0
  106. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/persistence/db/__init__.py +0 -0
  107. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/persistence/db/db_constants.py +0 -0
  108. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/persistence/db/db_provider.py +0 -0
  109. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/persistence/origin/__init__.py +0 -0
  110. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/persistence/origin/meta_origin.py +0 -0
  111. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/persistence/origin/origin_constants.py +0 -0
  112. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/persistence/source/__init__.py +0 -0
  113. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/persistence/source/meta_source.py +0 -0
  114. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/persistence/source/source_constants.py +0 -0
  115. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/presentation/__init__.py +0 -0
  116. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/presentation/layout/__init__.py +0 -0
  117. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/presentation/layout/layout_constants.py +0 -0
  118. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/presentation/layout/meta_layout.py +0 -0
  119. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/presentation/ui/__init__.py +0 -0
  120. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/presentation/ui/ui_provider.py +0 -0
  121. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/presentation/view/__init__.py +0 -0
  122. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/presentation/view/meta_view.py +0 -0
  123. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/presentation/view/view_constants.py +0 -0
  124. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/provider_extends.py +0 -0
  125. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/template/__init__.py +0 -0
  126. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/template/meta_template.py +0 -0
  127. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/template/prompt_provider.py +0 -0
  128. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/meta/template/template_constants.py +0 -0
  129. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/naming_refs.py +0 -0
  130. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/parser.py +0 -0
  131. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/parser_yaml.py +0 -0
  132. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/provider.py +0 -0
  133. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/py.typed +0 -0
  134. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/registry.py +0 -0
  135. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/registry_manifest.py +0 -0
  136. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/__init__.py +0 -0
  137. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/email_document.py +0 -0
  138. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/escapers.py +0 -0
  139. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/extract/KNOWN_GAPS.md +0 -0
  140. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/extract/__init__.py +0 -0
  141. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/extract/coerce.py +0 -0
  142. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/extract/extract.py +0 -0
  143. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/extract/extract_map.py +0 -0
  144. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/extract/json_forgiving_reader.py +0 -0
  145. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/extract/locate.py +0 -0
  146. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/extract/normalize.py +0 -0
  147. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/extract/strip.py +0 -0
  148. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/extract/types.py +0 -0
  149. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/extract/xml_forgiving_reader.py +0 -0
  150. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/filesystem_provider.py +0 -0
  151. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/prompt/__init__.py +0 -0
  152. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/prompt/output_format_renderer.py +0 -0
  153. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/prompt/output_format_spec.py +0 -0
  154. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/prompt/prompt_field.py +0 -0
  155. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/prompt/prompt_overrides.py +0 -0
  156. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/prompt/prompt_style.py +0 -0
  157. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/renderer.py +0 -0
  158. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/render/verify.py +0 -0
  159. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/runtime/__init__.py +0 -0
  160. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/runtime/llm_recorder.py +0 -0
  161. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/runtime/n2m_resolver.py +0 -0
  162. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/runtime/object_manager.py +0 -0
  163. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/runtime/tph.py +0 -0
  164. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/serializer_json.py +0 -0
  165. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/shared/__init__.py +0 -0
  166. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/shared/base_types.py +0 -0
  167. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/shared/separators.py +0 -0
  168. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/shared/structural.py +0 -0
  169. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/source/__init__.py +0 -0
  170. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/source/error_source.py +0 -0
  171. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/source/json_path.py +0 -0
  172. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/source/semantic_diff.py +0 -0
  173. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/source/yaml_positions.py +0 -0
  174. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/spec_metamodel/__init__.py +0 -0
  175. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/spec_metamodel/attr.json +0 -0
  176. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/spec_metamodel/db.json +0 -0
  177. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/spec_metamodel/documentation.json +0 -0
  178. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/spec_metamodel/field.json +0 -0
  179. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/spec_metamodel/identity.json +0 -0
  180. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/spec_metamodel/index.json +0 -0
  181. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/spec_metamodel/layout.json +0 -0
  182. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/spec_metamodel/object.json +0 -0
  183. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/spec_metamodel/origin.json +0 -0
  184. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/spec_metamodel/prompt.json +0 -0
  185. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/spec_metamodel/relationship.json +0 -0
  186. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/spec_metamodel/source.json +0 -0
  187. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/spec_metamodel/template.json +0 -0
  188. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/spec_metamodel/ui.json +0 -0
  189. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/spec_metamodel/validator.json +0 -0
  190. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/spec_metamodel/view.json +0 -0
  191. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/super_resolve.py +0 -0
  192. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/validation_types.py +0 -0
  193. {metaobjects-0.15.5 → metaobjects-0.15.6}/src/metaobjects/yaml_desugar.py +0 -0
  194. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/__init__.py +0 -0
  195. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/__init__.py +0 -0
  196. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/golden/extends/expected/BaseEntity.py +0 -0
  197. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/golden/extends/expected/Program.py +0 -0
  198. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/golden/extends/meta.json +0 -0
  199. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/golden/nested-array/expected/AuthorBrief.py +0 -0
  200. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/golden/nested-array/expected/PostBrief.py +0 -0
  201. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/golden/nested-array/meta.json +0 -0
  202. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/golden/scalars/expected/Metric.py +0 -0
  203. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/golden/scalars/expected/Report.py +0 -0
  204. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/golden/scalars/meta.json +0 -0
  205. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/golden/vanilla/expected/Subscriber.py +0 -0
  206. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/golden/vanilla/meta.json +0 -0
  207. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_abstract_conformance.py +0 -0
  208. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_api_docs_builder.py +0 -0
  209. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_api_docs_paths.py +0 -0
  210. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_cli.py +0 -0
  211. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_cli_registry.py +0 -0
  212. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_cli_staleness_nudge.py +0 -0
  213. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_cli_verify_strict.py +0 -0
  214. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_cli_verify_subverbs.py +0 -0
  215. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_constants_config.py +0 -0
  216. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_entity_model.py +0 -0
  217. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_enum_conformance.py +0 -0
  218. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_extends_abstract_field_inheritance.py +0 -0
  219. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_extractor_generator.py +0 -0
  220. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_filter_allowlist_generator.py +0 -0
  221. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_format.py +0 -0
  222. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_fr010_nested_object_prompt.py +0 -0
  223. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_fr010_output_codegen.py +0 -0
  224. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_fr019_shared_provided_conformance.py +0 -0
  225. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_generator.py +0 -0
  226. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_generator_extension_seams.py +0 -0
  227. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_golden.py +0 -0
  228. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_inherit_without_restate_gate.py +0 -0
  229. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_inheritance_conformance.py +0 -0
  230. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_instance_artifacts.py +0 -0
  231. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_m2m_codegen.py +0 -0
  232. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_output_parser_generator.py +0 -0
  233. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_overwrite_policy.py +0 -0
  234. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_payload_vo_generator.py +0 -0
  235. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_projection_compile.py +0 -0
  236. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_render_helper_conformance.py +0 -0
  237. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_render_helper_generator.py +0 -0
  238. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_reverse_finders.py +0 -0
  239. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_router_generator.py +0 -0
  240. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_runner.py +0 -0
  241. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_template_data.py +0 -0
  242. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_template_generator.py +0 -0
  243. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_template_output_pattern.py +0 -0
  244. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_template_scope_helpers.py +0 -0
  245. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_template_scope_walk.py +0 -0
  246. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_template_spec.py +0 -0
  247. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_tph_codegen.py +0 -0
  248. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_trace_helper_generator.py +0 -0
  249. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_type_map.py +0 -0
  250. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/codegen/test_validation_conformance.py +0 -0
  251. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/__init__.py +0 -0
  252. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/capabilities.py +0 -0
  253. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/conformance-expected-failures.json +0 -0
  254. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/conformance_adapter.py +0 -0
  255. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/corpus.py +0 -0
  256. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/expected_failures.py +0 -0
  257. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/fixture_discovery.py +0 -0
  258. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/navigator.py +0 -0
  259. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/test_api_docs_cross_port_conformance.py +0 -0
  260. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/test_conformance.py +0 -0
  261. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/test_extract_conformance.py +0 -0
  262. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/test_extract_object_verdict.py +0 -0
  263. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/test_fr010_loader_attrs.py +0 -0
  264. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/test_fr011_attrs.py +0 -0
  265. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/test_generator_registry_conformance.py +0 -0
  266. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/test_object_model_conformance.py +0 -0
  267. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/test_provider_composition_conformance.py +0 -0
  268. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/test_registry_conformance.py +0 -0
  269. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/test_runner_hardfail.py +0 -0
  270. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/test_spec_metamodel_embed.py +0 -0
  271. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/test_strict_attr_load.py +0 -0
  272. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/test_template_codegen_conformance.py +0 -0
  273. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/test_template_generator_conformance.py +0 -0
  274. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/test_yaml_conformance.py +0 -0
  275. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/conformance/yaml-conformance-expected-failures.json +0 -0
  276. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/__init__.py +0 -0
  277. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/api_contract_assertions.py +0 -0
  278. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/api_contract_jsonb_server.py +0 -0
  279. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/api_contract_m2m_server.py +0 -0
  280. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/api_contract_server.py +0 -0
  281. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/generated_jsonb_app.py +0 -0
  282. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/generated_m2m_app.py +0 -0
  283. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/generated_router_app.py +0 -0
  284. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/generated_tph_app.py +0 -0
  285. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/meta_ai_trace.yaml +0 -0
  286. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/normalization.py +0 -0
  287. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/postgres_container.py +0 -0
  288. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/query_runner.py +0 -0
  289. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/scenarios.py +0 -0
  290. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/test_api_contract.py +0 -0
  291. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/test_api_contract_generated.py +0 -0
  292. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/test_api_contract_jsonb.py +0 -0
  293. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/test_api_contract_m2m.py +0 -0
  294. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/test_api_contract_m2m_generated.py +0 -0
  295. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/test_api_contract_tph_generated.py +0 -0
  296. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/test_llm_call_trace.py +0 -0
  297. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/test_normalization.py +0 -0
  298. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/test_query_scenarios.py +0 -0
  299. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/integration/test_runtime_return_types.py +0 -0
  300. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/open_closed_proof_test.py +0 -0
  301. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/__init__.py +0 -0
  302. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/extract/__init__.py +0 -0
  303. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/extract/test_coerce.py +0 -0
  304. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/extract/test_extract.py +0 -0
  305. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/extract/test_extract_map.py +0 -0
  306. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/extract/test_json_forgiving_reader.py +0 -0
  307. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/extract/test_locate.py +0 -0
  308. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/extract/test_model.py +0 -0
  309. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/extract/test_normalize.py +0 -0
  310. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/extract/test_strip.py +0 -0
  311. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/extract/test_xml_forgiving_reader.py +0 -0
  312. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/prompt/__init__.py +0 -0
  313. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/prompt/test_output_format_renderer.py +0 -0
  314. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/test_email_document.py +0 -0
  315. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/test_filesystem_provider.py +0 -0
  316. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/test_output_format_renderer_nested.py +0 -0
  317. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/test_output_prompt_conformance.py +0 -0
  318. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/test_render_conformance.py +0 -0
  319. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/test_render_max_chars.py +0 -0
  320. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/test_verify.py +0 -0
  321. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/render/test_verify_conformance.py +0 -0
  322. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/source/__init__.py +0 -0
  323. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/source/test_fr5c_merge_attribution.py +0 -0
  324. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/source/test_fr5d_reference_resolution.py +0 -0
  325. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/source/test_fr5e_database_source_shape.py +0 -0
  326. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/source/test_json_path.py +0 -0
  327. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/source/test_semantic_diff.py +0 -0
  328. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/source/test_source_on_node.py +0 -0
  329. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/source/test_yaml_positions.py +0 -0
  330. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/test_api_docs_accuracy.py +0 -0
  331. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/__init__.py +0 -0
  332. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_agent_context_staleness.py +0 -0
  333. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_capabilities.py +0 -0
  334. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_common_attrs.py +0 -0
  335. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_core_types.py +0 -0
  336. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_effective_package.py +0 -0
  337. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_errors.py +0 -0
  338. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_field_enum.py +0 -0
  339. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_field_map_validation.py +0 -0
  340. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_field_uuid_dbcolumntype.py +0 -0
  341. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_fr016_source_name_and_kind_aliases.py +0 -0
  342. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_index_lookup.py +0 -0
  343. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_llm_recorder.py +0 -0
  344. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_loader.py +0 -0
  345. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_loader_bom.py +0 -0
  346. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_loader_class.py +0 -0
  347. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_merge.py +0 -0
  348. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_meta_attr.py +0 -0
  349. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_meta_data.py +0 -0
  350. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_meta_source.py +0 -0
  351. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_module_shortcuts.py +0 -0
  352. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_n2m_resolver.py +0 -0
  353. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_n2m_resolver_inherited.py +0 -0
  354. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_object_manager_uuid_coercion.py +0 -0
  355. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_one_primary_source.py +0 -0
  356. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_parser.py +0 -0
  357. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_parser_yaml.py +0 -0
  358. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_provider.py +0 -0
  359. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_provider_extension.py +0 -0
  360. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_registry.py +0 -0
  361. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_registry_completeness.py +0 -0
  362. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_registry_extend.py +0 -0
  363. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_registry_sealed.py +0 -0
  364. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_relationship_referential_actions.py +0 -0
  365. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_resolution_key.py +0 -0
  366. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_runtime_resolution_key_binding.py +0 -0
  367. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_serializer.py +0 -0
  368. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_shared_constants.py +0 -0
  369. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_smoke.py +0 -0
  370. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_sources.py +0 -0
  371. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_strict_child_placement.py +0 -0
  372. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_super_resolve.py +0 -0
  373. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_template_toolcall.py +0 -0
  374. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_template_wrong_subtype_attrs.py +0 -0
  375. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_validation_attr_schema.py +0 -0
  376. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_validation_filter_values.py +0 -0
  377. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_validation_origin_paths.py +0 -0
  378. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_validation_sort_field.py +0 -0
  379. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_validation_warnings.py +0 -0
  380. {metaobjects-0.15.5 → metaobjects-0.15.6}/tests/unit/test_write_coercion_arrays.py +0 -0
  381. {metaobjects-0.15.5 → metaobjects-0.15.6}/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.15.5
3
+ Version: 0.15.6
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.15.5"
3
+ version = "0.15.6"
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"
@@ -103,8 +103,76 @@ def _default_generators() -> list[Generator]:
103
103
  ]
104
104
 
105
105
 
106
+ def _resolve_providers(specs: list[str] | None) -> tuple[list[object], list[str]]:
107
+ """Import consumer providers named as ``module:symbol`` (repeatable ``--provider``).
108
+
109
+ The symbol must be a metaobjects ``Provider`` (or a list of them, or a zero-arg
110
+ factory returning either). A provider carries CODE — factories and optional
111
+ validators — so it is loaded as a native Python object, not a JSON file (#158).
112
+ This is the Python CLI's idiomatic parity with TS ``metaobjects.config.ts``
113
+ ``providers``; the underlying loader already accepts providers.
114
+ """
115
+ if not specs:
116
+ return [], []
117
+ import importlib
118
+
119
+ from metaobjects.provider import Provider
120
+
121
+ providers: list[object] = []
122
+ errors: list[str] = []
123
+ for spec in specs:
124
+ module_name, sep, symbol = spec.partition(":")
125
+ if not sep or not module_name or not symbol:
126
+ errors.append(
127
+ f"--provider '{spec}' must be in 'module:symbol' form "
128
+ "(e.g. myapp.providers:my_provider)"
129
+ )
130
+ continue
131
+ try:
132
+ module = importlib.import_module(module_name)
133
+ except Exception as exc: # ImportError + anything raised at import time
134
+ errors.append(f"--provider '{spec}': cannot import '{module_name}': {exc}")
135
+ continue
136
+ try:
137
+ obj = getattr(module, symbol)
138
+ except AttributeError:
139
+ errors.append(
140
+ f"--provider '{spec}': '{module_name}' has no attribute '{symbol}'"
141
+ )
142
+ continue
143
+ # A zero-arg factory is supported: call it to obtain the provider(s).
144
+ if callable(obj) and not isinstance(obj, Provider):
145
+ try:
146
+ obj = obj()
147
+ except Exception as exc:
148
+ errors.append(f"--provider '{spec}': factory '{symbol}()' raised: {exc}")
149
+ continue
150
+ for item in obj if isinstance(obj, list) else [obj]:
151
+ if isinstance(item, Provider):
152
+ providers.append(item)
153
+ else:
154
+ errors.append(
155
+ f"--provider '{spec}': '{symbol}' resolved to "
156
+ f"{type(item).__name__}, expected a metaobjects Provider"
157
+ )
158
+ return providers, errors
159
+
160
+
161
+ def _providers_from_args(args: argparse.Namespace) -> tuple[list[object], bool]:
162
+ """Resolve ``--provider`` specs; print resolution errors. Returns (providers, ok)."""
163
+ providers, errors = _resolve_providers(getattr(args, "provider", None))
164
+ if errors:
165
+ print("error: invalid --provider:", file=sys.stderr)
166
+ for msg in errors:
167
+ print(f" {msg}", file=sys.stderr)
168
+ return providers, False
169
+ return providers, True
170
+
171
+
106
172
  def _load_root(
107
- metadata_dir: str, strict: bool = False
173
+ metadata_dir: str,
174
+ strict: bool = False,
175
+ providers: list[object] | None = None,
108
176
  ) -> tuple[MetaData | None, list[str]]:
109
177
  """Load metadata; return ``(root, error_messages)``. ``root`` is None on error.
110
178
 
@@ -112,8 +180,20 @@ def _load_root(
112
180
  ``ERR_UNKNOWN_ATTR``. Defaults False so ``gen`` / ``docs`` keep the legacy
113
181
  open-attr load; only ``verify`` opts in (strict-by-default with a ``--lax``
114
182
  escape).
183
+
184
+ ``providers`` (#158) — consumer providers (from ``--provider module:symbol``)
185
+ composed ON TOP of the core set, so a config-registered custom subtype resolves
186
+ through the standalone CLI just as it does when an app loads the loader directly.
187
+ Empty/None keeps the core-providers-only default (``from_directory`` convenience).
115
188
  """
116
- result = MetaDataLoader.from_directory(metadata_dir, strict=strict)
189
+ if providers:
190
+ from metaobjects.core_types import core_providers
191
+
192
+ result = MetaDataLoader.from_directory(
193
+ metadata_dir, providers=[*core_providers, *providers], strict=strict
194
+ )
195
+ else:
196
+ result = MetaDataLoader.from_directory(metadata_dir, strict=strict)
117
197
  if result.errors:
118
198
  msgs = [f"{e.code}: {e.message}" for e in result.errors]
119
199
  return None, msgs
@@ -193,6 +273,7 @@ def _generate(
193
273
  entity_filter: list[str] | None = None,
194
274
  emit_package_init: bool = True,
195
275
  strict: bool = False,
276
+ providers: list[object] | None = None,
196
277
  ) -> tuple[list[str], list[str]]:
197
278
  """Run the generator suite into ``out_dir``.
198
279
 
@@ -208,7 +289,7 @@ def _generate(
208
289
  files are written. ``strict`` (ADR-0023, #96) is threaded to the load — the
209
290
  ``verify --codegen`` caller passes True; ``gen`` keeps the default False.
210
291
  """
211
- root, errors = _load_root(metadata_dir, strict=strict)
292
+ root, errors = _load_root(metadata_dir, strict=strict, providers=providers)
212
293
  if root is None:
213
294
  return [], errors
214
295
  return _run_suite(root, out_dir, generators, entity_filter, emit_package_init), []
@@ -237,7 +318,10 @@ def _cmd_docs(args: argparse.Namespace) -> int:
237
318
  model_cross_href,
238
319
  )
239
320
 
240
- root, errors = _load_root(args.metadata_dir)
321
+ providers, providers_ok = _providers_from_args(args)
322
+ if not providers_ok:
323
+ return 1
324
+ root, errors = _load_root(args.metadata_dir, providers=providers)
241
325
  if root is None:
242
326
  print("error: failed to load metadata:", file=sys.stderr)
243
327
  for msg in errors:
@@ -364,9 +448,12 @@ def _cmd_gen(args: argparse.Namespace) -> int:
364
448
  spec_gens = template_spec_to_generators(spec, provider)
365
449
 
366
450
  entities = _parse_entities(getattr(args, "entities", None))
451
+ providers, providers_ok = _providers_from_args(args)
452
+ if not providers_ok:
453
+ return 1
367
454
  # Load the metadata ONCE; both the default suite and the (optional)
368
455
  # --template-spec pass run against this single loaded root.
369
- root, load_errors = _load_root(args.metadata_dir)
456
+ root, load_errors = _load_root(args.metadata_dir, providers=providers)
370
457
  if root is None:
371
458
  print("error: failed to load metadata:", file=sys.stderr)
372
459
  for msg in load_errors:
@@ -431,10 +518,13 @@ def _verify_codegen(args: argparse.Namespace) -> int:
431
518
  # ADR-0023 strict-by-default (#96): verify loads strict unless --lax is given,
432
519
  # so an undeclared/typo'd own @attr fails verify (matching Java's Maven goal).
433
520
  strict = not getattr(args, "lax", False)
521
+ providers, providers_ok = _providers_from_args(args)
522
+ if not providers_ok:
523
+ return 1
434
524
  with tempfile.TemporaryDirectory() as tmp:
435
525
  entities = _parse_entities(getattr(args, "entities", None))
436
526
  written, errors = _generate(
437
- args.metadata_dir, tmp, None, entities, strict=strict
527
+ args.metadata_dir, tmp, None, entities, strict=strict, providers=providers
438
528
  )
439
529
  if errors:
440
530
  print("error: failed to load metadata:", file=sys.stderr)
@@ -508,7 +598,10 @@ def _verify_templates(args: argparse.Namespace) -> int:
508
598
  # ADR-0023 strict-by-default (#96) — same as --codegen: an undeclared @attr
509
599
  # fails verify unless --lax is passed.
510
600
  strict = not getattr(args, "lax", False)
511
- root, errors = _load_root(args.metadata_dir, strict=strict)
601
+ providers, providers_ok = _providers_from_args(args)
602
+ if not providers_ok:
603
+ return 1
604
+ root, errors = _load_root(args.metadata_dir, strict=strict, providers=providers)
512
605
  if root is None:
513
606
  print("error: failed to load metadata:", file=sys.stderr)
514
607
  for msg in errors:
@@ -717,6 +810,16 @@ def _build_parser() -> argparse.ArgumentParser:
717
810
  "named entities are written. Omit to emit every entity."
718
811
  ),
719
812
  )
813
+ gen.add_argument(
814
+ "--provider",
815
+ action="append",
816
+ metavar="module:symbol",
817
+ help=(
818
+ "load a consumer metadata Provider as 'module:symbol' (repeatable) — the "
819
+ "Python parity of TS metaobjects.config.ts providers, so a custom subtype "
820
+ "resolves through the standalone CLI (#158)"
821
+ ),
822
+ )
720
823
  gen.set_defaults(func=_cmd_gen)
721
824
 
722
825
  docs = sub.add_parser(
@@ -749,6 +852,12 @@ def _build_parser() -> argparse.ArgumentParser:
749
852
  default=None,
750
853
  help="federate the model back-links to an absolute base URL (default: relative)",
751
854
  )
855
+ docs.add_argument(
856
+ "--provider",
857
+ action="append",
858
+ metavar="module:symbol",
859
+ help="load a consumer metadata Provider as 'module:symbol' (repeatable; #158)",
860
+ )
752
861
  docs.set_defaults(func=_cmd_docs)
753
862
 
754
863
  verify = sub.add_parser(
@@ -803,6 +912,12 @@ def _build_parser() -> argparse.ArgumentParser:
803
912
  "open-attr load."
804
913
  ),
805
914
  )
915
+ verify.add_argument(
916
+ "--provider",
917
+ action="append",
918
+ metavar="module:symbol",
919
+ help="load a consumer metadata Provider as 'module:symbol' (repeatable; #158)",
920
+ )
806
921
  verify.set_defaults(func=_cmd_verify)
807
922
 
808
923
  agent_docs = sub.add_parser(
@@ -0,0 +1,146 @@
1
+ """#158 — the Python CLI ``--provider module:symbol`` hook.
2
+
3
+ The metadata loaders already accept consumer providers in every language; the gap
4
+ was purely at the CLI layer (``_load_root`` → ``from_directory`` used core
5
+ providers only). These tests prove the standalone ``metaobjects gen``/``verify``
6
+ can now load an app's custom subtype via ``--provider``, parity with the TS
7
+ ``metaobjects.config.ts`` ``providers`` path.
8
+ """
9
+ from __future__ import annotations
10
+
11
+ import json
12
+ import sys
13
+ from pathlib import Path
14
+
15
+ from metaobjects.cli import main
16
+
17
+ # A provider module the test writes to disk + imports. Registers the custom
18
+ # ``validator.geocheck`` subtype (a validator, so it exercises provider-threading
19
+ # without depending on how codegen maps a novel field's physical type).
20
+ PROVIDER_MODULE = '''
21
+ from metaobjects.provider import Provider
22
+ from metaobjects.registry import TypeDefinition
23
+ from metaobjects.meta.meta_data import MetaData
24
+
25
+ geo_provider = Provider("test-geocheck", ("metaobjects-core-types",))
26
+ geo_provider.add(TypeDefinition(
27
+ type="validator",
28
+ sub_type="geocheck",
29
+ factory=lambda t, s, n: MetaData(t, s, n),
30
+ description="A custom validator",
31
+ ))
32
+ '''
33
+
34
+ # Metadata whose ``name`` field carries the custom validator — resolves ONLY when
35
+ # the provider is loaded.
36
+ CUSTOM_META = {
37
+ "metadata.root": {
38
+ "package": "acme::geo",
39
+ "children": [
40
+ {
41
+ "object.entity": {
42
+ "name": "Place",
43
+ "children": [
44
+ {"field.long": {"name": "id"}},
45
+ {
46
+ "field.string": {
47
+ "name": "name",
48
+ "children": [{"validator.geocheck": {"name": "chk"}}],
49
+ }
50
+ },
51
+ {"source.rdb": {"name": "src", "@table": "places"}},
52
+ {
53
+ "identity.primary": {
54
+ "name": "pk",
55
+ "@fields": ["id"],
56
+ "@generation": "increment",
57
+ }
58
+ },
59
+ ],
60
+ }
61
+ }
62
+ ],
63
+ }
64
+ }
65
+
66
+
67
+ def _project(tmp_path: Path) -> str:
68
+ d = tmp_path / "meta"
69
+ d.mkdir()
70
+ (d / "meta.json").write_text(json.dumps(CUSTOM_META))
71
+ return str(d)
72
+
73
+
74
+ def _install_provider_module(tmp_path: Path, name: str) -> None:
75
+ (tmp_path / f"{name}.py").write_text(PROVIDER_MODULE)
76
+ sys.path.insert(0, str(tmp_path))
77
+
78
+
79
+ def test_gen_without_provider_fails_on_custom_subtype(tmp_path: Path) -> None:
80
+ """Baseline: the custom subtype is unknown without the provider."""
81
+ rc = main(["gen", _project(tmp_path), "--out", str(tmp_path / "out")])
82
+ assert rc != 0
83
+
84
+
85
+ def test_gen_with_provider_loads_custom_subtype(tmp_path: Path) -> None:
86
+ """--provider composes the consumer provider on top of core → subtype resolves."""
87
+ meta_dir = _project(tmp_path)
88
+ _install_provider_module(tmp_path, "geo_prov_gen")
89
+ try:
90
+ rc = main(
91
+ [
92
+ "gen",
93
+ meta_dir,
94
+ "--out",
95
+ str(tmp_path / "out"),
96
+ "--provider",
97
+ "geo_prov_gen:geo_provider",
98
+ ]
99
+ )
100
+ finally:
101
+ sys.path.remove(str(tmp_path))
102
+ sys.modules.pop("geo_prov_gen", None)
103
+ assert rc == 0
104
+
105
+
106
+ def test_verify_with_provider_loads_custom_subtype(tmp_path: Path) -> None:
107
+ """verify --codegen also threads --provider (reuses the gen code path)."""
108
+ meta_dir = _project(tmp_path)
109
+ _install_provider_module(tmp_path, "geo_prov_ver")
110
+ out = tmp_path / "out"
111
+ try:
112
+ # generate committed output first (with the provider), then verify no drift.
113
+ gen_rc = main(
114
+ ["gen", meta_dir, "--out", str(out), "--provider", "geo_prov_ver:geo_provider"]
115
+ )
116
+ assert gen_rc == 0
117
+ rc = main(
118
+ [
119
+ "verify",
120
+ meta_dir,
121
+ "--codegen",
122
+ "--out",
123
+ str(out),
124
+ "--provider",
125
+ "geo_prov_ver:geo_provider",
126
+ ]
127
+ )
128
+ finally:
129
+ sys.path.remove(str(tmp_path))
130
+ sys.modules.pop("geo_prov_ver", None)
131
+ assert rc == 0
132
+
133
+
134
+ def test_bad_provider_spec_reports_error(tmp_path: Path) -> None:
135
+ """A malformed --provider spec fails cleanly (not 'module:symbol')."""
136
+ rc = main(
137
+ [
138
+ "gen",
139
+ _project(tmp_path),
140
+ "--out",
141
+ str(tmp_path / "out"),
142
+ "--provider",
143
+ "not-a-valid-spec",
144
+ ]
145
+ )
146
+ assert rc == 1
@@ -250,7 +250,7 @@ wheels = [
250
250
 
251
251
  [[package]]
252
252
  name = "metaobjects"
253
- version = "0.15.0"
253
+ version = "0.15.6"
254
254
  source = { editable = "." }
255
255
  dependencies = [
256
256
  { name = "pyyaml" },
File without changes
File without changes
File without changes