metaobjects 0.24.5__tar.gz → 1.0.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 (444) hide show
  1. {metaobjects-0.24.5 → metaobjects-1.0.0}/PKG-INFO +1 -1
  2. {metaobjects-0.24.5 → metaobjects-1.0.0}/pyproject.toml +1 -1
  3. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/__init__.py +2 -0
  4. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/agent_context/scaffold.py +105 -21
  5. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/apidocs/builder.py +10 -4
  6. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/cli.py +411 -39
  7. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/KNOWN_GAPS.md +25 -0
  8. metaobjects-1.0.0/src/metaobjects/codegen/config.py +107 -0
  9. metaobjects-1.0.0/src/metaobjects/codegen/format.py +72 -0
  10. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generator_registry.py +8 -1
  11. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/entity_model.py +9 -3
  12. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/filter_allowlist_generator.py +2 -15
  13. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/m2m_codegen.py +37 -23
  14. metaobjects-1.0.0/src/metaobjects/codegen/generators/names_generator.py +551 -0
  15. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/router_generator.py +74 -25
  16. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/instance_artifacts.py +5 -2
  17. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/metaobjects-config.schema.json +5 -0
  18. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/overwrite_policy.py +69 -21
  19. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/project_config.py +32 -0
  20. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/runner.py +55 -3
  21. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/errors.py +7 -0
  22. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/meta_data.py +33 -6
  23. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/naming.py +46 -0
  24. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/parser.py +101 -2
  25. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/registry.py +8 -0
  26. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/registry_manifest.py +1 -1
  27. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/runtime/object_manager.py +28 -18
  28. metaobjects-1.0.0/src/metaobjects/source_resolution.py +125 -0
  29. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/attr.json +1 -1
  30. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/field.json +1 -1
  31. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/layout.json +1 -1
  32. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/object.json +1 -1
  33. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/origin.json +1 -1
  34. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/relationship.json +1 -1
  35. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/source.json +1 -1
  36. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/template.json +1 -1
  37. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/ui.json +2 -2
  38. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/validator.json +1 -1
  39. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/view.json +1 -1
  40. metaobjects-1.0.0/tests/codegen/test_cli.py +449 -0
  41. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_cli_config_verify.py +160 -3
  42. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_cli_registry.py +2 -2
  43. metaobjects-1.0.0/tests/codegen/test_format.py +85 -0
  44. metaobjects-1.0.0/tests/codegen/test_gen_state_keying.py +182 -0
  45. metaobjects-1.0.0/tests/codegen/test_m2m_codegen.py +383 -0
  46. metaobjects-1.0.0/tests/codegen/test_names_extends_chain.py +513 -0
  47. metaobjects-1.0.0/tests/codegen/test_names_generator.py +523 -0
  48. metaobjects-1.0.0/tests/codegen/test_no_magic_physical_names.py +922 -0
  49. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_project_config.py +74 -0
  50. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_runner.py +96 -0
  51. metaobjects-1.0.0/tests/codegen/test_source_resolution.py +312 -0
  52. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_sourceless_projection.py +5 -7
  53. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/api_contract_server.py +15 -1
  54. metaobjects-1.0.0/tests/loader/test_abstract_subtype_authored.py +159 -0
  55. metaobjects-1.0.0/tests/runtime/test_object_manager_table_name.py +87 -0
  56. metaobjects-1.0.0/tests/unit/test_agent_context_staleness.py +200 -0
  57. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_column_naming_strategy.py +27 -0
  58. metaobjects-1.0.0/tests/unit/test_effective_children_sibling_shadowing.py +176 -0
  59. metaobjects-1.0.0/tests/unit/test_no_dead_config_fields.py +100 -0
  60. {metaobjects-0.24.5 → metaobjects-1.0.0}/uv.lock +1 -1
  61. metaobjects-0.24.5/src/metaobjects/codegen/config.py +0 -36
  62. metaobjects-0.24.5/src/metaobjects/codegen/format.py +0 -42
  63. metaobjects-0.24.5/tests/codegen/test_cli.py +0 -163
  64. metaobjects-0.24.5/tests/codegen/test_format.py +0 -30
  65. metaobjects-0.24.5/tests/codegen/test_m2m_codegen.py +0 -157
  66. metaobjects-0.24.5/tests/unit/test_agent_context_staleness.py +0 -102
  67. {metaobjects-0.24.5 → metaobjects-1.0.0}/.gitignore +0 -0
  68. {metaobjects-0.24.5 → metaobjects-1.0.0}/LICENSE +0 -0
  69. {metaobjects-0.24.5 → metaobjects-1.0.0}/README.md +0 -0
  70. {metaobjects-0.24.5 → metaobjects-1.0.0}/hatch_build.py +0 -0
  71. {metaobjects-0.24.5 → metaobjects-1.0.0}/scripts/generate_embedded_library.py +0 -0
  72. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/agent_context/__init__.py +0 -0
  73. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/apidocs/__init__.py +0 -0
  74. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/apidocs/api_model.py +0 -0
  75. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/apidocs/naming.py +0 -0
  76. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/apidocs/paths.py +0 -0
  77. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/apidocs/renderer.py +0 -0
  78. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/attr_class_map.py +0 -0
  79. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/__init__.py +0 -0
  80. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/collision_names.py +0 -0
  81. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/constants.py +0 -0
  82. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/extract_delegate_emitter.py +0 -0
  83. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/extract_schema_emitter.py +0 -0
  84. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/fr010_field_mapping.py +0 -0
  85. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generator.py +0 -0
  86. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/__init__.py +0 -0
  87. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/extractor_generator.py +0 -0
  88. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/find_inbound.py +0 -0
  89. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/fr019_shared_enum.py +0 -0
  90. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/output_parser_generator.py +0 -0
  91. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/output_prompt_generator.py +0 -0
  92. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/payload_vo_generator.py +0 -0
  93. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/render_helper_generator.py +0 -0
  94. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/template_generator.py +0 -0
  95. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/tph_plan.py +0 -0
  96. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/trace_helper_generator.py +0 -0
  97. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/output_format_spec_emitter.py +0 -0
  98. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/runtime/__init__.py +0 -0
  99. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/runtime/filter_parser.py +0 -0
  100. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/template_codegen/__init__.py +0 -0
  101. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/template_codegen/output_pattern.py +0 -0
  102. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/template_codegen/template_data.py +0 -0
  103. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/template_codegen/template_spec.py +0 -0
  104. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/type_map.py +0 -0
  105. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/config/__init__.py +0 -0
  106. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/config/neutral_config.py +0 -0
  107. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/config/source_resolver.py +0 -0
  108. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/core_types.py +0 -0
  109. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/datatype.py +0 -0
  110. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/documentation/__init__.py +0 -0
  111. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/documentation/doc_constants.py +0 -0
  112. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/documentation/doc_provider.py +0 -0
  113. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/documentation/doc_schema.py +0 -0
  114. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/library/__init__.py +0 -0
  115. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/library/embedded_library.py +0 -0
  116. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/library/library_sources.py +0 -0
  117. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/__init__.py +0 -0
  118. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/merge.py +0 -0
  119. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/meta_data_loader.py +0 -0
  120. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/registered_validation.py +0 -0
  121. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/sources/__init__.py +0 -0
  122. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/sources/directory_source.py +0 -0
  123. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/sources/file_source.py +0 -0
  124. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/sources/meta_data_source.py +0 -0
  125. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/sources/uri_source.py +0 -0
  126. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/validate_discriminator.py +0 -0
  127. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/validate_enum_normalize_ambiguity.py +0 -0
  128. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/validate_field_mutability.py +0 -0
  129. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/validate_source_escapes.py +0 -0
  130. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/validate_source_parameter_ref.py +0 -0
  131. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/validate_source_physical_names.py +0 -0
  132. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/validation_passes.py +0 -0
  133. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/__init__.py +0 -0
  134. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/__init__.py +0 -0
  135. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/attr/__init__.py +0 -0
  136. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/attr/attr_constants.py +0 -0
  137. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/attr/meta_attr.py +0 -0
  138. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/field/__init__.py +0 -0
  139. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/field/field_constants.py +0 -0
  140. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/field/meta_field.py +0 -0
  141. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/identity/__init__.py +0 -0
  142. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/identity/identity_constants.py +0 -0
  143. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/identity/meta_identity.py +0 -0
  144. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/index/__init__.py +0 -0
  145. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/index/index_constants.py +0 -0
  146. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/index/meta_index.py +0 -0
  147. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/object/__init__.py +0 -0
  148. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/object/meta_object.py +0 -0
  149. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/object/meta_object_aware.py +0 -0
  150. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/object/object_class_registry.py +0 -0
  151. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/object/object_constants.py +0 -0
  152. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/object/object_extract.py +0 -0
  153. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/object/value_object.py +0 -0
  154. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/relationship/__init__.py +0 -0
  155. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/relationship/derive_m2m_fields.py +0 -0
  156. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/relationship/meta_relationship.py +0 -0
  157. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/relationship/relationship_constants.py +0 -0
  158. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/requirement/__init__.py +0 -0
  159. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/requirement/meta_requirement.py +0 -0
  160. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/requirement/requirement_constants.py +0 -0
  161. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/validator/__init__.py +0 -0
  162. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/validator/validator_constants.py +0 -0
  163. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/meta_root.py +0 -0
  164. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/persistence/__init__.py +0 -0
  165. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/persistence/db/__init__.py +0 -0
  166. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/persistence/db/db_constants.py +0 -0
  167. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/persistence/db/db_provider.py +0 -0
  168. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/persistence/origin/__init__.py +0 -0
  169. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/persistence/origin/meta_origin.py +0 -0
  170. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/persistence/origin/origin_constants.py +0 -0
  171. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/persistence/source/__init__.py +0 -0
  172. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/persistence/source/meta_source.py +0 -0
  173. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/persistence/source/source_constants.py +0 -0
  174. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/presentation/__init__.py +0 -0
  175. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/presentation/layout/__init__.py +0 -0
  176. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/presentation/layout/layout_constants.py +0 -0
  177. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/presentation/layout/meta_layout.py +0 -0
  178. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/presentation/ui/__init__.py +0 -0
  179. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/presentation/ui/ui_provider.py +0 -0
  180. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/presentation/view/__init__.py +0 -0
  181. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/presentation/view/meta_view.py +0 -0
  182. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/presentation/view/view_constants.py +0 -0
  183. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/provider_extends.py +0 -0
  184. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/template/__init__.py +0 -0
  185. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/template/meta_template.py +0 -0
  186. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/template/prompt_provider.py +0 -0
  187. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/template/template_constants.py +0 -0
  188. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/naming_refs.py +0 -0
  189. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/parser_yaml.py +0 -0
  190. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/provider.py +0 -0
  191. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/py.typed +0 -0
  192. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/__init__.py +0 -0
  193. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/email_document.py +0 -0
  194. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/escapers.py +0 -0
  195. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/KNOWN_GAPS.md +0 -0
  196. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/__init__.py +0 -0
  197. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/coerce.py +0 -0
  198. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/extract.py +0 -0
  199. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/extract_map.py +0 -0
  200. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/json_forgiving_reader.py +0 -0
  201. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/locate.py +0 -0
  202. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/normalize.py +0 -0
  203. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/strip.py +0 -0
  204. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/types.py +0 -0
  205. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/xml_forgiving_reader.py +0 -0
  206. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/filesystem_provider.py +0 -0
  207. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/payload_accessors.py +0 -0
  208. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/prompt/__init__.py +0 -0
  209. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/prompt/output_format_renderer.py +0 -0
  210. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/prompt/output_format_spec.py +0 -0
  211. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/prompt/prompt_field.py +0 -0
  212. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/prompt/prompt_overrides.py +0 -0
  213. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/prompt/prompt_style.py +0 -0
  214. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/renderer.py +0 -0
  215. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/verify.py +0 -0
  216. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/runtime/__init__.py +0 -0
  217. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/runtime/llm_recorder.py +0 -0
  218. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/runtime/n2m_resolver.py +0 -0
  219. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/runtime/tph.py +0 -0
  220. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/serializer_json.py +0 -0
  221. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/shared/__init__.py +0 -0
  222. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/shared/base_types.py +0 -0
  223. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/shared/separators.py +0 -0
  224. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/shared/structural.py +0 -0
  225. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/source/__init__.py +0 -0
  226. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/source/error_source.py +0 -0
  227. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/source/json_path.py +0 -0
  228. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/source/semantic_diff.py +0 -0
  229. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/source/yaml_positions.py +0 -0
  230. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/__init__.py +0 -0
  231. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/db.json +0 -0
  232. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/documentation.json +0 -0
  233. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/identity.json +0 -0
  234. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/index.json +0 -0
  235. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/prompt.json +0 -0
  236. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/requirement.json +0 -0
  237. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/ui-web.json +0 -0
  238. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/super_resolve.py +0 -0
  239. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/validation_types.py +0 -0
  240. {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/yaml_desugar.py +0 -0
  241. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/__init__.py +0 -0
  242. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/__init__.py +0 -0
  243. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/extends/expected/BaseEntity.py +0 -0
  244. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/extends/expected/Program.py +0 -0
  245. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/extends/meta.json +0 -0
  246. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/nested-array/expected/AuthorBrief.py +0 -0
  247. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/nested-array/expected/PostBrief.py +0 -0
  248. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/nested-array/meta.json +0 -0
  249. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/scalars/expected/Metric.py +0 -0
  250. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/scalars/expected/Report.py +0 -0
  251. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/scalars/meta.json +0 -0
  252. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/vanilla/expected/Subscriber.py +0 -0
  253. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/vanilla/meta.json +0 -0
  254. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_abstract_conformance.py +0 -0
  255. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_api_docs_builder.py +0 -0
  256. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_api_docs_paths.py +0 -0
  257. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_cli_config_gen.py +0 -0
  258. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_cli_providers.py +0 -0
  259. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_cli_staleness_nudge.py +0 -0
  260. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_cli_verify_strict.py +0 -0
  261. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_cli_verify_subverbs.py +0 -0
  262. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_constants_config.py +0 -0
  263. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_entity_model.py +0 -0
  264. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_enum_conformance.py +0 -0
  265. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_extends_abstract_field_inheritance.py +0 -0
  266. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_extract_tier_collision.py +0 -0
  267. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_extractor_generator.py +0 -0
  268. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_filter_allowlist_generator.py +0 -0
  269. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_fr010_nested_object_prompt.py +0 -0
  270. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_fr010_output_codegen.py +0 -0
  271. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_fr019_shared_provided_conformance.py +0 -0
  272. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_generator.py +0 -0
  273. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_generator_extension_seams.py +0 -0
  274. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_golden.py +0 -0
  275. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_inherit_without_restate_gate.py +0 -0
  276. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_inheritance_conformance.py +0 -0
  277. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_instance_artifacts.py +0 -0
  278. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_origin_nullability.py +0 -0
  279. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_output_parser_generator.py +0 -0
  280. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_overwrite_policy.py +0 -0
  281. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_overwrite_policy_hash.py +0 -0
  282. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_payload_vo_generator.py +0 -0
  283. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_projection_compile.py +0 -0
  284. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_render_helper_conformance.py +0 -0
  285. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_render_helper_generator.py +0 -0
  286. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_reverse_finders.py +0 -0
  287. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_router_autoset.py +0 -0
  288. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_router_generator.py +0 -0
  289. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_template_data.py +0 -0
  290. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_template_generator.py +0 -0
  291. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_template_output_pattern.py +0 -0
  292. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_template_scope_helpers.py +0 -0
  293. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_template_scope_walk.py +0 -0
  294. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_template_spec.py +0 -0
  295. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_tph_codegen.py +0 -0
  296. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_trace_helper_generator.py +0 -0
  297. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_type_map.py +0 -0
  298. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_validation_conformance.py +0 -0
  299. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_write_through.py +0 -0
  300. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/config/__init__.py +0 -0
  301. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/config/test_neutral_config.py +0 -0
  302. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/config/test_source_resolver.py +0 -0
  303. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/__init__.py +0 -0
  304. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/capabilities.py +0 -0
  305. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/conformance-expected-failures.json +0 -0
  306. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/conformance_adapter.py +0 -0
  307. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/corpus.py +0 -0
  308. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/expected_failures.py +0 -0
  309. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/fixture_discovery.py +0 -0
  310. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/navigator.py +0 -0
  311. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_api_docs_cross_port_conformance.py +0 -0
  312. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_conformance.py +0 -0
  313. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_extract_conformance.py +0 -0
  314. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_extract_object_verdict.py +0 -0
  315. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_fr010_loader_attrs.py +0 -0
  316. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_fr011_attrs.py +0 -0
  317. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_generator_registry_conformance.py +0 -0
  318. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_object_model_conformance.py +0 -0
  319. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_provider_composition_conformance.py +0 -0
  320. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_registry_conformance.py +0 -0
  321. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_runner_hardfail.py +0 -0
  322. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_source_resolution_conformance.py +0 -0
  323. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_spec_metamodel_embed.py +0 -0
  324. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_strict_attr_load.py +0 -0
  325. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_template_codegen_conformance.py +0 -0
  326. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_template_generator_conformance.py +0 -0
  327. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_yaml_conformance.py +0 -0
  328. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/yaml-conformance-expected-failures.json +0 -0
  329. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/__init__.py +0 -0
  330. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/api_contract_assertions.py +0 -0
  331. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/api_contract_jsonb_server.py +0 -0
  332. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/api_contract_m2m_server.py +0 -0
  333. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/generated_jsonb_app.py +0 -0
  334. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/generated_m2m_app.py +0 -0
  335. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/generated_router_app.py +0 -0
  336. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/generated_tph_app.py +0 -0
  337. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/meta_ai_trace.yaml +0 -0
  338. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/normalization.py +0 -0
  339. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/postgres_container.py +0 -0
  340. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/query_runner.py +0 -0
  341. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/scenarios.py +0 -0
  342. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_api_contract.py +0 -0
  343. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_api_contract_generated.py +0 -0
  344. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_api_contract_jsonb.py +0 -0
  345. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_api_contract_m2m.py +0 -0
  346. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_api_contract_m2m_generated.py +0 -0
  347. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_api_contract_tph_generated.py +0 -0
  348. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_generated_router_uuid_pk.py +0 -0
  349. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_llm_call_trace.py +0 -0
  350. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_normalization.py +0 -0
  351. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_query_scenarios.py +0 -0
  352. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_runtime_return_types.py +0 -0
  353. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/loader/__init__.py +0 -0
  354. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/loader/test_enum_extends_values_conflict.py +0 -0
  355. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/loader/test_field_mutability_order.py +0 -0
  356. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/loader/test_shipped_library_ai.py +0 -0
  357. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/loader/test_template_payload_target_210.py +0 -0
  358. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/open_closed_proof_test.py +0 -0
  359. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/__init__.py +0 -0
  360. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/extract/__init__.py +0 -0
  361. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/extract/test_coerce.py +0 -0
  362. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/extract/test_extract.py +0 -0
  363. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/extract/test_extract_map.py +0 -0
  364. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/extract/test_json_forgiving_reader.py +0 -0
  365. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/extract/test_locate.py +0 -0
  366. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/extract/test_model.py +0 -0
  367. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/extract/test_normalize.py +0 -0
  368. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/extract/test_strip.py +0 -0
  369. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/extract/test_xml_forgiving_reader.py +0 -0
  370. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/prompt/__init__.py +0 -0
  371. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/prompt/test_output_format_renderer.py +0 -0
  372. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/test_email_document.py +0 -0
  373. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/test_filesystem_provider.py +0 -0
  374. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/test_output_format_renderer_nested.py +0 -0
  375. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/test_output_prompt_conformance.py +0 -0
  376. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/test_render_conformance.py +0 -0
  377. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/test_render_max_chars.py +0 -0
  378. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/test_verify.py +0 -0
  379. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/test_verify_conformance.py +0 -0
  380. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/runtime/test_object_manager_enum_intvaluemap.py +0 -0
  381. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/source/__init__.py +0 -0
  382. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/source/test_fr5c_merge_attribution.py +0 -0
  383. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/source/test_fr5d_reference_resolution.py +0 -0
  384. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/source/test_fr5e_database_source_shape.py +0 -0
  385. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/source/test_json_path.py +0 -0
  386. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/source/test_semantic_diff.py +0 -0
  387. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/source/test_source_on_node.py +0 -0
  388. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/source/test_yaml_positions.py +0 -0
  389. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/test_api_docs_accuracy.py +0 -0
  390. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/__init__.py +0 -0
  391. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_capabilities.py +0 -0
  392. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_common_attrs.py +0 -0
  393. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_core_types.py +0 -0
  394. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_effective_package.py +0 -0
  395. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_errors.py +0 -0
  396. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_field_enum.py +0 -0
  397. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_field_enum_intvaluemap.py +0 -0
  398. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_field_map_validation.py +0 -0
  399. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_field_uuid_dbcolumntype.py +0 -0
  400. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_fr016_source_name_and_kind_aliases.py +0 -0
  401. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_index_lookup.py +0 -0
  402. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_llm_recorder.py +0 -0
  403. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_loader.py +0 -0
  404. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_loader_bom.py +0 -0
  405. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_loader_class.py +0 -0
  406. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_merge.py +0 -0
  407. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_meta_attr.py +0 -0
  408. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_meta_data.py +0 -0
  409. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_meta_source.py +0 -0
  410. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_module_shortcuts.py +0 -0
  411. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_n2m_resolver.py +0 -0
  412. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_n2m_resolver_inherited.py +0 -0
  413. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_object_manager_autoset_stamping.py +0 -0
  414. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_object_manager_uuid_coercion.py +0 -0
  415. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_object_manager_write_through.py +0 -0
  416. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_one_primary_source.py +0 -0
  417. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_parser.py +0 -0
  418. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_parser_yaml.py +0 -0
  419. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_provider.py +0 -0
  420. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_provider_extension.py +0 -0
  421. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_registry.py +0 -0
  422. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_registry_completeness.py +0 -0
  423. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_registry_extend.py +0 -0
  424. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_registry_sealed.py +0 -0
  425. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_relationship_referential_actions.py +0 -0
  426. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_resolution_key.py +0 -0
  427. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_runtime_resolution_key_binding.py +0 -0
  428. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_serializer.py +0 -0
  429. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_shared_constants.py +0 -0
  430. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_smoke.py +0 -0
  431. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_source_escapes.py +0 -0
  432. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_sources.py +0 -0
  433. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_strict_child_placement.py +0 -0
  434. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_super_resolve.py +0 -0
  435. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_template_toolcall.py +0 -0
  436. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_template_wrong_subtype_attrs.py +0 -0
  437. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_validation_attr_schema.py +0 -0
  438. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_validation_filter_values.py +0 -0
  439. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_validation_origin_195.py +0 -0
  440. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_validation_origin_paths.py +0 -0
  441. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_validation_sort_field.py +0 -0
  442. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_validation_warnings.py +0 -0
  443. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_write_coercion_arrays.py +0 -0
  444. {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_yaml_desugar.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: metaobjects
3
- Version: 0.24.5
3
+ Version: 1.0.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.24.5"
3
+ version = "1.0.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"
@@ -35,6 +35,7 @@ from .meta.core.object.object_extract import (
35
35
  extract_schema_for,
36
36
  )
37
37
  from .meta.core.object.value_object import ValueObject
38
+ from .naming import resolve_column_name
38
39
 
39
40
  # Module-level shortcuts: the 99% case for callers who don't need a
40
41
  # long-lived loader. Signatures + docstrings come straight from the
@@ -58,6 +59,7 @@ __all__ = [
58
59
  "load_directory",
59
60
  "load_uris",
60
61
  "load_string",
62
+ "resolve_column_name",
61
63
  # Runtime object model (Phase A)
62
64
  "ValueObject",
63
65
  "MetaObjectAware",
@@ -80,31 +80,112 @@ class Manifest:
80
80
  # The sentinel a port stamps when it cannot resolve its own installed version.
81
81
  _UNRESOLVED_VERSION = "0.0.0"
82
82
 
83
- _RELEASE_RE = re.compile(r"^(\d+)\.(\d+)\.(\d+)$")
84
-
85
-
86
- def _release_series(version: object) -> tuple[int, int] | None:
87
- """Ordered release coordinate ``(minor, patch)``, or ``None`` when not orderable.
88
-
89
- The MAJOR is deliberately dropped. It is a per-registry constant, not information:
90
- npm/PyPI/NuGet ship ``0.<m>.<p>`` and Maven Central the same ``<m>.<p>`` on its
91
- historical major ``7``, so minor.patch IS the shared release coordinate across all
92
- four ports.
93
-
94
- ``None`` means "not orderable, so nudge", and deliberately covers prereleases
95
- (``0.24.5-rc.1``), build metadata (``0.24.5+abc``) and the ``0.0.0`` sentinel. Each
96
- must keep nudging: an RC-scaffolded context against a final release is still worth
97
- refreshing, and an unknown install must never assert "in sync".
83
+ #: A release with an optional PRE-RELEASE segment, in either spelling one ecosystem uses.
84
+ #: npm/NuGet/Maven write ``1.0.0-rc.5``; PEP 440 writes ``1.0.0rc5``. Both are the SAME
85
+ #: release, and comparing their SPELLINGS is what made the nudge unsatisfiable — see
86
+ #: ``_same_release``.
87
+ _PRERELEASE_RE = re.compile(
88
+ r"^(\d+)\.(\d+)\.(\d+)" # release
89
+ r"(?:-?([A-Za-z]+)\.?(\d+)?)?$" # optional pre-release: -rc.5 | rc5 | -beta | b2
90
+ )
91
+
92
+
93
+ #: PEP 440 abbreviates the pre-release labels that npm spells out, and normalizing to ONE
94
+ #: of them is what makes `1.1.0-beta.2` and `1.1.0b2` the same release. Only the spellings
95
+ #: PEP 440 itself defines as equivalent — this is a rename table, not a similarity guess.
96
+ _PEP440_LABEL_ALIASES = {
97
+ "a": "alpha",
98
+ "b": "beta",
99
+ "c": "rc",
100
+ "pre": "rc",
101
+ "preview": "rc",
102
+ }
103
+
104
+
105
+ def _release_coordinate(version: object) -> tuple[int, int, int, str, int] | None:
106
+ """``(major, minor, patch, pre_label, pre_number)`` for a version in ANY ecosystem
107
+ spelling.
108
+
109
+ The MAJOR is INFORMATION on this port, and both helpers here used to drop it. That
110
+ reduction is correct on the JVM and only there: Maven Central carries a historical
111
+ major of npm-major + 7 by design, so ``7.24.1`` and ``0.24.1`` genuinely name one
112
+ release and the coordinate must ignore the major to see it. Nothing of the kind holds
113
+ here — ``generatedBy`` is stamped by the Node CLI (an npm version) and
114
+ :func:`installed_metaobjects_version` reads the PyPI distribution version, and npm and
115
+ PyPI share the major by policy. Dropping it made ``1.0.0`` and ``2.0.0`` compare EQUAL,
116
+ and made a ``0.25.0``-stamped context read as NEWER than a ``1.0.0`` install — so the
117
+ 1.0 upgrade, the single upgrade this advisory exists to catch, produced no nudge.
118
+
119
+ The pre-release label is lower-cased and its separators dropped, so ``-rc.5``,
120
+ ``rc5`` and ``-RC5`` all reduce to ``("rc", 5)``. A final release sorts ABOVE every
121
+ pre-release of the same number, which is what ``("", 0)`` vs ``("rc", 5)`` gives under
122
+ tuple ordering only because ``""`` < ``"rc"`` — so finals carry a sentinel label that
123
+ sorts last instead.
124
+
125
+ ``None`` means "not orderable, so nudge": the ``0.0.0`` unresolved-install sentinel,
126
+ build metadata, or anything this cannot parse. Those must never assert "in sync".
98
127
  """
99
128
  if not isinstance(version, str):
100
129
  return None
101
130
  v = version.strip()
102
131
  if v == _UNRESOLVED_VERSION:
103
132
  return None
104
- m = _RELEASE_RE.match(v)
133
+ m = _PRERELEASE_RE.match(v)
105
134
  if m is None:
106
135
  return None
107
- return int(m.group(2)), int(m.group(3))
136
+ label = _PEP440_LABEL_ALIASES.get((m.group(4) or "").lower(), (m.group(4) or "").lower())
137
+ number = int(m.group(5)) if m.group(5) is not None else 0
138
+ # A FINAL release is newer than every pre-release of the same number. "~" sorts above
139
+ # every ASCII letter, so the sentinel does that with plain tuple comparison.
140
+ return (
141
+ int(m.group(1)),
142
+ int(m.group(2)),
143
+ int(m.group(3)),
144
+ label if label else "~",
145
+ number,
146
+ )
147
+
148
+
149
+ def _same_release(generated_by: object, current_version: str) -> bool:
150
+ """True when two version strings name the SAME release in different spellings.
151
+
152
+ The nudge compared spellings, so on the 1.0 RC line it could never be satisfied: the
153
+ canonical scaffolder is the Node CLI (ADR-0033), which stamps npm's ``1.0.0-rc.5``,
154
+ while this port reports PEP 440's ``1.0.0rc5``. Those are one release written two
155
+ ways, ``==`` says otherwise, and the remedy re-runs the scaffolder, which re-stamps
156
+ the same npm string — so the advisory fires on every invocation, forever, including
157
+ when the context is perfectly in sync. That is issue #347 with a different pair of
158
+ ecosystems; the fix for it reasoned about ORDERING and never about spelling.
159
+
160
+ Deliberately narrow. Only two versions that parse as the same release coordinate are
161
+ equal; anything unparseable (including the ``0.0.0`` sentinel) still nudges, and an
162
+ ``rc.4`` context against an ``rc.5`` install is a REAL difference and still nudges.
163
+ """
164
+ stamped = _release_coordinate(generated_by)
165
+ installed = _release_coordinate(current_version)
166
+ return stamped is not None and stamped == installed
167
+
168
+
169
+ def _release_series(version: object) -> tuple[int, int, int] | None:
170
+ """Ordered release coordinate ``(major, minor, patch)``, or ``None`` when not orderable.
171
+
172
+ Derived from :func:`_release_coordinate` rather than parsed again. These two functions
173
+ used to answer the same grammar with two different regexes — differential-checked
174
+ identical over 200k inputs, which is the good outcome of a coin flip, not a guarantee.
175
+ The ordering coordinate simply IS the equality coordinate restricted to FINAL releases,
176
+ and saying so in code means the two cannot drift apart.
177
+
178
+ ``None`` means "not orderable, so nudge", and deliberately covers prereleases
179
+ (``0.24.5-rc.1``, ``1.0.0rc5``), build metadata (``0.24.5+abc``) and the ``0.0.0``
180
+ sentinel. Each must keep nudging: an RC-scaffolded context against a final release is
181
+ still worth refreshing, and an unknown install must never assert "in sync".
182
+ """
183
+ coord = _release_coordinate(version)
184
+ # A pre-release carries a real label; a final carries the "~" sentinel. Only finals are
185
+ # orderable here, which is what the previous release-only regex enforced by construction.
186
+ if coord is None or coord[3] != "~":
187
+ return None
188
+ return coord[0], coord[1], coord[2]
108
189
 
109
190
 
110
191
  def _context_is_ahead_of_install(generated_by: object, current_version: str) -> bool:
@@ -141,16 +222,19 @@ def agent_context_staleness(
141
222
  is in sync — and a one-line advisory message otherwise. Pure + advisory:
142
223
  never raises, never blocks, never writes.
143
224
 
144
- The comparison is **exact equality** first: ANY drift nudges (a re-scaffold is
145
- cheap + idempotent), so this is not a semver compare — a prerelease or
146
- build-metadata difference is still a reason to refresh. See
147
- ``_context_is_ahead_of_install`` for the ONE case that is exempt.
225
+ ANY REAL drift nudges (a re-scaffold is cheap + idempotent), so this is not a semver
226
+ compare — an ``rc.4`` context against an ``rc.5`` install is still a reason to
227
+ refresh. Two exemptions, both for cases where nudging can never be SATISFIED:
228
+ ``_same_release`` (one release, two ecosystem spellings) and
229
+ ``_context_is_ahead_of_install`` (a port legitimately behind the npm scaffolder).
148
230
  """
149
231
  if manifest is None:
150
232
  return None # no agent context here → nothing to nudge
151
233
  generated_by = manifest.get("generatedBy")
152
234
  if generated_by == current_version:
153
235
  return None # in sync
236
+ if _same_release(generated_by, current_version):
237
+ return None # one release, two ecosystem spellings — see below
154
238
  if _context_is_ahead_of_install(generated_by, current_version):
155
239
  return None # scaffolded by a NEWER release than this install — see below
156
240
  frm = generated_by if generated_by else "an older MetaObjects"
@@ -4,7 +4,7 @@ This is the ACCURATE-BY-CONSTRUCTION half of the api-docs pipeline: every
4
4
  documented symbol name comes from the :mod:`metaobjects.apidocs.naming` seam (never
5
5
  re-concatenated here — the SAME seam the real generators delegate to), and every
6
6
  inclusion decision comes from an applies-predicate that REUSES the corresponding
7
- generator's own gate helpers (``emits_instance_artifacts`` / ``_primary_source_rdb``
7
+ generator's own gate helpers (``emits_instance_artifacts`` / ``primary_rdb_source``
8
8
  + source kind / ``resolve_payload_vo`` / format check / ``is_tph_subtype``) rather
9
9
  than re-implementing the gate. The result is that what this builder documents ==
10
10
  what the generators emit, by SHARING the single source of truth.
@@ -47,9 +47,9 @@ from metaobjects.codegen.generators.payload_vo_generator import (
47
47
  is_field_required,
48
48
  resolve_payload_vo,
49
49
  )
50
- from metaobjects.codegen.generators.router_generator import _primary_source_rdb
51
50
  from metaobjects.codegen.generators.tph_plan import is_tph_subtype
52
51
  from metaobjects.codegen.instance_artifacts import emits_instance_artifacts, is_abstract
52
+ from metaobjects.source_resolution import primary_rdb_source
53
53
  from metaobjects.meta.core.field import field_constants as fc
54
54
  from metaobjects.meta.core.field.meta_field import MetaField
55
55
  from metaobjects.meta.core.object.meta_object import MetaObject
@@ -91,7 +91,7 @@ def _is_writable_table_entity(obj: MetaObject, object_index: dict[str, MetaObjec
91
91
  return False
92
92
  if is_tph_subtype(obj):
93
93
  return False
94
- src = _primary_source_rdb(obj)
94
+ src = primary_rdb_source(obj)
95
95
  if src is None:
96
96
  return False
97
97
  return src.effective_kind() == SOURCE_KIND_TABLE
@@ -261,7 +261,13 @@ class PythonApiModelBuilder:
261
261
  add("PUT " + item, "update (PUT alias)")
262
262
  add("DELETE " + item, "delete")
263
263
 
264
- # M:N traversal — GET /<source-plural>/{id}/<relation>.
264
+ # M:N traversal — GET /<source-plural>/{id}/<relation>. `docs` has no
265
+ # `GenConfig`/`--column-naming` of its own (see `cli.py`'s docs handler) and
266
+ # this loop reads only `.target_entity` / `.relation_name` off the
267
+ # descriptor — never a physical column/table name — so resolving it under
268
+ # the port default here changes nothing observable; threading a naming
269
+ # strategy through would mean inventing a config seam this command doesn't
270
+ # have, for a value nothing here would read.
265
271
  for d in resolve_m2m_descriptors(entity, object_index):
266
272
  target = object_index.get(d.target_entity)
267
273
  target_name = target.name if target is not None else d.target_entity