From 695ff0dc09b304f2e0575081c52189893c2f38bc Mon Sep 17 00:00:00 2001 From: Frederik Rietdijk Date: Wed, 1 Feb 2017 14:38:58 +0100 Subject: [PATCH] pythonPackages: new fetchers Inspired by https://github.com/NixOS/nixpkgs/pull/22257. It is recommend to use fetchpypi and, when fetching a wheel, to pass `format = "wheel"` (typically you can just `inherit format;`). The hash type is fixed (for now) because this is the hash type PyPI uses. --- pkgs/top-level/python-packages.nix | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 60d9a1334dc..471323c179a 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -37,9 +37,30 @@ let graphiteVersion = "0.9.15"; + fetchwheel = {pname, version, sha256, python ? "py2.py3", abi ? "none", platform ? "any"}: + # Fetch a wheel. By default we fetch an universal wheel. + # See https://www.python.org/dev/peps/pep-0427/#file-name-convention for details regarding the optional arguments. + let + url = "https://files.pythonhosted.org/packages/${python}/${builtins.substring 0 1 pname}/${pname}/${pname}-${version}-${python}-${abi}-${platform}.whl"; + in pkgs.fetchurl {inherit url sha256;}; + + fetchtarball = {pname, version, sha256}: + # Fetch a tarball. + let + url = "mirror://pypi/${builtins.substring 0 1 pname}/${pname}/${pname}-${version}.tar.gz"; + in pkgs.fetchurl {inherit url sha256;}; + + fetchpypi = {format ? "setuptools", ... } @attrs: + let + fetcher = (if format == "wheel" then fetchwheel + else if format == "setuptools" then fetchtarball + else throw "Unsupported kind ${kind}"); + in fetcher (builtins.removeAttrs attrs ["format"]); + in { inherit python bootstrapped-pip pythonAtLeast pythonOlder isPy26 isPy27 isPy33 isPy34 isPy35 isPy36 isPyPy isPy3k mkPythonDerivation buildPythonPackage buildPythonApplication; + inherit fetchwheel fetchtarball fetchpypi; # helpers