Included in this boilerplate:
- pyenv for python version management
- poetry for dependency management integrated with pyenv
- pre-commit for linting and formatting
- pytest for testing
- ruff for formatting, linting, sorting imports etc.
- mypy for static type checking
Pyenv selects python version according to .python-version file in the root of the project. Poetry creates virtualenv in .venv directory in the root of the project. Pre-commit installs hooks in .git/hooks folder. Ruff is used by pre-commit to format, lint, sort imports etc.
- Make sure you have python required interpreter installed in pyenv e.g.
- Rename project:
-
Rename app folder to your app name if needed (
mv app_name new_app_name
) and then:find ./ -type f -not -path "./.git/*" -exec sed -i 's/app_name/new_app_name/g' {} \; find ./ -type f -not -path "./.git/*" -exec sed -i 's/app-name/new-app-name/g' {} \;
-
or use
make rename-project NEW_APP_NAME=new_app_name
to do it for you
make install
make test
- Make sure it's working:
poetry run app-cli "Developer"
- Optionally, squeeze history into one commit:
git reset $(git commit-tree HEAD^{tree} -m "Initial commit")
- Check current poetry virtualenv and change it
$ poetry env info
$ poetry env list
$ poetry env remove /home/PATH/bin/python
$ make install
- Cherry-pick commit from repository cloned from this one:
$ git remote add projectB /home/you/projectB
$ git fetch projectB
$ git cherry-pick <commit from projectB repo>