Ctrl K
ComunidadGuías…

pyproject.toml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
[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