Skip to main content

Simple formatter for Kconfig files

Project description

kconfigstyle

A simple linter for Kconfig files, with support for Zephyr and ESP-IDF coding styles.

The "Kconfig language" is defined here:

There's several extensions used in practice by Zephyr + ESP-IDF; both projects maintain their own forks of the original kconfiglib library:

Espressif has an excellent documentation page here about their fork of Kconfiglib:

Which includes a parser here, however, that is intended to be used on a complete Kconfig setup, not on a per-file basis (i.e. it wants to be able to load in sourced files etc). For the purposes of basic formatting, we only need to parse individual files, so we've implemented our own parser.

Espressif also provides a tool called kconfcheck to check Kconfig formatting, but it is not very configurable and does not support auto-formatting. kconfigstyle aims to provide a more flexible and user-friendly alternative.

Finally, see here for references on Zephyr and ESP-IDF Kconfig styles:

Installation

Run without installing with uv:

uvx kconfigstyle [options] <kconfig_files>

Or install and run:

pip install kconfigstyle
kconfigstyle [options] <kconfig_files>

Command Line Options

See kconfigstyle --help for a full list of options. Some notable options include:

  • --preset {zephyr,espidf} Use a style preset (individual options override preset values)

  • --write, -w Write formatted output back to files (format mode)

  • --use-spaces Use spaces instead of tabs for indentation

  • --primary-indent PRIMARY_INDENT Number of spaces for primary indentation (default: 4)

  • --help-indent HELP_INDENT Number of extra spaces for help text indentation (default: 2)

  • --max-line-length MAX_LINE_LENGTH Maximum line length (default: 100 for Zephyr, 120 for ESP-IDF)

  • --max-option-length MAX_OPTION_LENGTH Maximum config option name length (default: 50)

  • --uppercase-configs Require config names to be uppercase

  • --min-prefix-length MIN_PREFIX_LENGTH Minimum prefix length for config names (default: 3 for ESP-IDF)

  • --indent-sub-items Use hierarchical indentation for sub-items (ESP-IDF style)

  • --consolidate-empty-lines Consolidate multiple consecutive empty lines into one

  • --reflow-help Reflow help text to fit within max line length

License

See LICENSE file for details.

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

kconfigstyle-0.6.0.tar.gz (14.9 kB view details)

Uploaded Source

Built Distribution

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

kconfigstyle-0.6.0-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file kconfigstyle-0.6.0.tar.gz.

File metadata

  • Download URL: kconfigstyle-0.6.0.tar.gz
  • Upload date:
  • Size: 14.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.10","id":"questing","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for kconfigstyle-0.6.0.tar.gz
Algorithm Hash digest
SHA256 2509cc2ecea3562d38afd7fbb7470d601ac7a06662592e7da76ceb324acb29ed
MD5 bef3dd1cf3e9b450b81c0e142a3b56d1
BLAKE2b-256 c03b5e22a66b2f01ea8615aa980d876a50b8c7b401ae79b3222607cc18fbbba9

See more details on using hashes here.

File details

Details for the file kconfigstyle-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: kconfigstyle-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.10","id":"questing","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for kconfigstyle-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7cf582d9f8128735f6ebcc180c0a0b1f75f4bfada87ad0a3636ddd8d8fbec29c
MD5 6ac61e6ed6434411e7179ddf16b0d4a0
BLAKE2b-256 57db166f707ac7c43f52c5a7f8793df5cb3be3555421fa3c09696361d287d5bc

See more details on using hashes here.

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