{ lib, stdenv, fetchFromGitHub, pythonOlder, rustPlatform, cargo, rustc, libiconv, buildPythonPackage, setuptools, setuptools-rust, pytestCheckHook, pytest-mypy-plugins, hypothesis, freezegun, time-machine, nix-update-script, }: buildPythonPackage rec { pname = "whenever"; version = "0.6.15"; pyproject = true; disabled = pythonOlder "3.9"; src = fetchFromGitHub { owner = "ariebovenberg"; repo = "whenever"; rev = "refs/tags/${version}"; hash = "sha256-zCtHvgAQ05zmT6U7CAspG65fE4tPyS/+/gId048DbeA="; }; cargoDeps = rustPlatform.fetchCargoTarball { inherit src; hash = "sha256-sCwjo3KU4u+2FsWz8CJiqXKSaIKX6DFe1eCkIzRXF3s="; }; build-system = [ setuptools setuptools-rust rustPlatform.cargoSetupHook cargo rustc ]; buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ]; nativeCheckInputs = [ pytestCheckHook pytest-mypy-plugins # pytest-benchmark # developer sanity check, should not block distribution hypothesis freezegun time-machine ]; disabledTestPaths = [ # benchmarks "benchmarks/python/test_date.py" "benchmarks/python/test_instant.py" "benchmarks/python/test_local_datetime.py" "benchmarks/python/test_zoned_datetime.py" ]; pythonImportsCheck = [ "whenever" ]; # a bunch of failures, including an assumption of what the timezone on the host is # TODO: try enabling on bump doCheck = false; passthru.updateScript = nix-update-script { }; meta = with lib; { description = "Strict, predictable, and typed datetimes"; homepage = "https://github.com/ariebovenberg/whenever"; changelog = "https://github.com/ariebovenberg/whenever/blob/${src.rev}/CHANGELOG.rst"; license = licenses.mit; maintainers = with maintainers; [ pbsds ]; }; }