# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

repos:
      - repo: https://github.com/rhysd/actionlint
        rev: v1.7.12
        hooks:
          - id: actionlint-docker
      - repo: https://github.com/astral-sh/ruff-pre-commit
        # Ruff version.
        rev: v0.15.1
        hooks:
          # Run the linter.
          - id: ruff
          # Run the formatter.
          - id: ruff-format
      - repo: local
        hooks:
          - id: rust-fmt
            name: Rust fmt
            description: Run cargo fmt on files included in the commit. rustfmt should be installed before-hand.
            entry: cargo +nightly fmt --all --
            pass_filenames: true
            types: [file, rust]
            language: system
          - id: rust-clippy
            name: Rust clippy
            description: Run cargo clippy on files included in the commit. clippy should be installed before-hand.
            entry: cargo clippy --all-targets --all-features -- -Dclippy::all -D warnings -Aclippy::redundant_closure
            pass_filenames: false
            types: [file, rust]
            language: system

      - repo: https://github.com/codespell-project/codespell
        rev: v2.4.1
        hooks:
          - id: codespell
            args: [ --toml, "pyproject.toml"]
            additional_dependencies:
              - tomli

      - repo: https://github.com/astral-sh/uv-pre-commit
        # uv version.
        rev: 0.10.7
        hooks:
          # Update the uv lockfile
          - id: uv-lock

default_language_version:
      python: python3
