# Vdirsyncer synchronizes calendars and contacts.
#
# Please refer to https://vdirsyncer.pimutils.org/en/stable/packaging.html for
# how to package vdirsyncer.

[build-system]
requires = ["setuptools>=64", "setuptools_scm>=8"]
build-backend = "setuptools.build_meta"

[project]
name = "vdirsyncer"
authors = [
    {name = "Markus Unterwaditzer", email = "markus@unterwaditzer.net"},
]
description = "Synchronize calendars and contacts"
readme = "README.rst"
requires-python = ">=3.8"
keywords = ["todo", "task", "icalendar", "cli"]
license = "BSD-3-Clause"
license-files = ["LICENSE"]
classifiers = [
    "Development Status :: 4 - Beta",
    "Environment :: Console",
    "Operating System :: POSIX",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Programming Language :: Python :: 3.8",
    "Programming Language :: Python :: 3.9",
    "Topic :: Internet",
    "Topic :: Office/Business :: Scheduling",
    "Topic :: Utilities",
]
dependencies = [
    "click>=5.0,<9.0",
    "click-log>=0.3.0,<0.5.0",
    "requests>=2.20.0",
    "aiohttp>=3.8.2,<4.0.0",
    "aiostream>=0.4.3,<0.8.0",
]
dynamic = ["version"]

[project.optional-dependencies]
google = ["aiohttp-oauthlib"]
test = [
  "hypothesis>=6.72.0,<7.0.0",
  "pytest",
  "pytest-cov",
  "pytest-httpserver",
  "trustme",
  "pytest-asyncio",
  "aioresponses",
]

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

[tool.lint.ruff]
extend-select = [
    "E",
    "W",
    "B0",
    "I",
    "UP",
    "C4",
    "TID",
    "RSE"
]

[tool.ruff.lint.isort]
force-single-line = true
required-imports = ["from __future__ import annotations"]

[tool.pytest.ini_options]
addopts = """
--tb=short
--cov-config .coveragerc
--cov=vdirsyncer
--cov-report=term-missing:skip-covered
--no-cov-on-fail
--color=yes
"""
# filterwarnings=error
asyncio_default_fixture_loop_scope = "function"

[tool.mypy]
ignore_missing_imports = true

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

[tool.setuptools.packages.find]
include = ["vdirsyncer*"]

[tool.setuptools_scm]
write_to = "vdirsyncer/version.py"
version_scheme = "no-guess-dev"
