From ff6758e75d24df8a0421c739de8d4b80f649a65b Mon Sep 17 00:00:00 2001 From: Frederik Hennig <frederik.hennig@fau.de> Date: Fri, 10 Jan 2025 13:25:47 +0100 Subject: [PATCH] update contributing --- CONTRIBUTING.md | 36 +++++++++++++++++++++++++++++------- noxfile.py | 2 +- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dbcaaf1..e89a6e5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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. diff --git a/noxfile.py b/noxfile.py index de9047b..ebeac95 100644 --- a/noxfile.py +++ b/noxfile.py @@ -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") -- GitLab