Skip to content
Snippets Groups Projects
Commit ff6758e7 authored by Frederik Hennig's avatar Frederik Hennig
Browse files

update contributing

parent 9b5731e3
1 merge request!10Introduce Nox for Test Automation
Pipeline #71687 passed with stages
in 1 minute and 45 seconds
......@@ -13,6 +13,19 @@ As such, any submission of contributions via merge requests is considered as agr
## Developing `pystencils-sfg`
### Prequesites
To develop pystencils-sfg, you will need at least these packages:
- Python 3.10
- Git
- A C++ compiler supporting at least C++20 (gcc >= 10, or clang >= 10)
- GNU Make
- CMake
- Nox
Before continuing, make sure that the above packages are installed on your machine.
### Fork and Clone
To work within the `pystencils-sfg` source tree, first create a *fork* of this repository
......@@ -29,28 +42,29 @@ source .venv/bin/activate
pip install -e .
```
If you have [nox](https://nox.thea.codes/en/stable/) installed, you can also set up your virtual environment
by running `nox --session dev_env`.
### Code Style and Type Checking
To contribute, please adhere to the Python code style set by [PEP 8](https://peps.python.org/pep-0008/).
For consistency, format all your source files using the [black](https://pypi.org/project/black/) formatter.
Use flake8 to check your code style:
For consistency, format all your source files using the [black](https://pypi.org/project/black/) formatter,
and check them regularily using the `flake8` linter through Nox:
```shell
flake8 src/pystencilssfg
nox --session lint
```
Further, `pystencils-sfg` is being fully type-checked using [MyPy](https://www.mypy-lang.org/).
All submitted code should contain type annotations ([PEP 484](https://peps.python.org/pep-0484/)) and must be
correctly statically typed.
Before each commit, check your types by calling
Regularily check your code for type errors using
```shell
mypy src/pystencilssfg
nox --session typecheck
```
Both `flake8` and `mypy` are also run in the integration pipeline.
You can automate the code quality checks by running them via a git pre-commit hook.
Such a hook can be installed using the [`install_git_hooks.sh`](install_git_hooks.sh) script located at the project root.
### Test Your Code
......@@ -65,3 +79,11 @@ In [tests/generator_scripts](tests/generator_scripts), a framework is provided t
for successful execution, correctness, and compilability of their output.
Read the documentation within [test_generator_scripts.py](tests/generator_scripts/test_generator_scripts.py)
for more information.
Run the test suite by calling it through Nox:
```shell
nox --session testsuite
```
This will also collect coverage information and produce a coverage report as a HTML site placed in the `htmlcov` folder.
......@@ -74,7 +74,7 @@ def docs(session: nox.Session):
@nox.session()
def dev(session: nox.Session):
def dev_env(session: nox.Session):
"""Set up the development environment at .venv"""
session.install("virtualenv")
......
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