Urmare / Quick start
Quick start
Install the command, select a repository, and analyze one change source.
On this page
uv tool install urmare
urmare impact --changedCommands are verified against Urmare 0.2.0. Repository paths in later examples are illustrative.
Getting started
Installation
Install the platform-specific binary wheel from PyPI as an isolated tool, or into an active virtual environment.
uv tool install urmare
pipx install urmare
pip install urmareRun Urmare without a persistent tool installation.
uvx urmare impact --changedRepository
Select the repository
Run inside the repository, or place the global --rootoption before the command. An explicit root is authoritative.
urmare --root path/to/repository graphGit-aware commands discover the containing Git repository when--root is omitted.
Impact
Choose a change source
Explicit files
Pass one or more repository-relative Python files.
urmare impact src/payments/service.pyurmare impact src/payments/service.py src/payments/models.pyWorking-tree changes
Compare staged, unstaged, and untracked non-ignored Python changes to HEAD.
urmare impact --changedGit base
Include committed changes since the merge base withHEAD, plus current working-tree changes.
urmare impact --git-diff origin/mainResults
Use the result
Affected tests
Print one canonical pytest file path per line.
urmare tests --affected --changedurmare tests --affected src/payments/service.pyExplanations
Return a deterministic shortest dependency path with static import evidence for every hop.
urmare why src/payments/service.py tests/test_service.pyJSON output
Add --json for schema-versioned deterministic output. Failures leave stdout empty.
urmare impact --changed --json{
"schema_version": 1,
"changed": ["src/payments/service.py"],
"directly_affected": ["src/api/checkout.py"],
"transitively_affected": [],
"affected_tests": ["tests/test_service.py"],
"attributions": [
{
"affected": "tests/test_service.py",
"caused_by": ["src/payments/service.py"]
}
]
}Reference
Current limitations
- Static import and from … import relationships only.
- File-level modules and test selection; no individual test-function selection.
- No dynamic-import, re-export, symbol, call, type, fixture, runtime, or framework graph.
- No dependency-upgrade or external package-index analysis.
- Discovery and in-memory graph allocation run on every command; safe parsed imports and resolution results can be reused.
A root pyproject.toml change can redefine the analysis boundary. Git-aware impact then requires full validation rather than fabricating a selective result.
Complete reference
Continue in the repository
The canonical documentation covers graph inspection, configuration, caching, the full JSON contract, exit codes, releases, and benchmark methodology.