Add pre-commit config and GitHub Actions job (#1688)
* Add pre-commit config and GitHub Actions job
Contains the following hooks:
* buildifier - for formatting and linting Bazel files.
* mypy, ruff, isort, black - for Python typechecking, import hygiene,
static analysis, and formatting.
The pylint CI job was changed to be a pre-commit CI job, where pre-commit
is bootstrapped via Python.
Pylint is currently no longer part of the
code checks, but can be re-added if requested. The reason to drop was
that it does not play nicely with pre-commit, and lots of its
functionality and responsibilities are actually covered in ruff.
* Add dev extra to pyproject.toml for development installs
* Clarify that pre-commit contains only Python and Bazel hooks
* Add one-line docstrings to Bazel modules
* Apply buildifier pre-commit fixes to Bazel files
* Apply pre-commit fixes to Python files
* Supply --profile=black to isort to prevent conflicts
* Fix nanobind build file formatting
* Add tooling configs to `pyproject.toml`
In particular, set line length 80 for all Python files.
* Reformat all Python files to line length 80, fix return type annotations
Also ignores the `tools/compare.py` and `tools/gbench/report.py` files
for mypy, since they emit a barrage of errors which we can deal with
later. The errors are mostly related to dynamic classmethod definition.
2023-10-30 23:35:37 +08:00
|
|
|
module(
|
|
|
|
name = "google_benchmark",
|
|
|
|
version = "1.8.3",
|
|
|
|
)
|
2023-06-27 20:03:39 +08:00
|
|
|
|
2023-12-07 23:00:43 +08:00
|
|
|
bazel_dep(name = "bazel_skylib", version = "1.5.0")
|
2024-03-07 20:28:55 +08:00
|
|
|
bazel_dep(name = "platforms", version = "0.0.8")
|
2023-12-07 23:00:43 +08:00
|
|
|
bazel_dep(name = "rules_foreign_cc", version = "0.10.1")
|
2024-01-29 21:02:29 +08:00
|
|
|
bazel_dep(name = "rules_cc", version = "0.0.9")
|
Add pre-commit config and GitHub Actions job (#1688)
* Add pre-commit config and GitHub Actions job
Contains the following hooks:
* buildifier - for formatting and linting Bazel files.
* mypy, ruff, isort, black - for Python typechecking, import hygiene,
static analysis, and formatting.
The pylint CI job was changed to be a pre-commit CI job, where pre-commit
is bootstrapped via Python.
Pylint is currently no longer part of the
code checks, but can be re-added if requested. The reason to drop was
that it does not play nicely with pre-commit, and lots of its
functionality and responsibilities are actually covered in ruff.
* Add dev extra to pyproject.toml for development installs
* Clarify that pre-commit contains only Python and Bazel hooks
* Add one-line docstrings to Bazel modules
* Apply buildifier pre-commit fixes to Bazel files
* Apply pre-commit fixes to Python files
* Supply --profile=black to isort to prevent conflicts
* Fix nanobind build file formatting
* Add tooling configs to `pyproject.toml`
In particular, set line length 80 for all Python files.
* Reformat all Python files to line length 80, fix return type annotations
Also ignores the `tools/compare.py` and `tools/gbench/report.py` files
for mypy, since they emit a barrage of errors which we can deal with
later. The errors are mostly related to dynamic classmethod definition.
2023-10-30 23:35:37 +08:00
|
|
|
|
2024-03-07 20:28:55 +08:00
|
|
|
bazel_dep(name = "rules_python", version = "0.31.0", dev_dependency = True)
|
Add pre-commit config and GitHub Actions job (#1688)
* Add pre-commit config and GitHub Actions job
Contains the following hooks:
* buildifier - for formatting and linting Bazel files.
* mypy, ruff, isort, black - for Python typechecking, import hygiene,
static analysis, and formatting.
The pylint CI job was changed to be a pre-commit CI job, where pre-commit
is bootstrapped via Python.
Pylint is currently no longer part of the
code checks, but can be re-added if requested. The reason to drop was
that it does not play nicely with pre-commit, and lots of its
functionality and responsibilities are actually covered in ruff.
* Add dev extra to pyproject.toml for development installs
* Clarify that pre-commit contains only Python and Bazel hooks
* Add one-line docstrings to Bazel modules
* Apply buildifier pre-commit fixes to Bazel files
* Apply pre-commit fixes to Python files
* Supply --profile=black to isort to prevent conflicts
* Fix nanobind build file formatting
* Add tooling configs to `pyproject.toml`
In particular, set line length 80 for all Python files.
* Reformat all Python files to line length 80, fix return type annotations
Also ignores the `tools/compare.py` and `tools/gbench/report.py` files
for mypy, since they emit a barrage of errors which we can deal with
later. The errors are mostly related to dynamic classmethod definition.
2023-10-30 23:35:37 +08:00
|
|
|
bazel_dep(name = "googletest", version = "1.12.1", dev_dependency = True, repo_name = "com_google_googletest")
|
|
|
|
|
2023-06-27 20:03:39 +08:00
|
|
|
bazel_dep(name = "libpfm", version = "4.11.0")
|
|
|
|
|
|
|
|
# Register a toolchain for Python 3.9 to be able to build numpy. Python
|
|
|
|
# versions >=3.10 are problematic.
|
|
|
|
# A second reason for this is to be able to build Python hermetically instead
|
|
|
|
# of relying on the changing default version from rules_python.
|
|
|
|
|
2023-08-01 00:23:27 +08:00
|
|
|
python = use_extension("@rules_python//python/extensions:python.bzl", "python", dev_dependency = True)
|
2024-03-07 20:28:55 +08:00
|
|
|
python.toolchain(python_version = "3.8")
|
2023-06-27 20:03:39 +08:00
|
|
|
python.toolchain(python_version = "3.9")
|
2024-03-07 20:28:55 +08:00
|
|
|
python.toolchain(python_version = "3.10")
|
|
|
|
python.toolchain(python_version = "3.11")
|
|
|
|
python.toolchain(
|
|
|
|
is_default = True,
|
|
|
|
python_version = "3.12",
|
|
|
|
)
|
|
|
|
use_repo(
|
|
|
|
python,
|
|
|
|
python = "python_versions",
|
|
|
|
)
|
2023-06-27 20:03:39 +08:00
|
|
|
|
2023-08-01 00:23:27 +08:00
|
|
|
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip", dev_dependency = True)
|
2023-06-27 20:03:39 +08:00
|
|
|
pip.parse(
|
Add pre-commit config and GitHub Actions job (#1688)
* Add pre-commit config and GitHub Actions job
Contains the following hooks:
* buildifier - for formatting and linting Bazel files.
* mypy, ruff, isort, black - for Python typechecking, import hygiene,
static analysis, and formatting.
The pylint CI job was changed to be a pre-commit CI job, where pre-commit
is bootstrapped via Python.
Pylint is currently no longer part of the
code checks, but can be re-added if requested. The reason to drop was
that it does not play nicely with pre-commit, and lots of its
functionality and responsibilities are actually covered in ruff.
* Add dev extra to pyproject.toml for development installs
* Clarify that pre-commit contains only Python and Bazel hooks
* Add one-line docstrings to Bazel modules
* Apply buildifier pre-commit fixes to Bazel files
* Apply pre-commit fixes to Python files
* Supply --profile=black to isort to prevent conflicts
* Fix nanobind build file formatting
* Add tooling configs to `pyproject.toml`
In particular, set line length 80 for all Python files.
* Reformat all Python files to line length 80, fix return type annotations
Also ignores the `tools/compare.py` and `tools/gbench/report.py` files
for mypy, since they emit a barrage of errors which we can deal with
later. The errors are mostly related to dynamic classmethod definition.
2023-10-30 23:35:37 +08:00
|
|
|
hub_name = "tools_pip_deps",
|
2023-07-18 15:40:54 +08:00
|
|
|
python_version = "3.9",
|
Add pre-commit config and GitHub Actions job (#1688)
* Add pre-commit config and GitHub Actions job
Contains the following hooks:
* buildifier - for formatting and linting Bazel files.
* mypy, ruff, isort, black - for Python typechecking, import hygiene,
static analysis, and formatting.
The pylint CI job was changed to be a pre-commit CI job, where pre-commit
is bootstrapped via Python.
Pylint is currently no longer part of the
code checks, but can be re-added if requested. The reason to drop was
that it does not play nicely with pre-commit, and lots of its
functionality and responsibilities are actually covered in ruff.
* Add dev extra to pyproject.toml for development installs
* Clarify that pre-commit contains only Python and Bazel hooks
* Add one-line docstrings to Bazel modules
* Apply buildifier pre-commit fixes to Bazel files
* Apply pre-commit fixes to Python files
* Supply --profile=black to isort to prevent conflicts
* Fix nanobind build file formatting
* Add tooling configs to `pyproject.toml`
In particular, set line length 80 for all Python files.
* Reformat all Python files to line length 80, fix return type annotations
Also ignores the `tools/compare.py` and `tools/gbench/report.py` files
for mypy, since they emit a barrage of errors which we can deal with
later. The errors are mostly related to dynamic classmethod definition.
2023-10-30 23:35:37 +08:00
|
|
|
requirements_lock = "//tools:requirements.txt",
|
|
|
|
)
|
2023-06-27 20:03:39 +08:00
|
|
|
use_repo(pip, "tools_pip_deps")
|
2024-01-29 21:02:29 +08:00
|
|
|
|
|
|
|
# -- bazel_dep definitions -- #
|
2024-03-07 20:28:55 +08:00
|
|
|
|
|
|
|
bazel_dep(name = "nanobind_bazel", version = "", dev_dependency = True)
|
|
|
|
git_override(
|
|
|
|
module_name = "nanobind_bazel",
|
|
|
|
commit = "97e3db2744d3f5da244a0846a0644ffb074b4880",
|
|
|
|
remote = "https://github.com/nicholasjng/nanobind-bazel",
|
|
|
|
)
|