[project]
name = "kmoe"
version = "0.1.0"
description = "Command-line manga downloader for kxx.moe / kzz.moe / koz.moe"
readme = "README.md"
license = "MIT"
requires-python = ">=3.12"
authors = [{ name = "holdjun" }]
keywords = ["manga", "downloader", "cli", "comic"]
classifiers = [
    "Development Status :: 4 - Beta",
    "Environment :: Console",
    "Intended Audience :: End Users/Desktop",
    "License :: OSI Approved :: MIT License",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Topic :: Internet :: WWW/HTTP",
    "Topic :: Utilities",
]
dependencies = [
    "httpx>=0.28",
    "pydantic>=2.10",
    "typer>=0.15",
    "rich>=13.9",
    "selectolax>=0.3",
    "cryptography>=44.0",
    "structlog>=24.4",
    "anyio>=4.7",
    "platformdirs>=4.0",
]

[project.urls]
Homepage = "https://github.com/holdjun/kmoe"
Repository = "https://github.com/holdjun/kmoe"
Issues = "https://github.com/holdjun/kmoe/issues"

[project.scripts]
kmoe = "kmoe.cli:app"

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.hatch.build.targets.wheel]
packages = ["src/kmoe"]

[tool.uv]
dev-dependencies = [
    "pytest>=8.3",
    "respx>=0.22",
    "pytest-cov>=6.0",
    "pytest-asyncio>=0.25",
    "ruff>=0.8",
    "basedpyright>=1.23",
]

[tool.ruff]
target-version = "py312"
line-length = 100
src = ["src", "tests"]

[tool.ruff.lint]
select = [
    "E",
    "W",
    "F",
    "I",
    "B",
    "C4",
    "UP",
    "ARG",
    "SIM",
    "TCH",
    "PTH",
    "ERA",
    "RUF",
]
ignore = ["E501", "RUF001", "TC001"]

[tool.ruff.lint.isort]
known-first-party = ["kmoe"]

[tool.basedpyright]
pythonVersion = "3.12"
typeCheckingMode = "standard"
reportMissingImports = true
reportMissingTypeStubs = false

[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"
addopts = "-v --tb=short"

[tool.coverage.run]
source = ["src/kmoe"]
branch = true

[tool.coverage.report]
exclude_lines = ["pragma: no cover", "if TYPE_CHECKING:"]
