3.3 KiB
Static analysis configuration
Static analysis performed by the fmt
command is backed entirely by Ruff.
Hatch provides default settings that user configuration can extend.
Extending config
When defining your configuration, be sure to use options that are prefixed by extend-
such as extend-select
, for example:
=== ":octicons-file-code-16: pyproject.toml"
```toml
[tool.ruff.format]
preview = true
quote-style = "single"
[tool.ruff.lint]
preview = true
extend-select = ["C901"]
[tool.ruff.lint.extend-per-file-ignores]
"docs/.hooks/*" = ["INP001", "T201"]
[tool.ruff.lint.isort]
known-first-party = ["foo", "bar"]
```
=== ":octicons-file-code-16: ruff.toml"
```toml
[format]
preview = true
quote-style = "single"
[lint]
preview = true
extend-select = ["C901"]
[lint.extend-per-file-ignores]
"docs/.hooks/*" = ["INP001", "T201"]
[lint.isort]
known-first-party = ["foo", "bar"]
```
!!! note When not persisting config, there is no need to explicitly extend the defaults as Hatch automatically handles that.
Persistent config
If you want to store the default configuration in the project, set an explicit path like so:
[tool.hatch.envs.hatch-static-analysis]
config-path = "ruff_defaults.toml"
Then instruct Ruff to consider your configuration as an extension of the default file:
=== ":octicons-file-code-16: pyproject.toml"
```toml
[tool.ruff]
extend = "ruff_defaults.toml"
```
=== ":octicons-file-code-16: ruff.toml"
```toml
extend = "ruff_defaults.toml"
```
Anytime you wish to update the defaults (such as when upgrading Hatch), you must run the fmt
command once with the --sync
flag e.g.:
hatch fmt --check --sync
!!! tip This is the recommended approach since it allows other tools like IDEs to use the default configuration.
Versioning
You can pin the particular version of Ruff by explicitly defining the environment dependencies:
[tool.hatch.envs.hatch-static-analysis]
dependencies = ["ruff==X.Y.Z"]
Default settings
Non-rule settings
- Line length set to 120
- Docstring formatting enabled with line length set to 80
- Only absolute imports are allowed, except for tests
- The normalized project name is a known first party import
Per-file ignored rules
<HATCH_RUFF_PER_FILE_IGNORED_RULES>
Selected rules
The following rules are based on version <HATCH_RUFF_VERSION> of Ruff. Rules with a ^P^ are only selected when preview mode is enabled.
<HATCH_RUFF_SELECTED_RULES>