Configuration reference¶
This reference lists every top-level key in the [tool.lanorme] table, generated
from the tool so it cannot drift. Per-check settings ([tool.lanorme.<check>]) are
documented with each rule in the rule reference. A machine-readable
lanorme.schema.json validates this table in editors.
Configuration lives in [tool.lanorme] in pyproject.toml, or in a standalone
lanorme.toml / .lanorme.toml. The table header differs between the two. In
pyproject.toml every key sits under [tool.lanorme], and a per-check table under
[tool.lanorme.<check>]. In a standalone lanorme.toml the prefix is dropped: keys
are top-level (promote = ["TYPE-004"]) and a sub-table is bare ([per-file-ignores],
[prose]). The examples below show the pyproject.toml form; a [tool.lanorme] prefix
written inside a lanorme.toml is silently ignored. Keys also have command-line
equivalents (--select, --ignore); the command line wins over config.
| Key | Type | Default | Feature |
|---|---|---|---|
select |
list of strings | all enabled checks | Filtering |
ignore |
list of strings | [] (nothing ignored) | Filtering |
exclude |
list of glob strings | [] (built-in junk dirs only) | Filtering |
per-file-ignores |
table of glob to code list | {} (no per-file rules) | Filtering |
promote |
list of strings | [] (advisories stay warnings) | Severity |
extends |
string or list of strings | none | Profiles |
baseline |
string (path) | none | Adoption |
source_root |
string (path) | the scan root | Architecture |
plugins |
list of strings | [] (built-in checks only) | Extensibility |
select¶
Run only these rule codes or categories. A category (SEC) covers every code in it; ALL selects everything.
select = ["SECRETPY", "TYPE-004"]
ignore¶
Skip these rule codes or categories everywhere.
ignore = ["NAMING-003"]
exclude¶
File-path globs to skip entirely; matched files are never walked.
exclude = ["**/migrations/*", "generated/*"]
per-file-ignores¶
Suppress specific rule codes or categories for files matching a glob.
[tool.lanorme.per-file-ignores]
"tests/*" = ["SIZE-001", "AAA"]
promote¶
Advisory warnings whose codes (or ALL) become build-failing errors. Runs after every suppression, so an ignored or noqa'd warning is never promoted.
promote = ["TYPE-004"] # or ["ALL"]
extends¶
Adopt one or more profiles -- a bundled name (strict, hexagonal, clean, layered) or a path to a local .toml. Profiles merge left to right, then your own keys merge on top, so local always wins.
extends = ["strict", "hexagonal"]
baseline¶
Path to a baseline file. Findings recorded by lanorme baseline write are suppressed, so only new findings report. See the adoption tutorial.
baseline = "lanorme-baseline.json"
source_root¶
The top-level package directory when ports, adapters and layers live under a nested package; the architecture checks interpret their paths relative to it.
source_root = "src/myapp"
plugins¶
Extra check modules to import so they self-register, beyond the built-ins and entry-point plugins.
plugins = ["my_company.lanorme_checks"]
Per-check settings¶
Each check is configured under its own table, always with an enabled
toggle (opt-in checks default to false). The settings a check accepts are
listed in its rule reference section. For example:
[tool.lanorme.prose]
enabled = true
[tool.lanorme.layer_deps]
composition_root = ["api/dependencies.py"]