Commit 2464ef8e authored by Michael Kuron's avatar Michael Kuron
Browse files

Merge branch 'Dev' into 'master'

Add citations to ReadMe

See merge request pycodegen/pystencils!256
parents 2ed62a8e 3057bcf3
Pipeline #33539 passed with stages
in 20 minutes and 54 seconds
stages: stages:
- pretest
- test - test
- deploy - deploy
...@@ -7,7 +8,7 @@ stages: ...@@ -7,7 +8,7 @@ stages:
# Normal test - runs on every commit all but "long run" tests # Normal test - runs on every commit all but "long run" tests
tests-and-coverage: tests-and-coverage:
stage: test stage: pretest
except: except:
variables: variables:
...@@ -143,6 +144,7 @@ ubuntu: ...@@ -143,6 +144,7 @@ ubuntu:
- python3 -m coverage xml - python3 -m coverage xml
tags: tags:
- docker - docker
artifacts: artifacts:
when: always when: always
paths: paths:
...@@ -201,7 +203,7 @@ riscv64: ...@@ -201,7 +203,7 @@ riscv64:
- sed -i 's/fopenmp/fopenmp=libgomp -I\/usr\/include\/riscv64-linux-gnu/g' ~/.config/pystencils/config.json - sed -i 's/fopenmp/fopenmp=libgomp -I\/usr\/include\/riscv64-linux-gnu/g' ~/.config/pystencils/config.json
minimal-conda: minimal-conda:
stage: test stage: pretest
except: except:
variables: variables:
...@@ -277,7 +279,7 @@ pycodegen-integration: ...@@ -277,7 +279,7 @@ pycodegen-integration:
flake8-lint: flake8-lint:
stage: test stage: pretest
except: except:
variables: variables:
...@@ -3,12 +3,13 @@ Contributors: ...@@ -3,12 +3,13 @@ Contributors:
------------- -------------
- Martin Bauer <> - Martin Bauer <>
- Markus Holzer <>
- Stephan Seitz <> - Stephan Seitz <>
- Michael Kuron <>
- Jan Hönig <> - Jan Hönig <>
- Nils Kohl <>
- Julian Hammer <> - Julian Hammer <>
- Christian Godenschwager <> - Nils Kohl <>
- Markus Holzer <> - Frederik Hennig <>
- Michael Kuron <>
- Dominik Ernst <> - Dominik Ernst <>
- João Victor Tozatti Risso <> - Christian Godenschwager <>
- Dominik Thoennes <>
# Contributing
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:
## Types of Contributions
### Report Bugs
Report bugs at [](
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.
### Fix Issues
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.
### Write Documentation
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.
## Get Started!
Ready to contribute? Here is how to set up `pystencils` for local development.
1. Fork the `pystencils` repo on GitLab.
2. Clone your fork locally:
$ git clone
3. 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 .
4. Create a branch for local development:
$ git checkout -b name-of-your-bugfix-or-feature
Now you can make your changes locally.
5. When you're done making changes, check that your changes pass flake8 and the
$ 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.
6. 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
7. Submit a Merge Request on GitLab.
## Merge Request Guidelines
Before you submit a Merge Request, check that it meets these guidelines:
1. All functionality that is implemented through this Merge Request should be covered by unit tests. These are implemented in `pystencil_tests`
2. If the Merge Request adds functionality, the docs should be updated. Put your new functionality into a function with a docstring.
3. 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.
## Tips
To run a subset of tests:
$ py.test
\ No newline at end of file
include include
include COPYING.txt include COPYING.txt
include RELEASE-VERSION include AUTHORS.txt
global-include *.pyx global-include *.pyx
include include
include pystencils/ include pystencils/
...@@ -59,12 +59,25 @@ All options: ...@@ -59,12 +59,25 @@ All options:
Options can be combined e.g. Options can be combined e.g.
```bash ```bash
pip install pystencils[interactive,gpu,doc] pip install pystencils[interactive, gpu, doc]
``` ```
pystencils is also fully compatible with Windows machines. If working with visual studio, a pycuda makes sure to run example files first to ensure that pycuda can find the compiler's executable.
Documentation Documentation
------------- -------------
Read the docs [here]( and Read the docs [here]( and
check out the Jupyter notebooks in `doc/notebooks`. check out the Jupyter notebooks in `doc/notebooks`.
Many thanks go to the [contributors](AUTHORS.txt) of pystencils.
### Please cite us
If you use pystencils in a publication, please cite the following articles:
- M. Bauer et al, Code Generation for Massively Parallel Phase-Field Simulations. Association for Computing Machinery, 2019.
\ No newline at end of file
#!/usr/bin/env bash
# Checks run before every push
# has to be copied to .git/hooks
echo "Running pre-push hook"
echo "Running flake8 check"
flake8 --append-config=.flake8 pystencils
# $? stores exit value of the last command
if [ $? -ne 0 ]; then
echo "flake8 failed"
exit 1
python3 quicktest
# $? stores exit value of the last command
if [ $? -ne 0 ]; then
echo "quicktest failed"
exit 1
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment