Linter config initializer for Python
Rubric initializes the configuration files of a few Python linters and formatters. Also, it adds a README.md boilerplate and a simple Makefile with the commands to apply the tools. This helps you maintain an isomorphic workflow across multiple projects. It assumes that, in all of your Python projects, you'll use—
Following is a list of config files that Rubric is going to add to your target directory:
root
├── .editorconfig # Config file for Editorconfig
├── .gitignore # Python specific .gitignore file
├── .pre-commit-config.yaml # Config to manage pre-commit hooks.
├── Makefile # Makefile containing the commands to lint your code
├── pyproject.toml # Toml file to with the configs for black, ruff, and mypy
├── README.md # A readme boilerplate
├── requirements-dev.txt # File to specify the dev requirements
└── requirements.txt # File to specify the pinned app requirements
The files will contain minimal but sensible default configurations for the respective tools. You're free to change them as you like.
Rubric requires Python 3.8 and up.
Make a virtual environment in your project's root directory.
Activate the environment and run:
pip install rubric
To inspect all the CLI options, run:
rubric --help
You should see the following output:
$ rubric --help
>> Config Initializer for Python Projects <<
Usage: rubric [OPTIONS]
Options:
-h, --help Display help message.
-v, --version Display the version number.
-s, --show Show the contents of the config files.
-a, --append Append to existing config files.
-o, --overwrite Overwrite existing config files.
-c, --create Create the config files in the current
directory.
-f, --filename [.editorconfig|.gitignore|.pre-commit-config.yaml|README.md|
Makefile|pyproject.toml|requirements-dev.in|requirements-dev.txt|
requirements.in|requirements.txt]
Target file names.
-d, --dirname PATH Target directory name.
-l, --list List the config files that are about to be
generated.
Display a list of config files that are going to be created:
rubric --list
Config files that are about to be generated:
=> .editorconfig
=> .gitignore
=> .pre-commit-config.yaml
=> README.md
=> Makefile
=> pyproject.toml
=> requirements-dev.txt
=> requirements.txt
Take a peek into the content of any config file(s):
rubric --show -f requirements.txt -f .editorconfig
This will print:
============================ requirements.txt ============================
#
# This file is autogenerated by pip-compile with python 3.11
# To update, run:
#
# pip-compile --output-file=requirements.txt requirements.in
#
============================ .editorconfig ============================
# https://editorconfig.org
root = true
[*]
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
insert_final_newline = true
charset = utf-8
end_of_line = lf
[*.{py,md}]
indent_size = 4
[Makefile]
indent_size = 4
indent_style = tab
Initialize a project with the following command:
rubric --create
This will run the tool in a non-destructive way—that means it won't overwrite any of the configuration files that you might already have in the directory.
If you only want to create a selected list of config files, then run:
rubric --create -f requirements.txt -f requirements-dev.txt
If you want to overwrite any of the existing config files that you might have in the directory, then run:
rubric --overwrite -f filename1 -f filename2
If you want to append the configs to an existing file, then run:
rubric --append -f filename1 -f filename2
You can also point Rubric to a directory.
rubric --create --directory "some/custom/directory"
If you want to check and update the configs across multiple repositories in a single sweep, use the following command:
s="dir1 dir2 dir3"; echo $s | xargs -n 1 -P $(echo $s | wc -w) rubric -c -d
This command will spawn 3 processes to create the config files in dir1
, dir2
,
and dir3
in parallel.
You can run the entire linter suite with this command:
make lint