A best-practices template project for Python3 modules
Disclaimer: If you see this on pypi.org please note that the project is only published here for testing purposes. Please visit GitHub for the related template project.
Setup
- Make sure that
python3
andpip3
is installed and available on the path (on Ubuntu:sudo apt-get install python3 python3-pip
) - On first checkout run
make venv
to initialize the project configuration - Refer to the Makefile to learn about the various operations available
- To rename the project you can use the provided script
Features
- Basic project/module organization according to https://packaging.python.org
- Makefile management script
- pipenv and virtual environments
- distutils-based installer script
- Unit testing with pytest
- Multicore/-interpreter testing with tox
- Linting (flake8) and code formatting (autopep8) support
- isort support for automated import sorting
- Publishing to PyPi.org at https://pypi.org/project/python3-boilerplate/
- vscode editor configuration including plugin recommendations, debugging support, unit test discovery and on-save formatting
- Github actions continuous integration
How to use in existing project
To use it in an existing project you can merge the remote changes to your project.
- Add remote to access the template project
git remote add py3template git@github.com:BastiTee/python3-boilerplate.git
git pull py3template master --allow-unrelated-histories
- Solve all merge conflicts and commit. Most likely there will be a lot
- Do whatever is necessary to remove the boilerplate you don't need, e.g.
rm -rf my_module tests/test_utils.py __rename__.sh
- Commit your changes and push to your project
Resources
- http://packaging.python.org/
- https://packaging.python.org/en/latest/distributing.html
- https://pypi.org/
- https://github.com/pypa/sampleproject
- https://www.python.org/dev/peps/
- https://www.python.org/dev/peps/pep-0008/
- https://www.kennethreitz.org/essays/why-you-should-use-vs-code-if-youre-a-python-developer
- https://code.visualstudio.com/docs/python/python-tutorial
Future ideas and todos
- Optional static type hints (PEP 484) with mypy
- Make sure tox is working as expected for supported Python versions
- Introduce black in favour of other linters
- Introduce pyproject.toml along with bleeding edge build tools like flit or poetry
Licensing
This project is licensed under Apache License 2.0.