---
default_language_version:
  # force all unspecified python hooks to run python3
  python: python3
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.5.0
    hooks:
      - id: trailing-whitespace
      - id: mixed-line-ending
        args: ['--fix', 'lf']
        exclude: '.*\.(svg)$'
      - id: check-byte-order-marker
      - id: check-executables-have-shebangs
      - id: check-merge-conflict
      - id: debug-statements
        # nova/cmd/manage.py imports pdb on purpose.
        exclude: 'nova/cmd/manage.py'
      - id: check-json
        files: .*\.json$
      - id: check-yaml
        files: .*\.(yaml|yml)$
  - repo: https://github.com/Lucas-C/pre-commit-hooks
    rev: v1.5.4
    hooks:
      - id: remove-tabs
        exclude: '.*\.(svg)$'
  - repo: https://opendev.org/openstack/hacking
    rev: 6.1.0
    hooks:
      - id: hacking
        additional_dependencies: []
        exclude: '^(doc|releasenotes|tools)/.*$'
  - repo: https://github.com/hhatto/autopep8
    rev: v2.1.0
    hooks:
      - id: autopep8
        files: '^.*\.py$'
  - repo: https://github.com/codespell-project/codespell
    rev: v2.2.6
    hooks:
    - id: codespell
      args: ['--ignore-words=doc/dictionary.txt']
  - repo: https://github.com/pre-commit/mirrors-mypy
    rev: v1.7.1
    hooks:
      - id: mypy
        additional_dependencies:
          - types-paramiko
        # keep this in-sync with '[mypy] files' in 'setup.cfg'
        files: |
          (?x)(
            nova/compute/manager.py
            | nova/compute/pci_placement_translator.py
            | nova/crypto.py
            | nova/filesystem.py
            | nova/limit/local.py
            | nova/limit/placement.py
            | nova/network/neutron.py
            | nova/pci
            | nova/privsep/path.py
            | nova/scheduler/client/report.py
            | nova/scheduler/request_filter.py
            | nova/scheduler/utils.py
            | nova/virt/driver.py
            | nova/virt/hardware.py
            | nova/virt/libvirt/machine_type_utils.py
            | nova/virt/libvirt/__init__.py
            | nova/virt/libvirt/cpu/__init__.py
            | nova/virt/libvirt/cpu/api.py
            | nova/virt/libvirt/cpu/core.py
            | nova/virt/libvirt/driver.py
            | nova/virt/libvirt/event.py
            | nova/virt/libvirt/guest.py
            | nova/virt/libvirt/host.py
            | nova/virt/libvirt/utils.py
          )
  - repo: https://github.com/sphinx-contrib/sphinx-lint
    rev: v0.6.8
    hooks:
      - id: sphinx-lint
        args: [--enable=default-role]
        files: ^doc/|releasenotes|api-guide
        types: [rst]
