Contributions to pystencils are always welcome, and they are greatly appreciated! A list of open problems can be found here. Of course, it is also always appreciated to bring own ideas and problems to the community!
Please submit all contributions to the official GitLab repository in the form of a Merge Request. Please do not submit git diffs or files containing the changes. There also exists a GitHub repository, which is only a mirror to the GitLab repository. Contributions to the GitHub repository are not considered.
pystencils
is an open-source python package under the license of AGPL3. Thus we consider the act of contributing to the code by submitting a Merge Request as the "Sign off" or agreement to the AGPL3 license.
You can contribute in many different ways:
Report bugs at https://i10git.cs.fau.de/pycodegen/pystencils/-/issues.
For pystencils, it is often necessary to provide the python and SymPy versions used and hardware information like the processor architecture and the compiler version used to compile the generated kernels.
Look through the GitLab issues. Different tags are indicating the status of the issues. The "bug" tag indicates problems with pystencils, while the "feature" tag shows ideas that should be added in the future.
The documentation of pystencils can be found here. Jupyter notebooks are used to provide an interactive start to pystencils. It is always appreciated if new document notebooks are provided since this helps others a lot.
Ready to contribute? Here is how to set up pystencils
for local development.
- Fork the
pystencils
repo on GitLab. - Clone your fork locally:
$ git clone https://i10git.cs.fau.de/your-name/pystencils
- Install your local copy into a virtualenv. It is also recommended to use anaconda or miniconda to manage the python environments.
$ mkvirtualenv pystencils
$ cd pystencils/
$ pip install -e .
- Create a branch for local development:
$ git checkout -b name-of-your-bugfix-or-feature
Now you can make your changes locally.
- When you're done making changes, check that your changes pass flake8 and the tests
$ flake8 pystencils
$ py.test -v -n $NUM_CORES -m "not longrun" .
To get all packages needed for development, a requirements list can be found here. This includes flake8 and pytest.
- Commit your changes and push your branch to GitHub::
$ git add .
$ git commit -m "Your detailed description of your changes."
$ git push origin name-of-your-bugfix-or-feature
- Submit a Merge Request on GitLab.
Before you submit a Merge Request, check that it meets these guidelines:
- All functionality that is implemented through this Merge Request should be covered by unit tests. These are implemented in
pystencil_tests
- If the Merge Request adds functionality, the docs should be updated. Put your new functionality into a function with a docstring.
- If you have a maintainer status for
pystencils
, you can merge Merge Requests to the master branch. However, every Merge Request needs to be reviewed by another developer. Thus it is not allowed to merge a Merge Request, which is submitted by oneself.
To run a subset of tests:
$ py.test my_test.py