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-covReadTheDocsfor hosting documentation, using theSphinxcode documentation system andsphinx-rtd-themeCircleCI(continuous integration)GitHub(remote, publicgitrepositories)
PEPs
We try to stick to PEP guidelines wherever possible. Some important PEPs 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(Anacondachannel distributing bioinformatics software)PyPI(Python package warehousing and distribution)