pyproject.toml
Rama main · réplica de lectura del repositorio original.
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[project]
name = "ics-combiner"
version = "1.0.1"
description = "FastAPI service that combines multiple iCalendar feeds into one calendar"
requires-python = ">=3.14"
dependencies = [
"fastapi==0.162.0",
# [standard] brings uvloop and httptools (the image runs --loop uvloop --http httptools)
"uvicorn[standard]==0.54.0",
"python-dotenv==1.2.4",
"requests==2.34.2",
"icalendar==7.3.0",
"redis==8.1.0",
]
[project.optional-dependencies]
dev = [
"pytest==9.2.0",
"pytest-cov==7.1.0",
"ruff==0.17.3",
"mypy==2.4.1",
"bandit==1.9.4",
"types-requests==2.33.0.20261006",
# icalendar 6.x ships no inline types (7.x does)
"types-icalendar==6.3.2.20260712",
# tests/test_server.py drives the FastAPI app through httpx.ASGITransport
"httpx==0.28.1",
# tests/docs exercise scripts/publish_versioned_docs.py, which reads mkdocs YAML
"pyyaml==6.0.3",
# property tests for the feed normalizer/date parser (tests/test_feed_parsing_properties.py)
"hypothesis==6.170.13",
]
# The import package is `src` (the image runs `uvicorn src.server:app`).
[tool.hatch.build.targets.wheel]
packages = ["src"]
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "--strict-markers --cov --cov-report=term-missing:skip-covered"
[tool.coverage.run]
source = ["src"]
branch = true
[tool.coverage.report]
fail_under = 70
exclude_also = ["if TYPE_CHECKING:", "raise NotImplementedError", "\\.\\.\\."]
[tool.mypy]
python_version = "3.14"
files = ["src"]
strict = true
warn_unreachable = true