From 047764a15fe0dc459b05c5bd6c3ea1932da9f6d0 Mon Sep 17 00:00:00 2001 From: Nicolas Drebenstedt Date: Wed, 29 Jan 2025 14:32:02 +0100 Subject: [PATCH] update test --- CHANGELOG.md | 4 +- mex/common/models/access_platform.py | 2 +- mex/common/models/activity.py | 2 +- mex/common/models/bibliographic_resource.py | 2 +- mex/common/models/consent.py | 2 +- mex/common/models/contact_point.py | 2 +- mex/common/models/distribution.py | 12 +--- mex/common/models/organization.py | 12 +--- mex/common/models/organizational_unit.py | 10 +-- mex/common/models/person.py | 11 +-- mex/common/models/primary_source.py | 11 +-- mex/common/models/resource.py | 50 +------------ mex/common/models/variable.py | 10 +-- mex/common/models/variable_group.py | 5 +- tests/models/test_filter.py | 78 +++------------------ 15 files changed, 23 insertions(+), 190 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f0b23831..be5e81da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,14 +11,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changes -- BREAKING: reduce Filter classes to a single list field of `FilterField` items - ### Deprecated ### Removed ### Fixed +- reduce Filter classes to a single list field of `FilterField` items + ### Security ## [0.49.0] - 2025-01-29 diff --git a/mex/common/models/access_platform.py b/mex/common/models/access_platform.py index c3597c95..1484c828 100644 --- a/mex/common/models/access_platform.py +++ b/mex/common/models/access_platform.py @@ -207,4 +207,4 @@ class AccessPlatformFilter(_Stem, BaseFilter): entityType: Annotated[ Literal["AccessPlatformFilter"], Field(alias="$type", frozen=True) ] = "AccessPlatformFilter" - fields: list[FilterField] = [] + fields: Annotated[list[FilterField], Field(title="fields")] = [] diff --git a/mex/common/models/activity.py b/mex/common/models/activity.py index 2cfc373f..0f5f2fd8 100644 --- a/mex/common/models/activity.py +++ b/mex/common/models/activity.py @@ -240,4 +240,4 @@ class ActivityFilter(_Stem, BaseFilter): entityType: Annotated[ Literal["ActivityFilter"], Field(alias="$type", frozen=True) ] = "ActivityFilter" - fields: list[FilterField] = [] + fields: Annotated[list[FilterField], Field(title="fields")] = [] diff --git a/mex/common/models/bibliographic_resource.py b/mex/common/models/bibliographic_resource.py index 8dfb40eb..010b9e26 100644 --- a/mex/common/models/bibliographic_resource.py +++ b/mex/common/models/bibliographic_resource.py @@ -374,4 +374,4 @@ class BibliographicResourceFilter(_Stem, BaseFilter): entityType: Annotated[ Literal["BibliographicResourceFilter"], Field(alias="$type", frozen=True) ] = "BibliographicResourceFilter" - fields: list[FilterField] = [] + fields: Annotated[list[FilterField], Field(title="fields")] = [] diff --git a/mex/common/models/consent.py b/mex/common/models/consent.py index 44d3f3ef..700c7502 100644 --- a/mex/common/models/consent.py +++ b/mex/common/models/consent.py @@ -173,4 +173,4 @@ class ConsentFilter(_Stem, BaseFilter): entityType: Annotated[ Literal["ConsentFilter"], Field(alias="$type", frozen=True) ] = "ConsentFilter" - fields: list[FilterField] = [] + fields: Annotated[list[FilterField], Field(title="fields")] = [] diff --git a/mex/common/models/contact_point.py b/mex/common/models/contact_point.py index 829739f2..4c1f3486 100644 --- a/mex/common/models/contact_point.py +++ b/mex/common/models/contact_point.py @@ -147,4 +147,4 @@ class ContactPointFilter(_Stem, BaseFilter): entityType: Annotated[ Literal["ContactPointFilter"], Field(alias="$type", frozen=True) ] = "ContactPointFilter" - fields: list[FilterField] = [] + fields: Annotated[list[FilterField], Field(title="fields")] = [] diff --git a/mex/common/models/distribution.py b/mex/common/models/distribution.py index b585c6ee..d82adf1a 100644 --- a/mex/common/models/distribution.py +++ b/mex/common/models/distribution.py @@ -218,14 +218,4 @@ class DistributionFilter(_Stem, BaseFilter): entityType: Annotated[ Literal["DistributionFilter"], Field(alias="$type", frozen=True) ] = "DistributionFilter" - hadPrimarySource: list[FilterField] = [] - identifierInPrimarySource: list[FilterField] = [] - accessRestriction: list[FilterField] = [] - accessService: list[FilterField] = [] - accessURL: list[FilterField] = [] - downloadURL: list[FilterField] = [] - issued: list[FilterField] = [] - license: list[FilterField] = [] - mediaType: list[FilterField] = [] - modified: list[FilterField] = [] - title: list[FilterField] = [] + fields: Annotated[list[FilterField], Field(title="fields")] = [] diff --git a/mex/common/models/organization.py b/mex/common/models/organization.py index 4c1cecae..af10b626 100644 --- a/mex/common/models/organization.py +++ b/mex/common/models/organization.py @@ -226,14 +226,4 @@ class OrganizationFilter(_Stem, BaseFilter): entityType: Annotated[ Literal["OrganizationFilter"], Field(alias="$type", frozen=True) ] = "OrganizationFilter" - hadPrimarySource: list[FilterField] = [] - identifierInPrimarySource: list[FilterField] = [] - alternativeName: list[FilterField] = [] - geprisId: list[FilterField] = [] - gndId: list[FilterField] = [] - isniId: list[FilterField] = [] - officialName: list[FilterField] = [] - rorId: list[FilterField] = [] - shortName: list[FilterField] = [] - viafId: list[FilterField] = [] - wikidataId: list[FilterField] = [] + fields: Annotated[list[FilterField], Field(title="fields")] = [] diff --git a/mex/common/models/organizational_unit.py b/mex/common/models/organizational_unit.py index 6f3ff04c..31aa4396 100644 --- a/mex/common/models/organizational_unit.py +++ b/mex/common/models/organizational_unit.py @@ -184,12 +184,4 @@ class OrganizationalUnitFilter(_Stem, BaseFilter): entityType: Annotated[ Literal["OrganizationalUnitFilter"], Field(alias="$type", frozen=True) ] = "OrganizationalUnitFilter" - hadPrimarySource: list[FilterField] = [] - identifierInPrimarySource: list[FilterField] = [] - alternativeName: list[FilterField] = [] - email: list[FilterField] = [] - name: list[FilterField] = [] - parentUnit: list[FilterField] = [] - shortName: list[FilterField] = [] - unitOf: list[FilterField] = [] - website: list[FilterField] = [] + fields: Annotated[list[FilterField], Field(title="fields")] = [] diff --git a/mex/common/models/person.py b/mex/common/models/person.py index 8f0507ff..cfb81193 100644 --- a/mex/common/models/person.py +++ b/mex/common/models/person.py @@ -199,13 +199,4 @@ class PersonFilter(_Stem, BaseFilter): entityType: Annotated[ Literal["PersonFilter"], Field(alias="$type", frozen=True) ] = "PersonFilter" - hadPrimarySource: list[FilterField] = [] - identifierInPrimarySource: list[FilterField] = [] - affiliation: list[FilterField] = [] - email: list[FilterField] = [] - familyName: list[FilterField] = [] - fullName: list[FilterField] = [] - givenName: list[FilterField] = [] - isniId: list[FilterField] = [] - memberOf: list[FilterField] = [] - orcidId: list[FilterField] = [] + fields: Annotated[list[FilterField], Field(title="fields")] = [] diff --git a/mex/common/models/primary_source.py b/mex/common/models/primary_source.py index e7a5592d..1e75cf2c 100644 --- a/mex/common/models/primary_source.py +++ b/mex/common/models/primary_source.py @@ -188,13 +188,4 @@ class PrimarySourceFilter(_Stem, BaseFilter): entityType: Annotated[ Literal["PrimarySourceFilter"], Field(alias="$type", frozen=True) ] = "PrimarySourceFilter" - hadPrimarySource: list[FilterField] = [] - identifierInPrimarySource: list[FilterField] = [] - alternativeTitle: list[FilterField] = [] - contact: list[FilterField] = [] - description: list[FilterField] = [] - documentation: list[FilterField] = [] - locatedAt: list[FilterField] = [] - title: list[FilterField] = [] - unitInCharge: list[FilterField] = [] - version: list[FilterField] = [] + fields: Annotated[list[FilterField], Field(title="fields")] = [] diff --git a/mex/common/models/resource.py b/mex/common/models/resource.py index ca2d0fc0..f8eb99d6 100644 --- a/mex/common/models/resource.py +++ b/mex/common/models/resource.py @@ -418,52 +418,4 @@ class ResourceFilter(_Stem, BaseFilter): entityType: Annotated[ Literal["ResourceFilter"], Field(alias="$type", frozen=True) ] = "ResourceFilter" - hadPrimarySource: list[FilterField] = [] - identifierInPrimarySource: list[FilterField] = [] - accessPlatform: list[FilterField] = [] - accessRestriction: list[FilterField] = [] - accrualPeriodicity: list[FilterField] = [] - alternativeTitle: list[FilterField] = [] - anonymizationPseudonymization: list[FilterField] = [] - conformsTo: list[FilterField] = [] - contact: list[FilterField] = [] - contributingUnit: list[FilterField] = [] - contributor: list[FilterField] = [] - created: list[FilterField] = [] - doi: list[FilterField] = [] - creator: list[FilterField] = [] - description: list[FilterField] = [] - distribution: list[FilterField] = [] - documentation: list[FilterField] = [] - externalPartner: list[FilterField] = [] - hasLegalBasis: list[FilterField] = [] - hasPersonalData: list[FilterField] = [] - icd10code: list[FilterField] = [] - instrumentToolOrApparatus: list[FilterField] = [] - isPartOf: list[FilterField] = [] - keyword: list[FilterField] = [] - language: list[FilterField] = [] - license: list[FilterField] = [] - loincId: list[FilterField] = [] - maxTypicalAge: list[FilterField] = [] - meshId: list[FilterField] = [] - method: list[FilterField] = [] - methodDescription: list[FilterField] = [] - minTypicalAge: list[FilterField] = [] - modified: list[FilterField] = [] - populationCoverage: list[FilterField] = [] - publication: list[FilterField] = [] - publisher: list[FilterField] = [] - qualityInformation: list[FilterField] = [] - resourceCreationMethod: list[FilterField] = [] - resourceTypeGeneral: list[FilterField] = [] - resourceTypeSpecific: list[FilterField] = [] - rights: list[FilterField] = [] - sizeOfDataBasis: list[FilterField] = [] - spatial: list[FilterField] = [] - stateOfDataProcessing: list[FilterField] = [] - temporal: list[FilterField] = [] - theme: list[FilterField] = [] - title: list[FilterField] = [] - unitInCharge: list[FilterField] = [] - wasGeneratedBy: list[FilterField] = [] + fields: Annotated[list[FilterField], Field(title="fields")] = [] diff --git a/mex/common/models/variable.py b/mex/common/models/variable.py index 3470168b..a47b847e 100644 --- a/mex/common/models/variable.py +++ b/mex/common/models/variable.py @@ -209,12 +209,4 @@ class VariableFilter(_Stem, BaseFilter): entityType: Annotated[ Literal["VariableFilter"], Field(alias="$type", frozen=True) ] = "VariableFilter" - hadPrimarySource: list[FilterField] = [] - identifierInPrimarySource: list[FilterField] = [] - belongsTo: list[FilterField] = [] - codingSystem: list[FilterField] = [] - dataType: list[FilterField] = [] - description: list[FilterField] = [] - label: list[FilterField] = [] - usedIn: list[FilterField] = [] - valueSet: list[FilterField] = [] + fields: Annotated[list[FilterField], Field(title="fields")] = [] diff --git a/mex/common/models/variable_group.py b/mex/common/models/variable_group.py index e42b57af..638ea9ee 100644 --- a/mex/common/models/variable_group.py +++ b/mex/common/models/variable_group.py @@ -154,7 +154,4 @@ class VariableGroupFilter(_Stem, BaseFilter): entityType: Annotated[ Literal["VariableGroupFilter"], Field(alias="$type", frozen=True) ] = "VariableGroupFilter" - hadPrimarySource: list[FilterField] = [] - identifierInPrimarySource: list[FilterField] = [] - containedBy: list[FilterField] = [] - label: list[FilterField] = [] + fields: Annotated[list[FilterField], Field(title="fields")] = [] diff --git a/tests/models/test_filter.py b/tests/models/test_filter.py index 17ba6a8e..b581a7db 100644 --- a/tests/models/test_filter.py +++ b/tests/models/test_filter.py @@ -1,6 +1,5 @@ from mex.common.models import ( EXTRACTED_MODEL_CLASSES, - EXTRACTED_MODEL_CLASSES_BY_NAME, FILTER_MODEL_CLASSES, FilterField, PersonFilter, @@ -14,19 +13,12 @@ def test_all_filter_classes_are_defined() -> None: def test_all_filter_fields_are_defined() -> None: for filter_cls in FILTER_MODEL_CLASSES: - extracted_cls = EXTRACTED_MODEL_CLASSES_BY_NAME[ - f"Extracted{filter_cls.stemType}" - ] - assert set(filter_cls.model_fields) == set(extracted_cls.model_fields) field_defs = { field_name: (field_info.annotation, field_info.default) for field_name, field_info in filter_cls.model_fields.items() if field_name != "entityType" } - assert all( - (annotation, default) == (list[FilterField], []) - for annotation, default in field_defs.values() - ) + assert field_defs == {"fields": (list[FilterField], [])} def test_filter_model_schema() -> None: @@ -34,7 +26,7 @@ def test_filter_model_schema() -> None: "$defs": { "FilterField": { "additionalProperties": False, - "description": "Entity filter field model.", + "description": "Filter definition for one field in the primary source.", "properties": { "fieldInPrimarySource": { "anyOf": [{"type": "string"}, {"type": "null"}], @@ -54,10 +46,10 @@ def test_filter_model_schema() -> None: "default": None, "title": "examplesInPrimarySource", }, - "mappingRules": { + "filterRules": { "items": {"$ref": "#/$defs/FilterRule"}, "minItems": 1, - "title": "mappingRules", + "title": "filterRules", "type": "array", }, "comment": { @@ -66,13 +58,13 @@ def test_filter_model_schema() -> None: "title": "comment", }, }, - "required": ["mappingRules"], + "required": ["filterRules"], "title": "FilterField", "type": "object", }, "FilterRule": { "additionalProperties": False, - "description": "Entity filter rule model.", + "description": "A single filter rule to apply.", "properties": { "forValues": { "anyOf": [ @@ -102,64 +94,10 @@ def test_filter_model_schema() -> None: "title": "$Type", "type": "string", }, - "hadPrimarySource": { + "fields": { "default": [], "items": {"$ref": "#/$defs/FilterField"}, - "title": "Hadprimarysource", - "type": "array", - }, - "identifierInPrimarySource": { - "default": [], - "items": {"$ref": "#/$defs/FilterField"}, - "title": "Identifierinprimarysource", - "type": "array", - }, - "affiliation": { - "default": [], - "items": {"$ref": "#/$defs/FilterField"}, - "title": "Affiliation", - "type": "array", - }, - "email": { - "default": [], - "items": {"$ref": "#/$defs/FilterField"}, - "title": "Email", - "type": "array", - }, - "familyName": { - "default": [], - "items": {"$ref": "#/$defs/FilterField"}, - "title": "Familyname", - "type": "array", - }, - "fullName": { - "default": [], - "items": {"$ref": "#/$defs/FilterField"}, - "title": "Fullname", - "type": "array", - }, - "givenName": { - "default": [], - "items": {"$ref": "#/$defs/FilterField"}, - "title": "Givenname", - "type": "array", - }, - "isniId": { - "default": [], - "items": {"$ref": "#/$defs/FilterField"}, - "title": "Isniid", - "type": "array", - }, - "memberOf": { - "default": [], - "items": {"$ref": "#/$defs/FilterField"}, - "title": "Memberof", - "type": "array", - }, - "orcidId": { - "default": [], - "items": {"$ref": "#/$defs/FilterField"}, - "title": "Orcidid", + "title": "fields", "type": "array", }, },