metaobjects 0.9.0__tar.gz → 0.10.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 (385) hide show
  1. {metaobjects-0.9.0 → metaobjects-0.10.0}/PKG-INFO +1 -1
  2. {metaobjects-0.9.0 → metaobjects-0.10.0}/pyproject.toml +16 -1
  3. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/skills/metaobjects-authoring/SKILL.md +15 -8
  4. metaobjects-0.10.0/src/metaobjects/apidocs/__init__.py +91 -0
  5. metaobjects-0.10.0/src/metaobjects/apidocs/api_model.py +111 -0
  6. metaobjects-0.10.0/src/metaobjects/apidocs/builder.py +389 -0
  7. metaobjects-0.10.0/src/metaobjects/apidocs/naming.py +123 -0
  8. metaobjects-0.10.0/src/metaobjects/apidocs/paths.py +75 -0
  9. metaobjects-0.10.0/src/metaobjects/apidocs/renderer.py +185 -0
  10. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/cli.py +106 -0
  11. metaobjects-0.10.0/src/metaobjects/codegen/config.py +19 -0
  12. metaobjects-0.10.0/src/metaobjects/codegen/constants.py +28 -0
  13. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/format.py +12 -1
  14. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/generators/entity_model.py +96 -24
  15. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/generators/extractor_generator.py +1 -10
  16. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/generators/filter_allowlist_generator.py +4 -18
  17. metaobjects-0.10.0/src/metaobjects/codegen/generators/fr019_shared_enum.py +135 -0
  18. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/generators/output_parser_generator.py +1 -12
  19. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/generators/output_prompt_generator.py +1 -11
  20. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/generators/payload_vo_generator.py +42 -24
  21. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/generators/render_helper_generator.py +6 -13
  22. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/generators/router_generator.py +6 -30
  23. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/runner.py +20 -0
  24. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/type_map.py +4 -1
  25. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/core_types.py +103 -221
  26. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/documentation/doc_constants.py +2 -0
  27. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/documentation/doc_schema.py +2 -0
  28. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/errors.py +52 -0
  29. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/loader/validate_source_parameter_ref.py +6 -1
  30. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/loader/validation_passes.py +108 -2
  31. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/field/field_constants.py +6 -0
  32. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/object/object_constants.py +8 -1
  33. metaobjects-0.10.0/src/metaobjects/meta/presentation/ui/ui_provider.py +53 -0
  34. metaobjects-0.10.0/src/metaobjects/meta/provider_extends.py +80 -0
  35. metaobjects-0.10.0/src/metaobjects/meta/template/prompt_provider.py +63 -0
  36. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/template/template_constants.py +1 -1
  37. metaobjects-0.10.0/src/metaobjects/naming_refs.py +141 -0
  38. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/parser.py +45 -0
  39. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/provider.py +12 -1
  40. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/registry.py +40 -1
  41. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/registry_manifest.py +122 -13
  42. metaobjects-0.10.0/src/metaobjects/spec_metamodel/__init__.py +595 -0
  43. metaobjects-0.10.0/src/metaobjects/spec_metamodel/attr.json +59 -0
  44. metaobjects-0.10.0/src/metaobjects/spec_metamodel/db.json +43 -0
  45. metaobjects-0.10.0/src/metaobjects/spec_metamodel/documentation.json +78 -0
  46. metaobjects-0.10.0/src/metaobjects/spec_metamodel/field.json +139 -0
  47. metaobjects-0.10.0/src/metaobjects/spec_metamodel/identity.json +33 -0
  48. metaobjects-0.10.0/src/metaobjects/spec_metamodel/layout.json +15 -0
  49. metaobjects-0.10.0/src/metaobjects/spec_metamodel/object.json +47 -0
  50. metaobjects-0.10.0/src/metaobjects/spec_metamodel/origin.json +38 -0
  51. metaobjects-0.10.0/src/metaobjects/spec_metamodel/prompt.json +76 -0
  52. metaobjects-0.10.0/src/metaobjects/spec_metamodel/relationship.json +65 -0
  53. metaobjects-0.10.0/src/metaobjects/spec_metamodel/source.json +16 -0
  54. metaobjects-0.10.0/src/metaobjects/spec_metamodel/template.json +29 -0
  55. metaobjects-0.10.0/src/metaobjects/spec_metamodel/ui.json +33 -0
  56. metaobjects-0.10.0/src/metaobjects/spec_metamodel/validator.json +56 -0
  57. metaobjects-0.10.0/src/metaobjects/spec_metamodel/view.json +75 -0
  58. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/super_resolve.py +70 -2
  59. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/yaml_desugar.py +77 -9
  60. metaobjects-0.10.0/tests/codegen/test_api_docs_builder.py +88 -0
  61. metaobjects-0.10.0/tests/codegen/test_api_docs_paths.py +59 -0
  62. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_entity_model.py +49 -0
  63. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_enum_conformance.py +11 -7
  64. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_format.py +11 -0
  65. metaobjects-0.10.0/tests/codegen/test_fr019_shared_provided_conformance.py +99 -0
  66. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_payload_vo_generator.py +29 -0
  67. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_render_helper_generator.py +22 -0
  68. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_runner.py +48 -2
  69. metaobjects-0.10.0/tests/conformance/conformance-expected-failures.json +25 -0
  70. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/conformance/conformance_adapter.py +14 -3
  71. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/conformance/fixture_discovery.py +16 -3
  72. metaobjects-0.10.0/tests/conformance/test_api_docs_cross_port_conformance.py +98 -0
  73. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/conformance/test_extract_conformance.py +1 -1
  74. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/conformance/test_fr010_loader_attrs.py +5 -2
  75. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/conformance/test_fr011_attrs.py +5 -2
  76. metaobjects-0.10.0/tests/conformance/test_spec_metamodel_embed.py +59 -0
  77. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/render/test_output_prompt_conformance.py +1 -1
  78. metaobjects-0.10.0/tests/test_api_docs_accuracy.py +234 -0
  79. metaobjects-0.10.0/tests/unit/__init__.py +0 -0
  80. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_common_attrs.py +5 -4
  81. metaobjects-0.10.0/tests/unit/test_strict_child_placement.py +73 -0
  82. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_template_toolcall.py +5 -3
  83. metaobjects-0.10.0/tests/unit/test_template_wrong_subtype_attrs.py +84 -0
  84. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_validation_attr_schema.py +5 -2
  85. {metaobjects-0.9.0 → metaobjects-0.10.0}/uv.lock +8 -2
  86. metaobjects-0.9.0/src/metaobjects/codegen/config.py +0 -11
  87. metaobjects-0.9.0/src/metaobjects/codegen/constants.py +0 -13
  88. metaobjects-0.9.0/src/metaobjects/meta/template/template_provider.py +0 -43
  89. metaobjects-0.9.0/tests/conformance/conformance-expected-failures.json +0 -5
  90. {metaobjects-0.9.0 → metaobjects-0.10.0}/.gitignore +0 -0
  91. {metaobjects-0.9.0 → metaobjects-0.10.0}/LICENSE +0 -0
  92. {metaobjects-0.9.0 → metaobjects-0.10.0}/README.md +0 -0
  93. {metaobjects-0.9.0 → metaobjects-0.10.0}/hatch_build.py +0 -0
  94. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/__init__.py +0 -0
  95. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/__init__.py +0 -0
  96. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/README.md +0 -0
  97. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/servers/csharp.meta.json +0 -0
  98. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/servers/java.meta.json +0 -0
  99. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/servers/kotlin.meta.json +0 -0
  100. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/servers/python.meta.json +0 -0
  101. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/servers/typescript.meta.json +0 -0
  102. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/skills/metaobjects-codegen/SKILL.md +0 -0
  103. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/skills/metaobjects-codegen/references/csharp.md +0 -0
  104. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/skills/metaobjects-codegen/references/java.md +0 -0
  105. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/skills/metaobjects-codegen/references/kotlin.md +0 -0
  106. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/skills/metaobjects-codegen/references/typescript.md +0 -0
  107. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/skills/metaobjects-prompts/SKILL.md +0 -0
  108. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/skills/metaobjects-prompts/references/csharp.md +0 -0
  109. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/skills/metaobjects-prompts/references/java.md +0 -0
  110. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/skills/metaobjects-prompts/references/kotlin.md +0 -0
  111. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/skills/metaobjects-prompts/references/python.md +0 -0
  112. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/skills/metaobjects-prompts/references/typescript.md +0 -0
  113. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/skills/metaobjects-runtime-ui/SKILL.md +0 -0
  114. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/skills/metaobjects-runtime-ui/references/java.md +0 -0
  115. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/skills/metaobjects-runtime-ui/references/kotlin.md +0 -0
  116. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/skills/metaobjects-runtime-ui/references/react.md +0 -0
  117. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/skills/metaobjects-runtime-ui/references/tanstack.md +0 -0
  118. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/skills/metaobjects-runtime-ui/references/typescript.md +0 -0
  119. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/skills/metaobjects-verify/SKILL.md +0 -0
  120. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/skills/metaobjects-verify/references/migration.md +0 -0
  121. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/_content/templates/always-on.md.mustache +0 -0
  122. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/assemble.py +0 -0
  123. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/content_root.py +0 -0
  124. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/scaffold.py +0 -0
  125. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/agent_context/types.py +0 -0
  126. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/attr_class_map.py +0 -0
  127. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/KNOWN_GAPS.md +0 -0
  128. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/__init__.py +0 -0
  129. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/extract_delegate_emitter.py +0 -0
  130. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/extract_schema_emitter.py +0 -0
  131. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/fr010_field_mapping.py +0 -0
  132. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/generator.py +0 -0
  133. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/generator_registry.py +0 -0
  134. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/generators/__init__.py +0 -0
  135. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/generators/m2m_codegen.py +0 -0
  136. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/generators/template_generator.py +0 -0
  137. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/generators/tph_plan.py +0 -0
  138. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/generators/trace_helper_generator.py +0 -0
  139. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/instance_artifacts.py +0 -0
  140. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/output_format_spec_emitter.py +0 -0
  141. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/overwrite_policy.py +0 -0
  142. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/runtime/__init__.py +0 -0
  143. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/codegen/runtime/filter_parser.py +0 -0
  144. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/datatype.py +0 -0
  145. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/documentation/__init__.py +0 -0
  146. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/documentation/doc_provider.py +0 -0
  147. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/loader/__init__.py +0 -0
  148. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/loader/merge.py +0 -0
  149. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/loader/meta_data_loader.py +0 -0
  150. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/loader/sources/__init__.py +0 -0
  151. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/loader/sources/directory_source.py +0 -0
  152. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/loader/sources/file_source.py +0 -0
  153. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/loader/sources/meta_data_source.py +0 -0
  154. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/loader/sources/uri_source.py +0 -0
  155. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/loader/validate_discriminator.py +0 -0
  156. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/loader/validate_field_readonly.py +0 -0
  157. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/loader/validate_source_physical_names.py +0 -0
  158. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/__init__.py +0 -0
  159. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/__init__.py +0 -0
  160. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/attr/__init__.py +0 -0
  161. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/attr/attr_constants.py +0 -0
  162. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/attr/meta_attr.py +0 -0
  163. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/field/__init__.py +0 -0
  164. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/field/meta_field.py +0 -0
  165. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/identity/__init__.py +0 -0
  166. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/identity/identity_constants.py +0 -0
  167. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/identity/meta_identity.py +0 -0
  168. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/object/__init__.py +0 -0
  169. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/object/meta_object.py +0 -0
  170. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/object/meta_object_aware.py +0 -0
  171. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/object/object_class_registry.py +0 -0
  172. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/object/object_extract.py +0 -0
  173. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/object/value_object.py +0 -0
  174. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/relationship/__init__.py +0 -0
  175. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/relationship/derive_m2m_fields.py +0 -0
  176. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/relationship/meta_relationship.py +0 -0
  177. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/relationship/relationship_constants.py +0 -0
  178. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/validator/__init__.py +0 -0
  179. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/core/validator/validator_constants.py +0 -0
  180. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/meta_data.py +0 -0
  181. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/meta_root.py +0 -0
  182. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/persistence/__init__.py +0 -0
  183. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/persistence/db/__init__.py +0 -0
  184. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/persistence/db/db_constants.py +0 -0
  185. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/persistence/db/db_provider.py +0 -0
  186. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/persistence/origin/__init__.py +0 -0
  187. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/persistence/origin/meta_origin.py +0 -0
  188. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/persistence/origin/origin_constants.py +0 -0
  189. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/persistence/source/__init__.py +0 -0
  190. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/persistence/source/meta_source.py +0 -0
  191. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/persistence/source/source_constants.py +0 -0
  192. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/presentation/__init__.py +0 -0
  193. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/presentation/layout/__init__.py +0 -0
  194. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/presentation/layout/layout_constants.py +0 -0
  195. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/presentation/layout/meta_layout.py +0 -0
  196. {metaobjects-0.9.0/src/metaobjects/meta/presentation/view → metaobjects-0.10.0/src/metaobjects/meta/presentation/ui}/__init__.py +0 -0
  197. {metaobjects-0.9.0/src/metaobjects/meta/template → metaobjects-0.10.0/src/metaobjects/meta/presentation/view}/__init__.py +0 -0
  198. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/presentation/view/meta_view.py +0 -0
  199. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/presentation/view/view_constants.py +0 -0
  200. {metaobjects-0.9.0/src/metaobjects/shared → metaobjects-0.10.0/src/metaobjects/meta/template}/__init__.py +0 -0
  201. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/meta/template/meta_template.py +0 -0
  202. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/parser_yaml.py +0 -0
  203. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/py.typed +0 -0
  204. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/__init__.py +0 -0
  205. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/email_document.py +0 -0
  206. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/escapers.py +0 -0
  207. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/extract/KNOWN_GAPS.md +0 -0
  208. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/extract/__init__.py +0 -0
  209. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/extract/coerce.py +0 -0
  210. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/extract/extract.py +0 -0
  211. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/extract/extract_map.py +0 -0
  212. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/extract/json_forgiving_reader.py +0 -0
  213. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/extract/locate.py +0 -0
  214. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/extract/normalize.py +0 -0
  215. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/extract/strip.py +0 -0
  216. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/extract/types.py +0 -0
  217. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/extract/xml_forgiving_reader.py +0 -0
  218. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/filesystem_provider.py +0 -0
  219. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/prompt/__init__.py +0 -0
  220. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/prompt/output_format_renderer.py +0 -0
  221. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/prompt/output_format_spec.py +0 -0
  222. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/prompt/prompt_field.py +0 -0
  223. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/prompt/prompt_overrides.py +0 -0
  224. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/prompt/prompt_style.py +0 -0
  225. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/renderer.py +0 -0
  226. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/render/verify.py +0 -0
  227. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/runtime/__init__.py +0 -0
  228. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/runtime/llm_recorder.py +0 -0
  229. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/runtime/n2m_resolver.py +0 -0
  230. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/runtime/object_manager.py +0 -0
  231. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/runtime/tph.py +0 -0
  232. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/serializer_json.py +0 -0
  233. {metaobjects-0.9.0/tests → metaobjects-0.10.0/src/metaobjects/shared}/__init__.py +0 -0
  234. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/shared/base_types.py +0 -0
  235. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/shared/separators.py +0 -0
  236. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/shared/structural.py +0 -0
  237. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/source/__init__.py +0 -0
  238. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/source/error_source.py +0 -0
  239. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/source/json_path.py +0 -0
  240. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/source/semantic_diff.py +0 -0
  241. {metaobjects-0.9.0 → metaobjects-0.10.0}/src/metaobjects/source/yaml_positions.py +0 -0
  242. {metaobjects-0.9.0/tests/codegen → metaobjects-0.10.0/tests}/__init__.py +0 -0
  243. {metaobjects-0.9.0/tests/conformance → metaobjects-0.10.0/tests/codegen}/__init__.py +0 -0
  244. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/golden/extends/expected/BaseEntity.py +0 -0
  245. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/golden/extends/expected/Program.py +0 -0
  246. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/golden/extends/meta.json +0 -0
  247. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/golden/nested-array/expected/AuthorBrief.py +0 -0
  248. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/golden/nested-array/expected/PostBrief.py +0 -0
  249. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/golden/nested-array/meta.json +0 -0
  250. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/golden/scalars/expected/Metric.py +0 -0
  251. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/golden/scalars/expected/Report.py +0 -0
  252. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/golden/scalars/meta.json +0 -0
  253. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/golden/vanilla/expected/Subscriber.py +0 -0
  254. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/golden/vanilla/meta.json +0 -0
  255. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_abstract_conformance.py +0 -0
  256. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_cli.py +0 -0
  257. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_cli_registry.py +0 -0
  258. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_cli_staleness_nudge.py +0 -0
  259. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_cli_verify_subverbs.py +0 -0
  260. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_constants_config.py +0 -0
  261. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_extractor_generator.py +0 -0
  262. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_filter_allowlist_generator.py +0 -0
  263. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_fr010_output_codegen.py +0 -0
  264. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_generator.py +0 -0
  265. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_generator_extension_seams.py +0 -0
  266. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_golden.py +0 -0
  267. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_inheritance_conformance.py +0 -0
  268. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_instance_artifacts.py +0 -0
  269. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_m2m_codegen.py +0 -0
  270. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_output_parser_generator.py +0 -0
  271. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_overwrite_policy.py +0 -0
  272. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_render_helper_conformance.py +0 -0
  273. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_router_generator.py +0 -0
  274. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_template_generator.py +0 -0
  275. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_tph_codegen.py +0 -0
  276. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_trace_helper_generator.py +0 -0
  277. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_type_map.py +0 -0
  278. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/codegen/test_validation_conformance.py +0 -0
  279. {metaobjects-0.9.0/tests/integration → metaobjects-0.10.0/tests/conformance}/__init__.py +0 -0
  280. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/conformance/capabilities.py +0 -0
  281. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/conformance/corpus.py +0 -0
  282. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/conformance/expected_failures.py +0 -0
  283. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/conformance/navigator.py +0 -0
  284. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/conformance/test_agent_context_conformance.py +0 -0
  285. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/conformance/test_conformance.py +0 -0
  286. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/conformance/test_extract_object_verdict.py +0 -0
  287. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/conformance/test_generator_registry_conformance.py +0 -0
  288. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/conformance/test_object_model_conformance.py +0 -0
  289. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/conformance/test_registry_conformance.py +0 -0
  290. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/conformance/test_runner_hardfail.py +0 -0
  291. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/conformance/test_strict_attr_load.py +0 -0
  292. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/conformance/test_template_generator_conformance.py +0 -0
  293. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/conformance/test_yaml_conformance.py +0 -0
  294. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/conformance/yaml-conformance-expected-failures.json +0 -0
  295. {metaobjects-0.9.0/tests/render → metaobjects-0.10.0/tests/integration}/__init__.py +0 -0
  296. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/integration/api_contract_assertions.py +0 -0
  297. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/integration/api_contract_m2m_server.py +0 -0
  298. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/integration/api_contract_server.py +0 -0
  299. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/integration/generated_m2m_app.py +0 -0
  300. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/integration/generated_router_app.py +0 -0
  301. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/integration/generated_tph_app.py +0 -0
  302. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/integration/meta_ai_trace.yaml +0 -0
  303. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/integration/normalization.py +0 -0
  304. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/integration/postgres_container.py +0 -0
  305. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/integration/query_runner.py +0 -0
  306. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/integration/scenarios.py +0 -0
  307. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/integration/test_api_contract.py +0 -0
  308. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/integration/test_api_contract_generated.py +0 -0
  309. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/integration/test_api_contract_m2m.py +0 -0
  310. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/integration/test_api_contract_m2m_generated.py +0 -0
  311. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/integration/test_api_contract_tph_generated.py +0 -0
  312. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/integration/test_llm_call_trace.py +0 -0
  313. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/integration/test_normalization.py +0 -0
  314. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/integration/test_query_scenarios.py +0 -0
  315. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/integration/test_runtime_return_types.py +0 -0
  316. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/open_closed_proof_test.py +0 -0
  317. {metaobjects-0.9.0/tests/render/extract → metaobjects-0.10.0/tests/render}/__init__.py +0 -0
  318. {metaobjects-0.9.0/tests/render/prompt → metaobjects-0.10.0/tests/render/extract}/__init__.py +0 -0
  319. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/render/extract/test_coerce.py +0 -0
  320. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/render/extract/test_extract.py +0 -0
  321. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/render/extract/test_extract_map.py +0 -0
  322. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/render/extract/test_json_forgiving_reader.py +0 -0
  323. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/render/extract/test_locate.py +0 -0
  324. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/render/extract/test_model.py +0 -0
  325. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/render/extract/test_normalize.py +0 -0
  326. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/render/extract/test_strip.py +0 -0
  327. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/render/extract/test_xml_forgiving_reader.py +0 -0
  328. {metaobjects-0.9.0/tests/source → metaobjects-0.10.0/tests/render/prompt}/__init__.py +0 -0
  329. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/render/prompt/test_output_format_renderer.py +0 -0
  330. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/render/test_email_document.py +0 -0
  331. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/render/test_filesystem_provider.py +0 -0
  332. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/render/test_output_format_renderer_nested.py +0 -0
  333. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/render/test_render_conformance.py +0 -0
  334. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/render/test_render_max_chars.py +0 -0
  335. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/render/test_verify.py +0 -0
  336. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/render/test_verify_conformance.py +0 -0
  337. {metaobjects-0.9.0/tests/unit → metaobjects-0.10.0/tests/source}/__init__.py +0 -0
  338. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/source/test_fr5c_merge_attribution.py +0 -0
  339. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/source/test_fr5d_reference_resolution.py +0 -0
  340. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/source/test_fr5e_database_source_shape.py +0 -0
  341. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/source/test_json_path.py +0 -0
  342. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/source/test_semantic_diff.py +0 -0
  343. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/source/test_source_on_node.py +0 -0
  344. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/source/test_yaml_positions.py +0 -0
  345. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_agent_context_staleness.py +0 -0
  346. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_capabilities.py +0 -0
  347. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_core_types.py +0 -0
  348. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_effective_package.py +0 -0
  349. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_errors.py +0 -0
  350. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_field_enum.py +0 -0
  351. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_field_uuid_dbcolumntype.py +0 -0
  352. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_fr016_source_name_and_kind_aliases.py +0 -0
  353. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_llm_recorder.py +0 -0
  354. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_loader.py +0 -0
  355. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_loader_bom.py +0 -0
  356. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_loader_class.py +0 -0
  357. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_merge.py +0 -0
  358. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_meta_attr.py +0 -0
  359. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_meta_data.py +0 -0
  360. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_meta_source.py +0 -0
  361. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_module_shortcuts.py +0 -0
  362. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_n2m_resolver.py +0 -0
  363. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_object_manager_uuid_coercion.py +0 -0
  364. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_one_primary_source.py +0 -0
  365. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_parser.py +0 -0
  366. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_parser_yaml.py +0 -0
  367. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_provider.py +0 -0
  368. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_provider_extension.py +0 -0
  369. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_registry.py +0 -0
  370. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_registry_completeness.py +0 -0
  371. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_registry_extend.py +0 -0
  372. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_registry_sealed.py +0 -0
  373. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_relationship_referential_actions.py +0 -0
  374. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_resolution_key.py +0 -0
  375. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_runtime_resolution_key_binding.py +0 -0
  376. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_serializer.py +0 -0
  377. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_shared_constants.py +0 -0
  378. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_smoke.py +0 -0
  379. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_sources.py +0 -0
  380. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_super_resolve.py +0 -0
  381. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_validation_filter_values.py +0 -0
  382. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_validation_origin_paths.py +0 -0
  383. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_validation_sort_field.py +0 -0
  384. {metaobjects-0.9.0 → metaobjects-0.10.0}/tests/unit/test_validation_warnings.py +0 -0
  385. {metaobjects-0.9.0 → metaobjects-0.10.0}/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.9.0
3
+ Version: 0.10.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.9.0"
3
+ version = "0.10.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"
@@ -75,6 +75,12 @@ exclude = ["**/KNOWN_GAPS.md"]
75
75
  # falls back to walking up to the monorepo agent-context/.
76
76
  [tool.hatch.build.hooks.custom]
77
77
 
78
+ # FR-033 — the 15 shared spec/metamodel/*.json files are COMMITTED copies under
79
+ # src/metaobjects/spec_metamodel/ (not build-time-generated), so hatchling's default
80
+ # package inclusion ships them in both the sdist and the wheel (read via
81
+ # importlib.resources, AOT-safe). A byte-identity gate
82
+ # (tests/conformance/test_spec_metamodel_embed.py) keeps the copies from drifting
83
+ # from the repo-root spec/metamodel/ source.
78
84
  [tool.hatch.build]
79
85
  artifacts = ["src/metaobjects/agent_context/_content/**"]
80
86
 
@@ -93,4 +99,13 @@ exclude = ["tests/codegen/golden/"]
93
99
  [dependency-groups]
94
100
  dev = [
95
101
  "pytest>=9.0.3",
102
+ # `uv run` installs THIS group (PEP 735), not [project.optional-dependencies].
103
+ # The validator-parity corpus (tests/codegen/test_validation_conformance.py)
104
+ # imports pydantic to exercise the generated Pydantic models, so it must be here
105
+ # or the CI `uv run pytest` collection fails with ModuleNotFoundError.
106
+ "pydantic>=2",
107
+ # ruff is the Python codegen format pass (src/metaobjects/codegen/format.py); the
108
+ # cli-registry corpus runs codegen, so without ruff in the group `uv run pytest`
109
+ # fails at format time with "No module named ruff".
110
+ "ruff>=0.6",
96
111
  ]
@@ -34,7 +34,7 @@ subtype — there is **no** separate `subType` body key.
34
34
  { "object.entity": { "name": "User" } }
35
35
  { "field.string": { "name": "email", "@required": true } }
36
36
  { "field.enum": { "name": "status", "@values": ["OPEN", "CLOSED"] } }
37
- { "identity.primary": { "@fields": ["id"] } }
37
+ { "identity.primary": { "name": "id", "@fields": ["id"] } }
38
38
  ```
39
39
 
40
40
  A complete entity in canonical JSON:
@@ -52,7 +52,7 @@ A complete entity in canonical JSON:
52
52
  { "field.long": { "name": "id" } },
53
53
  { "field.string": { "name": "name", "@required": true, "@maxLength": 200 } },
54
54
  { "field.string": { "name": "bio", "@maxLength": 2000 } },
55
- { "identity.primary": { "@fields": ["id"], "@generation": "increment" } }
55
+ { "identity.primary": { "name": "id", "@fields": ["id"], "@generation": "increment" } }
56
56
  ]
57
57
  }
58
58
  }
@@ -74,7 +74,7 @@ metadata:
74
74
  - field.long: { name: id }
75
75
  - field.string: { name: name, required: true, maxLength: 200 }
76
76
  - field.string: { name: bio, maxLength: 2000 }
77
- - identity.primary: { fields: id, generation: increment }
77
+ - identity.primary: { name: id, fields: id, generation: increment }
78
78
  ```
79
79
 
80
80
  ## Reserved structural keys vs. attributes
@@ -206,8 +206,8 @@ reference for navigation/typing/codegen only. Referential actions
206
206
  `relationship.*` node (see Relationships below).
207
207
 
208
208
  ```json
209
- { "identity.primary": { "@fields": ["id"], "@generation": "increment" } }
210
- { "identity.secondary": { "@fields": ["email"] } }
209
+ { "identity.primary": { "name": "id", "@fields": ["id"], "@generation": "increment" } }
210
+ { "identity.secondary": { "name": "byEmail", "@fields": ["email"] } }
211
211
  { "identity.reference": { "name": "fkAuthor", "@fields": ["authorId"], "@references": "Author", "@enforce": true } }
212
212
  ```
213
213
 
@@ -251,8 +251,15 @@ each with a `@role`, exactly one `primary`.
251
251
  { "source.rdb": { "@kind": "view", "@table": "v_author", "@schema": "blog" } }
252
252
  ```
253
253
 
254
- A `view`-kind entity's fields carry `origin.*` children (`passthrough` /
255
- `aggregate` / `collection`) declaring where each value comes from.
254
+ **An entity's PRIMARY source must be writable** (`table`) — read-only kinds are
255
+ legal only in non-primary roles (e.g. table `primary` + view `replica` for
256
+ read-through). A derived read model over a view/proc is an **`object.projection`**
257
+ (FR-024): its fields `extends` entity fields (`extends: "Author.id"` — dotted
258
+ child traversal, package only on the root segment) and/or carry `origin.*`
259
+ children (`passthrough` / `aggregate` / `collection`) declaring assembly; its
260
+ identity passes through via `extends` (`identity.primary: { name: id, extends:
261
+ "Author.id" }`); it is read-only by construction and the declared field set IS
262
+ the exposure (fail-closed).
256
263
 
257
264
  ## Abstracts + `extends` (deferred resolution) + `overlay`
258
265
 
@@ -275,7 +282,7 @@ change.
275
282
  children:
276
283
  - source.rdb: { table: authors }
277
284
  - field.string: { name: name, required: true }
278
- - identity.primary: { fields: id }
285
+ - identity.primary: { name: id, fields: id }
279
286
  ```
280
287
 
281
288
  Resolution facts:
@@ -0,0 +1,91 @@
1
+ """Python native SDK / API-reference docs (the ``api/python`` surface).
2
+
3
+ Tier-1, idiomatic per-language reference for the generated Python SDK (Pydantic
4
+ model / FastAPI routes / repository ``Protocol`` data-access / validation /
5
+ extractor / render helper / payload / output-format prompt / output parser /
6
+ filter allowlist). Accurate-by-construction: every documented symbol name comes
7
+ from the :mod:`metaobjects.apidocs.naming` seam — the SAME seam the real
8
+ generators delegate to — so docs can never claim a name the generators do not
9
+ emit. Distinct from the model docs (Tier-2, neutral, TS-owned). See
10
+ ``docs/superpowers/specs/2026-06-13-cross-port-sdk-docs-conformance-design.md``.
11
+
12
+ The builder / renderer symbols are exposed lazily (via :pep:`562` module
13
+ ``__getattr__``) so that a generator importing the lightweight
14
+ :mod:`metaobjects.apidocs.naming` seam does NOT pull in the builder (which imports
15
+ those same generators) — that would be a circular import at module-init time.
16
+ """
17
+ from __future__ import annotations
18
+
19
+ from typing import TYPE_CHECKING, Any
20
+
21
+ # Path math is leaf-level (no generator imports) — safe to expose eagerly.
22
+ from metaobjects.apidocs.paths import (
23
+ Layout,
24
+ doc_page_output_path,
25
+ model_cross_href,
26
+ package_to_path,
27
+ surface_cross_href,
28
+ )
29
+
30
+ if TYPE_CHECKING: # pragma: no cover - import-time only for type checkers
31
+ from metaobjects.apidocs.api_model import (
32
+ ApiModel,
33
+ ApiSymbol,
34
+ ApiSymbolKind,
35
+ ApiUnit,
36
+ FieldShape,
37
+ UnitExample,
38
+ )
39
+ from metaobjects.apidocs.builder import PythonApiModelBuilder, build_api_model
40
+ from metaobjects.apidocs.renderer import (
41
+ PythonApiDocsRenderer,
42
+ render_agent_api,
43
+ render_index,
44
+ render_unit_page,
45
+ )
46
+
47
+ # Lazily-resolved exports → their defining submodule.
48
+ _LAZY: dict[str, str] = {
49
+ "ApiModel": "api_model",
50
+ "ApiSymbol": "api_model",
51
+ "ApiSymbolKind": "api_model",
52
+ "ApiUnit": "api_model",
53
+ "FieldShape": "api_model",
54
+ "UnitExample": "api_model",
55
+ "PythonApiModelBuilder": "builder",
56
+ "build_api_model": "builder",
57
+ "PythonApiDocsRenderer": "renderer",
58
+ "render_unit_page": "renderer",
59
+ "render_index": "renderer",
60
+ "render_agent_api": "renderer",
61
+ }
62
+
63
+ __all__ = [
64
+ "ApiModel",
65
+ "ApiSymbol",
66
+ "ApiSymbolKind",
67
+ "ApiUnit",
68
+ "FieldShape",
69
+ "UnitExample",
70
+ "PythonApiModelBuilder",
71
+ "build_api_model",
72
+ "PythonApiDocsRenderer",
73
+ "render_unit_page",
74
+ "render_index",
75
+ "render_agent_api",
76
+ "Layout",
77
+ "doc_page_output_path",
78
+ "model_cross_href",
79
+ "package_to_path",
80
+ "surface_cross_href",
81
+ ]
82
+
83
+
84
+ def __getattr__(name: str) -> Any:
85
+ submodule = _LAZY.get(name)
86
+ if submodule is None:
87
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
88
+ import importlib
89
+
90
+ mod = importlib.import_module(f"{__name__}.{submodule}")
91
+ return getattr(mod, name)
@@ -0,0 +1,111 @@
1
+ """The Python native SDK api-surface IR (intermediate representation).
2
+
3
+ Mirrors the Java ``JavaApiModel`` IR (server/java/.../apidocs), the C#
4
+ ``CSharpApiModel``, and the TS ``api-model.ts``, idiomatic to the Python
5
+ (Pydantic / FastAPI / ObjectManager) generated surface: Pydantic model /
6
+ ``ObjectManager`` data-access / FastAPI routes / validation / extractor /
7
+ render helper / payload model / output-format prompt / output parser / filter
8
+ allowlist.
9
+
10
+ NAMES on every symbol come from the :mod:`metaobjects.apidocs.naming` seam (never
11
+ re-concatenated in the builder), so what this model documents == what the real
12
+ generators emit.
13
+ """
14
+ from __future__ import annotations
15
+
16
+ from dataclasses import dataclass, field
17
+ from enum import Enum
18
+
19
+
20
+ class ApiSymbolKind(str, Enum):
21
+ """The generated-category axis a documented symbol belongs to (Python /
22
+ Pydantic + FastAPI flavored)."""
23
+
24
+ #: The Pydantic v2 model class (entity) or value-object model.
25
+ MODEL = "model"
26
+ #: Data access — the consumer-implemented repository ``Protocol`` seam.
27
+ DATA_ACCESS = "data_access"
28
+ #: A FastAPI route (named ``"VERB path"``).
29
+ REST = "rest"
30
+ #: Pydantic field validation on the create/update shape.
31
+ VALIDATION = "validation"
32
+ #: The tolerant + strict extractor for a template payload.
33
+ EXTRACTOR = "extractor"
34
+ #: The typed render helper wrapping the render engine.
35
+ RENDER = "render"
36
+ #: The typed payload model bound to a template.
37
+ PAYLOAD = "payload"
38
+ #: The output-format prompt fragment.
39
+ PROMPT = "prompt"
40
+ #: The output parser (``parse_*``) back into the typed payload.
41
+ OUTPUT_PARSER = "output_parser"
42
+ #: The per-entity sort/filter allowlist.
43
+ FILTER = "filter"
44
+
45
+
46
+ @dataclass(frozen=True)
47
+ class FieldShape:
48
+ """A documented field: name + Python type + optionality + an optional note
49
+ (e.g. enum values)."""
50
+
51
+ name: str
52
+ type: str
53
+ optional: bool
54
+ note: str | None = None
55
+
56
+
57
+ @dataclass(frozen=True)
58
+ class UnitExample:
59
+ """A worked example for a unit (reserved for later phases; carried for
60
+ cross-port IR parity)."""
61
+
62
+ title: str
63
+ code: str
64
+
65
+
66
+ @dataclass(frozen=True)
67
+ class ApiSymbol:
68
+ """One documented symbol of the generated Python SDK surface.
69
+
70
+ :param name: the emitted Python identifier (or ``"VERB path"`` for a REST route).
71
+ :param kind: which generated category this symbol belongs to.
72
+ :param module: the import line / module path the symbol lives in.
73
+ :param signature: a human-readable Python signature line.
74
+ :param usage: a one-line "what you use this for".
75
+ :param returns: the symbol's return surface, or ``None``.
76
+ :param fields: per-field shapes for model/validation/payload symbols (may be empty).
77
+ """
78
+
79
+ name: str
80
+ kind: ApiSymbolKind
81
+ module: str
82
+ signature: str
83
+ usage: str
84
+ returns: str | None = None
85
+ fields: list[FieldShape] = field(default_factory=list)
86
+
87
+
88
+ @dataclass(frozen=True)
89
+ class ApiUnit:
90
+ """One documented unit (an entity / value object, or a template) + its symbols.
91
+
92
+ :param node: the unit's short name (the doc-page basename).
93
+ :param package: the unit's metadata package (e.g. ``acme::shop``).
94
+ :param kind: ``"entity"`` | ``"value"`` | ``"template"``.
95
+ :param symbols: the documented symbols, in canonical IR order.
96
+ :param example: an optional unit-level worked example (reserved).
97
+ """
98
+
99
+ node: str
100
+ package: str
101
+ kind: str
102
+ symbols: list[ApiSymbol]
103
+ example: UnitExample | None = None
104
+
105
+
106
+ @dataclass(frozen=True)
107
+ class ApiModel:
108
+ """The full per-project Python SDK api surface IR."""
109
+
110
+ project: str
111
+ units: list[ApiUnit]