metaobjects 0.15.6__tar.gz → 0.15.8__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.15.6 → metaobjects-0.15.8}/PKG-INFO +1 -1
- {metaobjects-0.15.6 → metaobjects-0.15.8}/pyproject.toml +1 -1
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/errors.py +11 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/loader/merge.py +21 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/loader/validation_passes.py +65 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/naming_refs.py +67 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/.gitignore +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/LICENSE +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/README.md +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/hatch_build.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/agent_context/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/agent_context/scaffold.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/apidocs/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/apidocs/api_model.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/apidocs/builder.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/apidocs/naming.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/apidocs/paths.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/apidocs/renderer.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/attr_class_map.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/cli.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/KNOWN_GAPS.md +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/config.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/constants.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/extract_delegate_emitter.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/extract_schema_emitter.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/format.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/fr010_field_mapping.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generator_registry.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generators/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generators/entity_model.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generators/extractor_generator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generators/filter_allowlist_generator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generators/fr019_shared_enum.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generators/m2m_codegen.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generators/output_parser_generator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generators/output_prompt_generator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generators/payload_vo_generator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generators/render_helper_generator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generators/router_generator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generators/template_generator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generators/tph_plan.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generators/trace_helper_generator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/instance_artifacts.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/output_format_spec_emitter.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/overwrite_policy.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/runner.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/runtime/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/runtime/filter_parser.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/template_codegen/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/template_codegen/output_pattern.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/template_codegen/template_data.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/template_codegen/template_spec.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/type_map.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/core_types.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/datatype.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/documentation/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/documentation/doc_constants.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/documentation/doc_provider.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/documentation/doc_schema.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/loader/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/loader/meta_data_loader.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/loader/registered_validation.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/loader/sources/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/loader/sources/directory_source.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/loader/sources/file_source.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/loader/sources/meta_data_source.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/loader/sources/uri_source.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/loader/validate_discriminator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/loader/validate_field_readonly.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/loader/validate_source_parameter_ref.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/loader/validate_source_physical_names.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/attr/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/attr/attr_constants.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/attr/meta_attr.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/field/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/field/field_constants.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/field/meta_field.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/identity/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/identity/identity_constants.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/identity/meta_identity.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/index/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/index/index_constants.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/index/meta_index.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/object/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/object/meta_object.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/object/meta_object_aware.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/object/object_class_registry.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/object/object_constants.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/object/object_extract.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/object/value_object.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/relationship/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/relationship/derive_m2m_fields.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/relationship/meta_relationship.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/relationship/relationship_constants.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/validator/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/validator/validator_constants.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/meta_data.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/meta_root.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/persistence/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/persistence/db/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/persistence/db/db_constants.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/persistence/db/db_provider.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/persistence/origin/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/persistence/origin/meta_origin.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/persistence/origin/origin_constants.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/persistence/source/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/persistence/source/meta_source.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/persistence/source/source_constants.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/presentation/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/presentation/layout/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/presentation/layout/layout_constants.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/presentation/layout/meta_layout.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/presentation/ui/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/presentation/ui/ui_provider.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/presentation/view/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/presentation/view/meta_view.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/presentation/view/view_constants.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/provider_extends.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/template/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/template/meta_template.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/template/prompt_provider.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/template/template_constants.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/parser.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/parser_yaml.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/provider.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/py.typed +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/registry.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/registry_manifest.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/email_document.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/escapers.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/extract/KNOWN_GAPS.md +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/extract/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/extract/coerce.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/extract/extract.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/extract/extract_map.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/extract/json_forgiving_reader.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/extract/locate.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/extract/normalize.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/extract/strip.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/extract/types.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/extract/xml_forgiving_reader.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/filesystem_provider.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/prompt/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/prompt/output_format_renderer.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/prompt/output_format_spec.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/prompt/prompt_field.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/prompt/prompt_overrides.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/prompt/prompt_style.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/renderer.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/verify.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/runtime/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/runtime/llm_recorder.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/runtime/n2m_resolver.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/runtime/object_manager.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/runtime/tph.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/serializer_json.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/shared/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/shared/base_types.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/shared/separators.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/shared/structural.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/source/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/source/error_source.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/source/json_path.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/source/semantic_diff.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/source/yaml_positions.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/spec_metamodel/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/spec_metamodel/attr.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/spec_metamodel/db.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/spec_metamodel/documentation.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/spec_metamodel/field.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/spec_metamodel/identity.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/spec_metamodel/index.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/spec_metamodel/layout.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/spec_metamodel/object.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/spec_metamodel/origin.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/spec_metamodel/prompt.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/spec_metamodel/relationship.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/spec_metamodel/source.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/spec_metamodel/template.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/spec_metamodel/ui.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/spec_metamodel/validator.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/spec_metamodel/view.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/super_resolve.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/validation_types.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/yaml_desugar.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/golden/extends/expected/BaseEntity.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/golden/extends/expected/Program.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/golden/extends/meta.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/golden/nested-array/expected/AuthorBrief.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/golden/nested-array/expected/PostBrief.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/golden/nested-array/meta.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/golden/scalars/expected/Metric.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/golden/scalars/expected/Report.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/golden/scalars/meta.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/golden/vanilla/expected/Subscriber.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/golden/vanilla/meta.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_abstract_conformance.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_api_docs_builder.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_api_docs_paths.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_cli.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_cli_providers.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_cli_registry.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_cli_staleness_nudge.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_cli_verify_strict.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_cli_verify_subverbs.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_constants_config.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_entity_model.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_enum_conformance.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_extends_abstract_field_inheritance.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_extractor_generator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_filter_allowlist_generator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_format.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_fr010_nested_object_prompt.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_fr010_output_codegen.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_fr019_shared_provided_conformance.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_generator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_generator_extension_seams.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_golden.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_inherit_without_restate_gate.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_inheritance_conformance.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_instance_artifacts.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_m2m_codegen.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_output_parser_generator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_overwrite_policy.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_payload_vo_generator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_projection_compile.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_render_helper_conformance.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_render_helper_generator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_reverse_finders.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_router_generator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_runner.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_template_data.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_template_generator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_template_output_pattern.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_template_scope_helpers.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_template_scope_walk.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_template_spec.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_tph_codegen.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_trace_helper_generator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_type_map.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/codegen/test_validation_conformance.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/capabilities.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/conformance-expected-failures.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/conformance_adapter.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/corpus.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/expected_failures.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/fixture_discovery.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/navigator.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/test_api_docs_cross_port_conformance.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/test_conformance.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/test_extract_conformance.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/test_extract_object_verdict.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/test_fr010_loader_attrs.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/test_fr011_attrs.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/test_generator_registry_conformance.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/test_object_model_conformance.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/test_provider_composition_conformance.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/test_registry_conformance.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/test_runner_hardfail.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/test_spec_metamodel_embed.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/test_strict_attr_load.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/test_template_codegen_conformance.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/test_template_generator_conformance.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/test_yaml_conformance.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/conformance/yaml-conformance-expected-failures.json +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/api_contract_assertions.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/api_contract_jsonb_server.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/api_contract_m2m_server.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/api_contract_server.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/generated_jsonb_app.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/generated_m2m_app.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/generated_router_app.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/generated_tph_app.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/meta_ai_trace.yaml +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/normalization.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/postgres_container.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/query_runner.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/scenarios.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/test_api_contract.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/test_api_contract_generated.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/test_api_contract_jsonb.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/test_api_contract_m2m.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/test_api_contract_m2m_generated.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/test_api_contract_tph_generated.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/test_llm_call_trace.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/test_normalization.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/test_query_scenarios.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/integration/test_runtime_return_types.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/open_closed_proof_test.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/extract/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/extract/test_coerce.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/extract/test_extract.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/extract/test_extract_map.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/extract/test_json_forgiving_reader.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/extract/test_locate.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/extract/test_model.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/extract/test_normalize.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/extract/test_strip.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/extract/test_xml_forgiving_reader.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/prompt/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/prompt/test_output_format_renderer.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/test_email_document.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/test_filesystem_provider.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/test_output_format_renderer_nested.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/test_output_prompt_conformance.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/test_render_conformance.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/test_render_max_chars.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/test_verify.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/render/test_verify_conformance.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/source/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/source/test_fr5c_merge_attribution.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/source/test_fr5d_reference_resolution.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/source/test_fr5e_database_source_shape.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/source/test_json_path.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/source/test_semantic_diff.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/source/test_source_on_node.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/source/test_yaml_positions.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/test_api_docs_accuracy.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/__init__.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_agent_context_staleness.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_capabilities.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_common_attrs.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_core_types.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_effective_package.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_errors.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_field_enum.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_field_map_validation.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_field_uuid_dbcolumntype.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_fr016_source_name_and_kind_aliases.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_index_lookup.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_llm_recorder.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_loader.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_loader_bom.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_loader_class.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_merge.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_meta_attr.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_meta_data.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_meta_source.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_module_shortcuts.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_n2m_resolver.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_n2m_resolver_inherited.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_object_manager_uuid_coercion.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_one_primary_source.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_parser.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_parser_yaml.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_provider.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_provider_extension.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_registry.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_registry_completeness.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_registry_extend.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_registry_sealed.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_relationship_referential_actions.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_resolution_key.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_runtime_resolution_key_binding.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_serializer.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_shared_constants.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_smoke.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_sources.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_strict_child_placement.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_super_resolve.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_template_toolcall.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_template_wrong_subtype_attrs.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_validation_attr_schema.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_validation_filter_values.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_validation_origin_paths.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_validation_sort_field.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_validation_warnings.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_write_coercion_arrays.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/tests/unit/test_yaml_desugar.py +0 -0
- {metaobjects-0.15.6 → metaobjects-0.15.8}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: metaobjects
|
|
3
|
-
Version: 0.15.
|
|
3
|
+
Version: 0.15.8
|
|
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.15.
|
|
3
|
+
version = "0.15.8"
|
|
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"
|
|
@@ -132,6 +132,17 @@ class ErrorCode(str, Enum):
|
|
|
132
132
|
# emit this yet (the T6 guard is deferred — like TS, it belongs in the parser);
|
|
133
133
|
# the enum tracks the shared corpus code so resolution/desugar stay aligned.
|
|
134
134
|
ERR_RELATIVE_REF_IN_CANONICAL = "ERR_RELATIVE_REF_IN_CANONICAL"
|
|
135
|
+
# ADR-0041 — cross-package reference resolution contract. A BARE object
|
|
136
|
+
# reference (no ``::``) that names an object present in MORE THAN ONE package,
|
|
137
|
+
# with NO match in the referrer's own package, is ambiguous — the author must
|
|
138
|
+
# qualify it with the package (FQN). Applies to every object-ref-bearing attr
|
|
139
|
+
# (@objectRef / @references / @from / @of / @via heads / @parameterRef /
|
|
140
|
+
# @payloadRef / @responseRef). An FQN ref resolves exactly and is never
|
|
141
|
+
# ambiguous; a bare ref that matches the referrer's own package, or exactly one
|
|
142
|
+
# package anywhere, resolves fine. ``extends`` is intentionally NOT covered
|
|
143
|
+
# (its same-package/root-strict super-resolver yields ERR_UNRESOLVED_SUPER on a
|
|
144
|
+
# bare cross-package miss, not ambiguity).
|
|
145
|
+
ERR_AMBIGUOUS_REF = "ERR_AMBIGUOUS_REF"
|
|
135
146
|
# FR-033 — strict structural-placement vocabulary. ERR_CHILD_NOT_ALLOWED: a
|
|
136
147
|
# structural child (field/identity/source/validator/… — not an attr) is placed
|
|
137
148
|
# under a parent whose registered childRules do not admit it (the structural
|
|
@@ -67,12 +67,33 @@ def merge_roots(
|
|
|
67
67
|
warnings = []
|
|
68
68
|
if envelope_warnings is None:
|
|
69
69
|
envelope_warnings = []
|
|
70
|
+
# #160 — an overlay-ONLY root (every object child is `overlay: true`) re-opens
|
|
71
|
+
# objects declared in OTHER files; it must not become the merge accumulator
|
|
72
|
+
# (`roots[0]`) or the base declarations get appended AFTER the overlaid nodes,
|
|
73
|
+
# leaving a projection ahead of its base entities so the order-dependent super-
|
|
74
|
+
# resolution can't resolve its `extends`/`@via`. Directory discovery order is
|
|
75
|
+
# not guaranteed to present base files first (Python `rglob` can yield a top-
|
|
76
|
+
# level overlay file before a subdir base file), so stable-partition base roots
|
|
77
|
+
# ahead of overlay-only roots here — making the merge order-independent and
|
|
78
|
+
# matching the TS loader's result. Stable within each group preserves the
|
|
79
|
+
# existing last-writer-wins overlay semantics.
|
|
80
|
+
roots = [r for r in roots if not _is_overlay_only_root(r)] + [
|
|
81
|
+
r for r in roots if _is_overlay_only_root(r)
|
|
82
|
+
]
|
|
70
83
|
target = roots[0]
|
|
71
84
|
for src in roots[1:]:
|
|
72
85
|
_merge_into(target, src, errors, warnings, envelope_warnings)
|
|
73
86
|
return target
|
|
74
87
|
|
|
75
88
|
|
|
89
|
+
def _is_overlay_only_root(root: MetaData) -> bool:
|
|
90
|
+
"""True when every object child of *root* is an `overlay: true` re-open (and
|
|
91
|
+
there is at least one) — i.e. the root declares no base objects of its own, so
|
|
92
|
+
it must merge after the base-declaring roots (#160)."""
|
|
93
|
+
kids = list(root.own_children())
|
|
94
|
+
return bool(kids) and all(getattr(c, "is_overlay", False) for c in kids)
|
|
95
|
+
|
|
96
|
+
|
|
76
97
|
def _source_files(env: ErrorSource) -> tuple[str, ...]:
|
|
77
98
|
"""Extract the ``files`` tuple from any envelope that carries one.
|
|
78
99
|
|
|
@@ -107,6 +107,7 @@ from ..meta.core.object.object_constants import (
|
|
|
107
107
|
from ..meta.core.identity.identity_constants import IDENTITY_ATTR_FIELDS
|
|
108
108
|
from ..meta.core.index.index_constants import INDEX_ATTR_FIELDS, INDEX_SUBTYPE_LOOKUP
|
|
109
109
|
from ..source import resolved_source
|
|
110
|
+
from ..naming_refs import CHILD_REF_SEP, REF_BEARING_ATTR_NAMES, resolve_object_ref
|
|
110
111
|
|
|
111
112
|
# A subtype-specific template attr is valid ONLY on the subtype it is registered
|
|
112
113
|
# for. The metamodel registers these per-subtype (see the core_types template block),
|
|
@@ -179,6 +180,8 @@ def run_validations(
|
|
|
179
180
|
# @valueType (when set) must name a known scalar subtype.
|
|
180
181
|
_validate_field_map(root, errors)
|
|
181
182
|
_validate_templates(root, errors)
|
|
183
|
+
# ADR-0041 — cross-package bare-reference ambiguity (the object-ref contract).
|
|
184
|
+
_validate_cross_package_refs(root, errors)
|
|
182
185
|
_validate_subtype_rules(root, errors, warnings)
|
|
183
186
|
# FR-024 B3 — projection identity pass-through + key correspondence.
|
|
184
187
|
_validate_identity_passthrough(root, errors)
|
|
@@ -208,6 +211,68 @@ def _walk(root: MetaData) -> list[MetaData]:
|
|
|
208
211
|
return result
|
|
209
212
|
|
|
210
213
|
|
|
214
|
+
# ---------------------------------------------------------------------------
|
|
215
|
+
# Pass: cross-package reference ambiguity (the object-ref contract, ADR-0041)
|
|
216
|
+
# ---------------------------------------------------------------------------
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
def _validate_cross_package_refs(root: MetaData, errors: list[MetaError]) -> None:
|
|
220
|
+
"""ADR-0041 — a BARE object reference (no ``::``) that names an object present
|
|
221
|
+
in MORE THAN ONE package, with NO match in the referrer's own package, is
|
|
222
|
+
ambiguous → ERR_AMBIGUOUS_REF (the author must qualify it with the package).
|
|
223
|
+
|
|
224
|
+
An FQN ref is exact (never ambiguous); a bare ref matching the referrer's own
|
|
225
|
+
package, or exactly one package anywhere, resolves fine. Covers every
|
|
226
|
+
object-ref-bearing attr in ``REF_BEARING_ATTR_NAMES`` (@objectRef / @references
|
|
227
|
+
/ @from / @of / @via / @parameterRef / @payloadRef / @responseRef) — the dotted
|
|
228
|
+
``.child`` tail of the origin heads is stripped to the entity OWNER. ``extends``
|
|
229
|
+
is intentionally NOT covered: its same-package/root-strict super-resolver never
|
|
230
|
+
matches a packaged object by bare name, so a bare cross-package ``extends`` is
|
|
231
|
+
unresolved (ERR_UNRESOLVED_SUPER), not ambiguous. Mirrors the TS reference
|
|
232
|
+
``validateCrossPackageRefs``.
|
|
233
|
+
"""
|
|
234
|
+
|
|
235
|
+
def _visit(node: MetaData, obj: MetaData, referrer_pkg: str) -> None:
|
|
236
|
+
for attr_name in REF_BEARING_ATTR_NAMES:
|
|
237
|
+
# ADR-0039 sanctioned own: judge the ref AUTHORED on THIS node; an
|
|
238
|
+
# inherited ref was judged on its declaring node. Mirrors the TS
|
|
239
|
+
# `node.ownAttr(attrName)`.
|
|
240
|
+
raw = node.attr(attr_name)
|
|
241
|
+
if not isinstance(raw, str):
|
|
242
|
+
continue
|
|
243
|
+
# Owner = the object part; strip any FR-024 dotted `.child` tail. An FQN
|
|
244
|
+
# owner (has `::`) is resolved exactly and can never be ambiguous.
|
|
245
|
+
dot = raw.find(CHILD_REF_SEP)
|
|
246
|
+
owner = raw if dot == -1 else raw[:dot]
|
|
247
|
+
if PACKAGE_SEP in owner or owner == "":
|
|
248
|
+
continue
|
|
249
|
+
if not resolve_object_ref(root, owner, referrer_pkg).ambiguous:
|
|
250
|
+
continue
|
|
251
|
+
pkgs = [
|
|
252
|
+
c.resolution_key()
|
|
253
|
+
for c in root.children()
|
|
254
|
+
if c.type == TYPE_OBJECT and c.name == owner
|
|
255
|
+
]
|
|
256
|
+
errors.append(
|
|
257
|
+
MetaError(
|
|
258
|
+
f'@{attr_name} "{raw}" on {obj.fqn()}: bare reference "{owner}" '
|
|
259
|
+
f"is ambiguous — it names an object in multiple packages "
|
|
260
|
+
f"({', '.join(pkgs)}) and none is in the referrer's package "
|
|
261
|
+
f'"{referrer_pkg}". Qualify it with the package (FQN).',
|
|
262
|
+
ErrorCode.ERR_AMBIGUOUS_REF,
|
|
263
|
+
envelope=resolved_source(node.source, obj.fqn(), owner),
|
|
264
|
+
)
|
|
265
|
+
)
|
|
266
|
+
for c in node.own_children():
|
|
267
|
+
_visit(c, obj, referrer_pkg)
|
|
268
|
+
|
|
269
|
+
for obj in root.children():
|
|
270
|
+
if obj.type != TYPE_OBJECT:
|
|
271
|
+
continue
|
|
272
|
+
referrer_pkg = obj.package or obj.file_default_package or ""
|
|
273
|
+
_visit(obj, obj, referrer_pkg)
|
|
274
|
+
|
|
275
|
+
|
|
211
276
|
# ---------------------------------------------------------------------------
|
|
212
277
|
# Pass: attr-schema validation
|
|
213
278
|
# ---------------------------------------------------------------------------
|
|
@@ -29,6 +29,8 @@ NEVER expanded — it is the node's identity.
|
|
|
29
29
|
"""
|
|
30
30
|
from __future__ import annotations
|
|
31
31
|
|
|
32
|
+
from typing import TYPE_CHECKING, NamedTuple, Optional
|
|
33
|
+
|
|
32
34
|
from .meta.core.field.field_constants import FIELD_ATTR_OBJECT_REF
|
|
33
35
|
from .meta.core.identity.identity_constants import IDENTITY_REFERENCE_ATTR_REFERENCES
|
|
34
36
|
from .meta.core.relationship.relationship_constants import RELATIONSHIP_ATTR_OBJECT_REF
|
|
@@ -42,8 +44,12 @@ from .meta.template.template_constants import (
|
|
|
42
44
|
TEMPLATE_ATTR_PAYLOAD_REF,
|
|
43
45
|
TEMPLATE_ATTR_RESPONSE_REF,
|
|
44
46
|
)
|
|
47
|
+
from .shared.base_types import TYPE_OBJECT
|
|
45
48
|
from .shared.separators import PACKAGE_SEP
|
|
46
49
|
|
|
50
|
+
if TYPE_CHECKING:
|
|
51
|
+
from .meta.meta_data import MetaData
|
|
52
|
+
|
|
47
53
|
# Structural separator literals (Python has no PACKAGE_PARENT / CHILD_REF_SEPARATOR
|
|
48
54
|
# constant module; the TS values are "::" / "." / ".." — PACKAGE_SEP already
|
|
49
55
|
# carries "::"). Defined here to mirror TS naming-refs.ts.
|
|
@@ -139,3 +145,64 @@ def expand_ref(raw: str, package_context: str) -> str:
|
|
|
139
145
|
"""
|
|
140
146
|
owner, tail = _split_child_tail(raw)
|
|
141
147
|
return _expand_owner(owner, package_context) + tail
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
# ---------------------------------------------------------------------------
|
|
151
|
+
# ADR-0041 — cross-package OBJECT reference resolution contract
|
|
152
|
+
# ---------------------------------------------------------------------------
|
|
153
|
+
# The SINGLE resolver every object-ref site shares so the same-package-preference
|
|
154
|
+
# contract is uniform. Mirrors the TS reference ``resolveObjectRef`` /
|
|
155
|
+
# ``objectPackage`` in naming-refs.ts.
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
class ObjectRefResolution(NamedTuple):
|
|
159
|
+
"""Result of :func:`resolve_object_ref` — mirrors the TS ``{ node?, ambiguous? }``.
|
|
160
|
+
|
|
161
|
+
* ``node`` — the uniquely-resolved object (``None`` when nothing matched, or
|
|
162
|
+
when a bare ref is cross-package-ambiguous).
|
|
163
|
+
* ``ambiguous`` — True ONLY for a BARE ref that names an object in more than
|
|
164
|
+
one OTHER package with none in the referrer's own package.
|
|
165
|
+
"""
|
|
166
|
+
|
|
167
|
+
node: Optional["MetaData"]
|
|
168
|
+
ambiguous: bool
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def _object_package(node: "MetaData") -> str:
|
|
172
|
+
"""The effective package of a root-level object — its ``resolution_key()`` minus
|
|
173
|
+
the trailing ``::<name>`` ("" for a root-level/empty-package object). Mirrors
|
|
174
|
+
the TS ``objectPackage``.
|
|
175
|
+
"""
|
|
176
|
+
key = node.resolution_key()
|
|
177
|
+
i = key.rfind(PACKAGE_SEP)
|
|
178
|
+
return "" if i == -1 else key[:i]
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
def resolve_object_ref(
|
|
182
|
+
root: "MetaData", ref: str, referrer_pkg: str
|
|
183
|
+
) -> ObjectRefResolution:
|
|
184
|
+
"""Resolve a metadata OBJECT reference under the ADR-0041 cross-package contract.
|
|
185
|
+
|
|
186
|
+
* **FQN** (``ref`` contains ``::``) → EXACT match on ``resolution_key()``/
|
|
187
|
+
``fqn()``. Never a bare-tail fallback, so an FQN pointing at one package never
|
|
188
|
+
binds a same-named object in another (the cross-port bug ADR-0041 closes).
|
|
189
|
+
* **bare** (no ``::``) → prefer an object of that name in the REFERRER's own
|
|
190
|
+
package; else a UNIQUE object of that name across all packages; else (>1
|
|
191
|
+
across OTHER packages, none in the referrer's) → ``ambiguous``.
|
|
192
|
+
|
|
193
|
+
*referrer_pkg* is the effective package of the node carrying the ref. Returns an
|
|
194
|
+
:class:`ObjectRefResolution`. Mirrors the TS ``resolveObjectRef``.
|
|
195
|
+
"""
|
|
196
|
+
objects = [c for c in root.children() if c.type == TYPE_OBJECT]
|
|
197
|
+
if PACKAGE_SEP in ref:
|
|
198
|
+
for c in objects:
|
|
199
|
+
if c.resolution_key() == ref or c.fqn() == ref:
|
|
200
|
+
return ObjectRefResolution(c, False)
|
|
201
|
+
return ObjectRefResolution(None, False)
|
|
202
|
+
matches = [c for c in objects if c.name == ref]
|
|
203
|
+
if len(matches) <= 1:
|
|
204
|
+
return ObjectRefResolution(matches[0] if matches else None, False)
|
|
205
|
+
for c in matches:
|
|
206
|
+
if _object_package(c) == referrer_pkg:
|
|
207
|
+
return ObjectRefResolution(c, False)
|
|
208
|
+
return ObjectRefResolution(None, True)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/extract_delegate_emitter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generators/entity_model.py
RENAMED
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generators/extractor_generator.py
RENAMED
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generators/fr019_shared_enum.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generators/payload_vo_generator.py
RENAMED
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generators/router_generator.py
RENAMED
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/generators/template_generator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/output_format_spec_emitter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/template_codegen/__init__.py
RENAMED
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/template_codegen/output_pattern.py
RENAMED
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/template_codegen/template_data.py
RENAMED
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/codegen/template_codegen/template_spec.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/loader/sources/directory_source.py
RENAMED
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/loader/sources/meta_data_source.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/loader/validate_source_parameter_ref.py
RENAMED
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/loader/validate_source_physical_names.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/field/field_constants.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/identity/identity_constants.py
RENAMED
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/identity/meta_identity.py
RENAMED
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/index/index_constants.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/object/meta_object_aware.py
RENAMED
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/object/object_class_registry.py
RENAMED
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/object/object_constants.py
RENAMED
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/object/object_extract.py
RENAMED
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/relationship/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/core/validator/validator_constants.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/persistence/db/db_constants.py
RENAMED
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/persistence/db/db_provider.py
RENAMED
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/persistence/origin/__init__.py
RENAMED
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/persistence/origin/meta_origin.py
RENAMED
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/persistence/source/__init__.py
RENAMED
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/persistence/source/meta_source.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/presentation/layout/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/presentation/layout/meta_layout.py
RENAMED
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/presentation/ui/ui_provider.py
RENAMED
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/presentation/view/__init__.py
RENAMED
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/presentation/view/meta_view.py
RENAMED
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/presentation/view/view_constants.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/meta/template/template_constants.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.6 → metaobjects-0.15.8}/src/metaobjects/render/extract/json_forgiving_reader.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|