.. _contributing: Contributing ============ This is a simple remainder on how to change/add things to the library. First rule of thumb is to follow the obvious naming/structure conventions used in the repository. Working on the C++ backend -------------------------- If the developped feature requires to create a new file `include/higra/file-path/filename.hpp`: - create the file (add minimal licence and namespace information) - create the test file `test/cpp/file-path/test_filename.cpp` (add minimal licence information and boost test module initialization) - register test file in `test/cpp/file-path/CMakeLists.txt` Working on the Python frontend ------------------------------ If the feature requires to create a new python file `higra/file-path/filename.py`: - create the file (add minimal license information) - register file in `higra/file-path/CMakeLists.txt` - add line `from .filename.py import *` in `higra/file-path/__init__.py` - add a new python test file `test/python/file-path/test_filename.py` - register test file in `test/python/file-path/CMakeLists.txt` If the feature requires to create a new c++ pybind11 binding for the backend file `include/higra/file-path/filename.hpp`: - create the files `higra/file-path/py_filename.hpp` and `higra/file-path/py_filename.cpp` - declare prototype `void py_init_filename(pybind11::module &m);` in the hpp file and implement it in the cpp file. - register the cpp file in `higra/file-path/CMakeLists.txt` - add line `#include "py_filename.hpp"` to `higra/file-path/all.hpp` - add line `py_init_filename(m);` in `higra/py_module.cpp` - add a new python test file `test/python/file-path/test_filename.py` - register test file in `test/python/file-path/CMakeLists.txt` If the feature requires to create a new top-level package `package-name`: - create the folder `higra/package-name/` - add files `__init__.py`, `CMakeLists.txt`, "all.hpp" in the new folder - in `higra/all.hpp` add `#include "package-name/all.hpp"` - in `higra/CMakeLists.txt` add `add_subdirectory(package-name)` - in `higra/__init__.py` add `from .package-name import *` - in `setup.py` add `'higra.package-name'` in package list Pushing a new version --------------------- .. important:: Admin only - Change version number in `include/higra/config.hpp` and in `doc/requirements.txt`: `x.y.z` - push new version to master/origin - Add tag `x.y.z` to master - push tag to master/origin - (linux/mac/windows Pypi wheels generated automatically with `Travis Ci `_ and `Appveyor `_) - regenerate docs when Pypi is up-to-date `readthedocs `)