Integrations#
As a growing open-source project, SImMER
has made use of a number of freely
available integrations and services, which are summarized below:
Code distribution#
We aim to make SImMER
available via the standard methods of Python package distribution.
conda-forge:
SImMER
is available through conda thanks to conda-forge, an open-source organization managing conda recipes. Our associated feedstock (where our conda recipe is stored and managed) can be found here.PyPI: through PyPI (the Python Package Index), SImMER is available for pip install.
Code style#
With a consistent style, bugs are easier to find, code is easier to maintain, and enhancements are easier to implement.
black: a Python code-formatter. It generally conforms to PEP-8 standards, but it does so in a very deterministic manner, which is helpful for our code. The basic pre-commit configuration is location in
.pre-commit-config.yaml
, while more detailed configuration is detailed inpyproject.toml
. black is also implemented as a GitHub action, with the relevant configuration in.github/workflows/style
. To apply the same methodology to our Jupyter notebooks, we also make use of black_nbconvert.isort: a tool for sorting imports in Python files. As with black, the basic pre-commit configuration is location in
.pre-commit-config.yaml
, while more detailed configuration is detailed inpyproject.toml
. black is also implemented as a GitHub action, with the relevant configuration in.github/workflows/style
.yamllint: lints our YAML files, checking them for bugs, syntax errors, and general style. The associated configuration file is
.yamllint
. Implemented as a GitHub check and pre-commit hook.
Continuous integration#
With continuous integration, our testing and releasing processes are automated, allowing for minimization of bugs and ultimately improvement of user experience.
Azure Pipelines: the main continuous integration service that we use. The benefit of this service for
SImMER
is that testing on virtual Window machines is possible — which is desirable for Windows users who may use our code. The configuration file for this service isazure-pipelines.yml
.Codecov: checks what percentage of our code base is covered in our automated tests. Ideally, we’d like to keep our coverage above 95% if it is in a production environment. Relevant configurations are noted in
codecov.yml
.Dependabot: automatically checks whether dependencies are kept up-to-date. Configuration is held in
.github/dependabot.yml
.GitHub Actions: A number of the services described in this page are implemented as GitHub Actions, which manifest as checks on different commits. In general, we would like all of our checks to pass before pull requests are merged. Configuration files for GitHub Actions are contained in
.github/workflows
.pre-commit hooks: these can be applied to any local commits. The associated configuration file is
.pre-commit-config.yml
.
Documentation#
A goal of SImMER
is to be as well-documented as possible, so as to ease its learning curve.
ReadTheDocs: the service on which
SImMER
hosts its documentation. Builds are run on every commit to themaster
branch. Configuration is stored in thereadthedocs.yml
file.Sphinx: the code that we use to build our documentation. All documentation is held in docs/, with configuration in
docs/source/conf.py
.