1[build-system] 2requires = ["setuptools", "setuptools-scm[toml]", "wheel"] 3build-backend = "setuptools.build_meta" 4 5[project] 6name = "google_benchmark" 7description = "A library to benchmark code snippets." 8requires-python = ">=3.8" 9license = {file = "LICENSE"} 10keywords = ["benchmark"] 11 12authors = [ 13 {name = "Google", email = "[email protected]"}, 14] 15 16classifiers = [ 17 "Development Status :: 4 - Beta", 18 "Intended Audience :: Developers", 19 "Intended Audience :: Science/Research", 20 "License :: OSI Approved :: Apache Software License", 21 "Programming Language :: Python :: 3.8", 22 "Programming Language :: Python :: 3.9", 23 "Programming Language :: Python :: 3.10", 24 "Programming Language :: Python :: 3.11", 25 "Programming Language :: Python :: 3.12", 26 "Topic :: Software Development :: Testing", 27 "Topic :: System :: Benchmark", 28] 29 30dynamic = ["readme", "version"] 31 32dependencies = [ 33 "absl-py>=0.7.1", 34] 35 36[project.optional-dependencies] 37dev = [ 38 "pre-commit>=3.3.3", 39] 40 41[project.urls] 42Homepage = "https://github.com/google/benchmark" 43Documentation = "https://github.com/google/benchmark/tree/main/docs" 44Repository = "https://github.com/google/benchmark.git" 45Discord = "https://discord.gg/cz7UX7wKC2" 46 47[tool.setuptools] 48package-dir = {"" = "bindings/python"} 49zip-safe = false 50 51[tool.setuptools.packages.find] 52where = ["bindings/python"] 53 54[tool.setuptools.dynamic] 55readme = { file = "README.md", content-type = "text/markdown" } 56 57[tool.setuptools_scm] 58 59[tool.mypy] 60check_untyped_defs = true 61disallow_incomplete_defs = true 62pretty = true 63python_version = "3.11" 64strict_optional = false 65warn_unreachable = true 66 67[[tool.mypy.overrides]] 68module = ["yaml"] 69ignore_missing_imports = true 70 71[tool.ruff] 72# explicitly tell ruff the source directory to correctly identify first-party package. 73src = ["bindings/python"] 74 75line-length = 80 76target-version = "py311" 77 78[tool.ruff.lint] 79# Enable pycodestyle (`E`, `W`), Pyflakes (`F`), and isort (`I`) codes by default. 80select = ["E", "F", "I", "W"] 81ignore = [ 82 "E501", # line too long 83] 84 85[tool.ruff.lint.isort] 86combine-as-imports = true 87