Template-based common/best practices for managing a Python package on PyPi
Project description
PyPi Template
Template-based common/best practices for managing a Python package on PyPi
First Minutes with PyPi Template
PyPi Template aims to reduce the boilerplate overhead associated with setting up and maintaining a Python code base published on PyPI. It provides a set of templates to establish the essential and recommended best practice files.
In addition to setup and publishing support, it also offers automation through a Makefile for common development tasks, such as running and testing.
Below is a screenshot of your typical first minutes with PyPi Template, where you start from scratch and end up with a tested and published Python package.
$ mkdir my-pypi-module
$ cd my-pypi-module
$ pyenv virtualenv pypi-template
$ pyenv local pypi-template
$ pip install pypi-template
$ pypi-template init
A description for the package: My PyPI Module
Select classifiers: Programming Language :: Python :: 3
Select classifiers:
Select console scripts:
First year of publication: 2025
Github account: christophevg
Github repo name: my-pypi-module
Keywords describing the package: best module ever
License: MIT
Package module name: my_pypi_module
Package name: my-pypi-module
Package tagline: showing off my best module
Package title: My PyPi Module
Project env: pypi-template
Readme: .github/README.md
Select requires: baseweb
Select requires:
Select scripts:
Select test requires:
Your author name: Christophe VG
Your email address: contact@christophe.vg
Your full name: Christophe VG
Your name: Christophe VG
๐ทโโ๏ธ creating virtual environment my-pypi-module-run
๐ทโโ๏ธ creating virtual environment my-pypi-module-docs
๐ทโโ๏ธ creating virtual test environment my-pypi-module-test-3.9.18
๐ทโโ๏ธ creating virtual test environment my-pypi-module-test-3.10.13
๐ทโโ๏ธ creating virtual test environment my-pypi-module-test-3.11.12
๐ทโโ๏ธ creating virtual test environment my-pypi-module-test-3.12.10
๐ทโโ๏ธ activating project environment
๐ทโโ๏ธ installing requirements in my-pypi-module
$ ls -a
. .pypi-template Makefile requirements.test.txt
.. .python-version Makefile.backup requirements.txt
.env .readthedocs.yaml docs setup.py
.github LICENSE.txt my_pypi_module tests
.gitignore MANIFEST.in requirements.docs.txt tox.ini
$ make run
๐ทโโ๏ธ activating run environment
๐ทโโ๏ธ running LOG_LEVEL=INFO python -m my_pypi_module
hello Stranger
$ make coverage
๐ทโโ๏ธ activating test environments
All checks passed!
๐ทโโ๏ธ performing tests
========================================== test session starts ===========================================
platform darwin -- Python 3.11.12, pytest-8.4.0, pluggy-1.6.0
cachedir: .tox/py311/.pytest_cache
rootdir: /Users/xtof/Workspace/pypi-template/my-pypi-module
configfile: tox.ini
testpaths: tests
collected 1 item
tests/test_example.py . [100%]
=========================================== 1 passed in 0.01s ============================================
py311: OK โ in 2.62 seconds
========================================== test session starts ===========================================
platform darwin -- Python 3.12.10, pytest-8.4.0, pluggy-1.6.0
cachedir: .tox/py312/.pytest_cache
rootdir: /Users/xtof/Workspace/pypi-template/my-pypi-module
configfile: tox.ini
testpaths: tests
collected 1 item
tests/test_example.py . [100%]
=========================================== 1 passed in 0.01s ============================================
py312: OK โ in 1.57 seconds
========================================== test session starts ===========================================
platform darwin -- Python 3.10.13, pytest-8.4.0, pluggy-1.6.0
cachedir: .tox/py310/.pytest_cache
rootdir: /Users/xtof/Workspace/pypi-template/my-pypi-module
configfile: tox.ini
testpaths: tests
collected 1 item
tests/test_example.py . [100%]
=========================================== 1 passed in 0.01s ============================================
py310: OK โ in 1.47 seconds
========================================== test session starts ===========================================
platform darwin -- Python 3.9.18, pytest-8.4.0, pluggy-1.6.0
cachedir: .tox/py39/.pytest_cache
rootdir: /Users/xtof/Workspace/pypi-template/my-pypi-module
configfile: tox.ini
testpaths: tests
collected 1 item
tests/test_example.py . [100%]
=========================================== 1 passed in 0.01s ============================================
py311: OK (2.62 seconds)
py312: OK (1.57 seconds)
py310: OK (1.47 seconds)
py39: OK (1.45 seconds)
congratulations :) (7.14 seconds)
๐ทโโ๏ธ creating coverage reports
Name Stmts Miss Cover
------------------------------------------------
my_pypi_module/__init__.py 1 0 100%
my_pypi_module/module.py 10 1 90%
tests/__init__.py 0 0 100%
tests/test_example.py 4 0 100%
------------------------------------------------
TOTAL 15 1 93%
Wrote HTML report to htmlcov/index.html
Wrote LCOV report to coverage.lcov
๐ทโโ๏ธ activating project environment
$ make publish-test
๐ทโโ๏ธ activating project environment
๐ทโโ๏ธ building distribution
๐ทโโ๏ธ publishing to PyPI test
Uploading distributions to https://test.pypi.org/legacy/
Uploading my_pypi_module-0.0.1-py3-none-any.whl
100$ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 9.2/9.2 kB โข 00:00 โข ?
Uploading my_pypi_module-0.0.1.tar.gz
100$ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 8.5/8.5 kB โข 00:00 โข ?
View at:
https://test.pypi.org/project/my-pypi-module/0.0.1/
[!NOTE]
Visit Read the Docs for the full documentation, including overviews and several examples.
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
File details
Details for the file pypi_template-1.4.0.tar.gz
.
File metadata
- Download URL: pypi_template-1.4.0.tar.gz
- Upload date:
- Size: 29.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
6f803aa3f2380dfe382e3c19ac3c5b762da0d21c155a4c7704527ea7961eedd6
|
|
MD5 |
c89510e4e92807224f4748cf3847969e
|
|
BLAKE2b-256 |
7da8f3565116b2563b565a51e4f711ef3d4ec5d010c9830030a98afe60c5d4c5
|
File details
Details for the file pypi_template-1.4.0-py3-none-any.whl
.
File metadata
- Download URL: pypi_template-1.4.0-py3-none-any.whl
- Upload date:
- Size: 34.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
880bbb27d212a4087154313c996afbd8e211418aca7a98a2df60341d557dde96
|
|
MD5 |
aade412b1c0bc7bc1b711d7b6fbcee42
|
|
BLAKE2b-256 |
195277cb4a8d39c70059ac7c9b5cc25eea7dc6c6c4d4025708e375729426a0db
|