Group Python Coding Style
To help us maintain consistent, remixable codebases with minimum effort, we use static analysis tools, automated code formatting, automated tests, and continuous integration services.
Development Suite
The current standard suite of tools is:
Anaconda
(Python distribution and virtual environment management)git
(source control management)pre-commit
(static code tests when committing to your local development repository)black
(automated - and controversial - code formatting)bandit
(checks for potential security issues)flake8
(code linting)mypy
(static typing, optional)pytest
(automated testing)pydocstyle
(linter for Python docstrings)coverage
, withpytest-cov
ReadTheDocs
for hosting documentation, using theSphinx
code documentation system andsphinx-rtd-theme
CircleCI
(continuous integration)GitHub
(remote, publicgit
repositories)
PEPs
We try to stick to PEP
guidelines wherever possible. Some important PEP
s are:
Packaging and Distribution
We aim to develop all our software and tools in public, under the MIT licence. To do this we make our source code available, with source (and where appropriate, binary) releases at GitHub
. Tools and Python packages are packaged for bioconda
, and Python packages are also distributed via PyPI
.
GitHub
(remote, public git repositories)bioconda
(Anaconda
channel distributing bioinformatics software)PyPI
(Python package warehousing and distribution)