diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..2cf8ed6 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,56 @@ +exclude: ".venv|__pycache__|tests/dev/|tests/fixtures/" +fail_fast: false +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.4.0 + hooks: + - id: check-added-large-files + args: ["--maxkb=1024"] + - id: check-case-conflict + - id: check-toml + - id: check-yaml + - id: detect-private-key + - id: end-of-file-fixer + - id: fix-byte-order-marker + - id: fix-encoding-pragma + args: [--remove] + - id: trailing-whitespace + args: [--markdown-linebreak-ext=md] + + - repo: https://github.com/charliermarsh/ruff-pre-commit + rev: "v0.0.262" + hooks: + - id: ruff + args: ["--fix-only"] + + - repo: https://github.com/asottile/pyupgrade + rev: v3.3.1 + hooks: + - id: pyupgrade + args: + - "--py38-plus" + + - repo: https://github.com/psf/black + rev: 23.3.0 + hooks: + - id: black + + - repo: https://github.com/pycqa/isort + rev: 5.12.0 + hooks: + - id: isort + args: ["--profile", "black", "--filter-files"] + + - repo: https://github.com/pycqa/flake8 + rev: 6.0.0 + hooks: + - id: flake8 + args: + [ + "--select=E9,F401,F63,F7,F82,D103", + ] + +ci: + autoupdate_schedule: quarterly + skip: [] + submodules: false diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..be103d2 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,25 @@ +# Directives de contribution + +Tout d'abord, merci d'envisager de contribuer à ce projet ! + +Il s'agit principalement de lignes directrices, et non de règles. Faites preuve de discernement, et n'hésitez pas à proposer des modifications à ce document dans une pull request. + +## Git hooks + +Nous utilisons les git hooks via [pre-commit](https://pre-commit.com/) pour appliquer et vérifier automatiquement certaines "règles". Veuillez l'installer avant de pousser un commit. + +Voir le fichier de configuration correspondant : `.pre-commit-config.yaml`. + +## Style de code + +Assurez-vous que votre code suit à peu près la PEP-8 [PEP-8](https://www.python.org/dev/peps/pep-0008/) et reste cohérent avec le reste du code : + +- formatage: [black](https://black.readthedocs.io/) est utilisé pour formater automatiquement le code sans débat. +- tri des imports: [isort](https://pycqa.github.io/isort/) est utilisé pour trier les imports. +- analyse statique: [flake8](https://flake8.pycqa.org/en/latest/) est utilisé pour identifier les écarts vis à vis de PEP-8 et maintenir un code source de qualité. + +## Branches + +### Branches spéciales + +- `master`: la branche principale. diff --git a/README.md b/README.md index 400645d..7245437 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Ces librairies facilitent la manipulation d'entités du projet ROK4 comme les Ti Installations système requises : -* debian : `apt install python3-rados python3-gdal` +- debian : `apt install python3-rados python3-gdal` Depuis [PyPI](https://pypi.org/project/rok4/) : `pip install rok4` Depuis [GitHub](https://github.com/rok4/core-python/releases/) : `pip install https://github.com/rok4/core-python/releases/download/x.y.z/rok4-x.y.z-py3-none-any.whl` @@ -33,6 +33,16 @@ except Exception as exc: print(exc) ``` +## Contribuer + +- Installer les dépendances de développement : + + ```sh + python3 -m pip install -e[dev] + ``` + +- Consulter les [directives de contribution](./CONTRIBUTING.md) + ## Compiler la librairie ```sh diff --git a/pyproject.toml b/pyproject.toml index 04310a2..43bd480 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,13 +37,17 @@ dependencies = [ ] [project.optional-dependencies] -test = [ - "pytest >= 7.1.2", - "coverage >= 7.0.5" +dev = [ + "pre-commit>=3,<4" ] doc = [ "pdoc3 >= 0.10.0" ] +test = [ + "pytest >= 7.1.2", + "coverage >= 7.0.5" +] + [project.urls] "Homepage" = "https://rok4.github.io/core-python"