Template for a professional (open source) Python package.
Project description
The template for a professional Python Package
In October 2022 I wrote this Medium article in which I explain step-by-step on how to create a professional Python Package. To make it extra easy for everyone I've also created this repository which can be used as a template.
Contents
- A src/ folder with example code.
- A pyproject.toml with all the necessary dependencies specified.
- A tests/ folder with example tests, using pytest and Hypothesis.
- Pre-commit hooks for Black, isort and flake8.
- A workflow test-package.yaml which automates testing with Github Actions for different Python versions (optionally) on different Operating Systems, using caching to speed up the process.
- A docs/ folder with a Sphinx project template for ReadTheDocs which can easily be auto-generated with one command, including automatic API documentation of all code in src/.
Usage
To convert this package template to your own package please take the following steps:
-
Clone this repository:
git clone https://github.com/sTomerG/my-package.git
-
Create a virtual environment using pyenv and pyenv-virtualenv or
python3 -m venv venv
-
Activate the virtual environment using using pyenv or
source venv/bin/activate
-
Upgrade pip and install poetry:
pip install --upgrade pip && pip install poetry
-
Activate the poetry venv with
poetry shell
if you're using pyenv. -
Change some fields of
[tool.poetry]
in pyproject.toml, e.g. the project name, in fieldname
andpackages
-
Change the name of the my_package/ folder in src/ to the new name of your package (use underscores instead of hyphens here).
-
Change the top fields in docs/source/conf.py, e.g.
project
to the same value asname
in pyproject.toml. -
Reinstall the package with
poetry install
-
Change the
my_package
part infrom my_package.calc import
to the name of the folder you chose in step 6 in tests/test_calc/test_square.py and in docs/source/notebooks/usage.ipynb. -
Check if the tests are still running correctly with working with
poetry run pytest
-
Rebuild the docs with
poetry run sphinx-autobuild docs/source docs/build/html
-
Edit in the top of the README the links
Note
When you add dependencies with poetry add
, make sure to also run poetry export --with doc -f requirements.txt --output docs/rtd_requirements.txt
to update the requirements file for the ReadTheDocs.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for my-package-tomergabay-0.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0b418dc5a4ba8d3e5153361f9c9bbed2e58056ef018ff294d52091fbab00ed1c |
|
MD5 | 1429ea0f75300f623afc2def82ff14b7 |
|
BLAKE2b-256 | 508b82201a0409b5d04c71557cda680e81992e42d62f78241dfab6830d33c9fd |
Hashes for my_package_tomergabay-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0e3923ec6faa1030596330859564779748e6ebfeb79b6c42d320fbe09ad1c11a |
|
MD5 | 950344cb8e8b0bac33c6d780ca1d9573 |
|
BLAKE2b-256 | a0ddb0a5fac03ab2775f56d955de58715d77e5027368e35ea71a634e62525cd6 |