Loadout makes developer machine setup painless & deterministic.
- Make sure you have the python version specified in
.python-version
installed viapyenv
. - Run
make init-workspace
- To learn more about how to interact with the workspace run
make
for the help text
- To learn more about how to interact with the workspace run
- Loadout uses Pyenv for Python version management. The Pyenv reads the version to use from the
.python-version
file in the root of the repo (further reading: Pyenv - Understanding Python Version Selection). - Package management is handled by Poetry. Poetry uses the
python
provided by Pyenv to create virtual environments. - We have a variety of tools to cover code quality
- Types: Typing is handled by Mypy.
- Linting: We use both Pylint & Flake8. It was tough to find guidance on which one is the "right" linter, but some folks are using both. This may prove to be too restrictive or result in conflicts & need to be revisit. But for now that's the direction.
- Import sorting: Isort manages our imports.
- Formatting: You can format your code however you want "as long as it's Black
- Security Analysis: Bandit performs static security analysis.
- We run tests using pyTest. Coverage is generated by pytest-cov
- debugpy allows debugging through VS Code.
- Git hooks are run by pre-commit.
- We use Commitizen to guide us as we write meaningful, expressive commit messages.
- Our git hooks are managed by pre-commit.