metaobjects 0.23.2__tar.gz → 0.24.0__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 (430) hide show
  1. {metaobjects-0.23.2 → metaobjects-0.24.0}/PKG-INFO +1 -1
  2. {metaobjects-0.23.2 → metaobjects-0.24.0}/pyproject.toml +1 -1
  3. metaobjects-0.24.0/scripts/generate_embedded_library.py +63 -0
  4. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/apidocs/builder.py +76 -55
  5. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/apidocs/naming.py +4 -0
  6. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/cli.py +373 -48
  7. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/config.py +8 -0
  8. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/generators/entity_model.py +22 -5
  9. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/generators/extractor_generator.py +39 -52
  10. metaobjects-0.24.0/src/metaobjects/codegen/generators/find_inbound.py +113 -0
  11. metaobjects-0.24.0/src/metaobjects/codegen/generators/output_parser_generator.py +373 -0
  12. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/generators/output_prompt_generator.py +44 -58
  13. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/generators/payload_vo_generator.py +138 -19
  14. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/generators/router_generator.py +80 -0
  15. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/generators/trace_helper_generator.py +11 -6
  16. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/output_format_spec_emitter.py +8 -8
  17. metaobjects-0.24.0/src/metaobjects/codegen/overwrite_policy.py +179 -0
  18. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/project_config.py +22 -0
  19. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/runner.py +54 -3
  20. metaobjects-0.24.0/src/metaobjects/config/__init__.py +17 -0
  21. metaobjects-0.24.0/src/metaobjects/config/neutral_config.py +87 -0
  22. metaobjects-0.24.0/src/metaobjects/config/source_resolver.py +125 -0
  23. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/core_types.py +32 -40
  24. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/errors.py +11 -4
  25. metaobjects-0.24.0/src/metaobjects/library/__init__.py +9 -0
  26. metaobjects-0.24.0/src/metaobjects/library/embedded_library.py +11 -0
  27. metaobjects-0.24.0/src/metaobjects/library/library_sources.py +99 -0
  28. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/loader/meta_data_loader.py +32 -2
  29. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/loader/sources/__init__.py +2 -1
  30. metaobjects-0.24.0/src/metaobjects/loader/sources/directory_source.py +113 -0
  31. metaobjects-0.24.0/src/metaobjects/loader/validate_field_mutability.py +276 -0
  32. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/loader/validation_passes.py +37 -8
  33. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/field/field_constants.py +17 -3
  34. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/identity/identity_constants.py +9 -0
  35. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/requirement/meta_requirement.py +3 -10
  36. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/requirement/requirement_constants.py +1 -7
  37. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/persistence/origin/origin_constants.py +7 -3
  38. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/template/template_constants.py +24 -2
  39. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/registry_manifest.py +1 -1
  40. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/spec_metamodel/field.json +1 -1
  41. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/spec_metamodel/object.json +2 -2
  42. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/spec_metamodel/origin.json +0 -9
  43. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/spec_metamodel/prompt.json +1 -1
  44. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/spec_metamodel/requirement.json +8 -46
  45. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/spec_metamodel/template.json +34 -21
  46. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/super_resolve.py +40 -6
  47. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/golden/extends/expected/BaseEntity.py +2 -2
  48. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/golden/extends/expected/Program.py +2 -2
  49. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/golden/nested-array/expected/AuthorBrief.py +1 -1
  50. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/golden/nested-array/expected/PostBrief.py +1 -1
  51. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/golden/scalars/expected/Metric.py +1 -1
  52. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/golden/scalars/expected/Report.py +1 -1
  53. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/golden/vanilla/expected/Subscriber.py +2 -2
  54. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_api_docs_builder.py +37 -8
  55. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_cli_config_gen.py +66 -0
  56. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_cli_config_verify.py +35 -0
  57. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_extract_tier_collision.py +36 -28
  58. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_extractor_generator.py +100 -42
  59. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_fr010_output_codegen.py +93 -47
  60. metaobjects-0.24.0/tests/codegen/test_output_parser_generator.py +382 -0
  61. metaobjects-0.24.0/tests/codegen/test_overwrite_policy_hash.py +133 -0
  62. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_payload_vo_generator.py +83 -42
  63. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_trace_helper_generator.py +56 -6
  64. metaobjects-0.24.0/tests/config/test_neutral_config.py +103 -0
  65. metaobjects-0.24.0/tests/config/test_source_resolver.py +129 -0
  66. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/test_fr010_loader_attrs.py +81 -47
  67. metaobjects-0.24.0/tests/conformance/test_source_resolution_conformance.py +185 -0
  68. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/api_contract_server.py +26 -9
  69. metaobjects-0.24.0/tests/loader/test_field_mutability_order.py +46 -0
  70. metaobjects-0.24.0/tests/loader/test_shipped_library_ai.py +343 -0
  71. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/loader/test_template_payload_target_210.py +1 -5
  72. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/test_api_docs_accuracy.py +40 -10
  73. metaobjects-0.24.0/tests/unit/__init__.py +0 -0
  74. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_sources.py +72 -0
  75. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_template_wrong_subtype_attrs.py +50 -8
  76. {metaobjects-0.23.2 → metaobjects-0.24.0}/uv.lock +1 -1
  77. metaobjects-0.23.2/src/metaobjects/codegen/generators/output_parser_generator.py +0 -364
  78. metaobjects-0.23.2/src/metaobjects/codegen/overwrite_policy.py +0 -27
  79. metaobjects-0.23.2/src/metaobjects/loader/sources/directory_source.py +0 -50
  80. metaobjects-0.23.2/src/metaobjects/loader/validate_field_readonly.py +0 -161
  81. metaobjects-0.23.2/tests/codegen/test_output_parser_generator.py +0 -303
  82. {metaobjects-0.23.2 → metaobjects-0.24.0}/.gitignore +0 -0
  83. {metaobjects-0.23.2 → metaobjects-0.24.0}/LICENSE +0 -0
  84. {metaobjects-0.23.2 → metaobjects-0.24.0}/README.md +0 -0
  85. {metaobjects-0.23.2 → metaobjects-0.24.0}/hatch_build.py +0 -0
  86. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/__init__.py +0 -0
  87. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/agent_context/__init__.py +0 -0
  88. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/agent_context/scaffold.py +0 -0
  89. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/apidocs/__init__.py +0 -0
  90. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/apidocs/api_model.py +0 -0
  91. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/apidocs/paths.py +0 -0
  92. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/apidocs/renderer.py +0 -0
  93. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/attr_class_map.py +0 -0
  94. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/KNOWN_GAPS.md +0 -0
  95. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/__init__.py +0 -0
  96. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/collision_names.py +0 -0
  97. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/constants.py +0 -0
  98. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/extract_delegate_emitter.py +0 -0
  99. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/extract_schema_emitter.py +0 -0
  100. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/format.py +0 -0
  101. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/fr010_field_mapping.py +0 -0
  102. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/generator.py +0 -0
  103. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/generator_registry.py +0 -0
  104. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/generators/__init__.py +0 -0
  105. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/generators/filter_allowlist_generator.py +0 -0
  106. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/generators/fr019_shared_enum.py +0 -0
  107. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/generators/m2m_codegen.py +0 -0
  108. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/generators/render_helper_generator.py +0 -0
  109. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/generators/template_generator.py +0 -0
  110. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/generators/tph_plan.py +0 -0
  111. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/instance_artifacts.py +0 -0
  112. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/metaobjects-config.schema.json +0 -0
  113. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/runtime/__init__.py +0 -0
  114. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/runtime/filter_parser.py +0 -0
  115. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/template_codegen/__init__.py +0 -0
  116. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/template_codegen/output_pattern.py +0 -0
  117. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/template_codegen/template_data.py +0 -0
  118. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/template_codegen/template_spec.py +0 -0
  119. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/codegen/type_map.py +0 -0
  120. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/datatype.py +0 -0
  121. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/documentation/__init__.py +0 -0
  122. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/documentation/doc_constants.py +0 -0
  123. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/documentation/doc_provider.py +0 -0
  124. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/documentation/doc_schema.py +0 -0
  125. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/loader/__init__.py +0 -0
  126. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/loader/merge.py +0 -0
  127. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/loader/registered_validation.py +0 -0
  128. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/loader/sources/file_source.py +0 -0
  129. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/loader/sources/meta_data_source.py +0 -0
  130. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/loader/sources/uri_source.py +0 -0
  131. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/loader/validate_discriminator.py +0 -0
  132. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/loader/validate_enum_normalize_ambiguity.py +0 -0
  133. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/loader/validate_source_escapes.py +0 -0
  134. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/loader/validate_source_parameter_ref.py +0 -0
  135. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/loader/validate_source_physical_names.py +0 -0
  136. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/__init__.py +0 -0
  137. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/__init__.py +0 -0
  138. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/attr/__init__.py +0 -0
  139. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/attr/attr_constants.py +0 -0
  140. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/attr/meta_attr.py +0 -0
  141. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/field/__init__.py +0 -0
  142. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/field/meta_field.py +0 -0
  143. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/identity/__init__.py +0 -0
  144. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/identity/meta_identity.py +0 -0
  145. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/index/__init__.py +0 -0
  146. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/index/index_constants.py +0 -0
  147. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/index/meta_index.py +0 -0
  148. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/object/__init__.py +0 -0
  149. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/object/meta_object.py +0 -0
  150. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/object/meta_object_aware.py +0 -0
  151. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/object/object_class_registry.py +0 -0
  152. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/object/object_constants.py +0 -0
  153. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/object/object_extract.py +0 -0
  154. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/object/value_object.py +0 -0
  155. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/relationship/__init__.py +0 -0
  156. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/relationship/derive_m2m_fields.py +0 -0
  157. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/relationship/meta_relationship.py +0 -0
  158. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/relationship/relationship_constants.py +0 -0
  159. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/requirement/__init__.py +0 -0
  160. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/validator/__init__.py +0 -0
  161. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/core/validator/validator_constants.py +0 -0
  162. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/meta_data.py +0 -0
  163. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/meta_root.py +0 -0
  164. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/persistence/__init__.py +0 -0
  165. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/persistence/db/__init__.py +0 -0
  166. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/persistence/db/db_constants.py +0 -0
  167. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/persistence/db/db_provider.py +0 -0
  168. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/persistence/origin/__init__.py +0 -0
  169. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/persistence/origin/meta_origin.py +0 -0
  170. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/persistence/source/__init__.py +0 -0
  171. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/persistence/source/meta_source.py +0 -0
  172. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/persistence/source/source_constants.py +0 -0
  173. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/presentation/__init__.py +0 -0
  174. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/presentation/layout/__init__.py +0 -0
  175. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/presentation/layout/layout_constants.py +0 -0
  176. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/presentation/layout/meta_layout.py +0 -0
  177. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/presentation/ui/__init__.py +0 -0
  178. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/presentation/ui/ui_provider.py +0 -0
  179. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/presentation/view/__init__.py +0 -0
  180. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/presentation/view/meta_view.py +0 -0
  181. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/presentation/view/view_constants.py +0 -0
  182. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/provider_extends.py +0 -0
  183. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/template/__init__.py +0 -0
  184. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/template/meta_template.py +0 -0
  185. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/meta/template/prompt_provider.py +0 -0
  186. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/naming_refs.py +0 -0
  187. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/parser.py +0 -0
  188. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/parser_yaml.py +0 -0
  189. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/provider.py +0 -0
  190. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/py.typed +0 -0
  191. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/registry.py +0 -0
  192. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/__init__.py +0 -0
  193. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/email_document.py +0 -0
  194. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/escapers.py +0 -0
  195. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/extract/KNOWN_GAPS.md +0 -0
  196. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/extract/__init__.py +0 -0
  197. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/extract/coerce.py +0 -0
  198. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/extract/extract.py +0 -0
  199. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/extract/extract_map.py +0 -0
  200. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/extract/json_forgiving_reader.py +0 -0
  201. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/extract/locate.py +0 -0
  202. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/extract/normalize.py +0 -0
  203. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/extract/strip.py +0 -0
  204. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/extract/types.py +0 -0
  205. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/extract/xml_forgiving_reader.py +0 -0
  206. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/filesystem_provider.py +0 -0
  207. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/payload_accessors.py +0 -0
  208. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/prompt/__init__.py +0 -0
  209. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/prompt/output_format_renderer.py +0 -0
  210. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/prompt/output_format_spec.py +0 -0
  211. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/prompt/prompt_field.py +0 -0
  212. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/prompt/prompt_overrides.py +0 -0
  213. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/prompt/prompt_style.py +0 -0
  214. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/renderer.py +0 -0
  215. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/render/verify.py +0 -0
  216. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/runtime/__init__.py +0 -0
  217. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/runtime/llm_recorder.py +0 -0
  218. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/runtime/n2m_resolver.py +0 -0
  219. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/runtime/object_manager.py +0 -0
  220. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/runtime/tph.py +0 -0
  221. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/serializer_json.py +0 -0
  222. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/shared/__init__.py +0 -0
  223. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/shared/base_types.py +0 -0
  224. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/shared/separators.py +0 -0
  225. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/shared/structural.py +0 -0
  226. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/source/__init__.py +0 -0
  227. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/source/error_source.py +0 -0
  228. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/source/json_path.py +0 -0
  229. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/source/semantic_diff.py +0 -0
  230. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/source/yaml_positions.py +0 -0
  231. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/spec_metamodel/__init__.py +0 -0
  232. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/spec_metamodel/attr.json +0 -0
  233. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/spec_metamodel/db.json +0 -0
  234. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/spec_metamodel/documentation.json +0 -0
  235. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/spec_metamodel/identity.json +0 -0
  236. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/spec_metamodel/index.json +0 -0
  237. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/spec_metamodel/layout.json +0 -0
  238. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/spec_metamodel/relationship.json +0 -0
  239. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/spec_metamodel/source.json +0 -0
  240. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/spec_metamodel/ui-web.json +0 -0
  241. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/spec_metamodel/ui.json +0 -0
  242. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/spec_metamodel/validator.json +0 -0
  243. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/spec_metamodel/view.json +0 -0
  244. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/validation_types.py +0 -0
  245. {metaobjects-0.23.2 → metaobjects-0.24.0}/src/metaobjects/yaml_desugar.py +0 -0
  246. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/__init__.py +0 -0
  247. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/__init__.py +0 -0
  248. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/golden/extends/meta.json +0 -0
  249. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/golden/nested-array/meta.json +0 -0
  250. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/golden/scalars/meta.json +0 -0
  251. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/golden/vanilla/meta.json +0 -0
  252. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_abstract_conformance.py +0 -0
  253. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_api_docs_paths.py +0 -0
  254. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_cli.py +0 -0
  255. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_cli_providers.py +0 -0
  256. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_cli_registry.py +0 -0
  257. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_cli_staleness_nudge.py +0 -0
  258. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_cli_verify_strict.py +0 -0
  259. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_cli_verify_subverbs.py +0 -0
  260. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_constants_config.py +0 -0
  261. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_entity_model.py +0 -0
  262. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_enum_conformance.py +0 -0
  263. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_extends_abstract_field_inheritance.py +0 -0
  264. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_filter_allowlist_generator.py +0 -0
  265. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_format.py +0 -0
  266. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_fr010_nested_object_prompt.py +0 -0
  267. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_fr019_shared_provided_conformance.py +0 -0
  268. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_generator.py +0 -0
  269. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_generator_extension_seams.py +0 -0
  270. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_golden.py +0 -0
  271. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_inherit_without_restate_gate.py +0 -0
  272. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_inheritance_conformance.py +0 -0
  273. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_instance_artifacts.py +0 -0
  274. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_m2m_codegen.py +0 -0
  275. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_origin_nullability.py +0 -0
  276. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_overwrite_policy.py +0 -0
  277. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_project_config.py +0 -0
  278. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_projection_compile.py +0 -0
  279. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_render_helper_conformance.py +0 -0
  280. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_render_helper_generator.py +0 -0
  281. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_reverse_finders.py +0 -0
  282. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_router_autoset.py +0 -0
  283. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_router_generator.py +0 -0
  284. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_runner.py +0 -0
  285. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_sourceless_projection.py +0 -0
  286. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_template_data.py +0 -0
  287. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_template_generator.py +0 -0
  288. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_template_output_pattern.py +0 -0
  289. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_template_scope_helpers.py +0 -0
  290. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_template_scope_walk.py +0 -0
  291. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_template_spec.py +0 -0
  292. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_tph_codegen.py +0 -0
  293. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_type_map.py +0 -0
  294. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_validation_conformance.py +0 -0
  295. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/codegen/test_write_through.py +0 -0
  296. {metaobjects-0.23.2/tests/conformance → metaobjects-0.24.0/tests/config}/__init__.py +0 -0
  297. {metaobjects-0.23.2/tests/integration → metaobjects-0.24.0/tests/conformance}/__init__.py +0 -0
  298. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/capabilities.py +0 -0
  299. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/conformance-expected-failures.json +0 -0
  300. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/conformance_adapter.py +0 -0
  301. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/corpus.py +0 -0
  302. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/expected_failures.py +0 -0
  303. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/fixture_discovery.py +0 -0
  304. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/navigator.py +0 -0
  305. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/test_api_docs_cross_port_conformance.py +0 -0
  306. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/test_conformance.py +0 -0
  307. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/test_extract_conformance.py +0 -0
  308. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/test_extract_object_verdict.py +0 -0
  309. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/test_fr011_attrs.py +0 -0
  310. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/test_generator_registry_conformance.py +0 -0
  311. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/test_object_model_conformance.py +0 -0
  312. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/test_provider_composition_conformance.py +0 -0
  313. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/test_registry_conformance.py +0 -0
  314. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/test_runner_hardfail.py +0 -0
  315. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/test_spec_metamodel_embed.py +0 -0
  316. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/test_strict_attr_load.py +0 -0
  317. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/test_template_codegen_conformance.py +0 -0
  318. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/test_template_generator_conformance.py +0 -0
  319. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/test_yaml_conformance.py +0 -0
  320. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/conformance/yaml-conformance-expected-failures.json +0 -0
  321. {metaobjects-0.23.2/tests/loader → metaobjects-0.24.0/tests/integration}/__init__.py +0 -0
  322. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/api_contract_assertions.py +0 -0
  323. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/api_contract_jsonb_server.py +0 -0
  324. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/api_contract_m2m_server.py +0 -0
  325. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/generated_jsonb_app.py +0 -0
  326. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/generated_m2m_app.py +0 -0
  327. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/generated_router_app.py +0 -0
  328. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/generated_tph_app.py +0 -0
  329. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/meta_ai_trace.yaml +0 -0
  330. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/normalization.py +0 -0
  331. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/postgres_container.py +0 -0
  332. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/query_runner.py +0 -0
  333. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/scenarios.py +0 -0
  334. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/test_api_contract.py +0 -0
  335. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/test_api_contract_generated.py +0 -0
  336. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/test_api_contract_jsonb.py +0 -0
  337. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/test_api_contract_m2m.py +0 -0
  338. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/test_api_contract_m2m_generated.py +0 -0
  339. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/test_api_contract_tph_generated.py +0 -0
  340. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/test_generated_router_uuid_pk.py +0 -0
  341. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/test_llm_call_trace.py +0 -0
  342. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/test_normalization.py +0 -0
  343. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/test_query_scenarios.py +0 -0
  344. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/integration/test_runtime_return_types.py +0 -0
  345. {metaobjects-0.23.2/tests/render → metaobjects-0.24.0/tests/loader}/__init__.py +0 -0
  346. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/loader/test_enum_extends_values_conflict.py +0 -0
  347. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/open_closed_proof_test.py +0 -0
  348. {metaobjects-0.23.2/tests/render/extract → metaobjects-0.24.0/tests/render}/__init__.py +0 -0
  349. {metaobjects-0.23.2/tests/render/prompt → metaobjects-0.24.0/tests/render/extract}/__init__.py +0 -0
  350. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/render/extract/test_coerce.py +0 -0
  351. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/render/extract/test_extract.py +0 -0
  352. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/render/extract/test_extract_map.py +0 -0
  353. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/render/extract/test_json_forgiving_reader.py +0 -0
  354. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/render/extract/test_locate.py +0 -0
  355. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/render/extract/test_model.py +0 -0
  356. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/render/extract/test_normalize.py +0 -0
  357. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/render/extract/test_strip.py +0 -0
  358. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/render/extract/test_xml_forgiving_reader.py +0 -0
  359. {metaobjects-0.23.2/tests/source → metaobjects-0.24.0/tests/render/prompt}/__init__.py +0 -0
  360. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/render/prompt/test_output_format_renderer.py +0 -0
  361. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/render/test_email_document.py +0 -0
  362. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/render/test_filesystem_provider.py +0 -0
  363. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/render/test_output_format_renderer_nested.py +0 -0
  364. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/render/test_output_prompt_conformance.py +0 -0
  365. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/render/test_render_conformance.py +0 -0
  366. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/render/test_render_max_chars.py +0 -0
  367. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/render/test_verify.py +0 -0
  368. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/render/test_verify_conformance.py +0 -0
  369. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/runtime/test_object_manager_enum_intvaluemap.py +0 -0
  370. {metaobjects-0.23.2/tests/unit → metaobjects-0.24.0/tests/source}/__init__.py +0 -0
  371. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/source/test_fr5c_merge_attribution.py +0 -0
  372. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/source/test_fr5d_reference_resolution.py +0 -0
  373. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/source/test_fr5e_database_source_shape.py +0 -0
  374. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/source/test_json_path.py +0 -0
  375. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/source/test_semantic_diff.py +0 -0
  376. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/source/test_source_on_node.py +0 -0
  377. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/source/test_yaml_positions.py +0 -0
  378. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_agent_context_staleness.py +0 -0
  379. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_capabilities.py +0 -0
  380. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_common_attrs.py +0 -0
  381. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_core_types.py +0 -0
  382. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_effective_package.py +0 -0
  383. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_errors.py +0 -0
  384. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_field_enum.py +0 -0
  385. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_field_enum_intvaluemap.py +0 -0
  386. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_field_map_validation.py +0 -0
  387. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_field_uuid_dbcolumntype.py +0 -0
  388. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_fr016_source_name_and_kind_aliases.py +0 -0
  389. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_index_lookup.py +0 -0
  390. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_llm_recorder.py +0 -0
  391. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_loader.py +0 -0
  392. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_loader_bom.py +0 -0
  393. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_loader_class.py +0 -0
  394. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_merge.py +0 -0
  395. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_meta_attr.py +0 -0
  396. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_meta_data.py +0 -0
  397. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_meta_source.py +0 -0
  398. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_module_shortcuts.py +0 -0
  399. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_n2m_resolver.py +0 -0
  400. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_n2m_resolver_inherited.py +0 -0
  401. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_object_manager_autoset_stamping.py +0 -0
  402. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_object_manager_uuid_coercion.py +0 -0
  403. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_object_manager_write_through.py +0 -0
  404. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_one_primary_source.py +0 -0
  405. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_parser.py +0 -0
  406. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_parser_yaml.py +0 -0
  407. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_provider.py +0 -0
  408. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_provider_extension.py +0 -0
  409. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_registry.py +0 -0
  410. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_registry_completeness.py +0 -0
  411. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_registry_extend.py +0 -0
  412. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_registry_sealed.py +0 -0
  413. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_relationship_referential_actions.py +0 -0
  414. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_resolution_key.py +0 -0
  415. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_runtime_resolution_key_binding.py +0 -0
  416. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_serializer.py +0 -0
  417. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_shared_constants.py +0 -0
  418. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_smoke.py +0 -0
  419. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_source_escapes.py +0 -0
  420. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_strict_child_placement.py +0 -0
  421. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_super_resolve.py +0 -0
  422. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_template_toolcall.py +0 -0
  423. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_validation_attr_schema.py +0 -0
  424. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_validation_filter_values.py +0 -0
  425. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_validation_origin_195.py +0 -0
  426. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_validation_origin_paths.py +0 -0
  427. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_validation_sort_field.py +0 -0
  428. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_validation_warnings.py +0 -0
  429. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_write_coercion_arrays.py +0 -0
  430. {metaobjects-0.23.2 → metaobjects-0.24.0}/tests/unit/test_yaml_desugar.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: metaobjects
3
- Version: 0.23.2
3
+ Version: 0.24.0
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.23.2"
3
+ version = "0.24.0"
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"
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env python3
2
+ """Regenerate ``metaobjects/library/embedded_library.py`` from the repo-root ``library/``.
3
+
4
+ Cross-port parity: mirrors ``scripts/generate-embedded-library.ts`` in the TypeScript
5
+ port, including the ref convention (path under ``library/`` minus the ``.yaml``
6
+ extension) so both ports key the same content identically.
7
+
8
+ Why embed at all: a wheel installed into site-packages has no repo-root ``library/``
9
+ tree, and shipping the YAML as package data is one packaging-config mistake away from a
10
+ silently absent library. A generated ``.py`` module is ordinary source — it cannot be
11
+ dropped by a build backend.
12
+
13
+ Run from anywhere: python server/python/scripts/generate_embedded_library.py
14
+ """
15
+
16
+ from __future__ import annotations
17
+
18
+ import sys
19
+ from pathlib import Path
20
+
21
+ HEADER = '''\
22
+ # AUTO-GENERATED by scripts/generate_embedded_library.py — DO NOT EDIT.
23
+ # Canonical source: repo-root library/**/*.yaml
24
+ # Regenerate: python server/python/scripts/generate_embedded_library.py
25
+ #
26
+ # Embeds the canonical library files as string literals so they resolve wherever the
27
+ # on-disk library/ directory is unavailable (a wheel installed into site-packages).
28
+ # Keys are refs: path under library/ minus the .yaml extension.
29
+
30
+ EMBEDDED_LIBRARY: dict[str, str] = {
31
+ '''
32
+
33
+
34
+ def repo_root(start: Path) -> Path:
35
+ """Walk up until a directory holds BOTH ``library/`` and ``server/``."""
36
+ for candidate in [start, *start.parents]:
37
+ if (candidate / "library").is_dir() and (candidate / "server").is_dir():
38
+ return candidate
39
+ raise SystemExit("could not locate the repo root (a dir containing library/ and server/)")
40
+
41
+
42
+ def main() -> int:
43
+ root = repo_root(Path(__file__).resolve().parent)
44
+ library_dir = root / "library"
45
+ out_path = root / "server/python/src/metaobjects/library/embedded_library.py"
46
+
47
+ entries = []
48
+ for path in sorted(library_dir.rglob("*.yaml")):
49
+ ref = path.relative_to(library_dir).with_suffix("").as_posix()
50
+ entries.append((ref, path.read_text(encoding="utf-8")))
51
+
52
+ if not entries:
53
+ raise SystemExit(f"no *.yaml found under {library_dir} — refusing to emit an empty library")
54
+
55
+ body = "".join(f" {ref!r}: {text!r},\n" for ref, text in entries)
56
+ out_path.write_text(HEADER + body + "}\n", encoding="utf-8")
57
+
58
+ print(f"wrote {out_path.relative_to(root)} ({len(entries)} ref(s): {', '.join(r for r, _ in entries)})")
59
+ return 0
60
+
61
+
62
+ if __name__ == "__main__":
63
+ sys.exit(main())
@@ -17,10 +17,12 @@ Per-category enumeration (mirrors the Java ``JavaApiModelBuilder`` / C#
17
17
  ``Protocol``) / REST (one per FastAPI route) / VALIDATION (Pydantic field
18
18
  constraints on the create/update shape) / FILTER (the allowlist). A value object
19
19
  → MODEL only. An abstract object / a TPH subtype yields no instance artifacts.
20
- * Templates (``template.output`` only): each PAYLOAD / RENDER / PROMPT /
21
- OUTPUT_PARSER / EXTRACTOR, gated by the matching generator's applies-predicate
22
- (RENDER/PARSER need a resolvable ``@payloadRef``; PROMPT/EXTRACTOR additionally
23
- need a json/xml ``@format``).
20
+ * Templates (EVERY subtype — ADR-0052): a resolvable ``@payloadRef`` gives the
21
+ PAYLOAD record it renders outbound, plus RENDER for a ``template.output`` (the
22
+ only subtype the render-helper generator emits for). A ``template.prompt``
23
+ declaring ``@responseRef`` adds the INBOUND tier — the response PAYLOAD record,
24
+ PROMPT (the response-format fragment) and EXTRACTOR, plus OUTPUT_PARSER unless
25
+ the reply is XML, which gets no strict tier (ADR-0053).
24
26
 
25
27
  An object that yields no symbols (e.g. an abstract object) produces NO unit at all
26
28
  (never an empty unit).
@@ -40,6 +42,7 @@ from metaobjects.codegen.generators.m2m_codegen import (
40
42
  build_object_index,
41
43
  resolve_m2m_descriptors,
42
44
  )
45
+ from metaobjects.codegen.generators.find_inbound import is_xml, response_shape
43
46
  from metaobjects.codegen.generators.payload_vo_generator import (
44
47
  is_field_required,
45
48
  resolve_payload_vo,
@@ -57,9 +60,6 @@ from metaobjects.meta.template import template_constants as tc
57
60
  from metaobjects.shared.base_types import TYPE_OBJECT, TYPE_TEMPLATE
58
61
  from metaobjects.shared.separators import PACKAGE_SEP
59
62
 
60
- # Structured formats that get an output-format prompt + a tolerant extractor.
61
- _STRUCTURED_FORMATS = frozenset({tc.TEMPLATE_FORMAT_JSON, tc.TEMPLATE_FORMAT_XML})
62
-
63
63
 
64
64
  def _pkg_of(node: MetaData) -> str:
65
65
  """The effective package of a node — its ``resolution_key()`` minus the
@@ -97,11 +97,6 @@ def _is_writable_table_entity(obj: MetaObject, object_index: dict[str, MetaObjec
97
97
  return src.effective_kind() == SOURCE_KIND_TABLE
98
98
 
99
99
 
100
- def _template_format(tmpl: MetaData) -> str:
101
- fmt = tmpl.get_meta_attr(tc.TEMPLATE_ATTR_FORMAT) # ADR-0039: template attr resolves via extends (not origin; templates CAN extend)
102
- return fmt if isinstance(fmt, str) and fmt else tc.TEMPLATE_FORMAT_DEFAULT
103
-
104
-
105
100
  def _payload_resolves(tmpl: MetaData, root: MetaData) -> MetaObject | None:
106
101
  """The payload VO a template resolves to (``@payloadRef`` → ``object.value``),
107
102
  or ``None`` — the shared gate for payload / render / prompt / parser / extractor."""
@@ -141,11 +136,13 @@ class PythonApiModelBuilder:
141
136
  if unit is not None:
142
137
  units.append(unit)
143
138
 
144
- # Templates: only template.output is consumed by the payload/render/prompt/
145
- # parser/extractor generators (the other template subtypes emit nothing).
139
+ # Templates: ADR-0052 — EVERY template subtype gets a unit, not just
140
+ # template.output. A template.prompt carries a @payloadRef record and, when it
141
+ # declares @responseRef, the whole inbound tier — all of it generated, so all
142
+ # of it documentable.
146
143
  # ADR-0039 sanctioned own: top-level scan on the loader ROOT (never extended, own == effective)
147
144
  for tmpl in root.own_children():
148
- if tmpl.type == TYPE_TEMPLATE and tmpl.sub_type == tc.TEMPLATE_SUBTYPE_OUTPUT:
145
+ if tmpl.type == TYPE_TEMPLATE:
149
146
  units.append(self._build_template_unit(tmpl, root))
150
147
 
151
148
  return ApiModel(project, units)
@@ -280,10 +277,9 @@ class PythonApiModelBuilder:
280
277
  module = naming.snake_case(name)
281
278
  symbols: list[ApiSymbol] = []
282
279
  payload_vo = _payload_resolves(tmpl, root)
283
- fmt = _template_format(tmpl).lower()
284
280
 
285
281
  if payload_vo is not None:
286
- # PAYLOAD — the typed Pydantic payload model the parser/prompt bind to.
282
+ # PAYLOAD — the typed Pydantic record for the shape this template RENDERS.
287
283
  payload_class = naming.payload_class_name(name)
288
284
  symbols.append(
289
285
  ApiSymbol(
@@ -298,56 +294,81 @@ class PythonApiModelBuilder:
298
294
  )
299
295
  )
300
296
 
301
- # RENDER — the typed render helper wrapping the render engine.
302
- render_fn = naming.render_helper_fn(name)
303
- symbols.append(
304
- ApiSymbol(
305
- name=render_fn,
306
- kind=ApiSymbolKind.RENDER,
307
- module=f"from .{module}_render_helper import {render_fn}",
308
- signature=f"def {render_fn}(payload, provider)",
309
- usage="renders the output template against a typed payload",
310
- returns="EmailDocument" if _is_email_kind(tmpl) else "str",
297
+ # RENDER — the typed render helper wrapping the render engine. OUTBOUND
298
+ # ONLY: render_helper_generator emits for a template.output alone, so
299
+ # documenting it for a prompt would name a function never generated.
300
+ if tmpl.sub_type == tc.TEMPLATE_SUBTYPE_OUTPUT:
301
+ render_fn = naming.render_helper_fn(name)
302
+ symbols.append(
303
+ ApiSymbol(
304
+ name=render_fn,
305
+ kind=ApiSymbolKind.RENDER,
306
+ module=f"from .{module}_render_helper import {render_fn}",
307
+ signature=f"def {render_fn}(payload, provider)",
308
+ usage="renders the output template against a typed payload",
309
+ returns="EmailDocument" if _is_email_kind(tmpl) else "str",
310
+ )
311
311
  )
312
- )
313
312
 
314
- # OUTPUT_PARSER — the strict ``parse_*`` back into the typed payload.
315
- parse_fn = naming.output_parser_fn(name)
313
+ # ADR-0052 — the INBOUND symbols belong to a RESPONDING template.prompt, never
314
+ # to an output, and the gate is @responseRef PRESENCE rather than a format
315
+ # value. Shares `response_shape` with the generators, so the docs can never
316
+ # claim a symbol codegen suppressed.
317
+ inbound = response_shape(root, tmpl, _pkg_of(tmpl))
318
+ if inbound is not None:
319
+ # The RESPONSE record the parser actually returns — not the @payloadRef
320
+ # request record documented above, which types what this prompt renders out.
321
+ response_class = naming.response_class_name(name)
316
322
  symbols.append(
317
323
  ApiSymbol(
318
- name=parse_fn,
319
- kind=ApiSymbolKind.OUTPUT_PARSER,
320
- module=f"from .{module}_output_parser import {parse_fn}",
321
- signature=f"def {parse_fn}(text)",
322
- usage="parses model output back into the typed payload",
323
- returns=naming.payload_class_name(name),
324
+ name=response_class,
325
+ kind=ApiSymbolKind.PAYLOAD,
326
+ module=(
327
+ f"from .{naming.response_module_name(name)} import {response_class}"
328
+ ),
329
+ signature=f"class {response_class}(BaseModel)",
330
+ usage="the typed response shape a model reply is parsed into",
331
+ fields=self._payload_fields(inbound.vo),
324
332
  )
325
333
  )
326
334
 
327
- # PROMPT + EXTRACTOR only for json/xml output templates.
328
- if fmt in _STRUCTURED_FORMATS:
329
- prompt_fn = naming.output_prompt_fn(name)
335
+ # OUTPUT_PARSER the strict ``parse_*``. ADR-0053: JSON-only, so an XML
336
+ # reply gets no strict tier and documenting one would name a missing fn.
337
+ if not is_xml(inbound.format):
338
+ parse_fn = naming.output_parser_fn(name)
330
339
  symbols.append(
331
340
  ApiSymbol(
332
- name=prompt_fn,
333
- kind=ApiSymbolKind.PROMPT,
334
- module=f"from .{module}_output_prompt import {prompt_fn}",
335
- signature=f"def {prompt_fn}(overrides=None)",
336
- usage="builds the output-format prompt fragment",
337
- returns="str",
341
+ name=parse_fn,
342
+ kind=ApiSymbolKind.OUTPUT_PARSER,
343
+ module=f"from .{module}_response_parser import {parse_fn}",
344
+ signature=f"def {parse_fn}(text)",
345
+ usage="parses a model reply back into the typed response shape",
346
+ returns=response_class,
338
347
  )
339
348
  )
340
- extract_fn = naming.extractor_fn(name)
341
- symbols.append(
342
- ApiSymbol(
343
- name=extract_fn,
344
- kind=ApiSymbolKind.EXTRACTOR,
345
- module=f"from .{module}_extractor import {extract_fn}",
346
- signature=f"def {extract_fn}(root, text, opts=None)",
347
- usage="extracts the strict typed payload from dirty model output",
348
- returns=naming.payload_class_name(name),
349
- )
349
+
350
+ prompt_fn = naming.output_prompt_fn(name)
351
+ symbols.append(
352
+ ApiSymbol(
353
+ name=prompt_fn,
354
+ kind=ApiSymbolKind.PROMPT,
355
+ module=f"from .{module}_response_format import {prompt_fn}",
356
+ signature=f"def {prompt_fn}(overrides=None)",
357
+ usage="builds the response-format prompt fragment",
358
+ returns="str",
350
359
  )
360
+ )
361
+ extract_fn = naming.extractor_fn(name)
362
+ symbols.append(
363
+ ApiSymbol(
364
+ name=extract_fn,
365
+ kind=ApiSymbolKind.EXTRACTOR,
366
+ module=f"from .{module}_extractor import {extract_fn}",
367
+ signature=f"def {extract_fn}(root, text, opts=None)",
368
+ usage="extracts the strict typed response from dirty model output",
369
+ returns=response_class,
370
+ )
371
+ )
351
372
 
352
373
  return ApiUnit(name, _package_of(tmpl), "template", symbols)
353
374
 
@@ -20,6 +20,8 @@ from __future__ import annotations
20
20
  from metaobjects.codegen.generators.payload_vo_generator import (
21
21
  payload_class_name,
22
22
  payload_module_name,
23
+ response_class_name,
24
+ response_module_name,
23
25
  )
24
26
 
25
27
  __all__ = [
@@ -35,6 +37,8 @@ __all__ = [
35
37
  "pk_param",
36
38
  "payload_class_name",
37
39
  "payload_module_name",
40
+ "response_class_name",
41
+ "response_module_name",
38
42
  "render_helper_fn",
39
43
  "output_prompt_fn",
40
44
  "output_parser_fn",