1
0
Fork 0
gitlint/pyproject.toml
Daniel Baumann 2efee3d3ab
Merging upstream version 0.19.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-02-13 06:07:32 +01:00

203 lines
6.2 KiB
TOML

[build-system]
requires = ["hatchling", "hatch-vcs"]
build-backend = "hatchling.build"
[project]
name = "gitlint"
dynamic = ["version", "dependencies", "urls"]
description = "Git commit message linter written in python, checks your commit messages for style."
readme = "README.md"
license = "MIT"
requires-python = ">=3.7"
authors = [{ name = "Joris Roovers" }]
keywords = [
"git",
"gitlint",
"lint", #
]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Topic :: Software Development :: Quality Assurance",
"Topic :: Software Development :: Testing",
]
[tool.hatch.version]
source = "vcs"
[tool.hatch.build]
exclude = ["*"]
[tool.hatch.metadata.hooks.vcs.urls]
Homepage = "https://jorisroovers.github.io/gitlint"
Documentation = "https://jorisroovers.github.io/gitlint"
Source = "https://github.com/jorisroovers/gitlint"
Changelog = "https://github.com/jorisroovers/gitlint/blob/main/CHANGELOG.md"
# TODO(jorisroovers): Temporary disable until fixed in hatch-vcs (see #460)
# 'Source Archive' = "https://github.com/jorisroovers/gitlint/archive/{commit_hash}.zip"
# 'Source Commit' = "https://github.com/jorisroovers/gitlint/tree/{commit_hash}"
# Use metadata hooks specified in 'hatch_build.py'
# (this line is critical when building wheels, when building sdist it seems optional)
[tool.hatch.metadata.hooks.custom]
# Environments #########################################################################################################
# NOTE: By default all environments inherit from the 'default' environment
# DEV
# Workaround for editable install:
# https://github.com/pypa/hatch/issues/588
[tool.hatch.envs.dev]
description = """
Dev environment (running gitlint itself from source)
"""
pre-install-commands = [
"pip install -e ./gitlint-core", #
]
[tool.hatch.envs.dev.scripts]
fullclean = [
"rm .coverage .coverage.lcov",
"rm -rf site dist .pytest_cache",
"rm -rf gitlint-core/dist gitlint-core/build gitlint-core/.pytest_cache",
"rm -rf qa/__pycache__ qa/.pytest_cache",
]
# TEST
[tool.hatch.envs.test]
description = """
Test environment (unit tests, formatting, lint)
"""
skip-install = true
dependencies = [
"gitlint-core[trusted-deps] @ {root:uri}/gitlint-core",
"black==23.1.0",
"pytest==7.2.1",
"pytest-cov==4.0.0",
"python-coveralls==2.9.3",
"ruff==0.0.252",
"radon==5.1.0",
"pdbr==0.8.2; sys_platform != \"win32\"",
]
[tool.hatch.envs.test.scripts]
unit-tests = [
"pytest --cov=gitlint-core --cov-report=term --cov-report=lcov:.coverage.lcov -rw -s {args:gitlint-core}",
]
u = "unit-tests"
unit-tests-no-cov = "pytest -rw -s {args:gitlint-core}"
format = "black --check --diff {args:.}"
lint = "ruff {args:gitlint-core/gitlint qa}"
autoformat = "black {args:.}"
autofix = [
"ruff --fix {args:gitlint-core/gitlint qa}",
"autoformat", #
]
all = [
"unit-tests",
"format",
"lint", #
]
stats = ["./tools/stats.sh"]
# QA
[tool.hatch.envs.qa]
description = """
Integration test environment.
Run a set of integration tests against any gitlint binary (not just the one from local source).
"""
detached = true
dependencies = [
"pytest==7.2.1",
"arrow==1.2.3",
"sh==1.14.3; sys_platform != \"win32\"",
"pdbr==0.8.2; sys_platform != \"win32\"",
]
[tool.hatch.envs.qa.scripts]
# The integration tests can be ran against any gitlint binary, e.g. one installed from pypi (for post-release testing)
# This is why by default we don't install the local dev version of gitlint in the qa environment
# To run integration tests against the dev version of gitlint, use install-local first
install-local = "pip install -e ./gitlint-core[trusted-deps]"
integration-tests = "pytest -rw -s {args:qa}"
i = "integration-tests"
# DOCS
[tool.hatch.envs.docs]
description = """
Documentation environment. Run docs build and serve commands.
"""
detached = true
dependencies = [
"mkdocs==1.4.2", #
]
[tool.hatch.envs.docs.scripts]
build = "mkdocs build --clean --strict"
serve = "mkdocs serve"
# Tool config ##########################################################################################################
[tool.black]
target_version = ['py37', 'py38', 'py39', 'py310']
line-length = 120
# extend-exclude: keep excluding files from .gitignore in addition to the ones specified
extend-exclude = "gitlint-core/gitlint/tests/samples/user_rules/import_exception/invalid_python.py"
[tool.ruff]
target-version = "py37"
extend-exclude = [
"gitlint-core/gitlint/tests/samples/user_rules/import_exception/invalid_python.py",
]
ignore = [
"E501", # Never enforce `E501` (line length violations) - taken care of by black
"SIM108", # Use ternary operator instead of if-else-block
"PLR0913", # Too many arguments to function call
]
select = [
"F", # PyFlakes
"E", # Pycodestyle
"W", # Pycodestyle
"I", # isort (import order)
"YTT", # flake8-2020 (misuse of sys.version)
"S", # flake8-bandit (security)
"B", # flake8-bugbear
"C4", # flake8-comprehensions (correct use of comprehensions)
"T10", # flake8-debugger (no debug statements)
"T20", # flake8-print (no print statements)
"SIM", # flake8-simplify (use simple code)
"TID", # flake8-tidy-imports (correct import syntax)
"ARG", # flake8-unused-arguments (no unused function arguments)
"DTZ", # flake8-datetimez (correct datetime usage)
"ERA", # eradicate (no commented out code)
"UP", # pyupgrade (modern python syntax)
"PLC", # pylint
"PLE", # pylint
"PLR", # pylint
"PLW", # pylint
"PIE", # flake8-pie
"RUF", # ruff specific
]
[tool.coverage.run]
branch = true # measure branch coverage in addition to statement coverage
[tool.coverage.report]
fail_under = 97
show_missing = true