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.
- {metaobjects-0.24.5 → metaobjects-1.0.0}/PKG-INFO +1 -1
- {metaobjects-0.24.5 → metaobjects-1.0.0}/pyproject.toml +1 -1
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/__init__.py +2 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/agent_context/scaffold.py +105 -21
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/apidocs/builder.py +10 -4
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/cli.py +411 -39
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/KNOWN_GAPS.md +25 -0
- metaobjects-1.0.0/src/metaobjects/codegen/config.py +107 -0
- metaobjects-1.0.0/src/metaobjects/codegen/format.py +72 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generator_registry.py +8 -1
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/entity_model.py +9 -3
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/filter_allowlist_generator.py +2 -15
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/m2m_codegen.py +37 -23
- metaobjects-1.0.0/src/metaobjects/codegen/generators/names_generator.py +551 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/router_generator.py +74 -25
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/instance_artifacts.py +5 -2
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/metaobjects-config.schema.json +5 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/overwrite_policy.py +69 -21
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/project_config.py +32 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/runner.py +55 -3
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/errors.py +7 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/meta_data.py +33 -6
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/naming.py +46 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/parser.py +101 -2
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/registry.py +8 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/registry_manifest.py +1 -1
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/runtime/object_manager.py +28 -18
- metaobjects-1.0.0/src/metaobjects/source_resolution.py +125 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/attr.json +1 -1
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/field.json +1 -1
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/layout.json +1 -1
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/object.json +1 -1
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/origin.json +1 -1
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/relationship.json +1 -1
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/source.json +1 -1
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/template.json +1 -1
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/ui.json +2 -2
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/validator.json +1 -1
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/view.json +1 -1
- metaobjects-1.0.0/tests/codegen/test_cli.py +449 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_cli_config_verify.py +160 -3
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_cli_registry.py +2 -2
- metaobjects-1.0.0/tests/codegen/test_format.py +85 -0
- metaobjects-1.0.0/tests/codegen/test_gen_state_keying.py +182 -0
- metaobjects-1.0.0/tests/codegen/test_m2m_codegen.py +383 -0
- metaobjects-1.0.0/tests/codegen/test_names_extends_chain.py +513 -0
- metaobjects-1.0.0/tests/codegen/test_names_generator.py +523 -0
- metaobjects-1.0.0/tests/codegen/test_no_magic_physical_names.py +922 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_project_config.py +74 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_runner.py +96 -0
- metaobjects-1.0.0/tests/codegen/test_source_resolution.py +312 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_sourceless_projection.py +5 -7
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/api_contract_server.py +15 -1
- metaobjects-1.0.0/tests/loader/test_abstract_subtype_authored.py +159 -0
- metaobjects-1.0.0/tests/runtime/test_object_manager_table_name.py +87 -0
- metaobjects-1.0.0/tests/unit/test_agent_context_staleness.py +200 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_column_naming_strategy.py +27 -0
- metaobjects-1.0.0/tests/unit/test_effective_children_sibling_shadowing.py +176 -0
- metaobjects-1.0.0/tests/unit/test_no_dead_config_fields.py +100 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/uv.lock +1 -1
- metaobjects-0.24.5/src/metaobjects/codegen/config.py +0 -36
- metaobjects-0.24.5/src/metaobjects/codegen/format.py +0 -42
- metaobjects-0.24.5/tests/codegen/test_cli.py +0 -163
- metaobjects-0.24.5/tests/codegen/test_format.py +0 -30
- metaobjects-0.24.5/tests/codegen/test_m2m_codegen.py +0 -157
- metaobjects-0.24.5/tests/unit/test_agent_context_staleness.py +0 -102
- {metaobjects-0.24.5 → metaobjects-1.0.0}/.gitignore +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/LICENSE +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/README.md +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/hatch_build.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/scripts/generate_embedded_library.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/agent_context/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/apidocs/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/apidocs/api_model.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/apidocs/naming.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/apidocs/paths.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/apidocs/renderer.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/attr_class_map.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/collision_names.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/constants.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/extract_delegate_emitter.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/extract_schema_emitter.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/fr010_field_mapping.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generator.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/extractor_generator.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/find_inbound.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/fr019_shared_enum.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/output_parser_generator.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/output_prompt_generator.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/payload_vo_generator.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/render_helper_generator.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/template_generator.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/tph_plan.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/generators/trace_helper_generator.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/output_format_spec_emitter.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/runtime/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/runtime/filter_parser.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/template_codegen/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/template_codegen/output_pattern.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/template_codegen/template_data.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/template_codegen/template_spec.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/codegen/type_map.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/config/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/config/neutral_config.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/config/source_resolver.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/core_types.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/datatype.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/documentation/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/documentation/doc_constants.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/documentation/doc_provider.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/documentation/doc_schema.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/library/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/library/embedded_library.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/library/library_sources.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/merge.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/meta_data_loader.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/registered_validation.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/sources/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/sources/directory_source.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/sources/file_source.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/sources/meta_data_source.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/sources/uri_source.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/validate_discriminator.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/validate_enum_normalize_ambiguity.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/validate_field_mutability.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/validate_source_escapes.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/validate_source_parameter_ref.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/validate_source_physical_names.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/loader/validation_passes.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/attr/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/attr/attr_constants.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/attr/meta_attr.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/field/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/field/field_constants.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/field/meta_field.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/identity/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/identity/identity_constants.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/identity/meta_identity.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/index/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/index/index_constants.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/index/meta_index.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/object/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/object/meta_object.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/object/meta_object_aware.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/object/object_class_registry.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/object/object_constants.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/object/object_extract.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/object/value_object.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/relationship/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/relationship/derive_m2m_fields.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/relationship/meta_relationship.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/relationship/relationship_constants.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/requirement/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/requirement/meta_requirement.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/requirement/requirement_constants.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/validator/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/core/validator/validator_constants.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/meta_root.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/persistence/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/persistence/db/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/persistence/db/db_constants.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/persistence/db/db_provider.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/persistence/origin/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/persistence/origin/meta_origin.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/persistence/origin/origin_constants.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/persistence/source/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/persistence/source/meta_source.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/persistence/source/source_constants.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/presentation/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/presentation/layout/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/presentation/layout/layout_constants.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/presentation/layout/meta_layout.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/presentation/ui/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/presentation/ui/ui_provider.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/presentation/view/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/presentation/view/meta_view.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/presentation/view/view_constants.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/provider_extends.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/template/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/template/meta_template.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/template/prompt_provider.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/meta/template/template_constants.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/naming_refs.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/parser_yaml.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/provider.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/py.typed +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/email_document.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/escapers.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/KNOWN_GAPS.md +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/coerce.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/extract.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/extract_map.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/json_forgiving_reader.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/locate.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/normalize.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/strip.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/types.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/extract/xml_forgiving_reader.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/filesystem_provider.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/payload_accessors.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/prompt/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/prompt/output_format_renderer.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/prompt/output_format_spec.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/prompt/prompt_field.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/prompt/prompt_overrides.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/prompt/prompt_style.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/renderer.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/render/verify.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/runtime/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/runtime/llm_recorder.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/runtime/n2m_resolver.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/runtime/tph.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/serializer_json.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/shared/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/shared/base_types.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/shared/separators.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/shared/structural.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/source/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/source/error_source.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/source/json_path.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/source/semantic_diff.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/source/yaml_positions.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/db.json +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/documentation.json +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/identity.json +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/index.json +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/prompt.json +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/requirement.json +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/spec_metamodel/ui-web.json +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/super_resolve.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/validation_types.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/src/metaobjects/yaml_desugar.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/extends/expected/BaseEntity.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/extends/expected/Program.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/extends/meta.json +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/nested-array/expected/AuthorBrief.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/nested-array/expected/PostBrief.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/nested-array/meta.json +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/scalars/expected/Metric.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/scalars/expected/Report.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/scalars/meta.json +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/vanilla/expected/Subscriber.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/golden/vanilla/meta.json +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_abstract_conformance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_api_docs_builder.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_api_docs_paths.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_cli_config_gen.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_cli_providers.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_cli_staleness_nudge.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_cli_verify_strict.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_cli_verify_subverbs.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_constants_config.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_entity_model.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_enum_conformance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_extends_abstract_field_inheritance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_extract_tier_collision.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_extractor_generator.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_filter_allowlist_generator.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_fr010_nested_object_prompt.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_fr010_output_codegen.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_fr019_shared_provided_conformance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_generator.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_generator_extension_seams.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_golden.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_inherit_without_restate_gate.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_inheritance_conformance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_instance_artifacts.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_origin_nullability.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_output_parser_generator.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_overwrite_policy.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_overwrite_policy_hash.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_payload_vo_generator.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_projection_compile.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_render_helper_conformance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_render_helper_generator.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_reverse_finders.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_router_autoset.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_router_generator.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_template_data.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_template_generator.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_template_output_pattern.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_template_scope_helpers.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_template_scope_walk.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_template_spec.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_tph_codegen.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_trace_helper_generator.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_type_map.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_validation_conformance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/codegen/test_write_through.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/config/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/config/test_neutral_config.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/config/test_source_resolver.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/capabilities.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/conformance-expected-failures.json +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/conformance_adapter.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/corpus.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/expected_failures.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/fixture_discovery.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/navigator.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_api_docs_cross_port_conformance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_conformance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_extract_conformance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_extract_object_verdict.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_fr010_loader_attrs.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_fr011_attrs.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_generator_registry_conformance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_object_model_conformance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_provider_composition_conformance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_registry_conformance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_runner_hardfail.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_source_resolution_conformance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_spec_metamodel_embed.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_strict_attr_load.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_template_codegen_conformance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_template_generator_conformance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/test_yaml_conformance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/conformance/yaml-conformance-expected-failures.json +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/api_contract_assertions.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/api_contract_jsonb_server.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/api_contract_m2m_server.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/generated_jsonb_app.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/generated_m2m_app.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/generated_router_app.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/generated_tph_app.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/meta_ai_trace.yaml +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/normalization.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/postgres_container.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/query_runner.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/scenarios.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_api_contract.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_api_contract_generated.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_api_contract_jsonb.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_api_contract_m2m.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_api_contract_m2m_generated.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_api_contract_tph_generated.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_generated_router_uuid_pk.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_llm_call_trace.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_normalization.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_query_scenarios.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/integration/test_runtime_return_types.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/loader/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/loader/test_enum_extends_values_conflict.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/loader/test_field_mutability_order.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/loader/test_shipped_library_ai.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/loader/test_template_payload_target_210.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/open_closed_proof_test.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/extract/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/extract/test_coerce.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/extract/test_extract.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/extract/test_extract_map.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/extract/test_json_forgiving_reader.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/extract/test_locate.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/extract/test_model.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/extract/test_normalize.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/extract/test_strip.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/extract/test_xml_forgiving_reader.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/prompt/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/prompt/test_output_format_renderer.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/test_email_document.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/test_filesystem_provider.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/test_output_format_renderer_nested.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/test_output_prompt_conformance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/test_render_conformance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/test_render_max_chars.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/test_verify.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/render/test_verify_conformance.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/runtime/test_object_manager_enum_intvaluemap.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/source/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/source/test_fr5c_merge_attribution.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/source/test_fr5d_reference_resolution.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/source/test_fr5e_database_source_shape.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/source/test_json_path.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/source/test_semantic_diff.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/source/test_source_on_node.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/source/test_yaml_positions.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/test_api_docs_accuracy.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/__init__.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_capabilities.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_common_attrs.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_core_types.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_effective_package.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_errors.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_field_enum.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_field_enum_intvaluemap.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_field_map_validation.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_field_uuid_dbcolumntype.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_fr016_source_name_and_kind_aliases.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_index_lookup.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_llm_recorder.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_loader.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_loader_bom.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_loader_class.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_merge.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_meta_attr.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_meta_data.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_meta_source.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_module_shortcuts.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_n2m_resolver.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_n2m_resolver_inherited.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_object_manager_autoset_stamping.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_object_manager_uuid_coercion.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_object_manager_write_through.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_one_primary_source.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_parser.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_parser_yaml.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_provider.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_provider_extension.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_registry.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_registry_completeness.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_registry_extend.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_registry_sealed.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_relationship_referential_actions.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_resolution_key.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_runtime_resolution_key_binding.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_serializer.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_shared_constants.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_smoke.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_source_escapes.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_sources.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_strict_child_placement.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_super_resolve.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_template_toolcall.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_template_wrong_subtype_attrs.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_validation_attr_schema.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_validation_filter_values.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_validation_origin_195.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_validation_origin_paths.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_validation_sort_field.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_validation_warnings.py +0 -0
- {metaobjects-0.24.5 → metaobjects-1.0.0}/tests/unit/test_write_coercion_arrays.py +0 -0
- {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.
|
|
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.
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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 =
|
|
133
|
+
m = _PRERELEASE_RE.match(v)
|
|
105
134
|
if m is None:
|
|
106
135
|
return None
|
|
107
|
-
|
|
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
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
``
|
|
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`` / ``
|
|
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 =
|
|
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
|