[project]
name = "timetracker"
version = "1.7.0"
description = "A simple time tracker."
authors = [{ name = "Lukáš Kucharczyk", email = "lukas@kucharczyk.xyz" }]
requires-python = ">=3.13,<4"
readme = "README.md"
license = "AGPL-3.0-or-later"
classifiers = [
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Programming Language :: Python :: 3.14",
]
dependencies = [
    "django>6.0",
    "gunicorn>=23.0.0,<24",
    "uvicorn>=0.30.1,<0.31",
    "django-htmx>=1.18.0,<2",
    "django-template-partials>=24.2,<25",
    "markdown>=3.6,<4",
    "django-q2>=1.7.4,<2",
    "croniter>=5.0.1,<6",
    "requests>=2.32.3,<3",
    "pyyaml>=6.0.2,<7",
    "django-ninja>=1.6.2",
]

[project.scripts]
timetracker-import = "common.import_data:import_from_file"

[dependency-groups]
dev = [
    "mypy>=1.10.1,<2",
    "pyyaml>=6.0.1,<7",
    "pytest>=9.0.3,<10",
    "django-extensions>=3.2.3,<4",
    "djhtml>=3.0.6,<4",
    "djlint>=1.34.1,<2",
    "isort>=5.13.2,<6",
    "pre-commit>=3.7.1,<4",
    "django-debug-toolbar>=4.4.2,<5",
    "ruff",
    "pytest-django>=4.12.0",
    "pytest-playwright>=0.8.0",
]

[tool.uv]

[tool.uv.build-backend]
module-name = ["timetracker"]
module-root = ""

[build-system]
requires = ["uv_build>=0.9.26,<0.10.0"]
build-backend = "uv_build"
[tool.ruff]
extend-exclude = [
    # TODO: remove this exclusion once the streak feature is actually
    # implemented. streak_bruteforce.py is a throwaway exploration script
    # (it runs django.setup() before importing models, which trips E402);
    # it's excluded for now rather than contorted to satisfy the linter.
    "streak_bruteforce.py",
]

[tool.isort]
 profile = "black"

 [tool.pytest.ini_options]
 DJANGO_SETTINGS_MODULE = "timetracker.settings"
 python_files = ["test_*.py"]
