metaobjects 0.15.8__tar.gz → 0.15.9__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.8 → metaobjects-0.15.9}/PKG-INFO +1 -1
- {metaobjects-0.15.8 → metaobjects-0.15.9}/pyproject.toml +1 -1
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generators/render_helper_generator.py +22 -14
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_render_helper_conformance.py +39 -1
- {metaobjects-0.15.8 → metaobjects-0.15.9}/.gitignore +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/LICENSE +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/README.md +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/hatch_build.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/agent_context/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/agent_context/scaffold.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/apidocs/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/apidocs/api_model.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/apidocs/builder.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/apidocs/naming.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/apidocs/paths.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/apidocs/renderer.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/attr_class_map.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/cli.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/KNOWN_GAPS.md +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/config.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/constants.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/extract_delegate_emitter.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/extract_schema_emitter.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/format.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/fr010_field_mapping.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generator.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generator_registry.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generators/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generators/entity_model.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generators/extractor_generator.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generators/filter_allowlist_generator.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generators/fr019_shared_enum.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generators/m2m_codegen.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generators/output_parser_generator.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generators/output_prompt_generator.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generators/payload_vo_generator.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generators/router_generator.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generators/template_generator.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generators/tph_plan.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generators/trace_helper_generator.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/instance_artifacts.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/output_format_spec_emitter.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/overwrite_policy.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/runner.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/runtime/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/runtime/filter_parser.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/template_codegen/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/template_codegen/output_pattern.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/template_codegen/template_data.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/template_codegen/template_spec.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/type_map.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/core_types.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/datatype.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/documentation/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/documentation/doc_constants.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/documentation/doc_provider.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/documentation/doc_schema.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/errors.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/loader/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/loader/merge.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/loader/meta_data_loader.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/loader/registered_validation.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/loader/sources/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/loader/sources/directory_source.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/loader/sources/file_source.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/loader/sources/meta_data_source.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/loader/sources/uri_source.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/loader/validate_discriminator.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/loader/validate_field_readonly.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/loader/validate_source_parameter_ref.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/loader/validate_source_physical_names.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/loader/validation_passes.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/attr/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/attr/attr_constants.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/attr/meta_attr.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/field/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/field/field_constants.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/field/meta_field.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/identity/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/identity/identity_constants.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/identity/meta_identity.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/index/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/index/index_constants.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/index/meta_index.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/object/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/object/meta_object.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/object/meta_object_aware.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/object/object_class_registry.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/object/object_constants.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/object/object_extract.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/object/value_object.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/relationship/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/relationship/derive_m2m_fields.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/relationship/meta_relationship.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/relationship/relationship_constants.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/validator/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/validator/validator_constants.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/meta_data.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/meta_root.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/persistence/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/persistence/db/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/persistence/db/db_constants.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/persistence/db/db_provider.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/persistence/origin/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/persistence/origin/meta_origin.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/persistence/origin/origin_constants.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/persistence/source/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/persistence/source/meta_source.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/persistence/source/source_constants.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/presentation/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/presentation/layout/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/presentation/layout/layout_constants.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/presentation/layout/meta_layout.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/presentation/ui/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/presentation/ui/ui_provider.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/presentation/view/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/presentation/view/meta_view.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/presentation/view/view_constants.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/provider_extends.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/template/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/template/meta_template.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/template/prompt_provider.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/template/template_constants.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/naming_refs.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/parser.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/parser_yaml.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/provider.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/py.typed +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/registry.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/registry_manifest.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/email_document.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/escapers.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/extract/KNOWN_GAPS.md +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/extract/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/extract/coerce.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/extract/extract.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/extract/extract_map.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/extract/json_forgiving_reader.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/extract/locate.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/extract/normalize.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/extract/strip.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/extract/types.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/extract/xml_forgiving_reader.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/filesystem_provider.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/prompt/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/prompt/output_format_renderer.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/prompt/output_format_spec.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/prompt/prompt_field.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/prompt/prompt_overrides.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/prompt/prompt_style.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/renderer.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/verify.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/runtime/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/runtime/llm_recorder.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/runtime/n2m_resolver.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/runtime/object_manager.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/runtime/tph.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/serializer_json.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/shared/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/shared/base_types.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/shared/separators.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/shared/structural.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/source/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/source/error_source.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/source/json_path.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/source/semantic_diff.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/source/yaml_positions.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/spec_metamodel/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/spec_metamodel/attr.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/spec_metamodel/db.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/spec_metamodel/documentation.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/spec_metamodel/field.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/spec_metamodel/identity.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/spec_metamodel/index.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/spec_metamodel/layout.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/spec_metamodel/object.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/spec_metamodel/origin.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/spec_metamodel/prompt.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/spec_metamodel/relationship.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/spec_metamodel/source.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/spec_metamodel/template.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/spec_metamodel/ui.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/spec_metamodel/validator.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/spec_metamodel/view.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/super_resolve.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/validation_types.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/yaml_desugar.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/golden/extends/expected/BaseEntity.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/golden/extends/expected/Program.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/golden/extends/meta.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/golden/nested-array/expected/AuthorBrief.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/golden/nested-array/expected/PostBrief.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/golden/nested-array/meta.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/golden/scalars/expected/Metric.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/golden/scalars/expected/Report.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/golden/scalars/meta.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/golden/vanilla/expected/Subscriber.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/golden/vanilla/meta.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_abstract_conformance.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_api_docs_builder.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_api_docs_paths.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_cli.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_cli_providers.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_cli_registry.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_cli_staleness_nudge.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_cli_verify_strict.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_cli_verify_subverbs.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_constants_config.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_entity_model.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_enum_conformance.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_extends_abstract_field_inheritance.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_extractor_generator.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_filter_allowlist_generator.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_format.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_fr010_nested_object_prompt.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_fr010_output_codegen.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_fr019_shared_provided_conformance.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_generator.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_generator_extension_seams.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_golden.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_inherit_without_restate_gate.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_inheritance_conformance.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_instance_artifacts.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_m2m_codegen.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_output_parser_generator.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_overwrite_policy.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_payload_vo_generator.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_projection_compile.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_render_helper_generator.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_reverse_finders.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_router_generator.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_runner.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_template_data.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_template_generator.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_template_output_pattern.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_template_scope_helpers.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_template_scope_walk.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_template_spec.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_tph_codegen.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_trace_helper_generator.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_type_map.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/codegen/test_validation_conformance.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/capabilities.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/conformance-expected-failures.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/conformance_adapter.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/corpus.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/expected_failures.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/fixture_discovery.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/navigator.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/test_api_docs_cross_port_conformance.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/test_conformance.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/test_extract_conformance.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/test_extract_object_verdict.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/test_fr010_loader_attrs.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/test_fr011_attrs.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/test_generator_registry_conformance.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/test_object_model_conformance.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/test_provider_composition_conformance.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/test_registry_conformance.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/test_runner_hardfail.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/test_spec_metamodel_embed.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/test_strict_attr_load.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/test_template_codegen_conformance.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/test_template_generator_conformance.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/test_yaml_conformance.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/conformance/yaml-conformance-expected-failures.json +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/api_contract_assertions.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/api_contract_jsonb_server.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/api_contract_m2m_server.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/api_contract_server.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/generated_jsonb_app.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/generated_m2m_app.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/generated_router_app.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/generated_tph_app.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/meta_ai_trace.yaml +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/normalization.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/postgres_container.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/query_runner.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/scenarios.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/test_api_contract.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/test_api_contract_generated.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/test_api_contract_jsonb.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/test_api_contract_m2m.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/test_api_contract_m2m_generated.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/test_api_contract_tph_generated.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/test_llm_call_trace.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/test_normalization.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/test_query_scenarios.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/integration/test_runtime_return_types.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/open_closed_proof_test.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/extract/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/extract/test_coerce.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/extract/test_extract.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/extract/test_extract_map.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/extract/test_json_forgiving_reader.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/extract/test_locate.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/extract/test_model.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/extract/test_normalize.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/extract/test_strip.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/extract/test_xml_forgiving_reader.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/prompt/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/prompt/test_output_format_renderer.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/test_email_document.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/test_filesystem_provider.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/test_output_format_renderer_nested.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/test_output_prompt_conformance.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/test_render_conformance.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/test_render_max_chars.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/test_verify.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/render/test_verify_conformance.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/source/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/source/test_fr5c_merge_attribution.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/source/test_fr5d_reference_resolution.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/source/test_fr5e_database_source_shape.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/source/test_json_path.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/source/test_semantic_diff.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/source/test_source_on_node.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/source/test_yaml_positions.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/test_api_docs_accuracy.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/__init__.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_agent_context_staleness.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_capabilities.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_common_attrs.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_core_types.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_effective_package.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_errors.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_field_enum.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_field_map_validation.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_field_uuid_dbcolumntype.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_fr016_source_name_and_kind_aliases.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_index_lookup.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_llm_recorder.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_loader.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_loader_bom.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_loader_class.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_merge.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_meta_attr.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_meta_data.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_meta_source.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_module_shortcuts.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_n2m_resolver.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_n2m_resolver_inherited.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_object_manager_uuid_coercion.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_one_primary_source.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_parser.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_parser_yaml.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_provider.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_provider_extension.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_registry.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_registry_completeness.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_registry_extend.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_registry_sealed.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_relationship_referential_actions.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_resolution_key.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_runtime_resolution_key_binding.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_serializer.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_shared_constants.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_smoke.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_sources.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_strict_child_placement.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_super_resolve.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_template_toolcall.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_template_wrong_subtype_attrs.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_validation_attr_schema.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_validation_filter_values.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_validation_origin_paths.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_validation_sort_field.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_validation_warnings.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_write_coercion_arrays.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/tests/unit/test_yaml_desugar.py +0 -0
- {metaobjects-0.15.8 → metaobjects-0.15.9}/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.9
|
|
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.9"
|
|
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"
|
|
@@ -26,10 +26,10 @@ build fail when a mustache references a field the payload VO doesn't declare.
|
|
|
26
26
|
Reuse, not reimplementation: ``render`` (the emitted runtime call), ``verify`` (the
|
|
27
27
|
build-time gate), ``FilesystemProvider`` (build-time ref resolution), and
|
|
28
28
|
``EmailDocument`` (email return type). The payload field tree is walked from the VO
|
|
29
|
-
the same way the other generators walk it —
|
|
30
|
-
|
|
31
|
-
TS ``
|
|
32
|
-
only recursing into ``object.value`` targets, cycle-guarded.
|
|
29
|
+
the same way the other generators walk it — a nested ``field.object``'s ``@objectRef``
|
|
30
|
+
is resolved FQN-exact when fully-qualified (ADR-0041) else by short name (cross-port
|
|
31
|
+
render-helper consensus: TS ``refMatchesObject`` / Java+Kotlin ``resolveNestedObjectRef``
|
|
32
|
+
/ C# ``ResolveNestedObjectRef``), only recursing into ``object.value`` targets, cycle-guarded.
|
|
33
33
|
|
|
34
34
|
Python divergence vs TS / Java / C#: Python's ``RenderRequest`` has NO ``verify``
|
|
35
35
|
field — the Python render engine does not run a runtime drift pass — so the emitted
|
|
@@ -75,19 +75,24 @@ def _py_str(s: str) -> str:
|
|
|
75
75
|
|
|
76
76
|
|
|
77
77
|
# ---------------------------------------------------------------------------
|
|
78
|
-
# Payload field-tree walk — nested @objectRef resolved
|
|
79
|
-
#
|
|
80
|
-
#
|
|
78
|
+
# Payload field-tree walk — nested @objectRef resolved FQN-exact (ADR-0041).
|
|
79
|
+
# Object-ref fields recurse into their target object.value (SUBTYPE_VALUE only);
|
|
80
|
+
# a `seen` set guards reference cycles.
|
|
81
81
|
# ---------------------------------------------------------------------------
|
|
82
82
|
|
|
83
83
|
|
|
84
84
|
def _resolve_nested_object_ref(root: MetaData, reference: str) -> MetaObject | None:
|
|
85
|
-
"""Resolve a ``field.object``'s ``@objectRef`` to its target ``object.value
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
85
|
+
"""Resolve a ``field.object``'s ``@objectRef`` to its target ``object.value``.
|
|
86
|
+
|
|
87
|
+
ADR-0041: a FULLY-QUALIFIED ref (contains ``::``) resolves EXACTLY on the
|
|
88
|
+
package-qualified name (``resolution_key()``/``fqn()``) — never a bare-tail
|
|
89
|
+
fallback that would bind a same-named ``object.value`` in the WRONG package on a
|
|
90
|
+
cross-package short-name collision. A bare ref still matches by short name
|
|
91
|
+
(first-wins). Mirrors the Java/Kotlin ``resolveNestedObjectRef`` + TS
|
|
92
|
+
``refMatchesObject``."""
|
|
89
93
|
if not reference:
|
|
90
94
|
return None
|
|
95
|
+
fqn = PACKAGE_SEP in reference
|
|
91
96
|
ref_short = reference.rsplit(PACKAGE_SEP, 1)[-1]
|
|
92
97
|
# ADR-0039 sanctioned own: top-level scan on the loader ROOT (never extended, own == effective)
|
|
93
98
|
for child in root.own_children():
|
|
@@ -95,7 +100,10 @@ def _resolve_nested_object_ref(root: MetaData, reference: str) -> MetaObject | N
|
|
|
95
100
|
continue
|
|
96
101
|
if child.sub_type != OBJECT_SUBTYPE_VALUE:
|
|
97
102
|
continue
|
|
98
|
-
if
|
|
103
|
+
if fqn:
|
|
104
|
+
if child.resolution_key() == reference or child.fqn() == reference:
|
|
105
|
+
return child
|
|
106
|
+
elif child.name.rsplit(PACKAGE_SEP, 1)[-1] == ref_short:
|
|
99
107
|
return child
|
|
100
108
|
return None
|
|
101
109
|
|
|
@@ -107,9 +115,9 @@ def _derive_payload_field_tree(
|
|
|
107
115
|
resolvable ``@objectRef`` to an ``object.value`` becomes a context-pushing node whose
|
|
108
116
|
children are the target VO's tree (recursed, cycle-guarded). Every other field is a
|
|
109
117
|
leaf."""
|
|
110
|
-
if vo is None or vo.
|
|
118
|
+
if vo is None or vo.resolution_key() in seen:
|
|
111
119
|
return []
|
|
112
|
-
next_seen = seen | {vo.
|
|
120
|
+
next_seen = seen | {vo.resolution_key()}
|
|
113
121
|
fields: list[PayloadField] = []
|
|
114
122
|
for f in vo.children():
|
|
115
123
|
if f.type != TYPE_FIELD or not isinstance(f, MetaField):
|
|
@@ -27,7 +27,7 @@ from pathlib import Path
|
|
|
27
27
|
import pytest
|
|
28
28
|
|
|
29
29
|
import metaobjects.core_types # noqa: F401 — side-effect: registers attr classes
|
|
30
|
-
from metaobjects import MetaDataLoader
|
|
30
|
+
from metaobjects import InMemoryStringSource, MetaDataLoader
|
|
31
31
|
from metaobjects.codegen.config import GenConfig
|
|
32
32
|
from metaobjects.codegen.generator import GenContext
|
|
33
33
|
from metaobjects.codegen.generators.render_helper_generator import RenderHelperGenerator
|
|
@@ -45,6 +45,15 @@ def _load_root(meta_json: Path):
|
|
|
45
45
|
return res.root
|
|
46
46
|
|
|
47
47
|
|
|
48
|
+
def _load_root_from_files(*meta_jsons: Path):
|
|
49
|
+
# Multi-file (multi-package) load — one InMemoryStringSource per file, merged into a
|
|
50
|
+
# single root (mirrors fixtures/conformance/loader-same-name-distinct-packages).
|
|
51
|
+
sources = [InMemoryStringSource(p.read_text()) for p in meta_jsons]
|
|
52
|
+
res = MetaDataLoader().load(sources)
|
|
53
|
+
assert res.errors == [], res.errors
|
|
54
|
+
return res.root
|
|
55
|
+
|
|
56
|
+
|
|
48
57
|
def _ctx(root) -> GenContext:
|
|
49
58
|
return GenContext(
|
|
50
59
|
entities=[],
|
|
@@ -156,6 +165,35 @@ def test_email_order_email_renders_nested_array_loop_and_partial(tmp_path) -> No
|
|
|
156
165
|
assert "<hr/>Sent by Acme" in doc.html_body
|
|
157
166
|
|
|
158
167
|
|
|
168
|
+
# ---------------------------------------------------------------------------
|
|
169
|
+
# xpkg-collision/ — cross-package short-name collision (ADR-0041). Two packages
|
|
170
|
+
# each declare an object.value `Note` (alpha: alphaText, beta: betaText); the
|
|
171
|
+
# payload `Digest` references BOTH by FULLY-QUALIFIED @objectRef. A bare-tail
|
|
172
|
+
# resolver binds both refs to whichever Note loads first → one field lands on the
|
|
173
|
+
# wrong element type → the drift gate raises. FQN-exact resolution renders both.
|
|
174
|
+
# ---------------------------------------------------------------------------
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def test_document_digest_doc_resolves_fqn_nested_object_ref_across_collision(tmp_path) -> None:
|
|
178
|
+
dir_root = CORPUS / "xpkg-collision"
|
|
179
|
+
root = _load_root_from_files(
|
|
180
|
+
dir_root / "meta.alpha.json",
|
|
181
|
+
dir_root / "meta.beta.json",
|
|
182
|
+
dir_root / "meta.app.json",
|
|
183
|
+
)
|
|
184
|
+
templates = str(CORPUS / "templates")
|
|
185
|
+
# Must NOT raise: the FQN refs resolve to their own package's Note.
|
|
186
|
+
files = [f for f in RenderHelperGenerator(templates).generate(_ctx(root))
|
|
187
|
+
if f.path == "digest_doc_render_helper.py"]
|
|
188
|
+
assert len(files) == 1
|
|
189
|
+
_materialize_and_import(files, tmp_path)
|
|
190
|
+
helper = import_module("_rh_conf_pkg.digest_doc_render_helper")
|
|
191
|
+
|
|
192
|
+
payload = {"fromAlpha": {"alphaText": "AA"}, "fromBeta": {"betaText": "BB"}}
|
|
193
|
+
out = helper.render_digest_doc(payload, FilesystemProvider(templates))
|
|
194
|
+
assert out == "Alpha=AA Beta=BB"
|
|
195
|
+
|
|
196
|
+
|
|
159
197
|
# ---------------------------------------------------------------------------
|
|
160
198
|
# drift/ → codegen FAILS (ValueError) with ERR_VAR_NOT_ON_PAYLOAD.
|
|
161
199
|
# ---------------------------------------------------------------------------
|
|
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.8 → metaobjects-0.15.9}/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.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generators/entity_model.py
RENAMED
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generators/extractor_generator.py
RENAMED
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generators/fr019_shared_enum.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generators/payload_vo_generator.py
RENAMED
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generators/router_generator.py
RENAMED
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/generators/template_generator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/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.8 → metaobjects-0.15.9}/src/metaobjects/codegen/template_codegen/__init__.py
RENAMED
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/template_codegen/output_pattern.py
RENAMED
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/codegen/template_codegen/template_data.py
RENAMED
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/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
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/loader/sources/directory_source.py
RENAMED
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/loader/sources/meta_data_source.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/loader/validate_source_parameter_ref.py
RENAMED
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/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
|
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/field/field_constants.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/identity/identity_constants.py
RENAMED
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/identity/meta_identity.py
RENAMED
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/index/index_constants.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/object/meta_object_aware.py
RENAMED
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/object/object_class_registry.py
RENAMED
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/object/object_constants.py
RENAMED
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/core/object/object_extract.py
RENAMED
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/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.8 → metaobjects-0.15.9}/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.8 → metaobjects-0.15.9}/src/metaobjects/meta/persistence/db/db_constants.py
RENAMED
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/persistence/db/db_provider.py
RENAMED
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/persistence/origin/__init__.py
RENAMED
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/persistence/origin/meta_origin.py
RENAMED
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/persistence/source/__init__.py
RENAMED
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/persistence/source/meta_source.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/presentation/layout/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/presentation/layout/meta_layout.py
RENAMED
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/presentation/ui/ui_provider.py
RENAMED
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/presentation/view/__init__.py
RENAMED
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/meta/presentation/view/meta_view.py
RENAMED
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/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.8 → metaobjects-0.15.9}/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
|
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/extract/json_forgiving_reader.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/extract/xml_forgiving_reader.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/prompt/output_format_renderer.py
RENAMED
|
File without changes
|
{metaobjects-0.15.8 → metaobjects-0.15.9}/src/metaobjects/render/prompt/output_format_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
|
|
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
|