Dev Tools
Pre-Commit¶
This project uses pre-commit to ensure code quality.
A .pre-commit-config.yaml
configuration file tailored for this project is provided
in the root folder.
Config
default_language_version:
python: python3.12
default_stages: [pre-commit]
repos:
- repo: local
hooks:
- id: pytest-check
name: pytest-check
entry: uv run pytest
language: system
# stages: [push]
types: [python]
pass_filenames: false
always_run: true
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
# - id: trailing-whitespace
# - id: check-ast
- id: check-case-conflict
- id: check-docstring-first
- id: check-merge-conflict
# - id: check-yaml
- id: check-toml
- id: check-json
- id: detect-private-key
- id: forbid-new-submodules
# - id: check-added-large-files
# https://pre-commit.com/hooks.html
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.13.0
hooks:
- id: mypy
# args: [--ignore-missing-imports]
additional_dependencies: [mkdocs, orjson, pydantic]
- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: v0.8.4
hooks:
- id: ruff
- id: ruff-format
- repo: https://github.com/commitizen-tools/commitizen
rev: v4.1.0
hooks:
- id: commitizen
stages: [commit-msg]
additional_dependencies: [typing-extensions]
PyRight¶
PyRight is used for type checking. You can find the configuration in the
pyproject.toml
file.
Config
venvPath = "."
venv = ".venv"
pythonVersion = "3.12"
pythonPlatform = "All"
typeCheckingMode = "basic"
deprecateTypingAliases = true
reportMissingTypeStubs = false
reportUnusedCallResult = false
reportUnknownVariableType = false
reportAny = false
reportImplicitOverride = false
reportUnusedFunction = false
reportImplicitStringConcatenation = false
reportIgnoreCommentWithoutRule = false
reportUnannotatedClassAttribute = false
reportSelfClsParameterName = false
reportPrivateImportUsage = false
MkDocs¶
Ruff is used as a linter. You can find the configuration in the
pyproject.toml
file.
Config
line-length = 90
extend-exclude = [
"docs",
]
target-version = "py312"
[lint]
select = [
"A",
"B",
"BLE",
"C",
"C4",
"COM",
"D",
"E",
"EM",
"EXE",
"F",
"FA",
"FLY",
"G",
"I",
"ICN",
"INP",
"INT",
"ISC",
"N",
"PERF",
"PIE",
"PLE",
"PLC",
"PLR",
"PT",
"PTH",
"PYI",
"Q",
"RET",
"RSE",
"RUF",
"SIM",
"SLF",
"SLOT",
"T10",
"TC",
"TID",
"TRY",
"UP",
"W",
"YTT",
]
ignore = [
"C408",
"B905",
"C901",
"COM812",
"D100",
"D101",
"D102",
"D103",
"D104",
"D105",
"D106",
"D107",
"D203",
"D204",
"D213",
"D215",
"D400",
"D401",
"D404",
"D406",
"D407",
"D408",
"D409",
"D413",
"ISC001",
"PLR0912",
"PLR0913",
"PLR0915",
"SLF001",
"TRY003",
]
[lint.flake8-quotes]
docstring-quotes = "double"
[lint.isort]
lines-after-imports = 2
force-sort-within-sections = true
combine-as-imports = true
[lint.per-file-ignores]
"__init__.py" = [
"E402",
"I001",
]
"tests/test_decorators.py" = [
"PLR2004",
]
[format]
preview = true
Coverage¶
Coverage is used to monitor test coverage.
Config
Ruff¶
Ruff is used as a linter. You can find the configuration in the
pyproject.toml
file.
Config
line-length = 90
extend-exclude = [
"docs",
]
target-version = "py312"
[lint]
select = [
"A",
"B",
"BLE",
"C",
"C4",
"COM",
"D",
"E",
"EM",
"EXE",
"F",
"FA",
"FLY",
"G",
"I",
"ICN",
"INP",
"INT",
"ISC",
"N",
"PERF",
"PIE",
"PLE",
"PLC",
"PLR",
"PT",
"PTH",
"PYI",
"Q",
"RET",
"RSE",
"RUF",
"SIM",
"SLF",
"SLOT",
"T10",
"TC",
"TID",
"TRY",
"UP",
"W",
"YTT",
]
ignore = [
"C408",
"B905",
"C901",
"COM812",
"D100",
"D101",
"D102",
"D103",
"D104",
"D105",
"D106",
"D107",
"D203",
"D204",
"D213",
"D215",
"D400",
"D401",
"D404",
"D406",
"D407",
"D408",
"D409",
"D413",
"ISC001",
"PLR0912",
"PLR0913",
"PLR0915",
"SLF001",
"TRY003",
]
[lint.flake8-quotes]
docstring-quotes = "double"
[lint.isort]
lines-after-imports = 2
force-sort-within-sections = true
combine-as-imports = true
[lint.per-file-ignores]
"__init__.py" = [
"E402",
"I001",
]
"tests/test_decorators.py" = [
"PLR2004",
]
[format]
preview = true
MyPy¶
MyPy is used for type checking. You can find the configuration in the
pyproject.toml
file.