Python prototype

This package contains a simple sample of a Python package prototype. It is part of the educational repositories to learn how to write stardard code and common uses of the TDD.

See the documentation and how to do it on readthedocs. And see the development of this code step by step

Installation

The package is self-consistent. So you can download the package by github:

$ git clone https://github.com/bilardi/python-prototype

Or you can install by python3-pip:

$ pip3 install simple_sample

Usage

Read the unit tests in tests/test_my_class.py file to use it. This is a best practice. You can read also the documentation by command line,

$ python3
>>> from simple_sample.my_class import MyClass
>>> print(MyClass.__doc__)
>>> help(MyClass)
>>> quit()

If you want to see the local documentation, that you have downloaded by github, you can use the same steps but before you must to change the directory

$ cd python-prototype

Development

See readthedocs / howtomake for environment setup, testing, pre-commit hooks, conventional commits, versioning and packaging.

See readthedocs / refactoring for how this project moved from unittest / setup.py to pytest / pyproject.toml.

Project structure

simple_sample/  # the package source
    __init__.py  # package metadata and version
    my_class.py  # example class: inherits from interface and abstract
    my_class_abstract.py  # abstract class
    my_class_interface.py  # interface class
tests/  # pytest test files
docs/source/  # sphinx documentation (published on readthedocs)
pyproject.toml  # deps, ruff, pyright, bumpversion, git-cliff
Makefile  # targets for test, build, release
.pre-commit-config.yaml  # ruff + pytest hooks
CHANGELOG.md  # generated by git-cliff

Change Log

See CHANGELOG.md for details. This file is updated by Makefile command:

$ make changelog

See the Versioning management section in howtomake for how to bump the version and release: the same page also shows how to install the dependencies first.

Blog post

License

This package is released under the MIT license. See LICENSE for details.