exclude: '^(tinygrad_repo)'
repos:
-   repo: meta
    hooks:
    -   id: check-hooks-apply
    -   id: check-useless-excludes
-   repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.5.0
    hooks:
    -   id: check-ast
        exclude: '^(third_party)/'
    -   id: check-json
        exclude: '.devcontainer/devcontainer.json' # this supports JSON with comments
    -   id: check-toml
    -   id: check-xml
    -   id: check-yaml
    -   id: check-merge-conflict
    -   id: check-symlinks
    -   id: check-executables-have-shebangs
    -   id: check-shebang-scripts-are-executable
    -   id: check-added-large-files
        args:
        - --maxkb=500
        - --enforce-all
-   repo: https://github.com/codespell-project/codespell
    rev: v2.2.6
    hooks:
    -   id: codespell
        exclude: '^(third_party/)|(body/)|(cereal/)|(rednose/)|(panda/)|(laika/)|(opendbc/)|(laika_repo/)|(rednose_repo/)|(selfdrive/ui/translations/.*.ts)|(poetry.lock)'
        args:
        # if you've got a short variable name that's getting flagged, add it here
        - -L bu,ro,te,ue,alo,hda,ois,nam,nams,ned,som,parm,setts,inout,warmup,bumb,nd,sie,preints
        - --builtins clear,rare,informal,usage,code,names,en-GB_to_en-US
-   repo: local
    hooks:
    -   id: mypy
        name: mypy
        entry: mypy
        language: system
        types: [python]
        args: ['--explicit-package-bases']
        exclude: '^(third_party/)|(cereal/)|(opendbc/)|(panda/)|(laika/)|(laika_repo/)|(rednose/)|(rednose_repo/)|(tinygrad/)|(tinygrad_repo/)|(xx/)'
-   repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.1.4
    hooks:
    -   id: ruff
        exclude: '^(third_party/)|(cereal/)|(rednose/)|(panda/)|(laika/)|(laika_repo/)|(rednose_repo/)|(tinygrad/)|(tinygrad_repo/)'
-   repo: local
    hooks:
    -   id: cppcheck
        name: cppcheck
        entry: cppcheck
        language: system
        types: [c++]
        exclude: '^(third_party/)|(cereal/)|(body/)|(rednose/)|(rednose_repo/)|(opendbc/)|(panda/)|(tools/)|(selfdrive/modeld/thneed/debug/)|(selfdrive/modeld/test/)|(selfdrive/camerad/test/)|(installer/)'
        args:
        - --error-exitcode=1
        - --language=c++
        - --quiet
        - --force
        - -j8
-   repo: https://github.com/cpplint/cpplint
    rev: 1.6.1
    hooks:
    -   id: cpplint
        exclude: '^(third_party/)|(cereal/)|(body/)|(rednose/)|(rednose_repo/)|(opendbc/)|(panda/)|(generated/)'
        args:
        - --quiet
        - --counting=total
        - --linelength=240
        # https://google.github.io/styleguide/cppguide.html
        # relevant rules are whitelisted, see all options with: cpplint --filter=
        - --filter=-build,-legal,-readability,-runtime,-whitespace,+build/include_subdir,+build/forward_decl,+build/include_what_you_use,+build/deprecated,+whitespace/comma,+whitespace/line_length,+whitespace/empty_if_body,+whitespace/empty_loop_body,+whitespace/empty_conditional_body,+whitespace/forcolon,+whitespace/parens,+whitespace/semicolon,+whitespace/tab,+readability/braces
-   repo: local
    hooks:
    -   id: test_translations
        name: test translations
        entry: selfdrive/ui/tests/test_translations.py
        language: script
        pass_filenames: false
-   repo: https://github.com/python-poetry/poetry
    rev: '1.7.0'
    hooks:
    -   id: poetry-check
        name: validate poetry lock
        args:
        - --lock
-   repo: https://github.com/python-jsonschema/check-jsonschema
    rev: 0.27.1
    hooks:
    -   id: check-github-workflows
