Developer Notes

Here we gather important notes for the developing of oemof and elements within the framework.

We highly encourage you to contribute to further development of oemof. If you want to collaborate see description below or contact us.

Install the developer version

To install the developer version two steps are necessary:

git clone
sudo pip3 install -e /path/to/the/repository


See the documentation of the dev branch at


We use the collaboration features from Github, see

Style guidelines

We mostly follow standard guidelines instead of developing own rules.

PEP8 (Python Style Guide)

  • We adhere to PEP8 for any code produced in the framework.
  • We use pylint to check your code. Pylint is integrated in many IDEs and Editors. Check here or ask the maintainer of your IDE or Editor
  • Some IDEs have pep8 checkers, which are very helpful, especially for python beginners.

Quoted strings

For strings we use double quotes if possible.

info_msg = "We use double quotes for strings"
info_msg = 'This is a string where we need to use "single" quotes'

Naming Conventions

  • We use plural in the code for modules if there is possibly more than one child class (e.g. import transformers AND NOT transformer). If there are arrays in the code that contain multiple elements they have to be named in plural (e.g. transformers = [T1, T2,...]).
  • Please, follow the naming conventions of pylint
  • Use talking names
    • Variables/Objects: Name it after the data they describe (power_line, wind_speed)
    • Functions/Method: Name it after what they do: use verbs (get_wind_speed, set_parameter)

Using git

Branching model

So far we adhere mostly to the git branching model by Vincent Driessen.

Differences are:

  • instead of the name origin/develop we call the branch origin/dev.
  • feature branches are named like features/*
  • release branches are named like releases/*

Commit message

Use this nice little tutorial to learn how to write a nice commit message.


We use nosetests for testing. Make sure that all tests are successfull before merging back into the dev.

cd /path/to/oemof/
nosetests3 --with-doctest           # or
nosetests3 --with-doctest --rednose # if you like it


Section about workflow for issues is still missing (when to assign an issue with what kind of tracker to whom etc.).