{ lib, asgineer, bcrypt, buildPythonPackage, fetchFromGitHub, iptools, itemdb, jinja2, markdown, nodejs, pscript, pyjwt, pytestCheckHook, pythonAtLeast, requests, setuptools, uvicorn, writableTmpDirAsHomeHook, }: buildPythonPackage (finalAttrs: { pname = "timetagger"; version = "26.1.1"; pyproject = true; src = fetchFromGitHub { owner = "almarklein"; repo = "timetagger"; tag = "v${finalAttrs.version}"; hash = "sha256-BGu+L3bUBGYj18D4qUemUMEs2tk0wLu8DvO9h/7FiJo="; }; build-system = [ setuptools ]; dependencies = [ asgineer bcrypt iptools itemdb jinja2 markdown pscript pyjwt uvicorn ]; nativeCheckInputs = [ nodejs pytestCheckHook requests writableTmpDirAsHomeHook ]; pythonImportsCheck = [ "timetagger" ]; disabledTestPaths = lib.optionals (pythonAtLeast "3.14") [ # RuntimeError: There is no current event loop in thread 'MainThread' "tests/test_server_apiserver.py" ]; meta = { description = "Library to interact with TimeTagger"; homepage = "https://github.com/almarklein/timetagger"; changelog = "https://github.com/almarklein/timetagger/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.gpl3Only; maintainers = with lib.maintainers; [ matthiasbeyer ]; mainProgram = "timetagger"; }; })