Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
.pre-commit-config.yaml 3.70 KiB
repos:
  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.6.2
    hooks:
      - id: ruff
        args:
          - --fix
      - id: ruff-format
        files: ^((homeassistant|pylint|script|tests)/.+)?[^/]+\.(py|pyi)$
  - repo: https://github.com/codespell-project/codespell
    rev: v2.3.0
    hooks:
      - id: codespell
        args:
          - --ignore-words-list=astroid,checkin,currenty,hass,iif,incomfort,lookin,nam,NotIn
          - --skip="./.*,*.csv,*.json,*.ambr"
          - --quiet-level=2
        exclude_types: [csv, json, html]
        exclude: ^tests/fixtures/|homeassistant/generated/|tests/components/.*/snapshots/
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.4.0
    hooks:
      - id: check-executables-have-shebangs
        stages: [manual]
      - id: check-json
        exclude: (.vscode|.devcontainer)
      - id: no-commit-to-branch
        args:
          - --branch=dev
          - --branch=master
          - --branch=rc
  - repo: https://github.com/adrienverge/yamllint.git
    rev: v1.35.1
    hooks:
      - id: yamllint
  - repo: https://github.com/pre-commit/mirrors-prettier
    rev: v3.0.3
    hooks:
      - id: prettier
  - repo: https://github.com/cdce8p/python-typing-update
    rev: v0.6.0
    hooks:
      # Run `python-typing-update` hook manually from time to time
      # to update python typing syntax.
      # Will require manual work, before submitting changes!
      # pre-commit run --hook-stage manual python-typing-update --all-files
      - id: python-typing-update
        stages: [manual]
        args:
          - --py311-plus
          - --force
          - --keep-updates
        files: ^(homeassistant|tests|script)/.+\.py$
  - repo: local
    hooks:
      # Run mypy through our wrapper script in order to get the possible
      # pyenv and/or virtualenv activated; it may not have been e.g. if
      # committing from a GUI tool that was not launched from an activated
      # shell.
      - id: mypy
        name: mypy
        entry: script/run-in-env.sh mypy
        language: script
        types_or: [python, pyi]
        require_serial: true
        files: ^(homeassistant|pylint)/.+\.(py|pyi)$
      - id: pylint
        name: pylint
        entry: script/run-in-env.sh pylint -j 0 --ignore-missing-annotations=y
        language: script