Jack Hadrill 53b7c05b07 | ||
---|---|---|
src/foobar | ||
tests | ||
.drone.yml | ||
.flake8 | ||
.gitignore | ||
.pylintrc | ||
LICENSE | ||
README.md | ||
pyproject.toml | ||
setup.cfg | ||
setup.py |
README.md
Python Template
This is a basic Python template which uses the new pyproject.toml
in
conjunction with setup.cfg
(and legacy support for older Python versions with
setup.py
).
It contains pylint and flake8 rules for an increased line length of 120 characters, in addition to support for unit tests and CI via Drone.
Development
The package should be located in a subdirectory within src/
. For example,
src/foobar/
.
This directory should contain an __init__.py
and a __main__.py
, the latter
of which allows this package to be called as a Python module.
To install an editable version (such that you don't need to keep re-installing), create a new virtual environment and use pip's editable flag.
$ python -m venv venv
$ . venv/bin/activate
(venv)$ pip install -e .
Lint
Pylint and flake8 rules can be found in .pylintrc
and .flake8
respectively.
By default, the default rulesets are followed with overrides specified in these
files.
To install, use the following command:
(venv)$ pip install -e '.[lint]'
To run, use the following commands:
(venv)$ flake8 src
(venv)$ pylint src
It should be noted that flake8 is much quicker than pylint, so should run first when used in a CI pipeline.
Test
This package is setup to support Python unittest and pytest, although in practice I've only really used it with pytest.
To install the test dependencies, issue the following command:
(venv)$ pip install -e '.[test]'
To run the tests, run the following command:
(venv)$ pytest
Tests should be stored in the test/
directory.
Build
To build a wheel for this package, use the following commands:
(venv)$ pip install --no-cache-dir build
(venv)$ python -m build --wheel
This will output a wheel to the dist/
directory.
Installation
Installation can be performed from source or using the previously built wheel.
Source
To install from source, navigate to the root directory and run the following command:
(venv)$ pip install .
Wheel
To install using the wheel, run the following command:
(venv)$ pip install dist/foobar*.whl
Running
The [project.scripts]
directive in pyproject.toml
lists the commands which
should be installed as part of this package. The included example runs the
main()
function in __main__.py
, and allows for the user to run the package
with the following command:
(venv)$ foobar
Hello, World!
42
Alternatively, because __main__.py
was used, the user can achieve the same by
using the following:
(venv)$ python -m foobar
Hello, World!
42