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._ensure_same_entity_type(keeper: AdditiveAccessPlatform | AdditiveActivity | AdditiveBibliographicResource | AdditiveConsent | AdditiveContactPoint | AdditiveDistribution | AdditiveOrganization | AdditiveOrganizationalUnit | AdditivePerson | AdditivePrimarySource | AdditiveResource | AdditiveVariable | AdditiveVariableGroup | SubtractiveAccessPlatform | SubtractiveActivity | SubtractiveBibliographicResource | SubtractiveConsent | SubtractiveContactPoint | SubtractiveDistribution | SubtractiveOrganization | SubtractiveOrganizationalUnit | SubtractivePerson | SubtractivePrimarySource | SubtractiveResource | SubtractiveVariable | SubtractiveVariableGroup | PreventiveAccessPlatform | PreventiveActivity | PreventiveBibliographicResource | PreventiveConsent | PreventiveContactPoint | PreventiveDistribution | PreventiveOrganization | PreventiveOrganizationalUnit | PreventivePerson | PreventivePrimarySource | PreventiveResource | PreventiveVariable | PreventiveVariableGroup | WorkflowAccessPlatform | WorkflowActivity | WorkflowBibliographicResource | WorkflowConsent | WorkflowContactPoint | WorkflowDistribution | WorkflowOrganization | WorkflowOrganizationalUnit | WorkflowPerson | WorkflowPrimarySource | WorkflowResource | WorkflowVariable | WorkflowVariableGroup | 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, goner: AdditiveAccessPlatform | AdditiveActivity | AdditiveBibliographicResource | AdditiveConsent | AdditiveContactPoint | AdditiveDistribution | AdditiveOrganization | AdditiveOrganizationalUnit | AdditivePerson | AdditivePrimarySource | AdditiveResource | AdditiveVariable | AdditiveVariableGroup | SubtractiveAccessPlatform | SubtractiveActivity | SubtractiveBibliographicResource | SubtractiveConsent | SubtractiveContactPoint | SubtractiveDistribution | SubtractiveOrganization | SubtractiveOrganizationalUnit | SubtractivePerson | SubtractivePrimarySource | SubtractiveResource | SubtractiveVariable | SubtractiveVariableGroup | PreventiveAccessPlatform | PreventiveActivity | PreventiveBibliographicResource | PreventiveConsent | PreventiveContactPoint | PreventiveDistribution | PreventiveOrganization | PreventiveOrganizationalUnit | PreventivePerson | PreventivePrimarySource | PreventiveResource | PreventiveVariable | PreventiveVariableGroup | WorkflowAccessPlatform | WorkflowActivity | WorkflowBibliographicResource | WorkflowConsent | WorkflowContactPoint | WorkflowDistribution | WorkflowOrganization | WorkflowOrganizationalUnit | WorkflowPerson | WorkflowPrimarySource | WorkflowResource | WorkflowVariable | WorkflowVariableGroup | 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

Ensure two items to be merged share the same entity type.

Parameters:
  • keeper – Item that survives the merge

  • goner – Item that is merged into keeper

Raises:

MergingError – When keeper and goner are not of the same type

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.main.is_item_publishable(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, publishing_target: PublishingTarget) bool

Check if item is publishable.

E.g. - return False if publishing target is in ForbiddenPublishingTarget in Workflow rule

mex.common.merged.main.merge_rule_set_responses(keeper: RuleSetResponseT, goner: RuleSetResponseT, valid_primary_sources: list[MergedPrimarySourceIdentifier]) RuleSetResponseT

Merge two rule set responses of the same type into a new response.

Each of the contained rules (additive, subtractive, preventive and workflow) is merged with merge_rules, combining the values of keeper and goner while removing duplicates. The stableTargetId of keeper is kept for the result, while the stableTargetId of goner is discarded.

Parameters:
  • keeper – Rule set response that survives the merge; its values come first and its stableTargetId is carried over to the result

  • goner – Rule set response of the same type that is merged into keeper; its values are appended and its stableTargetId is ignored

  • valid_primary_sources – Primary source identifiers whose preventive entries from goner may be kept

Raises:

MergingError – When keeper and goner are not of the same type

Returns:

A new rule set response of the same type with the merged rules and the stableTargetId of keeper

mex.common.merged.main.merge_rules(keeper: RuleT, goner: RuleT, valid_primary_sources: list[MergedPrimarySourceIdentifier]) RuleT

Merge two rules of the same type into a new rule.

Works for any rule type (additive, subtractive, preventive or workflow). For each mergeable field, the resulting rule contains the concatenation of keeper and goner values with duplicates removed while preserving order.

For preventive rules, the primary source identifiers contributed by goner are only kept when they are part of valid_primary_sources; keeper values are always kept. For other rule types valid_primary_sources has no effect.

Parameters:
  • keeper – Rule that survives the merge; its values come first

  • goner – Rule of the same type that is merged into keeper; its values are appended

  • valid_primary_sources – Primary source identifiers whose preventive entries from goner may be kept

Raises:

MergingError – When keeper and goner are not of the same type

Returns:

A new rule instance of the same type with the merged field values

mex.common.merged.types module

Module contents