[build-system]
requires = ["flit_core >=3.4,<4"]
build-backend = "flit_core.buildapi"

[project]
name = "sphinx_design"
dynamic = ["version"]
description = "A sphinx extension for designing beautiful, view size responsive web components."
authors = [{name = "Chris Sewell", email = "chrisj_sewell@hotmail.com"}]
readme = "README.md"
license = {file = "LICENSE"}
classifiers = [
    "Development Status :: 4 - Beta",
    "Framework :: Sphinx :: Extension",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: MIT License",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Programming Language :: Python :: Implementation :: CPython",
    "Topic :: Software Development :: Libraries :: Python Modules",
    "Topic :: Text Processing :: Markup",
    "Topic :: Text Processing :: Markup :: Markdown",
    "Topic :: Text Processing :: Markup :: reStructuredText",
]
keywords = ["sphinx", "extension", "material design", "web components"]
requires-python = ">=3.9"
dependencies = ["sphinx>=6,<9"]

[project.urls]
Homepage = "https://github.com/executablebooks/sphinx-design"
Documentation = "https://sphinx-design.readthedocs.io"

[project.optional-dependencies]
code-style = ["pre-commit>=3,<4"]
rtd = ["myst-parser>=2,<4"]
testing = [
    "myst-parser>=2,<4",
    "pytest~=8.3",
    "pytest-cov",
    "pytest-regressions",
    "defusedxml",
]
testing-no-myst = [
    "pytest~=8.3",
    "pytest-cov",
    "pytest-regressions",
    "defusedxml",
]

theme-furo = ["furo~=2024.7.18"]
theme-pydata = ["pydata-sphinx-theme~=0.15.2"]
theme-rtd = ["sphinx-rtd-theme~=2.0"]
theme-sbt = ["sphinx-book-theme~=1.1"]
theme-im = ["sphinx-immaterial~=0.12.2"]

[tool.flit.sdist]
exclude = [
    "docs/",
    "style/",
    "tests/",
]

[tool.ruff.lint]
extend-select = [
    "B",   # flake8-bugbear
    "C4",  # flake8-comprehensions
    # "FURB",# refurb (modernising code)
    "I",   # isort
    "ICN", # flake8-import-conventions
    "ISC", # flake8-implicit-str-concat
    "N",   # pep8-naming
    "PERF",# perflint (performance anti-patterns)
    "PGH", # pygrep-hooks
    "PIE", # flake8-pie
    "PL",  # pylint
    "PTH", # flake8-use-pathlib
    "RUF", # Ruff-specific rules
    "SIM", # flake8-simplify
    "UP",  # pyupgrade
    "T20", # flake8-print
]
extend-ignore = [
    "ISC001",    # implicit-str-concat
    "PLR2004",
    "RUF012",
]

# [tool.ruff.lint.per-file-ignores]
# "..." = ["N801"]

[tool.ruff.lint.isort]
force-sort-within-sections = true

[tool.mypy]
show_error_codes = true
warn_unused_ignores = true
warn_redundant_casts = true
no_implicit_optional = true
strict_equality = true

[[tool.mypy.overrides]]
module = ["docutils.*"]
ignore_missing_imports = true
