pyproject.toml

Summary

Maintainability
Test Coverage
[tool.poetry]
name = "volt"
version = "0.0.0"  # Placeholder version.
description = "Extensible static site generator"
authors = ["Wibowo Arindrarto <contact@arindrarto.dev>"]
readme = "README.md"
repository = "https://github.com/bow/volt"
license = "BSD-3-Clause"
keywords = ["static website"]
classifiers = [
    "Development Status :: 3 - Alpha",
    "Environment :: Console",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: BSD License",
    "Operating System :: POSIX :: Linux",
    "Programming Language :: Python :: 3.12",
    "Topic :: Internet :: WWW/HTTP",
    "Topic :: Utilities",
]
packages = [
    { include = "volt" },
    { include = "tests", format = "sdist" },
]
include = [
    "CHANGELOG.rst",
    "README.md",
    "LICENSE",
]

[tool.poetry.scripts]
volt = "volt.cli:main"

[tool.poetry-dynamic-versioning]
enable = true
vcs = "git"
style = "semver"
pattern = "^v?(?P<base>\\d+\\.\\d+\\.\\d+)"

[tool.poetry.dependencies]
python = "^3.12"
click = "^8.1.7"
jinja2 = "^3.1.2"
pygments = "^2.16.1"
pyyaml = "^6.0.1"
pendulum = "3.0.0"
marshmallow = "^3.20.1"
markdown2 = "^2.4.10"
python-slugify = "^8.0.4"
watchdog = "2.2.1"  # Pinned. Later versions cause intermittent 'serve draft' test failures.
single-source = "^0.3.0"
structlog = "^24.1.0"
blinker = "^1.6.2"
rich = "^13.6.0"
tomlkit = "^0.12.1"
urllib3 = "^2.0.6"

[tool.poetry.group.dev.dependencies]
pytest = "^8.0.1"
bandit = "^1.7.7"
flake8 = "^7.0.0"
mypy = "^1.7.1"
mypy-extensions = "^1.0.0"
pytest-cov = "^4.1.0"
pytest-flake8 = "^1.1.1"
pytest-sugar = "^1.0.0"
radon = "^6.0.1"
flake8-polyfill = "^1.0.2"
black = "^24.2.0"
safety = "^3.0.0a1"
wheel = "^0.42.0"
types-PyYAML = "^6.0.12.12"
types-python-slugify = "^8.0.0.3"
sphinx = "^7.2.6"
types-pyyaml = "^6.0.12.1"
pytest-mock = "^3.11.1"
toml = "^0.10.2"
requests = "^2.31.0"
types-requests = "^2.31.0.20240125"
pytest-structlog = "^0.7"
insipid-sphinx-theme = "^0.4.2"
platformdirs = "<4.0.0"

[tool.mypy]
python_version = "3.12"
ignore_missing_imports = true
show_error_context = true
show_column_numbers = true
show_error_codes = true
pretty = true
warn_redundant_casts = true

[[tool.mypy.overrides]]
module = "volt.*"
disallow_untyped_calls = true
disallow_incomplete_defs = true
disallow_untyped_defs = true
warn_unused_ignores = true
warn_return_any = true
warn_unreachable = true
allow_untyped_globals = false
strict_equality = true

[tool.black]
line-length = 88
target-version = ["py312"]
include = '\.pyi?$'
exclude = '/(\.eggs|\.git|\.mypy_cache|\.tox|\.venv|_build|build|dist)/'

[tool.coverage.run]
branch = true
source = ["volt"]

[tool.coverage.report]
exclude_lines = [
    "raise NotImplementedError",
    "if __name__ == .__main__.:",
]
omit = ["tests/*"]

[tool.distutils.bdist_wheel]
universal = true

[build-system]
requires = ["poetry-core>=1.0.0", "poetry-dynamic-versioning>=1.0.0,<2.0.0"]
build-backend = "poetry_dynamic_versioning.backend"