Skip to main content

The Codebase Bemanification Tool

Project description

beman-tidy: The Codebase Bemanification Tool

CI Tests

beman-tidy is a tool aimed at Beman Project contributors to check (--dry-run) and apply (--fix-inplace) the Beman Standard to their repositories.

Note 2025-06-07: The first iteration of the tool will not support --fix-inplace in order to expedite adoption across the Beman Project.

Usage

  • Display help:
$ beman-tidy --help
usage: beman-tidy [-h] [--fix-inplace | --no-fix-inplace] [--verbose | --no-verbose] [--require-all | --no-require-all] [--checks CHECKS] [--config CONFIG] repo_path

positional arguments:
  repo_path             path to the repository to check

options:
  -h, --help            show this help message and exit
  --fix-inplace, --no-fix-inplace
                        Try to automatically fix found issues
  --verbose, --no-verbose
                        print verbose output for each check
  --require-all, --no-require-all
                        all checks are required regardless of the check type (e.g., Recommendation becomes Requirement)
  --checks CHECKS       array of checks to run
  --config CONFIG       path to the configuration file (default: .beman-tidy.yaml in repo root)
  • Run beman-tidy on the exemplar repository (default: dry-run mode)
# dry-run, require-all, non-verbose
$ beman-tidy /path/to/exemplar --require-all
Summary    Requirement:  18 checks passed, 1 checks failed, 5 checks skipped,  23 checks not implemented.
Summary Recommendation:  0 checks passed, 0 checks failed, 0 checks skipped,  0 checks not implemented.

Coverage    Requirement:  95.83% (23/24 checks passed).
Coverage Recommendation:   0.00% (0/0 checks passed).
Coverage          TOTAL:  95.83% (23/24 checks passed).

# dry-run, non-require-all, non-verbose
Summary    Requirement:  13 checks passed, 1 checks failed, 3 checks skipped,  9 checks not implemented.
Summary Recommendation:  5 checks passed, 0 checks failed, 2 checks skipped,  14 checks not implemented.

Coverage    Requirement:  66.67% (16/24 checks passed).
Coverage Recommendation: 100.00% (7/7 checks passed).
Coverage          TOTAL:  74.19% (23/31 checks passed).

or verbose mode without errors:

# dry-run, require-all, verbose mode - no errors
beman-tidy pipeline started ...

Running check [Requirement][license.approved] ...
[info           ][license.approved         ]: Valid Apache License - Version 2.0 with LLVM Exceptions found in LICENSE file.
	check [Requirement][license.approved] ... passed

Running check [Requirement][license.apache_llvm] ...
	check [Requirement][license.apache_llvm] ... passed

Running check [Requirement][license.criteria] ...
[skipped        ][license.criteria         ]: beman-tidy cannot actually check license.criteria. Please ignore this message if license.approved has passed. See https://github.com/bemanproject/beman/blob/main/docs/beman_standard.md#licensecriteria for more information.
Running check [Requirement][license.criteria] ... skipped

...

Running check [Requirement][readme.title] ...
	check [Requirement][readme.title] ... passed

Running check [Requirement][readme.badges] ...
	check [Requirement][readme.badges] ... passed

Running check [Requirement][readme.implements] ...
	check [Requirement][readme.implements] ... passed

...

beman-tidy pipeline finished.

Summary    Requirement:  19 checks passed, 0 checks failed, 3 checks skipped,  23 checks not implemented.
Summary Recommendation:  0 checks passed, 0 checks failed, 2 checks skipped,  0 checks not implemented.

Coverage    Requirement: 100.00% (24/24 checks passed).
Coverage Recommendation:   0.00% (0/0 checks passed).
Coverage          TOTAL: 100.00% (24/24 checks passed).

or verbose mode with errors:

# dry-run, require-all, verbose mode - with errors
beman-tidy pipeline started ...

Running check [Requirement][license.approved] ...
[info           ][license.approved         ]: Valid Apache License - Version 2.0 with LLVM Exceptions found in LICENSE file.
	check [Requirement][license.approved] ... passed

Running check [Requirement][license.apache_llvm] ...
	check [Requirement][license.apache_llvm] ... passed

Running check [Requirement][license.criteria] ...
[skipped        ][license.criteria         ]: beman-tidy cannot actually check license.criteria. Please ignore this message if license.approved has passed. See https://github.com/bemanproject/beman/blob/main/docs/beman_standard.md#licensecriteria for more information.
Running check [Requirement][license.criteria] ... skipped

...

Running check [Requirement][readme.implements] ...
	check [Requirement][readme.implements] ... passed

Running check [Requirement][readme.library_status] ...
[error          ][readme.library_status    ]: The file '/Users/dariusn/dev/dn/git/Beman/exemplar/README.md' does not contain exactly one of the required statuses from ['**Status**: [Under development and not yet ready for production use.](https://github.com/bemanproject/beman/blob/main/docs/beman_library_maturity_model.md#under-development-and-not-yet-ready-for-production-use)', '**Status**: [Production ready. API may undergo changes.](https://github.com/bemanproject/beman/blob/main/docs/beman_library_maturity_model.md#production-ready-api-may-undergo-changes)', '**Status**: [Production ready. Stable API.](https://github.com/bemanproject/beman/blob/main/docs/beman_library_maturity_model.md#production-ready-stable-api)', '**Status**: [Retired. No longer maintained or actively developed.](https://github.com/bemanproject/beman/blob/main/docs/beman_library_maturity_model.md#retired-no-longer-maintained-or-actively-developed)']
	check [Requirement][readme.library_status] ... failed

...

beman-tidy pipeline finished.

Summary    Requirement:  18 checks passed, 1 checks failed, 3 checks skipped,  23 checks not implemented.
Summary Recommendation:  0 checks passed, 0 checks failed, 2 checks skipped,  0 checks not implemented.

Coverage    Requirement:  95.83% (23/24 checks passed).
Coverage Recommendation:   0.00% (0/0 checks passed).
Coverage          TOTAL:  95.83% (23/24 checks passed).
  • Run beman-tidy on the exemplar repository (fix issues in-place):
beman-tidy path/to/exemplar --fix-inplace --verbose

Configuration

beman-tidy attempts to read configuration for each source file from a .beman-tidy.yaml file located in the root of your repository. You can also specify a custom configuration file path using the --config option.

The following configuration options may be used in a .beman-tidy.yaml file:

ignored_paths - A list of paths to be excluded from all checks.

  • To ignore a specific file, provide its full path relative to the repository root.
  • To ignore a directory, provide the path to that directory. This will ignore the directory itself and all files and subdirectories within it. A trailing slash (/) is optional.

Example:

ignored_paths:
  # Ignores a single file
  - include/beman/optional/detail/stl_interfaces/config.hpp
  
  # Ignores a directory and everything inside it
  - include/beman/optional/another_dir

Integrating beman-tidy into Your Library

Please refer to the How to Integrate beman-tidy pre-commit Hook in Your Library for more details.

Contributing on beman-tidy

Please refer to the Beman Tidy Development Guide for more 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

beman_tidy-0.4.0.tar.gz (32.3 kB view details)

Uploaded Source

Built Distribution

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

beman_tidy-0.4.0-py3-none-any.whl (48.6 kB view details)

Uploaded Python 3

File details

Details for the file beman_tidy-0.4.0.tar.gz.

File metadata

  • Download URL: beman_tidy-0.4.0.tar.gz
  • Upload date:
  • Size: 32.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for beman_tidy-0.4.0.tar.gz
Algorithm Hash digest
SHA256 42176436ee33afd0c309811c5ec8968731741e3cbbf856ba6c09a2f4f4801df1
MD5 4b9f454f93aedba1351d58b1bc1b7368
BLAKE2b-256 1bd56658fef4dad271761f614b497f39b833eaefaa66992250a4889e0570fa74

See more details on using hashes here.

Provenance

The following attestation bundles were made for beman_tidy-0.4.0.tar.gz:

Publisher: publish.yml on bemanproject/beman-tidy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file beman_tidy-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: beman_tidy-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 48.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for beman_tidy-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 62911a8695a04b2a48b97197f23f4450e3da3378f94aa4bed96fff5941a54bf5
MD5 d32bf24db9c62490e5a909c2dc2e6762
BLAKE2b-256 f479e2badea09274eb4f68a23b3dad4b39068def31fbdc19f0e36ad2a4dfa71e

See more details on using hashes here.

Provenance

The following attestation bundles were made for beman_tidy-0.4.0-py3-none-any.whl:

Publisher: publish.yml on bemanproject/beman-tidy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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