diff options
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules/pendulum/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/python-modules/pendulum/default.nix | 99 |
1 files changed, 81 insertions, 18 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/pendulum/default.nix b/nixpkgs/pkgs/development/python-modules/pendulum/default.nix index 631494a1d9a3..78e9c675ea8d 100644 --- a/nixpkgs/pkgs/development/python-modules/pendulum/default.nix +++ b/nixpkgs/pkgs/development/python-modules/pendulum/default.nix @@ -1,36 +1,99 @@ -{ lib, fetchPypi, buildPythonPackage, pythonOlder -, python-dateutil -, importlib-metadata +{ lib +, stdenv +, buildPythonPackage +, fetchFromGitHub +, pythonOlder +, isPyPy + +# build-system , poetry-core -, pytzdata -, typing +, rustPlatform + +# native dependencies +, iconv + +# dependencies +, backports-zoneinfo +, importlib-resources +, python-dateutil +, time-machine +, tzdata + +# tests +, pytestCheckHook +, pytz }: buildPythonPackage rec { pname = "pendulum"; - version = "2.1.2"; - format = "pyproject"; + version = "3.0.0"; + pyproject = true; - src = fetchPypi { - inherit pname version; - sha256 = "b06a0ca1bfe41c990bbf0c029f0b6501a7f2ec4e38bfec730712015e8860f207"; + src = fetchFromGitHub { + owner = "sdispater"; + repo = "pendulum"; + rev = "refs/tags/${version}"; + hash = "sha256-v0kp8dklvDeC7zdTDOpIbpuj13aGub+oCaYz2ytkEpI="; }; - preBuild = '' - export HOME=$TMPDIR + postPatch = '' + substituteInPlace rust/Cargo.lock \ + --replace "3.0.0-beta-1" "3.0.0" ''; - build-system = [ poetry-core ]; - dependencies = [ python-dateutil pytzdata ] - ++ lib.optional (pythonOlder "3.5") typing - ++ lib.optionals (pythonOlder "3.8") [ importlib-metadata ]; + 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 + ]; - # No tests - doCheck = false; + 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; [ ]; }; } |