mex.common.merged package

Submodules

mex.common.merged.main module

mex.common.merged.main._apply_lenient_fallback(extracted_sources_and_values: Iterable[tuple[MergedPrimarySourceIdentifier, str | int | float | None | bool]], additive_rule_sources_and_values: Iterable[tuple[MergedPrimarySourceIdentifier, str | int | float | None | bool]], subtracted_values: list[str | int | float | None | bool]) list[str | int | float | None | bool]

Apply lenient fallback by returning first available value from any source.

Parameters:
  • extracted_sources_and_values – (source, value) tuples from extracted items

  • additive_rule_sources_and_values – (source, value) tuples from additive rules

  • subtracted_values – Values that were subtracted/removed

Returns:

List containing the first available value, or empty list if none found

mex.common.merged.main._collect_additive_values(field: str, rule_set: AccessPlatformRuleSetRequest | ActivityRuleSetRequest | BibliographicResourceRuleSetRequest | ConsentRuleSetRequest | ContactPointRuleSetRequest | DistributionRuleSetRequest | OrganizationRuleSetRequest | OrganizationalUnitRuleSetRequest | PersonRuleSetRequest | PrimarySourceRuleSetRequest | ResourceRuleSetRequest | VariableRuleSetRequest | VariableGroupRuleSetRequest | AccessPlatformRuleSetResponse | ActivityRuleSetResponse | BibliographicResourceRuleSetResponse | ConsentRuleSetResponse | ContactPointRuleSetResponse | DistributionRuleSetResponse | OrganizationRuleSetResponse | OrganizationalUnitRuleSetResponse | PersonRuleSetResponse | PrimarySourceRuleSetResponse | ResourceRuleSetResponse | VariableRuleSetResponse | VariableGroupRuleSetResponse) list[tuple[MergedPrimarySourceIdentifier, str | int | float | None | bool]]

Collect values from additive rules for a specific field.

Parameters:
  • field – Name of the field to extract values from

  • rule_set – Rule set containing additive rules

Returns:

List of (source, value) tuples from the additive rules

mex.common.merged.main._collect_extracted_values(field: str, extracted_items: Iterable[ExtractedAccessPlatform | ExtractedActivity | ExtractedBibliographicResource | ExtractedConsent | ExtractedContactPoint | ExtractedDistribution | ExtractedOrganization | ExtractedOrganizationalUnit | ExtractedPerson | ExtractedPrimarySource | ExtractedResource | ExtractedVariable | ExtractedVariableGroup]) list[tuple[MergedPrimarySourceIdentifier, str | int | float | None | bool]]

Collect values from extracted items for a specific field.

Parameters:
  • field – Name of the field to extract values from

  • extracted_items – Iterable of extracted model instances

Returns:

List of (source, value) tuples from the extracted items

mex.common.merged.main._collect_preventive_sources(field: str, rule_set: AccessPlatformRuleSetRequest | ActivityRuleSetRequest | BibliographicResourceRuleSetRequest | ConsentRuleSetRequest | ContactPointRuleSetRequest | DistributionRuleSetRequest | OrganizationRuleSetRequest | OrganizationalUnitRuleSetRequest | PersonRuleSetRequest | PrimarySourceRuleSetRequest | ResourceRuleSetRequest | VariableRuleSetRequest | VariableGroupRuleSetRequest | AccessPlatformRuleSetResponse | ActivityRuleSetResponse | BibliographicResourceRuleSetResponse | ConsentRuleSetResponse | ContactPointRuleSetResponse | DistributionRuleSetResponse | OrganizationRuleSetResponse | OrganizationalUnitRuleSetResponse | PersonRuleSetResponse | PrimarySourceRuleSetResponse | ResourceRuleSetResponse | VariableRuleSetResponse | VariableGroupRuleSetResponse) list[MergedPrimarySourceIdentifier]

Collect sources from preventive rules for a specific field.

Parameters:
  • field – Name of the field to extract sources from

  • rule_set – Rule set containing preventive rules

Returns:

List of sources that should be prevented/blocked

mex.common.merged.main._collect_subtractive_values(field: str, rule_set: AccessPlatformRuleSetRequest | ActivityRuleSetRequest | BibliographicResourceRuleSetRequest | ConsentRuleSetRequest | ContactPointRuleSetRequest | DistributionRuleSetRequest | OrganizationRuleSetRequest | OrganizationalUnitRuleSetRequest | PersonRuleSetRequest | PrimarySourceRuleSetRequest | ResourceRuleSetRequest | VariableRuleSetRequest | VariableGroupRuleSetRequest | AccessPlatformRuleSetResponse | ActivityRuleSetResponse | BibliographicResourceRuleSetResponse | ConsentRuleSetResponse | ContactPointRuleSetResponse | DistributionRuleSetResponse | OrganizationRuleSetResponse | OrganizationalUnitRuleSetResponse | PersonRuleSetResponse | PrimarySourceRuleSetResponse | ResourceRuleSetResponse | VariableRuleSetResponse | VariableGroupRuleSetResponse) list[str | int | float | None | bool]

Collect values from subtractive rules for a specific field.

Parameters:
  • field – Name of the field to extract values from

  • rule_set – Rule set containing subtractive rules

Returns:

List of values that should be subtracted/removed

mex.common.merged.main._create_merged_dict(mergeable_fields: Iterable[str], extracted_items: Iterable[ExtractedAccessPlatform | ExtractedActivity | ExtractedBibliographicResource | ExtractedConsent | ExtractedContactPoint | ExtractedDistribution | ExtractedOrganization | ExtractedOrganizationalUnit | ExtractedPerson | ExtractedPrimarySource | ExtractedResource | ExtractedVariable | ExtractedVariableGroup], rule_set: AccessPlatformRuleSetRequest | ActivityRuleSetRequest | BibliographicResourceRuleSetRequest | ConsentRuleSetRequest | ContactPointRuleSetRequest | DistributionRuleSetRequest | OrganizationRuleSetRequest | OrganizationalUnitRuleSetRequest | PersonRuleSetRequest | PrimarySourceRuleSetRequest | ResourceRuleSetRequest | VariableRuleSetRequest | VariableGroupRuleSetRequest | AccessPlatformRuleSetResponse | ActivityRuleSetResponse | BibliographicResourceRuleSetResponse | ConsentRuleSetResponse | ContactPointRuleSetResponse | DistributionRuleSetResponse | OrganizationRuleSetResponse | OrganizationalUnitRuleSetResponse | PersonRuleSetResponse | PrimarySourceRuleSetResponse | ResourceRuleSetResponse | VariableRuleSetResponse | VariableGroupRuleSetResponse, validation: Literal[Validation.STRICT, Validation.LENIENT, Validation.IGNORE]) dict[str, list[str | int | float | None | bool] | str | int | float | None | bool]

Create a merged dictionary by processing all mergeable fields.

Parameters:
  • mergeable_fields – Names of fields that should be processed for merging

  • extracted_items – Iterable of extracted model instances

  • rule_set – Rule set containing additive, subtractive, and preventive rules

  • validation – Validation mode (STRICT, LENIENT, or IGNORE)

Returns:

Dictionary mapping field names to lists of merged values

mex.common.merged.main._ensure_rule_set(rule_set: AccessPlatformRuleSetRequest | ActivityRuleSetRequest | BibliographicResourceRuleSetRequest | ConsentRuleSetRequest | ContactPointRuleSetRequest | DistributionRuleSetRequest | OrganizationRuleSetRequest | OrganizationalUnitRuleSetRequest | PersonRuleSetRequest | PrimarySourceRuleSetRequest | ResourceRuleSetRequest | VariableRuleSetRequest | VariableGroupRuleSetRequest | AccessPlatformRuleSetResponse | ActivityRuleSetResponse | BibliographicResourceRuleSetResponse | ConsentRuleSetResponse | ContactPointRuleSetResponse | DistributionRuleSetResponse | OrganizationRuleSetResponse | OrganizationalUnitRuleSetResponse | PersonRuleSetResponse | PrimarySourceRuleSetResponse | ResourceRuleSetResponse | VariableRuleSetResponse | VariableGroupRuleSetResponse | None, stem_type: str) AccessPlatformRuleSetRequest | ActivityRuleSetRequest | BibliographicResourceRuleSetRequest | ConsentRuleSetRequest | ContactPointRuleSetRequest | DistributionRuleSetRequest | OrganizationRuleSetRequest | OrganizationalUnitRuleSetRequest | PersonRuleSetRequest | PrimarySourceRuleSetRequest | ResourceRuleSetRequest | VariableRuleSetRequest | VariableGroupRuleSetRequest | AccessPlatformRuleSetResponse | ActivityRuleSetResponse | BibliographicResourceRuleSetResponse | ConsentRuleSetResponse | ContactPointRuleSetResponse | DistributionRuleSetResponse | OrganizationRuleSetResponse | OrganizationalUnitRuleSetResponse | PersonRuleSetResponse | PrimarySourceRuleSetResponse | ResourceRuleSetResponse | VariableRuleSetResponse | VariableGroupRuleSetResponse

Ensure a rule set instance exists, creating a default one if needed.

Parameters:
  • rule_set – Existing rule set instance, or None to create a default

  • stem_type – Entity stem type (e.g., “Person”, “ContactPoint”) for creation

Returns:

A rule set instance (either the provided one or a newly created default)

Raises:

KeyError – If stem_type does not correspond to a valid rule set class

mex.common.merged.main._filter_usable_values(possible_sources_and_values: Iterable[tuple[MergedPrimarySourceIdentifier, str | int | float | None | bool]], prevented_sources: list[MergedPrimarySourceIdentifier], subtracted_values: list[str | int | float | None | bool]) list[str | int | float | None | bool]

Filter values by removing prevented sources and subtracted values.

Parameters:
  • possible_sources_and_values – Iterable of (source, value) tuples to filter

  • prevented_sources – List of sources that should be excluded

  • subtracted_values – List of values that should be excluded

Returns:

List of unique, filtered values

mex.common.merged.main._get_merged_class(extracted_items: list[ExtractedAccessPlatform | ExtractedActivity | ExtractedBibliographicResource | ExtractedConsent | ExtractedContactPoint | ExtractedDistribution | ExtractedOrganization | ExtractedOrganizationalUnit | ExtractedPerson | ExtractedPrimarySource | ExtractedResource | ExtractedVariable | ExtractedVariableGroup], rule_set: AccessPlatformRuleSetRequest | ActivityRuleSetRequest | BibliographicResourceRuleSetRequest | ConsentRuleSetRequest | ContactPointRuleSetRequest | DistributionRuleSetRequest | OrganizationRuleSetRequest | OrganizationalUnitRuleSetRequest | PersonRuleSetRequest | PrimarySourceRuleSetRequest | ResourceRuleSetRequest | VariableRuleSetRequest | VariableGroupRuleSetRequest | AccessPlatformRuleSetResponse | ActivityRuleSetResponse | BibliographicResourceRuleSetResponse | ConsentRuleSetResponse | ContactPointRuleSetResponse | DistributionRuleSetResponse | OrganizationRuleSetResponse | OrganizationalUnitRuleSetResponse | PersonRuleSetResponse | PrimarySourceRuleSetResponse | ResourceRuleSetResponse | VariableRuleSetResponse | VariableGroupRuleSetResponse | None, validation: Literal[Validation.STRICT, Validation.LENIENT, Validation.IGNORE]) type[MergedAccessPlatform | MergedActivity | MergedBibliographicResource | MergedConsent | MergedContactPoint | MergedDistribution | MergedOrganization | MergedOrganizationalUnit | MergedPerson | MergedPrimarySource | MergedResource | MergedVariable | MergedVariableGroup | PreviewAccessPlatform | PreviewActivity | PreviewBibliographicResource | PreviewConsent | PreviewContactPoint | PreviewDistribution | PreviewOrganization | PreviewOrganizationalUnit | PreviewPerson | PreviewPrimarySource | PreviewResource | PreviewVariable | PreviewVariableGroup] | None

Determine the appropriate merged model class based on validation mode.

Parameters:
  • extracted_items – List of extracted model instances

  • rule_set – Rule set containing entity type information, or None

  • validation – Validation mode determining whether to use Preview or Merged models

Returns:

The appropriate model class (Preview* for LENIENT, Merged* for STRICT/IGNORE), or None if neither extracted_items nor rule_set was given.

mex.common.merged.main._pick_usable_values(field: str, extracted_items: Iterable[ExtractedAccessPlatform | ExtractedActivity | ExtractedBibliographicResource | ExtractedConsent | ExtractedContactPoint | ExtractedDistribution | ExtractedOrganization | ExtractedOrganizationalUnit | ExtractedPerson | ExtractedPrimarySource | ExtractedResource | ExtractedVariable | ExtractedVariableGroup], rule_set: AccessPlatformRuleSetRequest | ActivityRuleSetRequest | BibliographicResourceRuleSetRequest | ConsentRuleSetRequest | ContactPointRuleSetRequest | DistributionRuleSetRequest | OrganizationRuleSetRequest | OrganizationalUnitRuleSetRequest | PersonRuleSetRequest | PrimarySourceRuleSetRequest | ResourceRuleSetRequest | VariableRuleSetRequest | VariableGroupRuleSetRequest | AccessPlatformRuleSetResponse | ActivityRuleSetResponse | BibliographicResourceRuleSetResponse | ConsentRuleSetResponse | ContactPointRuleSetResponse | DistributionRuleSetResponse | OrganizationRuleSetResponse | OrganizationalUnitRuleSetResponse | PersonRuleSetResponse | PrimarySourceRuleSetResponse | ResourceRuleSetResponse | VariableRuleSetResponse | VariableGroupRuleSetResponse, validation: Literal[Validation.STRICT, Validation.LENIENT, Validation.IGNORE]) list[str | int | float | None | bool]

Pick usable values for a field from given extracted items and rules.

Parameters:
  • field – Name of the field to process

  • extracted_items – Iterable of extracted model instances

  • rule_set – Rule set containing additive, subtractive, and preventive rules

  • validation – Validation mode (STRICT, LENIENT, or IGNORE)

Returns:

List of usable values after applying all rules and validation logic

mex.common.merged.main.create_merged_item(identifier: Identifier, extracted_items: Iterable[ExtractedAccessPlatform | ExtractedActivity | ExtractedBibliographicResource | ExtractedConsent | ExtractedContactPoint | ExtractedDistribution | ExtractedOrganization | ExtractedOrganizationalUnit | ExtractedPerson | ExtractedPrimarySource | ExtractedResource | ExtractedVariable | ExtractedVariableGroup], rule_set: AccessPlatformRuleSetRequest | ActivityRuleSetRequest | BibliographicResourceRuleSetRequest | ConsentRuleSetRequest | ContactPointRuleSetRequest | DistributionRuleSetRequest | OrganizationRuleSetRequest | OrganizationalUnitRuleSetRequest | PersonRuleSetRequest | PrimarySourceRuleSetRequest | ResourceRuleSetRequest | VariableRuleSetRequest | VariableGroupRuleSetRequest | AccessPlatformRuleSetResponse | ActivityRuleSetResponse | BibliographicResourceRuleSetResponse | ConsentRuleSetResponse | ContactPointRuleSetResponse | DistributionRuleSetResponse | OrganizationRuleSetResponse | OrganizationalUnitRuleSetResponse | PersonRuleSetResponse | PrimarySourceRuleSetResponse | ResourceRuleSetResponse | VariableRuleSetResponse | VariableGroupRuleSetResponse | None, validation: Literal[Validation.LENIENT]) PreviewAccessPlatform | PreviewActivity | PreviewBibliographicResource | PreviewConsent | PreviewContactPoint | PreviewDistribution | PreviewOrganization | PreviewOrganizationalUnit | PreviewPerson | PreviewPrimarySource | PreviewResource | PreviewVariable | PreviewVariableGroup
mex.common.merged.main.create_merged_item(identifier: Identifier, extracted_items: Iterable[ExtractedAccessPlatform | ExtractedActivity | ExtractedBibliographicResource | ExtractedConsent | ExtractedContactPoint | ExtractedDistribution | ExtractedOrganization | ExtractedOrganizationalUnit | ExtractedPerson | ExtractedPrimarySource | ExtractedResource | ExtractedVariable | ExtractedVariableGroup], rule_set: AccessPlatformRuleSetRequest | ActivityRuleSetRequest | BibliographicResourceRuleSetRequest | ConsentRuleSetRequest | ContactPointRuleSetRequest | DistributionRuleSetRequest | OrganizationRuleSetRequest | OrganizationalUnitRuleSetRequest | PersonRuleSetRequest | PrimarySourceRuleSetRequest | ResourceRuleSetRequest | VariableRuleSetRequest | VariableGroupRuleSetRequest | AccessPlatformRuleSetResponse | ActivityRuleSetResponse | BibliographicResourceRuleSetResponse | ConsentRuleSetResponse | ContactPointRuleSetResponse | DistributionRuleSetResponse | OrganizationRuleSetResponse | OrganizationalUnitRuleSetResponse | PersonRuleSetResponse | PrimarySourceRuleSetResponse | ResourceRuleSetResponse | VariableRuleSetResponse | VariableGroupRuleSetResponse | None, validation: Literal[Validation.STRICT]) MergedAccessPlatform | MergedActivity | MergedBibliographicResource | MergedConsent | MergedContactPoint | MergedDistribution | MergedOrganization | MergedOrganizationalUnit | MergedPerson | MergedPrimarySource | MergedResource | MergedVariable | MergedVariableGroup
mex.common.merged.main.create_merged_item(identifier: Identifier, extracted_items: Iterable[ExtractedAccessPlatform | ExtractedActivity | ExtractedBibliographicResource | ExtractedConsent | ExtractedContactPoint | ExtractedDistribution | ExtractedOrganization | ExtractedOrganizationalUnit | ExtractedPerson | ExtractedPrimarySource | ExtractedResource | ExtractedVariable | ExtractedVariableGroup], rule_set: AccessPlatformRuleSetRequest | ActivityRuleSetRequest | BibliographicResourceRuleSetRequest | ConsentRuleSetRequest | ContactPointRuleSetRequest | DistributionRuleSetRequest | OrganizationRuleSetRequest | OrganizationalUnitRuleSetRequest | PersonRuleSetRequest | PrimarySourceRuleSetRequest | ResourceRuleSetRequest | VariableRuleSetRequest | VariableGroupRuleSetRequest | AccessPlatformRuleSetResponse | ActivityRuleSetResponse | BibliographicResourceRuleSetResponse | ConsentRuleSetResponse | ContactPointRuleSetResponse | DistributionRuleSetResponse | OrganizationRuleSetResponse | OrganizationalUnitRuleSetResponse | PersonRuleSetResponse | PrimarySourceRuleSetResponse | ResourceRuleSetResponse | VariableRuleSetResponse | VariableGroupRuleSetResponse | None, validation: Literal[Validation.IGNORE]) MergedAccessPlatform | MergedActivity | MergedBibliographicResource | MergedConsent | MergedContactPoint | MergedDistribution | MergedOrganization | MergedOrganizationalUnit | MergedPerson | MergedPrimarySource | MergedResource | MergedVariable | MergedVariableGroup | None

Merge a list of extracted items with a set of rules.

Parameters:
  • identifier – Identifier the finished merged item should have

  • extracted_items – List of extracted items, can be empty

  • rule_set – Rule set, with potentially empty rules

  • validation

    Controls how strictly the merged item needs to validate: - STRICT: Validates all required fields and list lengths. Returns a

    fully validated merged item or raises MergingError on validation failure

    • LENIENT: Skips validation checks and returns a “preview” merged item

      that may be missing required fields and even may be using blocked values

    • IGNORE: In case of validation errors, this mode will safely return None

Raises:
  • MergingError – When the given items cannot be merged (in STRICT mode)

  • MergingError – When neither extracted nor rule items are given (in STRICT mode)

Returns:

Instance of a merged or preview item

mex.common.merged.types module

Module contents