|  | module( | 
|  | name = "pre-commit", | 
|  | version = "1.0.9", | 
|  | compatibility_level = 1, | 
|  | ) | 
|  |  | 
|  | bazel_dep(name = "platforms", version = "0.0.11") | 
|  | bazel_dep(name = "bazel_skylib", version = "1.7.1") | 
|  | bazel_dep(name = "rules_python", version = "1.0.0") | 
|  | bazel_dep(name = "rules_license", version = "1.0.0") | 
|  | bazel_dep(name = "rules_diff", version = "1.0.0") | 
|  | bazel_dep(name = "toolchain_utils", version = "1.2.0") | 
|  | bazel_dep(name = "download_utils", version = "1.0.1") | 
|  | bazel_dep(name = "ape", version = "1.0.1") | 
|  |  | 
|  | # TODO: Remove this in favour of `rules_python//uv:lock.bzl` when released | 
|  | bazel_dep(name = "rules_uv", version = "0.56.0", dev_dependency = True) | 
|  | bazel_dep(name = "buildifier_prebuilt", version = "8.0.1", dev_dependency = True) | 
|  | bazel_dep(name = "hermetic_cc_toolchain", version = "3.1.0", dev_dependency = True) | 
|  |  | 
|  | python = use_extension("@rules_python//python/extensions:python.bzl", "python") | 
|  | python.toolchain( | 
|  | # TODO: remove this when `ignore_root_user_error` is hermetic | 
|  | # https://github.com/bazelbuild/rules_python/issues/2016 | 
|  | ignore_root_user_error = True, | 
|  | python_version = "3.13", | 
|  | ) | 
|  |  | 
|  | pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip") | 
|  |  | 
|  | # Ensure there is a `pip` hub for each Python version | 
|  | # The project performs a `select` to grab the correct packages for the executing Python | 
|  | # This is important to provide Python package aliases downstream such as `//pre-commit:pkg` | 
|  | [ | 
|  | ( | 
|  | pip.parse( | 
|  | experimental_index_url = "https://pypi.org/simple", | 
|  | hub_name = "pre-commit-{}".format(version), | 
|  | python_version = version, | 
|  | requirements_lock = "//pre-commit/requirements:lock.txt", | 
|  | ), | 
|  | pip.parse( | 
|  | experimental_index_url = "https://pypi.org/simple", | 
|  | hub_name = "pre-commit-hook-{}".format(version), | 
|  | python_version = version, | 
|  | requirements_by_platform = { | 
|  | "//pre-commit/hook/requirements:lock.txt": "linux_*,osx_*,windows_*", | 
|  | }, | 
|  | ), | 
|  | pip.parse( | 
|  | experimental_index_url = "https://pypi.org/simple", | 
|  | hub_name = "pre-commit-config-{}".format(version), | 
|  | python_version = version, | 
|  | requirements_lock = "//pre-commit/config/requirements:lock.txt", | 
|  | ), | 
|  | use_repo( | 
|  | pip, | 
|  | "pre-commit-{}".format(version), | 
|  | "pre-commit-hook-{}".format(version), | 
|  | "pre-commit-config-{}".format(version), | 
|  | ), | 
|  | ) | 
|  | # Keep this in sync with `//pre-commit/python:versions.bzl` | 
|  | # TODO: load from `//pre-commit/python:version.bzl` when possible | 
|  | for version in ("3.10", "3.11", "3.12", "3.13") | 
|  | ] | 
|  |  | 
|  | download_file = use_repo_rule("@download_utils//download/file:defs.bzl", "download_file") | 
|  |  | 
|  | download_archive = use_repo_rule("@download_utils//download/archive:defs.bzl", "download_archive") | 
|  |  | 
|  | # Bazelisk binaries | 
|  | [ | 
|  | download_file( | 
|  | name = "bazelisk-{}".format(name), | 
|  | executable = True, | 
|  | integrity = integrity, | 
|  | output = "bazelisk.exe" if ".exe" in suffix else "bazelisk", | 
|  | urls = ["https://github.com/bazelbuild/bazelisk/releases/download/v1.25.0/bazelisk-{}".format(suffix)], | 
|  | ) | 
|  | for name, suffix, integrity in ( | 
|  | ("amd64-linux", "linux-amd64", "sha256-/Y/f9BihdYiHUg+kLafmrjmu/HiM9ef3u422k00nn8Q="), | 
|  | ("arm64-linux", "linux-arm64", "sha256-TI2WbkCsLE78x/Glpczu8sCi8WuVfnkfp6hnzOMej8s="), | 
|  | ("amd64-macos", "darwin-amd64", "sha256-CvAZ7rZC+nB0RBnQKqMt9V5ueghBBdSfsmgBpmCqVtM="), | 
|  | ("arm64-macos", "darwin-arm64", "sha256-sT3YnG7NkJRMo1OfWixxWhj2m3RYh4xHGpAqjkgs60s="), | 
|  | ("amd64-windows", "windows-amd64.exe", "sha256-ZBo9/r1xdwNnX5EpF3NcRLRc9jAL/fuSRTfzz7/83ZI="), | 
|  | ("arm64-windows", "bazelisk-windows-arm64.exe", "sha256-4FYwZnOIMzRNHbFatBB9L2L4nkphZJ1SF/Bw0l8NyNc="), | 
|  | ) | 
|  | ] | 
|  |  | 
|  | # Ruff binaries | 
|  | [ | 
|  | download_archive( | 
|  | name = "ruff-{}".format(name), | 
|  | integrity = integrity, | 
|  | strip_prefix = "ruff-{}".format(triplet) if ext != ".zip" else "", | 
|  | urls = ["https://github.com/astral-sh/ruff/releases/download/0.9.7/ruff-{}{}".format(triplet, ext)], | 
|  | ) | 
|  | for name, triplet, ext, integrity in ( | 
|  | ("amd64-linux", "x86_64-unknown-linux-musl", ".tar.gz", "sha256-8LfHpa5EZzCsERkEpQTLlnicwcgrmWa1W+3Yim0+wHc="), | 
|  | ("arm64-linux", "aarch64-unknown-linux-musl", ".tar.gz", "sha256-uUrZS8DPFKEqcl/PI4PtBHtTcGj0szvwgV6LrzXm7Fw="), | 
|  | ("amd64-macos", "x86_64-apple-darwin", ".tar.gz", "sha256-Kg/RLNZtIKiCypcBWe82HV85e5OKWrnXYZ3sDxUVL1M="), | 
|  | ("arm64-macos", "aarch64-apple-darwin", ".tar.gz", "sha256-8UQ35xOZ4UMCvfXOkQ49+avJoiP+D/XWsC6wg8Ofows="), | 
|  | ("amd64-windows", "x86_64-pc-windows-msvc", ".zip", "sha256-I2xp7VEKMwL0C14Owc3gzHU1FGzTdljm0xaMhelOMIo="), | 
|  | ("arm64-windows", "aarch64-pc-windows-msvc", ".zip", "sha256-ckodh0IeEldZ6bfbqxak0QNIks5BgKqvYePrvn5nr6I="), | 
|  | ) | 
|  | ] |