{ lib , stdenv , buildPythonPackage , fetchFromGitHub , pythonOlder , isPyPy # build-system , poetry-core , rustPlatform # native dependencies , iconv # dependencies , backports-zoneinfo , importlib-resources , python-dateutil , time-machine , tzdata # tests , pytestCheckHook , pytz }: buildPythonPackage rec { pname = "pendulum"; version = "3.0.0"; pyproject = true; src = fetchFromGitHub { owner = "sdispater"; repo = "pendulum"; rev = "refs/tags/${version}"; hash = "sha256-v0kp8dklvDeC7zdTDOpIbpuj13aGub+oCaYz2ytkEpI="; }; postPatch = '' substituteInPlace rust/Cargo.lock \ --replace "3.0.0-beta-1" "3.0.0" ''; cargoRoot = "rust"; cargoDeps = rustPlatform.fetchCargoTarball { inherit src; sourceRoot = "source/rust"; name = "${pname}-${version}"; hash = "sha256-6fw0KgnPIMfdseWcunsGjvjVB+lJNoG3pLDqkORPJ0I="; postPatch = '' substituteInPlace Cargo.lock \ --replace "3.0.0-beta-1" "3.0.0" ''; }; nativeBuildInputs = [ poetry-core rustPlatform.maturinBuildHook rustPlatform.cargoSetupHook ]; buildInputs = lib.optionals stdenv.isDarwin [ iconv ]; propagatedBuildInputs = [ python-dateutil tzdata ] ++ lib.optional (!isPyPy) [ time-machine ] ++ lib.optionals (pythonOlder "3.9") [ backports-zoneinfo importlib-resources ]; pythonImportsCheck = [ "pendulum" ]; nativeCheckInputs = [ pytestCheckHook pytz ]; disabledTestPaths = [ "tests/benchmarks" ] ++ lib.optionals stdenv.isDarwin [ # PermissionError: [Errno 1] Operation not permitted: '/etc/localtime' "tests/testing/test_time_travel.py" ]; meta = with lib; { description = "Python datetimes made easy"; homepage = "https://github.com/sdispater/pendulum"; changelog = "https://github.com/sdispater/pendulum/blob/${src.rev}/CHANGELOG.md"; license = licenses.mit; maintainers = with maintainers; [ ]; }; }