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β
- Black as the primary code formatter.
- EditorConfig to enforce consistent style across different editors.
- Ruff to ensure style guide conformance and sort the imports.
- Mypy to check the type hints.
- Pip-tools to manage the dependencies.
- Hatch to generate build artifacts for reusable libraries.
- Pre-commit for managing and maintaining the pre-commit hooks.
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 --helpYou 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 --listConfig 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, anddir3in parallel.
- 
You can run the entire linter suite with this command: make lint
