[project]
name = "catholic-bible"
version = "0.1.0"
description = "Provides an API for scraping https://bible.usccb.org/bible/ to get Bible verses by book and language"
authors = [
    { name = "Robert Colfin", email = "robert.m.colfin@gmail.com" },
]
readme = "README.md"
classifiers = [
    "Development Status :: 3 - Alpha",
    "Intended Audience :: Developers",
    "License :: OSI Approved :: Apache Software License",
    "Natural Language :: English",
    "Operating System :: OS Independent",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Programming Language :: Python :: 3.14",
]
keywords = [
    "bible",
    "catholic",
    "scripture",
    "usccb",
    "verses",
]
requires-python = "<4.0,>=3.10"
dependencies = [
    "aiofiles>=24.1.0,<26.0.0",
    "anyio>=4.5.2",
    "asyncclick<9.0.0.0,>=8.1.7.2",
    "bs4<1.0.0,>=0.0.2",
    "curl-cffi>=0.9.0",
    "html5lib<2.0,>=1.1",
]

[project.license]
text = "Apache"

[project.scripts]
catholic-bible = "catholic_bible.__main__:main"

[dependency-groups]
dev = [
    "mypy<2.0.0,>=1.11.2",
    "pytest-asyncio>=0.24.0",
    "pytest-cov>=5.0.0",
    "pytest-mypy>=1.0.1",
    "pytest-ruff>=0.5",
    "pytest>=8.3.5",
    "ruff<1.0.0,>=0.9.0",
    "sphinx-material<1.0.0,>=0.0.36",
    "types-aiofiles>=24.1.0.20240626,<26.0.0.0",
    "types-beautifulsoup4<5.0.0.0,>=4.12.0.20240907",
]

[tool.pytest.ini_options]
addopts = "--doctest-modules --mypy --ruff --ruff-format"

[tool.ruff]
exclude = [
    ".bzr",
    ".direnv",
    ".eggs",
    ".git",
    ".git-rewrite",
    ".hg",
    ".mypy_cache",
    ".nox",
    ".pants.d",
    ".pytype",
    ".ruff_cache",
    ".svn",
    ".tox",
    ".venv",
    "__pypackages__",
    "_build",
    "buck-out",
    "build",
    "dist",
    "venv",
]
line-length = 120
indent-width = 4
target-version = "py310"
namespace-packages = [
    "docs/source",
]

[tool.ruff.lint]
select = [
    "F",
    "E",
    "W",
    "C90",
    "I",
    "N",
    "UP",
    "YTT",
    "ANN",
    "ASYNC",
    "S",
    "BLE",
    "FBT",
    "B",
    "A",
    "C4",
    "DTZ",
    "T10",
    "EM",
    "EXE",
    "FA",
    "ICN",
    "G",
    "INP",
    "PIE",
    "T20",
    "PYI",
    "PT",
    "Q",
    "RSE",
    "RET",
    "SLF",
    "SLOT",
    "SIM",
    "TID",
    "TCH",
    "INT",
    "PTH",
    "ERA",
    "PD",
    "PGH",
    "PL",
    "TRY",
    "FLY",
    "PERF",
    "RUF",
]
fixable = [
    "ALL",
]
unfixable = []
ignore = [
    "ANN204",
    "ANN401",
]
extend-unsafe-fixes = [
    "UP038",
]
dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"

[tool.ruff.lint.per-file-ignores]
"**/{tests,docs,tools}/*" = [
    "S101",
]

[tool.ruff.lint.isort]
force-single-line = false

[tool.ruff.format]
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"

[tool.uv]
constraint-dependencies = [
    "filelock>=3.20.3",
    "requests>=2.33.0",
    "urllib3>=2.6.3",
]

[tool.pdm.build]
includes = []

[build-system]
requires = [
    "pdm-backend",
]
build-backend = "pdm.backend"
