# SPDX-FileCopyrightText: : 2022 The PyPSA-Eur Authors
#
# SPDX-License-Identifier: CC0-1.0
exclude: "^LICENSES"

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
  rev: v4.6.0
  hooks:
  - id: check-merge-conflict
  - id: end-of-file-fixer
  - id: fix-encoding-pragma
  - id: mixed-line-ending
  - id: trailing-whitespace
  - id: check-added-large-files
    args: ["--maxkb=2000"]

  # Sort package imports alphabetically
- repo: https://github.com/PyCQA/isort
  rev: 5.13.2
  hooks:
  - id: isort
    args: ["--profile", "black", "--filter-files"]

  # Convert relative imports to absolute imports
- repo: https://github.com/MarcoGorelli/absolufy-imports
  rev: v0.3.1
  hooks:
  - id: absolufy-imports

  # Find common spelling mistakes in comments and docstrings
- repo: https://github.com/codespell-project/codespell
  rev: v2.2.6
  hooks:
  - id: codespell
    args: ['--ignore-regex="(\b[A-Z]+\b)"', '--ignore-words-list=fom,appartment,bage,ore,setis,tabacco,berfore,vor'] # Ignore capital case words, e.g. country codes
    types_or: [python, rst, markdown]
    files: ^(scripts|doc)/

  # Make docstrings PEP 257 compliant
- repo: https://github.com/PyCQA/docformatter
  rev: v1.7.5
  hooks:
  - id: docformatter
    args: ["--in-place", "--make-summary-multi-line", "--pre-summary-newline"]

- repo: https://github.com/keewis/blackdoc
  rev: v0.3.9
  hooks:
  - id: blackdoc

  # Formatting with "black" coding style
- repo: https://github.com/psf/black-pre-commit-mirror
  rev: 24.4.0
  hooks:
      # Format Python files
  - id: black
      # Format Jupyter Python notebooks
  - id: black-jupyter

  # Remove output from Jupyter notebooks
- repo: https://github.com/aflc/pre-commit-jupyter
  rev: v1.2.1
  hooks:
  - id: jupyter-notebook-cleanup
    args: ["--remove-kernel-metadata"]

  # Do YAML formatting (before the linter checks it for misses)
- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
  rev: v2.13.0
  hooks:
  - id: pretty-format-yaml
    args: [--autofix, --indent, "2", --preserve-quotes]

  # Format Snakemake rule / workflow files
- repo: https://github.com/snakemake/snakefmt
  rev: v0.10.1
  hooks:
  - id: snakefmt

  # For cleaning jupyter notebooks
- repo: https://github.com/aflc/pre-commit-jupyter
  rev: v1.2.1
  hooks:
  - id: jupyter-notebook-cleanup
    exclude: examples/solve-on-remote.ipynb

  # Check for FSFE REUSE compliance (licensing)
- repo: https://github.com/fsfe/reuse-tool
  rev: v3.0.2
  hooks:
  - id: reuse