Skip to main content

konform

CI codecov Docs PyPI License: MIT

Multi-rule Python linter and language server: fast, configurable, and CI-ready.

Work in progress. konform is under active development. Rules, configuration keys, CLI flags, and the LSP surface may change at any time, including in backwards-incompatible ways, until a 1.0 release.

Documentation

Why konform?

Ruff covers most of what a Python project wants from a linter, but not everything. konform is a small, fast Rust linter for the checks that fall through the gaps. Its rules are opinionated: they encode a specific style (such as the Google Python Style Guide's module-only imports) rather than universal correctness, and the list keeps growing.

  • Opinionated import rules: enforce module-only imports (KIS001) and flag needless from X import Y as Z aliases (KIS002).
  • Project-specific rules: define your own regex rules (KPT) in TOML, with messages, file globs and optional replacements. No plugin code.
  • Auto-fixes with a Ruff-style safe/unsafe split.
  • Built-in language server that shares the CLI's engine.
  • CI-ready output: GitHub, GitLab, SARIF, JUnit, Zuul and JSON.

The node kinds and condition keys above are konform's own vocabulary, not the parser's: each kind maps onto one or more parser node types inside konform (for example assign covers =, annotated and augmented assignment; function covers def and async def; yield covers yield from). Rules therefore stay valid when the underlying parser is upgraded or replaced, and parser type names (such as Ruff's StmtAssert) are rejected as unknown kinds.

Installation

# As an isolated tool (recommended)
uv tool install konform
pipx install konform

# Run without installing
uvx konform check src/

# Into the current environment
pip install konform

Wheels ship a pre-compiled Rust binary, so no Rust installation is needed at runtime.

Example

# app.py
from os.path import join

print(join("a", "b"))
$ konform check app.py
error[KIS001][*]: Import 'join' from 'os.path' is not a module.
  --> app.py:1:1
  help: Use only module imports, see: https://google.github.io/styleguide/pyguide.html#22-imports

Found 1 error.
[*] 1 fixable with the `--fix` option.

$ konform check --fix app.py

Other useful commands:

konform check --fix --unsafe-fixes src/   # also apply unsafe fixes (e.g. KIS002)
konform check --output-format github .    # annotations for GitHub Actions
konform rule --list                       # list rules
konform rule --explain KIS001             # explain a rule
konform server                            # start the language server

Configure it in pyproject.toml (or konform.toml):

[tool.konform.lint]
select = ["KIS"]

[tool.konform.lint.module-only-imports]
exceptions = ["typing", "mycompany.compat"]

See the documentation for the full rule, configuration, CLI and editor reference.

Development

You need a Rust toolchain (pinned in rust-toolchain.toml) and uv.

# Build and test
cargo build
cargo test
cargo fmt --check && cargo clippy --all-targets --all-features -- -D warnings

# Run the dev binary
cargo run -- check path/to/file.py

# Build the Python package (wheel with the compiled binary)
uv run maturin build --release        # wheels land in target/wheels/
uv run maturin develop                # or install into the project venv

# Regenerate the rules, CLI and env-var reference pages from the code
# (docs/rules/ and docs/reference/{cli,environment-variables}.md, checked by a test)
cargo run -- generate-docs docs

# Build and preview the documentation
uv run --only-group dev --python 3.12 zensical serve
uv run --only-group dev --python 3.12 zensical build --clean --strict

The docs source lives in docs/ (config in mkdocs.yml; the landing page is this README) and is deployed to GitHub Pages by .github/workflows/docs.yml on every push to main. Commits follow Conventional Commits; releases are cut with commitizen.

Acknowledgements

konform exists because Ruff doesn't (yet) cover rules like KIS001/KIS002; konform was built to fill that gap, and Ruff's design was a direct inspiration for how konform is configured, how it reports violations, and how it resolves src search roots.

konform is also built on top of several excellent open-source projects, especially:

Thanks to all the maintainers of all used open-source projects.

License

MIT

Metadata

Release files for konform 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for konform 0.5.0
File Size Uploaded Provenance Actions
konform-0.5.0.tar.gz 320.4 kB With provenance Details for konform-0.5.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for konform 0.5.0
File Actions
konform-0.5.0-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details for konform-0.5.0-py3-none-win_amd64.whl
konform-0.5.0-py3-none-win32.whl Python 3 none Windows x86-32 Details for konform-0.5.0-py3-none-win32.whl
konform-0.5.0-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details for konform-0.5.0-py3-none-musllinux_1_2_x86_64.whl
konform-0.5.0-py3-none-musllinux_1_2_aarch64.whl Python 3 none Linux musl 1.2+ ARM64 Details for konform-0.5.0-py3-none-musllinux_1_2_aarch64.whl
konform-0.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details for konform-0.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
konform-0.5.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl Python 3 none Linux glibc 2.17+ x86-32 Details for konform-0.5.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
konform-0.5.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl Python 3 none Linux glibc 2.17+ ARMv7l Details for konform-0.5.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
konform-0.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details for konform-0.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
konform-0.5.0-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details for konform-0.5.0-py3-none-macosx_11_0_arm64.whl
konform-0.5.0-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details for konform-0.5.0-py3-none-macosx_10_12_x86_64.whl

Total release size: 35.3 MB

Release files / konform-0.5.0.tar.gz

Download URL konform-0.5.0.tar.gz
Size 320.4 kB
Tags Source
SHA-256 checksum
How to use checksums
e5d35204218acb3236f7e2c7de3e768e37d74d864d6abd831372dd04bec04e89
BLAKE2b-256 checksum
How to use checksums
1a5855e84cf3653ec1d4e63bcfb92179440f16bd8712065389636f3ad3fef116
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / konform-0.5.0-py3-none-win_amd64.whl

Download URL konform-0.5.0-py3-none-win_amd64.whl
Size 3.6 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
02920a2cc778fd0cd3e5190ce1b40a89f9cc344a0931cd3d1c2be3213abf96d5
BLAKE2b-256 checksum
How to use checksums
3a581c601e7c438015c5d3938dca4e60e2b7ef9dee90260296ff6b5b5c233ceb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / konform-0.5.0-py3-none-win32.whl

Download URL konform-0.5.0-py3-none-win32.whl
Size 3.3 MB
Tags Python 3 Windows x86-32
SHA-256 checksum
How to use checksums
fc5d38708d1e1625850d35a639dff68abdebc14aa31cbc0b7c27fc991288ba0f
BLAKE2b-256 checksum
How to use checksums
f13ab12f42cf4200dd45af1877fd06e3706505bd7ef7987dadcee7952adc7743
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / konform-0.5.0-py3-none-musllinux_1_2_x86_64.whl

Download URL konform-0.5.0-py3-none-musllinux_1_2_x86_64.whl
Size 3.7 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
17c9f6e3fd4052d510af52591540556fd8f605672e679ca8cb46a2b8133db5fb
BLAKE2b-256 checksum
How to use checksums
d372a98b0ca71ae7673ea98866469e8019e3711ed8ea5602cf24cd2b37b9e4f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / konform-0.5.0-py3-none-musllinux_1_2_aarch64.whl

Download URL konform-0.5.0-py3-none-musllinux_1_2_aarch64.whl
Size 3.4 MB
Tags Linux musl 1.2+ ARM64 Python 3
SHA-256 checksum
How to use checksums
dc25b4e899540b5f3bd06a9a1bb524ef871766d09a0e14bcb26b4bd979ddab0b
BLAKE2b-256 checksum
How to use checksums
72e8fc4b277727dee0b94ea057900721c6b3a1d8a083ef34434fc2005797250e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / konform-0.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL konform-0.5.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.6 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
f4704bc56c5f518612fe1e74493d3bf62ceff24140720821e21b45dcf5b57c28
BLAKE2b-256 checksum
How to use checksums
c5b543c638f0b75bb5ddd482edbf243caf9accf084db5dd6430ff7415aa99bd8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / konform-0.5.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl

Download URL konform-0.5.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Size 3.7 MB
Tags Linux glibc 2.17+ x86-32 Python 3
SHA-256 checksum
How to use checksums
cb02fa7c53e8255ee4a461037bb79f6ad1f6d8403f077fd8e3f9cdfca6671901
BLAKE2b-256 checksum
How to use checksums
98bbd3da6692b4e5d8935fa7ee954c678b42c704926c9a87ce70bc0e275392d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / konform-0.5.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL konform-0.5.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 3.3 MB
Tags Linux glibc 2.17+ ARMv7l Python 3
SHA-256 checksum
How to use checksums
2b88c53e5635f4d2b067a8b664a5019d72d9555dc16ffaf207c84e91bf4f27b0
BLAKE2b-256 checksum
How to use checksums
1bfa2392e3895365f6fb0126872114a95025b452b7616f100a722fac184ce4ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / konform-0.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL konform-0.5.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 3.4 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
58bc8f7d87eb8fe7ca7b83bd16f1201caefdee611a0206c4fde2754b3e2a0750
BLAKE2b-256 checksum
How to use checksums
88fa2395bae37bafa1516db651e55d3d00f50e19ce37aa27f931d468f7daae30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / konform-0.5.0-py3-none-macosx_11_0_arm64.whl

Download URL konform-0.5.0-py3-none-macosx_11_0_arm64.whl
Size 3.3 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
92f2b1963d09d78e62eee82a8ef67224d06d419dc24afabb42384bf429d2da24
BLAKE2b-256 checksum
How to use checksums
90301ec275a8db1be7eeb952080e20a746241e7fa5bc82adce9c1f9f0f5c9f4d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / konform-0.5.0-py3-none-macosx_10_12_x86_64.whl

Download URL konform-0.5.0-py3-none-macosx_10_12_x86_64.whl
Size 3.5 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
744f48d191186edea1732830e715bb7f9b143e3eb32331de5f0fdf77343ebe31
BLAKE2b-256 checksum
How to use checksums
5c9d1c9afb22f2102b4c7c087fa51ac642315194aa5226d9cf509f8ec59299df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Security for konform 0.5.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 11 files in this release have been uploaded with provenance metadata.

Select from 11 files

Attestation for konform-0.5.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page