fermilink.router_rules module

fermilink.router_rules.build_synced_rules(registry, existing_rules, *, default_package_id=None, min_score=None, min_margin=None)[source]

Build merged router rules from registry state and existing rules.

Parameters:
  • registry (dict[str, Any]) – Loaded package registry payload.

  • existing_rules (dict[str, Any] | None) – Previously loaded router rules payload, if available.

  • default_package_id (str | None) – Optional default package id to set in router rules.

  • min_score (int | None) – Optional minimum routing score threshold override.

  • min_margin (int | None) – Optional minimum routing margin threshold override.

Returns:

Tuple of (rules_payload, summary) describing synced router state.

Return type:

tuple[dict[str, Any], dict[str, Any]]

fermilink.router_rules.dedupe(items)[source]

Remove duplicate terms while preserving first-seen order.

Parameters:

items (list[str]) – Term list to deduplicate.

Returns:

De-duplicated terms in stable order.

Return type:

list[str]

fermilink.router_rules.infer_rule(package_id)[source]

Infer include/exclude router terms for a package identifier.

Parameters:

package_id (str) – Normalized package identifier.

Returns:

Rule fragment with inferred include and exclude terms.

Return type:

dict[str, list[str]]

fermilink.router_rules.load_family_hints()[source]

Load bundled package-family hint terms for router rule generation.

Returns:

Normalized family-hints payload keyed by family id.

Return type:

dict[str, dict[str, list[str] | str]]

fermilink.router_rules.normalize_terms(raw)[source]

Normalize router rule terms into a clean lowercase list.

Parameters:

raw (Any) – Raw value from user input or configuration.

Returns:

Normalized term list suitable for router rule matching.

Return type:

list[str]

fermilink.router_rules.package_id_terms(package_id)[source]

Generate default routing terms derived from a package identifier.

Parameters:

package_id (str) – Normalized package identifier.

Returns:

Terms inferred from package_id tokens.

Return type:

list[str]

fermilink.router_rules.sync_router_rules(scipkg_root, *, router_rules_filename=DEFAULT_ROUTER_RULES_FILENAME, default_package_id=None, min_score=None, min_margin=None, dry_run=False)[source]

Synchronize router rules on disk with installed package metadata.

Parameters:
  • scipkg_root (Path) – Scientific package root containing registry and package files.

  • router_rules_filename (str) – Router rules filename relative to scipkg_root.

  • default_package_id (str | None) – Optional default package id to set in router rules.

  • min_score (int | None) – Optional minimum routing score threshold override.

  • min_margin (int | None) – Optional minimum routing margin threshold override.

  • dry_run (bool) – When True, compute sync results without writing files.

Returns:

Summary payload describing sync changes and output location.

Return type:

dict[str, Any]