metaobjects 1.0.12__tar.gz → 1.1.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 (584) hide show
  1. {metaobjects-1.0.12 → metaobjects-1.1.0}/PKG-INFO +18 -2
  2. {metaobjects-1.0.12 → metaobjects-1.1.0}/README.md +13 -1
  3. {metaobjects-1.0.12 → metaobjects-1.1.0}/pyproject.toml +12 -2
  4. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/apidocs/__init__.py +17 -17
  5. metaobjects-1.1.0/src/metaobjects/apidocs/api_model.py +4 -0
  6. metaobjects-1.1.0/src/metaobjects/apidocs/builder.py +4 -0
  7. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/apidocs/naming.py +57 -8
  8. metaobjects-1.1.0/src/metaobjects/apidocs/paths.py +4 -0
  9. metaobjects-1.1.0/src/metaobjects/apidocs/renderer.py +4 -0
  10. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/cli.py +1291 -914
  11. metaobjects-1.1.0/src/metaobjects/codegen/_moved.py +27 -0
  12. metaobjects-1.1.0/src/metaobjects/codegen/collection_name_collision.py +58 -0
  13. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/config.py +8 -4
  14. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/eject.py +81 -33
  15. metaobjects-1.1.0/src/metaobjects/codegen/extract_delegate_emitter.py +4 -0
  16. metaobjects-1.1.0/src/metaobjects/codegen/extract_schema_emitter.py +4 -0
  17. metaobjects-1.1.0/src/metaobjects/codegen/fr010_field_mapping.py +4 -0
  18. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/generator.py +4 -0
  19. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/generator_registry.py +84 -8
  20. metaobjects-1.1.0/src/metaobjects/codegen/generators/api_docs_generator.py +85 -0
  21. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/generators/entity_model.py +15 -41
  22. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/generators/extractor_generator.py +6 -5
  23. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/generators/filter_allowlist_generator.py +12 -4
  24. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/generators/find_inbound.py +4 -4
  25. metaobjects-1.1.0/src/metaobjects/codegen/generators/fr019_shared_enum.py +4 -0
  26. metaobjects-1.1.0/src/metaobjects/codegen/generators/m2m_codegen.py +4 -0
  27. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/generators/output_parser_generator.py +4 -3
  28. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/generators/output_prompt_generator.py +3 -3
  29. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/generators/render_helper_generator.py +20 -37
  30. metaobjects-1.1.0/src/metaobjects/codegen/generators/requirement_tests_generator.py +378 -0
  31. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/generators/router_generator.py +273 -100
  32. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/generators/trace_helper_generator.py +6 -5
  33. metaobjects-1.1.0/src/metaobjects/codegen/instance_artifacts.py +84 -0
  34. metaobjects-1.1.0/src/metaobjects/codegen/metaobjects-config.schema.json +122 -0
  35. metaobjects-1.1.0/src/metaobjects/codegen/orphan_sweep.py +179 -0
  36. metaobjects-1.1.0/src/metaobjects/codegen/output_format_spec_emitter.py +4 -0
  37. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/overwrite_policy.py +43 -3
  38. metaobjects-1.1.0/src/metaobjects/codegen/project_config.py +474 -0
  39. metaobjects-1.1.0/src/metaobjects/codegen/project_import.py +90 -0
  40. metaobjects-1.1.0/src/metaobjects/codegen/requirement_hooks.py +44 -0
  41. metaobjects-1.1.0/src/metaobjects/codegen/requirement_walk.py +291 -0
  42. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/runner.py +44 -6
  43. metaobjects-1.1.0/src/metaobjects/codegen/runtime/__init__.py +28 -0
  44. metaobjects-1.0.12/src/metaobjects/apidocs/builder.py → metaobjects-1.1.0/src/metaobjects/codegen/runtime/api_docs_builder.py +104 -46
  45. metaobjects-1.0.12/src/metaobjects/apidocs/api_model.py → metaobjects-1.1.0/src/metaobjects/codegen/runtime/api_docs_model.py +1 -1
  46. metaobjects-1.0.12/src/metaobjects/apidocs/renderer.py → metaobjects-1.1.0/src/metaobjects/codegen/runtime/api_docs_renderer.py +4 -4
  47. metaobjects-1.1.0/src/metaobjects/codegen/runtime/decimal_wire.py +261 -0
  48. {metaobjects-1.0.12/src/metaobjects/codegen → metaobjects-1.1.0/src/metaobjects/codegen/runtime}/extract_delegate_emitter.py +6 -18
  49. {metaobjects-1.0.12/src/metaobjects/codegen → metaobjects-1.1.0/src/metaobjects/codegen/runtime}/extract_schema_emitter.py +1 -1
  50. {metaobjects-1.0.12/src/metaobjects/codegen/generators → metaobjects-1.1.0/src/metaobjects/codegen/runtime}/fr019_shared_enum.py +24 -20
  51. {metaobjects-1.0.12/src/metaobjects/codegen/generators → metaobjects-1.1.0/src/metaobjects/codegen/runtime}/m2m_codegen.py +17 -16
  52. {metaobjects-1.0.12/src/metaobjects/codegen → metaobjects-1.1.0/src/metaobjects/codegen/runtime}/output_format_spec_emitter.py +1 -1
  53. metaobjects-1.1.0/src/metaobjects/codegen/runtime/shared_predicates.py +123 -0
  54. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/value_objects.py +24 -21
  55. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/config/dependencies.py +10 -2
  56. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/config/neutral_config.py +67 -0
  57. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/config/source_resolver.py +3 -1
  58. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/core_types.py +162 -1
  59. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/errors.py +18 -5
  60. metaobjects-1.1.0/src/metaobjects/field_lint.py +214 -0
  61. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/fmt.py +1 -1
  62. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/library/__init__.py +2 -2
  63. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/library/library_sources.py +15 -0
  64. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/loader/meta_data_loader.py +71 -3
  65. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/loader/registered_validation.py +38 -28
  66. metaobjects-1.1.0/src/metaobjects/loader/resolve_references.py +154 -0
  67. metaobjects-1.1.0/src/metaobjects/loader/validate_reporting.py +1192 -0
  68. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/loader/validate_source_parameter_ref.py +2 -2
  69. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/loader/validation_passes.py +93 -83
  70. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/attr/meta_attr.py +56 -17
  71. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/field/meta_field.py +67 -1
  72. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/object/object_constants.py +19 -0
  73. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/object/object_extract.py +7 -19
  74. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/relationship/derive_m2m_fields.py +18 -135
  75. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/relationship/relationship_references.py +12 -13
  76. metaobjects-1.1.0/src/metaobjects/meta/core/reporting/meta_dimension.py +42 -0
  77. metaobjects-1.1.0/src/metaobjects/meta/core/reporting/meta_measure.py +76 -0
  78. metaobjects-1.1.0/src/metaobjects/meta/core/reporting/meta_segment.py +18 -0
  79. metaobjects-1.1.0/src/metaobjects/meta/core/reporting/report_accessors.py +92 -0
  80. metaobjects-1.1.0/src/metaobjects/meta/core/reporting/report_read_model.py +178 -0
  81. metaobjects-1.1.0/src/metaobjects/meta/core/reporting/report_shape.py +508 -0
  82. metaobjects-1.1.0/src/metaobjects/meta/core/reporting/reporting_constants.py +117 -0
  83. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/requirement/meta_requirement.py +15 -0
  84. metaobjects-1.1.0/src/metaobjects/meta/core/requirement/resolve_claim.py +92 -0
  85. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/meta_data.py +55 -8
  86. metaobjects-1.1.0/src/metaobjects/meta/meta_root.py +18 -0
  87. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/persistence/source/meta_source.py +34 -10
  88. metaobjects-1.1.0/src/metaobjects/meta/presentation/view/view_constants.py +51 -0
  89. metaobjects-1.1.0/src/metaobjects/naming.py +245 -0
  90. metaobjects-1.1.0/src/metaobjects/naming_refs.py +387 -0
  91. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/parser.py +35 -50
  92. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/registry_manifest.py +1 -1
  93. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/payload_accessors.py +27 -1
  94. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/verify.py +40 -12
  95. metaobjects-1.1.0/src/metaobjects/requirement_check.py +555 -0
  96. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/runtime/__init__.py +14 -1
  97. metaobjects-1.1.0/src/metaobjects/runtime/dialect.py +298 -0
  98. metaobjects-1.1.0/src/metaobjects/runtime/drivers.py +44 -0
  99. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/runtime/n2m_resolver.py +18 -10
  100. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/runtime/object_manager.py +324 -115
  101. metaobjects-1.1.0/src/metaobjects/runtime/validator_runner.py +452 -0
  102. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/serializer_json.py +88 -14
  103. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/shared/base_types.py +7 -0
  104. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/spec_metamodel/__init__.py +1 -0
  105. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/spec_metamodel/db.json +2 -2
  106. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/spec_metamodel/object.json +18 -0
  107. metaobjects-1.1.0/src/metaobjects/spec_metamodel/reporting.json +45 -0
  108. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/super_resolve.py +73 -111
  109. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/yaml_desugar.py +7 -74
  110. metaobjects-1.1.0/tests/codegen/config_helpers.py +116 -0
  111. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_api_docs_paths.py +1 -1
  112. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_cli.py +72 -68
  113. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_cli_config_gen.py +17 -13
  114. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_cli_config_verify.py +64 -55
  115. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_cli_dependencies.py +10 -11
  116. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_cli_gen_unknown_attr.py +3 -2
  117. metaobjects-1.1.0/tests/codegen/test_cli_help_removed_flags.py +15 -0
  118. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_cli_providers.py +9 -8
  119. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_cli_registry.py +14 -12
  120. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_cli_render_helper_template_root.py +21 -20
  121. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_cli_staleness_nudge.py +6 -5
  122. metaobjects-1.1.0/tests/codegen/test_cli_surface.py +76 -0
  123. metaobjects-1.1.0/tests/codegen/test_cli_verify_field_lint.py +101 -0
  124. metaobjects-1.1.0/tests/codegen/test_cli_verify_requirements.py +481 -0
  125. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_cli_verify_strict.py +7 -6
  126. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_cli_verify_subverbs.py +15 -16
  127. metaobjects-1.1.0/tests/codegen/test_collection_name_collision.py +109 -0
  128. metaobjects-1.1.0/tests/codegen/test_config_run_settings.py +325 -0
  129. metaobjects-1.1.0/tests/codegen/test_cross_package_binding_conformance.py +109 -0
  130. metaobjects-1.1.0/tests/codegen/test_docs_generators.py +225 -0
  131. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_eject.py +116 -2
  132. metaobjects-1.1.0/tests/codegen/test_eject_alone.py +225 -0
  133. metaobjects-1.1.0/tests/codegen/test_eject_independence.py +227 -0
  134. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_eject_runtime.py +23 -9
  135. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_fr010_nested_object_prompt.py +1 -1
  136. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_fr010_output_codegen.py +1 -1
  137. metaobjects-1.1.0/tests/codegen/test_fr019_shared_provided_conformance.py +294 -0
  138. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_gen_state_keying.py +4 -3
  139. metaobjects-1.1.0/tests/codegen/test_hand_edits.py +167 -0
  140. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_m2m_codegen.py +28 -7
  141. metaobjects-1.1.0/tests/codegen/test_moved_modules.py +57 -0
  142. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_names_generator.py +49 -30
  143. metaobjects-1.1.0/tests/codegen/test_one_generator_list.py +449 -0
  144. metaobjects-1.1.0/tests/codegen/test_orphan_sweep.py +257 -0
  145. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_overwrite_policy_hash.py +27 -0
  146. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_project_config.py +147 -3
  147. metaobjects-1.1.0/tests/codegen/test_project_import.py +323 -0
  148. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_projection_compile.py +31 -3
  149. metaobjects-1.1.0/tests/codegen/test_projection_docs_routes.py +56 -0
  150. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_render_helper_generator.py +39 -13
  151. metaobjects-1.1.0/tests/codegen/test_report_router.py +296 -0
  152. metaobjects-1.1.0/tests/codegen/test_requirement_tests_generator.py +797 -0
  153. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_reverse_finders.py +1 -1
  154. metaobjects-1.1.0/tests/codegen/test_route_path_naming.py +149 -0
  155. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_router_autoset.py +1 -1
  156. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_router_generator.py +24 -9
  157. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_router_generator_m2m_target_tph.py +2 -2
  158. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_router_generator_tph_m2m.py +4 -4
  159. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_router_generator_tph_m2m_shadowed.py +4 -4
  160. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_runner.py +21 -0
  161. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_template_data.py +1 -1
  162. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_tph_codegen.py +2 -2
  163. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/config/test_dependencies.py +2 -0
  164. metaobjects-1.1.0/tests/config/test_neutral_config_unknown_key.py +22 -0
  165. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/conformance_adapter.py +8 -1
  166. metaobjects-1.1.0/tests/conformance/eject_contract.py +78 -0
  167. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_api_docs_cross_port_conformance.py +14 -25
  168. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_conformance.py +6 -0
  169. metaobjects-1.1.0/tests/conformance/test_conformance_twin_roundtrip.py +122 -0
  170. metaobjects-1.1.0/tests/conformance/test_eject_contract.py +342 -0
  171. metaobjects-1.1.0/tests/conformance/test_field_lint_conformance.py +49 -0
  172. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_generator_registry_conformance.py +5 -1
  173. metaobjects-1.1.0/tests/conformance/test_naming_conformance.py +94 -0
  174. metaobjects-1.1.0/tests/conformance/test_requirement_check_conformance.py +132 -0
  175. metaobjects-1.1.0/tests/conformance/test_requirement_test_identity_conformance.py +172 -0
  176. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_source_resolution_conformance.py +25 -19
  177. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_yaml_conformance.py +2 -0
  178. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/api_contract_assertions.py +21 -5
  179. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/api_contract_jsonb_server.py +132 -10
  180. metaobjects-1.1.0/tests/integration/conftest.py +22 -0
  181. metaobjects-1.1.0/tests/integration/engines.py +87 -0
  182. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/generated_m2m_app.py +16 -4
  183. metaobjects-1.1.0/tests/integration/generated_projection_app.py +264 -0
  184. metaobjects-1.1.0/tests/integration/generated_report_app.py +233 -0
  185. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/generated_router_app.py +3 -0
  186. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/generated_tph_app.py +21 -4
  187. metaobjects-1.1.0/tests/integration/mysql_container.py +176 -0
  188. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/normalization.py +15 -10
  189. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/query_runner.py +100 -21
  190. metaobjects-1.1.0/tests/integration/report_lane.py +146 -0
  191. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/scenarios.py +27 -0
  192. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/test_api_contract.py +1 -1
  193. metaobjects-1.1.0/tests/integration/test_api_contract_decimal.py +139 -0
  194. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/test_api_contract_generated.py +1 -1
  195. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/test_api_contract_jsonb.py +1 -1
  196. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/test_api_contract_m2m.py +1 -1
  197. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/test_api_contract_m2m_generated.py +1 -1
  198. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/test_api_contract_projection.py +6 -5
  199. metaobjects-1.1.0/tests/integration/test_api_contract_report.py +171 -0
  200. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/test_api_contract_tph_generated.py +1 -1
  201. metaobjects-1.1.0/tests/integration/test_generated_decimal_wire.py +344 -0
  202. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/test_llm_call_trace.py +5 -0
  203. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/test_m2m_target_tph_generated.py +1 -1
  204. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/test_normalization.py +12 -0
  205. metaobjects-1.1.0/tests/integration/test_query_scenarios.py +83 -0
  206. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/test_runtime_return_types.py +6 -1
  207. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/test_tph_m2m_generated.py +1 -1
  208. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/test_tph_m2m_shadowed_generated.py +1 -1
  209. metaobjects-1.1.0/tests/loader/test_library_packages.py +24 -0
  210. metaobjects-1.1.0/tests/loader/test_naming_discovery.py +104 -0
  211. metaobjects-1.1.0/tests/loader/test_relative_package_multi_root.py +45 -0
  212. metaobjects-1.1.0/tests/render/test_render_model_payload.py +129 -0
  213. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/render/test_verify_conformance.py +10 -2
  214. metaobjects-1.1.0/tests/runtime/test_decimal_wire.py +187 -0
  215. metaobjects-1.1.0/tests/runtime/test_literal_naming_sqlite.py +57 -0
  216. metaobjects-1.1.0/tests/runtime/test_object_manager_dialects.py +417 -0
  217. metaobjects-1.1.0/tests/runtime/test_object_manager_report.py +314 -0
  218. metaobjects-1.1.0/tests/runtime/test_validation_conformance_runtime.py +45 -0
  219. metaobjects-1.1.0/tests/runtime/test_validator_runner.py +509 -0
  220. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/test_api_docs_accuracy.py +114 -0
  221. metaobjects-1.1.0/tests/test_api_docs_packages.py +64 -0
  222. metaobjects-1.1.0/tests/test_report_read_model.py +217 -0
  223. metaobjects-1.1.0/tests/test_report_shape.py +879 -0
  224. metaobjects-1.1.0/tests/test_reporting_inert.py +228 -0
  225. metaobjects-1.1.0/tests/unit/__init__.py +0 -0
  226. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_column_naming_strategy.py +32 -13
  227. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_effective_package.py +3 -1
  228. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_fr016_source_name_and_kind_aliases.py +33 -0
  229. metaobjects-1.1.0/tests/unit/test_inherited_reference_binding.py +37 -0
  230. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_n2m_resolver.py +8 -1
  231. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_object_manager_autoset_stamping.py +5 -0
  232. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_object_manager_write_through.py +5 -0
  233. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_registry_completeness.py +12 -0
  234. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_relationship_references.py +19 -11
  235. metaobjects-1.1.0/tests/unit/test_reporting_accessors.py +454 -0
  236. metaobjects-1.1.0/tests/unit/test_reporting_validation_spine_default.py +875 -0
  237. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_resolution_key.py +13 -0
  238. metaobjects-1.1.0/tests/unit/test_resolve_claim.py +47 -0
  239. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_super_resolve.py +2 -2
  240. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_template_toolcall.py +1 -1
  241. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_validation_filter_values.py +51 -0
  242. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_yaml_desugar.py +26 -0
  243. {metaobjects-1.0.12 → metaobjects-1.1.0}/uv.lock +17 -2
  244. metaobjects-1.0.12/src/metaobjects/codegen/instance_artifacts.py +0 -43
  245. metaobjects-1.0.12/src/metaobjects/codegen/metaobjects-config.schema.json +0 -52
  246. metaobjects-1.0.12/src/metaobjects/codegen/project_config.py +0 -214
  247. metaobjects-1.0.12/src/metaobjects/codegen/runtime/__init__.py +0 -9
  248. metaobjects-1.0.12/src/metaobjects/meta/meta_root.py +0 -8
  249. metaobjects-1.0.12/src/metaobjects/meta/presentation/view/view_constants.py +0 -22
  250. metaobjects-1.0.12/src/metaobjects/naming.py +0 -144
  251. metaobjects-1.0.12/src/metaobjects/naming_refs.py +0 -246
  252. metaobjects-1.0.12/tests/codegen/test_fr019_shared_provided_conformance.py +0 -99
  253. metaobjects-1.0.12/tests/codegen/test_route_path_naming.py +0 -67
  254. metaobjects-1.0.12/tests/integration/generated_projection_app.py +0 -194
  255. metaobjects-1.0.12/tests/integration/test_query_scenarios.py +0 -38
  256. metaobjects-1.0.12/tests/render/test_render_model_payload.py +0 -53
  257. {metaobjects-1.0.12 → metaobjects-1.1.0}/.gitignore +0 -0
  258. {metaobjects-1.0.12 → metaobjects-1.1.0}/LICENSE +0 -0
  259. {metaobjects-1.0.12 → metaobjects-1.1.0}/hatch_build.py +0 -0
  260. {metaobjects-1.0.12 → metaobjects-1.1.0}/scripts/generate_embedded_library.py +0 -0
  261. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/__init__.py +0 -0
  262. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/agent_context/__init__.py +0 -0
  263. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/agent_context/scaffold.py +0 -0
  264. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/attr_class_map.py +0 -0
  265. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/KNOWN_GAPS.md +0 -0
  266. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/__init__.py +0 -0
  267. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/collision_names.py +0 -0
  268. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/constants.py +0 -0
  269. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/format.py +0 -0
  270. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/generators/__init__.py +0 -0
  271. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/generators/names_generator.py +0 -0
  272. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/generators/template_generator.py +0 -0
  273. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/generators/tph_plan.py +0 -0
  274. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/model_walk.py +0 -0
  275. /metaobjects-1.0.12/src/metaobjects/apidocs/paths.py → /metaobjects-1.1.0/src/metaobjects/codegen/runtime/api_docs_paths.py +0 -0
  276. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/runtime/constraint_errors.py +0 -0
  277. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/runtime/filter_parser.py +0 -0
  278. {metaobjects-1.0.12/src/metaobjects/codegen → metaobjects-1.1.0/src/metaobjects/codegen/runtime}/fr010_field_mapping.py +0 -0
  279. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/template_codegen/__init__.py +0 -0
  280. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/template_codegen/output_pattern.py +0 -0
  281. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/template_codegen/template_data.py +0 -0
  282. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/template_codegen/template_spec.py +0 -0
  283. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/codegen/type_map.py +0 -0
  284. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/config/__init__.py +0 -0
  285. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/datatype.py +0 -0
  286. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/documentation/__init__.py +0 -0
  287. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/documentation/doc_constants.py +0 -0
  288. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/documentation/doc_provider.py +0 -0
  289. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/documentation/doc_schema.py +0 -0
  290. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/library/embedded_library.py +0 -0
  291. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/loader/__init__.py +0 -0
  292. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/loader/merge.py +0 -0
  293. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/loader/sources/__init__.py +0 -0
  294. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/loader/sources/directory_source.py +0 -0
  295. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/loader/sources/file_source.py +0 -0
  296. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/loader/sources/meta_data_source.py +0 -0
  297. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/loader/sources/uri_source.py +0 -0
  298. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/loader/validate_discriminator.py +0 -0
  299. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/loader/validate_enum_normalize_ambiguity.py +0 -0
  300. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/loader/validate_field_mutability.py +0 -0
  301. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/loader/validate_source_escapes.py +0 -0
  302. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/loader/validate_source_physical_names.py +0 -0
  303. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/__init__.py +0 -0
  304. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/__init__.py +0 -0
  305. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/attr/__init__.py +0 -0
  306. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/attr/attr_constants.py +0 -0
  307. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/field/__init__.py +0 -0
  308. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/field/field_constants.py +0 -0
  309. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/identity/__init__.py +0 -0
  310. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/identity/identity_constants.py +0 -0
  311. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/identity/meta_identity.py +0 -0
  312. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/index/__init__.py +0 -0
  313. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/index/index_constants.py +0 -0
  314. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/index/meta_index.py +0 -0
  315. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/object/__init__.py +0 -0
  316. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/object/meta_object.py +0 -0
  317. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/object/meta_object_aware.py +0 -0
  318. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/object/object_class_registry.py +0 -0
  319. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/object/value_object.py +0 -0
  320. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/relationship/__init__.py +0 -0
  321. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/relationship/meta_relationship.py +0 -0
  322. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/relationship/relationship_constants.py +0 -0
  323. {metaobjects-1.0.12/src/metaobjects/meta/core/requirement → metaobjects-1.1.0/src/metaobjects/meta/core/reporting}/__init__.py +0 -0
  324. {metaobjects-1.0.12/src/metaobjects/meta/core/validator → metaobjects-1.1.0/src/metaobjects/meta/core/requirement}/__init__.py +0 -0
  325. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/requirement/requirement_constants.py +0 -0
  326. {metaobjects-1.0.12/src/metaobjects/meta/persistence → metaobjects-1.1.0/src/metaobjects/meta/core/validator}/__init__.py +0 -0
  327. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/core/validator/validator_constants.py +0 -0
  328. {metaobjects-1.0.12/src/metaobjects/meta/persistence/origin → metaobjects-1.1.0/src/metaobjects/meta/persistence}/__init__.py +0 -0
  329. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/persistence/db/__init__.py +0 -0
  330. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/persistence/db/db_constants.py +0 -0
  331. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/persistence/db/db_provider.py +0 -0
  332. {metaobjects-1.0.12/src/metaobjects/meta/persistence/source → metaobjects-1.1.0/src/metaobjects/meta/persistence/origin}/__init__.py +0 -0
  333. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/persistence/origin/meta_origin.py +0 -0
  334. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/persistence/origin/origin_constants.py +0 -0
  335. {metaobjects-1.0.12/src/metaobjects/meta/presentation → metaobjects-1.1.0/src/metaobjects/meta/persistence/source}/__init__.py +0 -0
  336. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/persistence/source/source_constants.py +0 -0
  337. {metaobjects-1.0.12/src/metaobjects/meta/presentation/layout → metaobjects-1.1.0/src/metaobjects/meta/presentation}/__init__.py +0 -0
  338. {metaobjects-1.0.12/src/metaobjects/meta/presentation/ui → metaobjects-1.1.0/src/metaobjects/meta/presentation/layout}/__init__.py +0 -0
  339. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/presentation/layout/layout_constants.py +0 -0
  340. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/presentation/layout/meta_layout.py +0 -0
  341. {metaobjects-1.0.12/src/metaobjects/meta/presentation/view → metaobjects-1.1.0/src/metaobjects/meta/presentation/ui}/__init__.py +0 -0
  342. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/presentation/ui/ui_provider.py +0 -0
  343. {metaobjects-1.0.12/src/metaobjects/meta/template → metaobjects-1.1.0/src/metaobjects/meta/presentation/view}/__init__.py +0 -0
  344. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/presentation/view/meta_view.py +0 -0
  345. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/provider_extends.py +0 -0
  346. {metaobjects-1.0.12/src/metaobjects/shared → metaobjects-1.1.0/src/metaobjects/meta/template}/__init__.py +0 -0
  347. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/template/meta_template.py +0 -0
  348. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/template/prompt_provider.py +0 -0
  349. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta/template/template_constants.py +0 -0
  350. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/meta_endpoint.py +0 -0
  351. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/parser_yaml.py +0 -0
  352. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/provider.py +0 -0
  353. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/py.typed +0 -0
  354. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/registry.py +0 -0
  355. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/__init__.py +0 -0
  356. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/email_document.py +0 -0
  357. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/escapers.py +0 -0
  358. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/extract/KNOWN_GAPS.md +0 -0
  359. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/extract/__init__.py +0 -0
  360. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/extract/coerce.py +0 -0
  361. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/extract/extract.py +0 -0
  362. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/extract/extract_map.py +0 -0
  363. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/extract/json_forgiving_reader.py +0 -0
  364. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/extract/locate.py +0 -0
  365. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/extract/normalize.py +0 -0
  366. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/extract/strip.py +0 -0
  367. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/extract/types.py +0 -0
  368. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/extract/xml_forgiving_reader.py +0 -0
  369. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/filesystem_provider.py +0 -0
  370. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/prompt/__init__.py +0 -0
  371. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/prompt/output_format_renderer.py +0 -0
  372. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/prompt/output_format_spec.py +0 -0
  373. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/prompt/prompt_field.py +0 -0
  374. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/prompt/prompt_overrides.py +0 -0
  375. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/prompt/prompt_style.py +0 -0
  376. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/render/renderer.py +0 -0
  377. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/runtime/llm_recorder.py +0 -0
  378. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/runtime/tph.py +0 -0
  379. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/scope.py +0 -0
  380. {metaobjects-1.0.12/tests → metaobjects-1.1.0/src/metaobjects/shared}/__init__.py +0 -0
  381. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/shared/separators.py +0 -0
  382. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/shared/structural.py +0 -0
  383. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/source/__init__.py +0 -0
  384. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/source/error_source.py +0 -0
  385. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/source/json_path.py +0 -0
  386. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/source/semantic_diff.py +0 -0
  387. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/source/yaml_positions.py +0 -0
  388. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/source_resolution.py +0 -0
  389. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/spec_metamodel/attr.json +0 -0
  390. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/spec_metamodel/documentation.json +0 -0
  391. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/spec_metamodel/field.json +0 -0
  392. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/spec_metamodel/identity.json +0 -0
  393. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/spec_metamodel/index.json +0 -0
  394. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/spec_metamodel/layout.json +0 -0
  395. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/spec_metamodel/origin.json +0 -0
  396. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/spec_metamodel/prompt.json +0 -0
  397. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/spec_metamodel/relationship.json +0 -0
  398. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/spec_metamodel/requirement.json +0 -0
  399. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/spec_metamodel/source.json +0 -0
  400. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/spec_metamodel/template.json +0 -0
  401. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/spec_metamodel/ui-web.json +0 -0
  402. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/spec_metamodel/ui.json +0 -0
  403. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/spec_metamodel/validator.json +0 -0
  404. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/spec_metamodel/view.json +0 -0
  405. {metaobjects-1.0.12 → metaobjects-1.1.0}/src/metaobjects/validation_types.py +0 -0
  406. {metaobjects-1.0.12/tests/codegen → metaobjects-1.1.0/tests}/__init__.py +0 -0
  407. {metaobjects-1.0.12/tests/config → metaobjects-1.1.0/tests/codegen}/__init__.py +0 -0
  408. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/gen_suite.py +0 -0
  409. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/golden/extends/expected/BaseEntity.py +0 -0
  410. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/golden/extends/expected/Program.py +0 -0
  411. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/golden/extends/meta.json +0 -0
  412. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/golden/nested-array/expected/AuthorBrief.py +0 -0
  413. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/golden/nested-array/expected/PostBrief.py +0 -0
  414. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/golden/nested-array/meta.json +0 -0
  415. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/golden/scalars/expected/Metric.py +0 -0
  416. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/golden/scalars/expected/Report.py +0 -0
  417. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/golden/scalars/meta.json +0 -0
  418. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/golden/vanilla/expected/Subscriber.py +0 -0
  419. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/golden/vanilla/meta.json +0 -0
  420. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_abstract_conformance.py +0 -0
  421. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_api_docs_builder.py +0 -0
  422. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_cli_fmt.py +0 -0
  423. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_codegen_compile_conformance.py +0 -0
  424. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_constants_config.py +0 -0
  425. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_entity_model.py +0 -0
  426. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_enum_conformance.py +0 -0
  427. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_extends_abstract_field_inheritance.py +0 -0
  428. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_extract_tier_collision.py +0 -0
  429. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_extractor_generator.py +0 -0
  430. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_filter_allowlist_generator.py +0 -0
  431. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_fmt_format_file.py +0 -0
  432. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_format.py +0 -0
  433. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_generator.py +0 -0
  434. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_generator_extension_seams.py +0 -0
  435. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_golden.py +0 -0
  436. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_inherit_without_restate_gate.py +0 -0
  437. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_inheritance_conformance.py +0 -0
  438. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_instance_artifacts.py +0 -0
  439. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_names_extends_chain.py +0 -0
  440. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_no_magic_physical_names.py +0 -0
  441. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_origin_nullability.py +0 -0
  442. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_output_parser_generator.py +0 -0
  443. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_overwrite_policy.py +0 -0
  444. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_recipe_generators.py +0 -0
  445. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_render_helper_conformance.py +0 -0
  446. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_source_resolution.py +0 -0
  447. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_sourceless_entity_surface.py +0 -0
  448. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_sourceless_projection.py +0 -0
  449. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_template_generator.py +0 -0
  450. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_template_output_pattern.py +0 -0
  451. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_template_scope_helpers.py +0 -0
  452. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_template_scope_walk.py +0 -0
  453. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_template_spec.py +0 -0
  454. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_trace_helper_generator.py +0 -0
  455. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_type_map.py +0 -0
  456. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_validation_conformance.py +0 -0
  457. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_value_objects.py +0 -0
  458. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/codegen/test_write_through.py +0 -0
  459. {metaobjects-1.0.12/tests/conformance → metaobjects-1.1.0/tests/config}/__init__.py +0 -0
  460. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/config/test_library_package_guard.py +0 -0
  461. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/config/test_neutral_config.py +0 -0
  462. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/config/test_source_resolver.py +0 -0
  463. {metaobjects-1.0.12/tests/integration → metaobjects-1.1.0/tests/conformance}/__init__.py +0 -0
  464. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/capabilities.py +0 -0
  465. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/conformance-expected-failures.json +0 -0
  466. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/corpus.py +0 -0
  467. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/expected_failures.py +0 -0
  468. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/fixture_discovery.py +0 -0
  469. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/navigator.py +0 -0
  470. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_dependency_conformance.py +0 -0
  471. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_extract_conformance.py +0 -0
  472. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_extract_object_array_bounds.py +0 -0
  473. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_extract_object_verdict.py +0 -0
  474. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_fmt_conformance.py +0 -0
  475. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_fr010_loader_attrs.py +0 -0
  476. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_fr011_attrs.py +0 -0
  477. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_object_model_conformance.py +0 -0
  478. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_provider_composition_conformance.py +0 -0
  479. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_registry_conformance.py +0 -0
  480. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_runner_hardfail.py +0 -0
  481. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_scope_conformance.py +0 -0
  482. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_spec_metamodel_embed.py +0 -0
  483. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_strict_attr_load.py +0 -0
  484. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_template_codegen_conformance.py +0 -0
  485. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/test_template_generator_conformance.py +0 -0
  486. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/conformance/yaml-conformance-expected-failures.json +0 -0
  487. {metaobjects-1.0.12/tests/loader → metaobjects-1.1.0/tests/integration}/__init__.py +0 -0
  488. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/api_contract_m2m_server.py +0 -0
  489. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/api_contract_server.py +0 -0
  490. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/generated_jsonb_app.py +0 -0
  491. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/meta_ai_trace.yaml +0 -0
  492. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/postgres_container.py +0 -0
  493. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/integration/test_generated_router_uuid_pk.py +0 -0
  494. {metaobjects-1.0.12/tests/render → metaobjects-1.1.0/tests/loader}/__init__.py +0 -0
  495. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/loader/test_abstract_subtype_authored.py +0 -0
  496. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/loader/test_child_wrapper_body_shape.py +0 -0
  497. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/loader/test_enum_extends_values_conflict.py +0 -0
  498. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/loader/test_field_mutability_order.py +0 -0
  499. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/loader/test_shipped_library_ai.py +0 -0
  500. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/loader/test_template_payload_target_210.py +0 -0
  501. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/open_closed_proof_test.py +0 -0
  502. {metaobjects-1.0.12/tests/render/extract → metaobjects-1.1.0/tests/render}/__init__.py +0 -0
  503. {metaobjects-1.0.12/tests/render/prompt → metaobjects-1.1.0/tests/render/extract}/__init__.py +0 -0
  504. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/render/extract/test_coerce.py +0 -0
  505. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/render/extract/test_extract.py +0 -0
  506. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/render/extract/test_extract_map.py +0 -0
  507. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/render/extract/test_json_forgiving_reader.py +0 -0
  508. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/render/extract/test_locate.py +0 -0
  509. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/render/extract/test_model.py +0 -0
  510. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/render/extract/test_normalize.py +0 -0
  511. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/render/extract/test_strip.py +0 -0
  512. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/render/extract/test_xml_forgiving_reader.py +0 -0
  513. {metaobjects-1.0.12/tests/source → metaobjects-1.1.0/tests/render/prompt}/__init__.py +0 -0
  514. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/render/prompt/test_output_format_renderer.py +0 -0
  515. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/render/test_email_document.py +0 -0
  516. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/render/test_filesystem_provider.py +0 -0
  517. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/render/test_output_format_renderer_nested.py +0 -0
  518. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/render/test_output_prompt_conformance.py +0 -0
  519. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/render/test_render_conformance.py +0 -0
  520. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/render/test_render_max_chars.py +0 -0
  521. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/render/test_verify.py +0 -0
  522. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/runtime/test_constraint_errors.py +0 -0
  523. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/runtime/test_object_manager_currency_read.py +0 -0
  524. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/runtime/test_object_manager_enum_intvaluemap.py +0 -0
  525. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/runtime/test_object_manager_table_name.py +0 -0
  526. {metaobjects-1.0.12/tests/unit → metaobjects-1.1.0/tests/source}/__init__.py +0 -0
  527. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/source/test_fr5c_merge_attribution.py +0 -0
  528. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/source/test_fr5d_reference_resolution.py +0 -0
  529. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/source/test_fr5e_database_source_shape.py +0 -0
  530. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/source/test_json_path.py +0 -0
  531. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/source/test_semantic_diff.py +0 -0
  532. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/source/test_source_on_node.py +0 -0
  533. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/source/test_yaml_positions.py +0 -0
  534. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/test_meta_endpoint.py +0 -0
  535. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_agent_context_staleness.py +0 -0
  536. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_capabilities.py +0 -0
  537. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_common_attrs.py +0 -0
  538. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_core_types.py +0 -0
  539. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_derive_m2m_declaring_entity.py +0 -0
  540. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_effective_children_sibling_shadowing.py +0 -0
  541. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_errors.py +0 -0
  542. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_field_enum.py +0 -0
  543. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_field_enum_intvaluemap.py +0 -0
  544. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_field_map_validation.py +0 -0
  545. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_field_uuid_dbcolumntype.py +0 -0
  546. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_file_source_id.py +0 -0
  547. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_index_lookup.py +0 -0
  548. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_llm_recorder.py +0 -0
  549. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_loader.py +0 -0
  550. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_loader_bom.py +0 -0
  551. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_loader_class.py +0 -0
  552. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_merge.py +0 -0
  553. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_meta_attr.py +0 -0
  554. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_meta_data.py +0 -0
  555. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_meta_source.py +0 -0
  556. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_module_shortcuts.py +0 -0
  557. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_n2m_resolver_inherited.py +0 -0
  558. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_no_dead_config_fields.py +0 -0
  559. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_object_manager_uuid_coercion.py +0 -0
  560. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_one_primary_source.py +0 -0
  561. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_parser.py +0 -0
  562. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_parser_yaml.py +0 -0
  563. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_provider.py +0 -0
  564. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_provider_extension.py +0 -0
  565. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_registry.py +0 -0
  566. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_registry_extend.py +0 -0
  567. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_registry_sealed.py +0 -0
  568. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_relationship_m2m_validation.py +0 -0
  569. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_relationship_referential_actions.py +0 -0
  570. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_runtime_resolution_key_binding.py +0 -0
  571. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_serializer.py +0 -0
  572. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_serializer_shared_document.py +0 -0
  573. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_shared_constants.py +0 -0
  574. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_smoke.py +0 -0
  575. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_source_escapes.py +0 -0
  576. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_sources.py +0 -0
  577. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_strict_child_placement.py +0 -0
  578. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_template_wrong_subtype_attrs.py +0 -0
  579. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_validation_attr_schema.py +0 -0
  580. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_validation_origin_195.py +0 -0
  581. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_validation_origin_paths.py +0 -0
  582. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_validation_sort_field.py +0 -0
  583. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_validation_warnings.py +0 -0
  584. {metaobjects-1.0.12 → metaobjects-1.1.0}/tests/unit/test_write_coercion_arrays.py +0 -0
@@ -1,11 +1,12 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: metaobjects
3
- Version: 1.0.12
3
+ Version: 1.1.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
7
7
  Project-URL: Documentation, https://github.com/metaobjectsdev/metaobjects/tree/main/docs
8
8
  Project-URL: Issues, https://github.com/metaobjectsdev/metaobjects/issues
9
+ Project-URL: Changelog, https://github.com/metaobjectsdev/metaobjects/blob/main/CHANGELOG.md
9
10
  Author-email: Doug Mealing <doug@metaobjects.com>
10
11
  License-Expression: Apache-2.0
11
12
  License-File: LICENSE
@@ -31,6 +32,9 @@ Provides-Extra: integration
31
32
  Requires-Dist: fastapi>=0.110; extra == 'integration'
32
33
  Requires-Dist: httpx>=0.27; extra == 'integration'
33
34
  Requires-Dist: pg8000>=1.31; extra == 'integration'
35
+ Requires-Dist: pymysql>=1.1; extra == 'integration'
36
+ Provides-Extra: mysql
37
+ Requires-Dist: pymysql>=1.1; extra == 'mysql'
34
38
  Description-Content-Type: text/markdown
35
39
 
36
40
  # MetaObjects (Python)
@@ -80,10 +84,22 @@ The primary public API is the **loader** (`load_directory` / `load_uris` /
80
84
  distribution also ships the Python implementations of the other pillars used by the CLI
81
85
  and tooling: `codegen` (Pydantic + FastAPI emit — reference generators you own:
82
86
  `metaobjects eject <name>` copies one into your repo), `render` (Mustache + payload-VO +
83
- verify), and `runtime` (a DB-API 2 `ObjectManager` — pg8000 / psycopg — no SQLAlchemy).
87
+ verify), and `runtime` (a DB-API 2 `ObjectManager` — pg8000 / psycopg on Postgres, the standard library's `sqlite3` on SQLite, PyMySQL on MySQL 8 (`pip install metaobjects[mysql]`) — no SQLAlchemy).
84
88
  Schema migrations are owned by the TypeScript `meta` CLI (ADR-0015); there is
85
89
  **no `migrate` module** in this distribution.
86
90
 
91
+ ### Physical names
92
+
93
+ Table and column names are one project setting, `naming` in `.metaobjects/config.json`
94
+ (`columns` and `tables`, each `snake_case` by default or `literal`). `metaobjects gen` and
95
+ `verify` read it, and so do `load_directory`, `load_uris` and `load_string(..., project_dir=...)`:
96
+ they search upward from the metadata directory for that file, so the `ObjectManager` queries the
97
+ names the code was generated for. If you keep a database whose columns are named exactly like the
98
+ fields, add `"naming": { "columns": "literal" }`. With no config file found the loader warns once
99
+ and uses `snake_case`; `metaobjects.naming.attach_naming(root, project_dir)` sets it explicitly and
100
+ wins. See [the upgrade guide](../../docs/features/migrations/upgrading-1.0-to-1.1.md) and
101
+ [physical naming](../../docs/features/migrations/physical-naming.md).
102
+
87
103
  ## Authoring formats
88
104
 
89
105
  - **Canonical JSON** (`*.json`) — the cross-language interchange shape.
@@ -45,10 +45,22 @@ The primary public API is the **loader** (`load_directory` / `load_uris` /
45
45
  distribution also ships the Python implementations of the other pillars used by the CLI
46
46
  and tooling: `codegen` (Pydantic + FastAPI emit — reference generators you own:
47
47
  `metaobjects eject <name>` copies one into your repo), `render` (Mustache + payload-VO +
48
- verify), and `runtime` (a DB-API 2 `ObjectManager` — pg8000 / psycopg — no SQLAlchemy).
48
+ verify), and `runtime` (a DB-API 2 `ObjectManager` — pg8000 / psycopg on Postgres, the standard library's `sqlite3` on SQLite, PyMySQL on MySQL 8 (`pip install metaobjects[mysql]`) — no SQLAlchemy).
49
49
  Schema migrations are owned by the TypeScript `meta` CLI (ADR-0015); there is
50
50
  **no `migrate` module** in this distribution.
51
51
 
52
+ ### Physical names
53
+
54
+ Table and column names are one project setting, `naming` in `.metaobjects/config.json`
55
+ (`columns` and `tables`, each `snake_case` by default or `literal`). `metaobjects gen` and
56
+ `verify` read it, and so do `load_directory`, `load_uris` and `load_string(..., project_dir=...)`:
57
+ they search upward from the metadata directory for that file, so the `ObjectManager` queries the
58
+ names the code was generated for. If you keep a database whose columns are named exactly like the
59
+ fields, add `"naming": { "columns": "literal" }`. With no config file found the loader warns once
60
+ and uses `snake_case`; `metaobjects.naming.attach_naming(root, project_dir)` sets it explicitly and
61
+ wins. See [the upgrade guide](../../docs/features/migrations/upgrading-1.0-to-1.1.md) and
62
+ [physical naming](../../docs/features/migrations/physical-naming.md).
63
+
52
64
  ## Authoring formats
53
65
 
54
66
  - **Canonical JSON** (`*.json`) — the cross-language interchange shape.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "metaobjects"
3
- version = "1.0.12"
3
+ version = "1.1.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"
@@ -47,6 +47,7 @@ Homepage = "https://metaobjects.dev"
47
47
  Repository = "https://github.com/metaobjectsdev/metaobjects"
48
48
  Documentation = "https://github.com/metaobjectsdev/metaobjects/tree/main/docs"
49
49
  Issues = "https://github.com/metaobjectsdev/metaobjects/issues"
50
+ Changelog = "https://github.com/metaobjectsdev/metaobjects/blob/main/CHANGELOG.md"
50
51
 
51
52
  [project.optional-dependencies]
52
53
  dev = ["pytest>=8", "mypy>=1.10", "ruff>=0.6", "pydantic>=2"]
@@ -56,7 +57,16 @@ dev = ["pytest>=8", "mypy>=1.10", "ruff>=0.6", "pydantic>=2"]
56
57
  # TS/Java pattern of bypassing testcontainers wrappers entirely); the
57
58
  # api-contract harness drives a FastAPI Author API in-process via the
58
59
  # starlette TestClient (httpx).
59
- integration = ["pg8000>=1.31", "fastapi>=0.110", "httpx>=0.27"]
60
+ integration = ["pg8000>=1.31", "PyMySQL>=1.1", "fastapi>=0.110", "httpx>=0.27"]
61
+ # MySQL for the ObjectManager (`metaobjects.runtime.MySqlDriver`). PyMySQL is pure Python,
62
+ # so like pg8000 it installs without native build dependencies. SQLite needs nothing: the
63
+ # driver wraps the standard library's `sqlite3`.
64
+ mysql = ["PyMySQL>=1.1"]
65
+
66
+ [[tool.mypy.overrides]]
67
+ # PyMySQL ships no type information.
68
+ module = ["pymysql", "pymysql.*"]
69
+ ignore_missing_imports = true
60
70
 
61
71
  [build-system]
62
72
  requires = ["hatchling"]
@@ -19,7 +19,7 @@ from __future__ import annotations
19
19
  from typing import TYPE_CHECKING, Any
20
20
 
21
21
  # Path math is leaf-level (no generator imports) — safe to expose eagerly.
22
- from metaobjects.apidocs.paths import (
22
+ from metaobjects.codegen.runtime.api_docs_paths import (
23
23
  Layout,
24
24
  doc_page_output_path,
25
25
  model_cross_href,
@@ -28,7 +28,7 @@ from metaobjects.apidocs.paths import (
28
28
  )
29
29
 
30
30
  if TYPE_CHECKING: # pragma: no cover - import-time only for type checkers
31
- from metaobjects.apidocs.api_model import (
31
+ from metaobjects.codegen.runtime.api_docs_model import (
32
32
  ApiModel,
33
33
  ApiSymbol,
34
34
  ApiSymbolKind,
@@ -36,8 +36,8 @@ if TYPE_CHECKING: # pragma: no cover - import-time only for type checkers
36
36
  FieldShape,
37
37
  UnitExample,
38
38
  )
39
- from metaobjects.apidocs.builder import PythonApiModelBuilder, build_api_model
40
- from metaobjects.apidocs.renderer import (
39
+ from metaobjects.codegen.runtime.api_docs_builder import PythonApiModelBuilder, build_api_model
40
+ from metaobjects.codegen.runtime.api_docs_renderer import (
41
41
  PythonApiDocsRenderer,
42
42
  render_agent_api,
43
43
  render_index,
@@ -46,18 +46,18 @@ if TYPE_CHECKING: # pragma: no cover - import-time only for type checkers
46
46
 
47
47
  # Lazily-resolved exports → their defining submodule.
48
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",
49
+ "ApiModel": "api_docs_model",
50
+ "ApiSymbol": "api_docs_model",
51
+ "ApiSymbolKind": "api_docs_model",
52
+ "ApiUnit": "api_docs_model",
53
+ "FieldShape": "api_docs_model",
54
+ "UnitExample": "api_docs_model",
55
+ "PythonApiModelBuilder": "api_docs_builder",
56
+ "build_api_model": "api_docs_builder",
57
+ "PythonApiDocsRenderer": "api_docs_renderer",
58
+ "render_unit_page": "api_docs_renderer",
59
+ "render_index": "api_docs_renderer",
60
+ "render_agent_api": "api_docs_renderer",
61
61
  }
62
62
 
63
63
  __all__ = [
@@ -87,5 +87,5 @@ def __getattr__(name: str) -> Any:
87
87
  raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
88
88
  import importlib
89
89
 
90
- mod = importlib.import_module(f"{__name__}.{submodule}")
90
+ mod = importlib.import_module(f"metaobjects.codegen.runtime.{submodule}")
91
91
  return getattr(mod, name)
@@ -0,0 +1,4 @@
1
+ """Deprecated: moved to :mod:`metaobjects.codegen.runtime.api_docs_model`."""
2
+ from metaobjects.codegen._moved import alias
3
+
4
+ alias(__name__, "metaobjects.codegen.runtime.api_docs_model")
@@ -0,0 +1,4 @@
1
+ """Deprecated: moved to :mod:`metaobjects.codegen.runtime.api_docs_builder`."""
2
+ from metaobjects.codegen._moved import alias
3
+
4
+ alias(__name__, "metaobjects.codegen.runtime.api_docs_builder")
@@ -3,7 +3,7 @@ generated identifier the api-docs builder documents.
3
3
 
4
4
  This mirrors the Java ``SpringNaming`` / C# ``CSharpNaming`` pattern: the real
5
5
  generators delegate their name computation here, and the
6
- :class:`~metaobjects.apidocs.builder.PythonApiModelBuilder` enumerates symbols by
6
+ :class:`~metaobjects.codegen.runtime.api_docs_builder.PythonApiModelBuilder` enumerates symbols by
7
7
  calling the SAME functions. So the documented name can never drift from the
8
8
  emitted name — they are computed once, in one place.
9
9
 
@@ -74,6 +74,52 @@ def _route_snake_case(name: str) -> str:
74
74
  return to_snake_case(name)
75
75
 
76
76
 
77
+ _ALREADY_PLURAL_EXCLUDED_PRECEDING_CHARS = "suia"
78
+ """The four letters that precede a genuinely SINGULAR "...s" ending in the common
79
+ patterns this codebase's entity names hit — status, address, bonus, alias, gas,
80
+ analysis. Anything else before a final "s" reads as already-plural."""
81
+
82
+
83
+ def _is_already_plural(word: str) -> bool:
84
+ """True when ``word`` already reads as a plural noun, so running it through
85
+ the ordinary suffix rule would double it — the real defect this exists to
86
+ fix: ``program_purchase_stats`` -> ``program_purchase_statses`` shipped as a
87
+ REST collection path in an adopter's app.
88
+
89
+ Heuristic, not a dictionary: a word ending in ``s`` is already-plural UNLESS
90
+ the character immediately before that final ``s`` is one of s/u/i/a
91
+ (case-insensitive). Covers stats, settings, details, news, analytics,
92
+ series, photos; leaves status, address, bonus, alias, gas, analysis on the
93
+ ordinary suffix path (unchanged).
94
+
95
+ Known miss, deliberately not fixed here: a genuinely singular word ending in
96
+ "...s" with none of those four letters before it reads as already-plural too
97
+ — ``lens`` -> ``lens`` (correct plural ``lenses``). Fixing that needs a real
98
+ dictionary, which this is not; the heuristic optimizes for the shape the
99
+ doubling defect actually hits (entity names that are already a plural
100
+ concept)."""
101
+ if len(word) < 2:
102
+ return False
103
+ lowered = word.lower()
104
+ if lowered[-1] != "s":
105
+ return False
106
+ return lowered[-2] not in _ALREADY_PLURAL_EXCLUDED_PRECEDING_CHARS
107
+
108
+
109
+ def _pluralize_legacy_suffix_only(name: str) -> str:
110
+ """FROZEN — byte-for-byte the pre-fix suffix-only pluralization rule, with no
111
+ already-plural detection. Exposed only so :func:`pluralize` can fall back to
112
+ it. The DEFAULT PHYSICAL name fallback lives in a completely separate,
113
+ independently-frozen implementation (``meta_source._pluralize``) — this is
114
+ NOT that one, and the two must never be merged into a single call site."""
115
+ lowered = name.lower()
116
+ if lowered.endswith(("s", "x", "z", "ch", "sh")):
117
+ return name + "es"
118
+ if len(name) >= 2 and lowered[-1] == "y" and lowered[-2] not in "aeiou":
119
+ return name[:-1] + "ies"
120
+ return name + "s"
121
+
122
+
77
123
  def pluralize(name: str) -> str:
78
124
  """``post_category`` → ``post_categories``; ``address`` → ``addresses``.
79
125
 
@@ -82,13 +128,16 @@ def pluralize(name: str) -> str:
82
128
  ``y`` becomes ``ies``; anything else takes ``s``. The cross-port
83
129
  byte-identity covers the already-lowercased word :func:`route_path` feeds
84
130
  in — suffix tests here run on a lowercased copy, unlike the JVM port's
85
- case-sensitive ones, so mixed-case input may diverge."""
86
- lowered = name.lower()
87
- if lowered.endswith(("s", "x", "z", "ch", "sh")):
88
- return name + "es"
89
- if len(name) >= 2 and lowered[-1] == "y" and lowered[-2] not in "aeiou":
90
- return name[:-1] + "ies"
91
- return name + "s"
131
+ case-sensitive ones, so mixed-case input may diverge.
132
+
133
+ Adds already-plural detection (:func:`_is_already_plural`) on top of that
134
+ historical suffix rule (:func:`_pluralize_legacy_suffix_only`) — API/code-
135
+ surface pluralization only; the DEFAULT PHYSICAL table name fallback is
136
+ frozen separately (``meta_source._pluralize``), so an existing adopter
137
+ database never sees a proposed rename."""
138
+ if _is_already_plural(name):
139
+ return name
140
+ return _pluralize_legacy_suffix_only(name)
92
141
 
93
142
 
94
143
  def model_class_name(obj: MetaData) -> str:
@@ -0,0 +1,4 @@
1
+ """Deprecated: moved to :mod:`metaobjects.codegen.runtime.api_docs_paths`."""
2
+ from metaobjects.codegen._moved import alias
3
+
4
+ alias(__name__, "metaobjects.codegen.runtime.api_docs_paths")
@@ -0,0 +1,4 @@
1
+ """Deprecated: moved to :mod:`metaobjects.codegen.runtime.api_docs_renderer`."""
2
+ from metaobjects.codegen._moved import alias
3
+
4
+ alias(__name__, "metaobjects.codegen.runtime.api_docs_renderer")