[build-system]
requires = ["setuptools<73"]
build-backend = "setuptools.build_meta"

[project]
name = "google_benchmark"
description = "A library to benchmark code snippets."
requires-python = ">=3.10"
license = { file = "LICENSE" }
keywords = ["benchmark"]

authors = [{ name = "Google", email = "benchmark-discuss@googlegroups.com" }]

classifiers = [
    "Development Status :: 4 - Beta",
    "Intended Audience :: Developers",
    "Intended Audience :: Science/Research",
    "License :: OSI Approved :: Apache Software License",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Topic :: Software Development :: Testing",
    "Topic :: System :: Benchmark",
]

dynamic = ["readme", "version"]

dependencies = ["absl-py>=0.7.1"]

[project.optional-dependencies]
dev = ["pre-commit>=3.3.3"]

[project.urls]
Homepage = "https://github.com/google/benchmark"
Documentation = "https://github.com/google/benchmark/tree/main/docs"
Repository = "https://github.com/google/benchmark.git"
Discord = "https://discord.gg/cz7UX7wKC2"

[tool.setuptools]
package-dir = { "" = "bindings/python" }
zip-safe = false

[tool.setuptools.packages.find]
where = ["bindings/python"]

[tool.setuptools.dynamic]
readme = { file = "README.md", content-type = "text/markdown" }
version = { attr = "google_benchmark.__version__" }

[tool.mypy]
check_untyped_defs = true
disallow_incomplete_defs = true
pretty = true
python_version = "3.11"
strict_optional = false
warn_unreachable = true

[[tool.mypy.overrides]]
module = ["yaml"]
ignore_missing_imports = true

[tool.ruff]
# explicitly tell ruff the source directory to correctly identify first-party package.
src = ["bindings/python"]

line-length = 80
target-version = "py311"

[tool.ruff.lint]
# Enable pycodestyle (`E`, `W`), Pyflakes (`F`), and isort (`I`) codes by default.
select = ["E", "F", "I", "W"]
ignore = [
    "E501", # line too long
]

[tool.ruff.lint.isort]
combine-as-imports = true