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 shellif you're using pyenv. -
Change some fields of
[tool.poetry]in pyproject.toml, e.g. the project name, in fieldnameandpackages -
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.
projectto the same value asnamein pyproject.toml. -
Reinstall the package with
poetry install -
Change the
my_packagepart infrom my_package.calc importto 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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file my-package-tomergabay-0.1.0.tar.gz.
File metadata
- Download URL: my-package-tomergabay-0.1.0.tar.gz
- Upload date:
- Size: 3.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.1 CPython/3.10.3 Darwin/21.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b418dc5a4ba8d3e5153361f9c9bbed2e58056ef018ff294d52091fbab00ed1c
|
|
| MD5 |
1429ea0f75300f623afc2def82ff14b7
|
|
| BLAKE2b-256 |
508b82201a0409b5d04c71557cda680e81992e42d62f78241dfab6830d33c9fd
|
File details
Details for the file my_package_tomergabay-0.1.0-py3-none-any.whl.
File metadata
- Download URL: my_package_tomergabay-0.1.0-py3-none-any.whl
- Upload date:
- Size: 3.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.2.1 CPython/3.10.3 Darwin/21.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e3923ec6faa1030596330859564779748e6ebfeb79b6c42d320fbe09ad1c11a
|
|
| MD5 |
950344cb8e8b0bac33c6d780ca1d9573
|
|
| BLAKE2b-256 |
a0ddb0a5fac03ab2775f56d955de58715d77e5027368e35ea71a634e62525cd6
|