Guidelines for Contributors#

The project is hosted at the GitLab instance of Deutsches Elektronen Synchrotron (DESY). Contributions to the project are welcome. Please feel free to submit a merge request to https://gitlab.desy.de/cfel-sc-public/cfelpyutils/.

Version Control#

The CFELPyUtils library is developed using the Git version control system.

Continuous Integration#

The DESY Gitlab instance provides Continuous Integration (CI) and automatically runs unit tests and package builds.

Python#

The CFELPyUtils library is mainly developed in Python.

  • From CFELPyUtils version 2.0 Python 2.7 is no longer supported.

  • All code in the library must run with the currently supported

    versions of Python 3. At the time of this writing this is:

    • Python 3

      • 3.6

      • 3.7

      • 3.8

      • 3.9

  • Pylint should be run on the code before submission, as stated in the Google Python Coding Style Guide. In the root folder of the CFELPyUtils repository, contributors can find a 'pylintrc' file with the settings that should be applied when linting the code. Please see here how to use the pylintrc file.

  • The Black Python code formatter should be run on the code before submission.

C/C++#

Some extension can, for performance reason, be written using the C++ or C) programming languages.

  • All C++ code in CFELPyUtils must follow at most the C++98 ISO standard, and the code must compile on a Linux RHEL7/CentOS7 platform using the standard development stack that comes with these systems.

  • Part of the C++11 standard can be used when writing extensions. However, it must be possible to compile the code using at least version 4.8 of the 'gcc' compiler (in order to create the Linux binary Python wheel).

  • All C code in CFELPyUtils must follow at most the C99 ISO standard, and the code must compile on a Linux RHEL7/CentOS7 platform using the standard development stack that comes with these systems.

  • The Cython project should be used to interface C/C++ code with Python.