Skip to main content

Unified, code-addressable rule registry + named presets for the Galaxy tool refactoring tiers — tier 3.6, a library-first facade the CLI (and a future MCP server) compose.

Project description

galaxy-tool-refactor-registry

The rule-registry facade (tier 3.6) of the Galaxy tool refactoring framework: a single, code-addressable view over every baked-in rule across the three rule families — codemod (tier 2, structural GTR), fmt (tier 3, cosmetic GTR), and check (tier 3.5, advisory) — plus named rulesets and per-rule enable/disable, behind a library-first API.

                 galaxy-tool-refactor-registry   (this package, tier 3.6)
                        ↑                       ↑
   galaxy-tool-refactor-cli (tier 4)     galaxy-tool-refactor-mcp (tier 4, future)

It depends on the rule tiers (0.5 / 1 / 2 / 3 / 3.5); the lower tiers do not depend on it. It is the orchestration core the galaxy-tool-refactor CLI sits on top of, and the core the agent-facing MCP server sits on (galaxy-tool-refactor-mcp). All XML serialisation goes through fmt, preserving "fmt is the only tier that writes/serialises XML".

Why library-first

No click / sys.exit / printing in the call path; functions take a path, raw bytes, or a ToolDocument and return structured results; files are written only when a write_path is given; and the rule/ruleset catalogs are introspectable (list_rules() / list_rulesets()). That shape lets both the CLI and a future agent-facing MCP server be thin adapters over the same core. See ../galaxy-tool-refactor-mcp/docs/vision.md.

Rulesets

Ruleset Contents Notes
cosmetic fmt cosmetic rules (GTR001/003/004) whitespace / indent / shorthand only
default (default) canonical codemods (GTR006/002/005/013) + cosmetic today's format — the opinionated formatter
iuc mirrors default (placeholder) reserved for an IUC-specific divergence
strict default + advisory checks format + flag everything IUC cares about (report-only)

Membership is declared per rule (RuleMeta.rulesets): the registry derives each ruleset's code set by grouping every registered rule by the names in its meta.rulesets. Adding or changing rules and rulesets is a developer task — there are no user-defined rules or rulesets.

Selection

resolve_codes(rulesets=…, select=…, ignore=…) turns ruleset names plus --select/--ignore code lists into a concrete code set — the base is the union of the named rulesets (or the default ruleset when none are named). Precedence is ruff-style: --ignore--select--ruleset — an explicit --select replaces the rulesets' set, then --ignore subtracts. Unknown ruleset names / rule codes raise the typed UnknownRuleset / UnknownRuleCode.

Public API (by submodule import; no re-exports)

from galaxy_tool_refactor_registry.facade import (
    run, upgrade, detect, list_rulesets, list_rules,
)
from galaxy_tool_refactor_registry.resolve import resolve_codes, resolve_upgrade_codes
from galaxy_tool_refactor_registry.registry import by_code, known_codes, advisory_codes
  • run(source, *, codes, write_path=None) -> FormatResult — apply the fixable rules in the selection (codemods in canonical order, then cosmetic fmt), reporting advisory findings as notes.
  • upgrade(source, *, codes, write_path=None) -> UpgradeResult — profile-upgrade plus the selected fixable rules.
  • detect(source, *, codes) -> DetectResult — report-only over the selection.
  • by_code(code) -> RuleHandle — the uniform, callable handle for one rule (meta, family, fixable, detect(document), apply(document) or None).

Develop

Run from the workspace root (galaxy-tool-refactor/):

uv run --package galaxy-tool-refactor-registry pytest galaxy-tool-refactor-registry/tests/
uv run ruff check galaxy-tool-refactor-registry/src galaxy-tool-refactor-registry/tests
uv run mypy --config-file galaxy-tool-refactor-registry/pyproject.toml galaxy-tool-refactor-registry/src

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

galaxy_tool_refactor_registry-0.3.3.tar.gz (119.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

galaxy_tool_refactor_registry-0.3.3-py3-none-any.whl (59.7 kB view details)

Uploaded Python 3

File details

Details for the file galaxy_tool_refactor_registry-0.3.3.tar.gz.

File metadata

File hashes

Hashes for galaxy_tool_refactor_registry-0.3.3.tar.gz
Algorithm Hash digest
SHA256 729d25faf27c61bd8f133acb11e27f9fc807de2db123352c4a3689f63b304fd7
MD5 bc6dcfd1a125384668e7a340e418510e
BLAKE2b-256 3cf937706ef58045cfdd179fe0ef1b70284bd0d06ccb6821eade357ece22fae2

See more details on using hashes here.

Provenance

The following attestation bundles were made for galaxy_tool_refactor_registry-0.3.3.tar.gz:

Publisher: release.yml on richard-burhans/galaxy-tool-refactor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file galaxy_tool_refactor_registry-0.3.3-py3-none-any.whl.

File metadata

File hashes

Hashes for galaxy_tool_refactor_registry-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 5f1c0825e22d882ca059643ee05f5ee430481abb03e87de436047328df5aa150
MD5 d4585d9f00868cec0177464317b7ffa1
BLAKE2b-256 8f1039ad4e3982b64b85a39182c6dac5db9edac92e73e0a2444b44fd73cf4c9b

See more details on using hashes here.

Provenance

The following attestation bundles were made for galaxy_tool_refactor_registry-0.3.3-py3-none-any.whl:

Publisher: release.yml on richard-burhans/galaxy-tool-refactor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page