Date: 2019-06-05
Accepted
Reproducing results from a program is challenging when operating systems, language versions, and dependency versions can vary.
For this codebase, we will focus on consistent Python versions and dependency versions.
Manage multiple Python versions via pyenv.
Manage dependencies via poetry.
Define tests via nox.
Run tests in automation/CI via Github Actions.
This solution lets us:
- keep track of abstract and concrete versions for dependencies (think
.lock
file) - locally test against multiple Python versions
- run the same tests locally as we do in Continuous Integration (CI)
- easily view CI test results within the review context