Required tools

For simple tasks like fixing typos, a web browser suffices to propose file changes directly via GitHub (see section Version control). Your “pull request” triggers a server-based process, employing all tools required to test, build, release, and document a new HydPy version (see section Continuous Integration). For an actual release, the maintainer of the hydpy repository only needs to accept your request and “tag” it. However, reaching for more complex goals requires to have these development tools runnable on your machine.

First, you need the Python interpreter itself. We do our best to keep HydPy up-to-date with the development of Python, so please select the most recent stable CPython version (at the time of writing, Python 3.7).

Second, install all required site-packages listed in requirements.txt. These include tools like Cython for translating Python based model source code into computationally more efficient C code. Additionally, you need Sphinx and its extensions listed in conf.py for generating the HTML documentation.

Third, please use a modern Integrated Development Environment (IDE). Principally, you are free to select any IDE you like (one reasonable choice for beginners were Spyder, already contained in the Anaconda distribution), but at least for developers planning more substantial code contributions, we strongly recommend PyCharm. We gradually introduce type hints into HydPy’s source code and, so far, prefer PyCharm’s internal type checker over mypy, which is still not part of the standard library. One must use PyCharm specific comments to disable misleading type warnings (and other misleading warnings as well).

Fourth, you need Git for version control, as described in the next section.