Skip to main content

Template for a professional (open source) Python package.

Project description

Version Code style: black

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:

  1. Clone this repository: git clone https://github.com/sTomerG/my-package.git

  2. Create a virtual environment using pyenv and pyenv-virtualenv or python3 -m venv venv

  3. Activate the virtual environment using using pyenv or source venv/bin/activate

  4. Upgrade pip and install poetry: pip install --upgrade pip && pip install poetry

  5. Activate the poetry venv with poetry shell if you're using pyenv.

  6. Change some fields of [tool.poetry] in pyproject.toml, e.g. the project name, in field name and packages

  7. Change the name of the my_package/ folder in src/ to the new name of your package (use underscores instead of hyphens here).

  8. Change the top fields in docs/source/conf.py, e.g. project to the same value as name in pyproject.toml.

  9. Reinstall the package with poetry install

  10. Change the my_package part in from 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.

  11. Check if the tests are still running correctly with working with poetry run pytest

  12. Rebuild the docs with poetry run sphinx-autobuild docs/source docs/build/html

  13. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

my-package-tomergabay-0.1.0.tar.gz (3.8 kB view details)

Uploaded Source

Built Distribution

my_package_tomergabay-0.1.0-py3-none-any.whl (3.8 kB view details)

Uploaded Python 3

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

Hashes for my-package-tomergabay-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0b418dc5a4ba8d3e5153361f9c9bbed2e58056ef018ff294d52091fbab00ed1c
MD5 1429ea0f75300f623afc2def82ff14b7
BLAKE2b-256 508b82201a0409b5d04c71557cda680e81992e42d62f78241dfab6830d33c9fd

See more details on using hashes here.

File details

Details for the file my_package_tomergabay-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for my_package_tomergabay-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0e3923ec6faa1030596330859564779748e6ebfeb79b6c42d320fbe09ad1c11a
MD5 950344cb8e8b0bac33c6d780ca1d9573
BLAKE2b-256 a0ddb0a5fac03ab2775f56d955de58715d77e5027368e35ea71a634e62525cd6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page