summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorJonathan Ringer <jonringer117@gmail.com>2019-07-09 17:42:01 -0700
committerJonathan Ringer <jonringer117@gmail.com>2019-07-11 04:07:20 -0700
commit06960ac6a7b58af84aeccd208b663443b39a6600 (patch)
treeef249f4b3e3bdfa46b463fb7b16bdbb006d6754e /pkgs
parentd55cba68ff391f9b353908ef4555ab8d45d697af (diff)
downloadnixpkgs-06960ac6a7b58af84aeccd208b663443b39a6600.tar
nixpkgs-06960ac6a7b58af84aeccd208b663443b39a6600.tar.gz
nixpkgs-06960ac6a7b58af84aeccd208b663443b39a6600.tar.bz2
nixpkgs-06960ac6a7b58af84aeccd208b663443b39a6600.tar.lz
nixpkgs-06960ac6a7b58af84aeccd208b663443b39a6600.tar.xz
nixpkgs-06960ac6a7b58af84aeccd208b663443b39a6600.tar.zst
nixpkgs-06960ac6a7b58af84aeccd208b663443b39a6600.zip
pythonPackages.pyproj: unstable-2018-11-13 -> 2.2.1
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/python-modules/pyproj/001.proj.patch47
-rw-r--r--pkgs/development/python-modules/pyproj/default.nix55
-rw-r--r--pkgs/top-level/python-packages.nix6
3 files changed, 81 insertions, 27 deletions
diff --git a/pkgs/development/python-modules/pyproj/001.proj.patch b/pkgs/development/python-modules/pyproj/001.proj.patch
new file mode 100644
index 00000000000..b024c28156c
--- /dev/null
+++ b/pkgs/development/python-modules/pyproj/001.proj.patch
@@ -0,0 +1,47 @@
+diff a/pyproj/datadir.py b/pyproj/datadir.py
+--- a/pyproj/datadir.py
++++ b/pyproj/datadir.py
+@@ -52,6 +52,7 @@ def get_data_dir():
+     str: The valid data directory.
+
+     """
++    return "@proj@/share/proj"
+     # to avoid re-validating
+     global _VALIDATED_PROJ_DATA
+     if _VALIDATED_PROJ_DATA is not None:
+diff a/setup.py b/setup.py
+--- a/setup.py
++++ b/setup.py
+@@ -16,7 +16,7 @@ INTERNAL_PROJ_DIR = os.path.join(CURRENT_FILE_PATH, "pyproj", BASE_INTERNAL_PROJ
+
+ def check_proj_version(proj_dir):
+     """checks that the PROJ library meets the minimum version"""
+-    proj = os.path.join(proj_dir, "bin", "proj")
++    proj = "@proj@/bin/proj"
+     proj_ver_bytes = subprocess.check_output(proj, stderr=subprocess.STDOUT)
+     proj_ver_bytes = (proj_ver_bytes.decode("ascii").split()[1]).strip(",")
+     proj_version = parse_version(proj_ver_bytes)
+@@ -33,6 +33,7 @@ def get_proj_dir():
+     """
+     This function finds the base PROJ directory.
+     """
++    return "@proj@"
+     proj_dir = os.environ.get("PROJ_DIR")
+     if proj_dir is None and os.path.exists(INTERNAL_PROJ_DIR):
+         proj_dir = INTERNAL_PROJ_DIR
+@@ -56,6 +57,7 @@ def get_proj_libdirs(proj_dir):
+     """
+     This function finds the library directories
+     """
++    return ["@proj@/lib"]
+     proj_libdir = os.environ.get("PROJ_LIBDIR")
+     libdirs = []
+     if proj_libdir is None:
+@@ -77,6 +79,7 @@ def get_proj_incdirs(proj_dir):
+     """
+     This function finds the include directories
+     """
++    return ["@proj@/include"]
+     proj_incdir = os.environ.get("PROJ_INCDIR")
+     incdirs = []
+     if proj_incdir is None:
diff --git a/pkgs/development/python-modules/pyproj/default.nix b/pkgs/development/python-modules/pyproj/default.nix
index f08625f62b6..ddfecbe8ec5 100644
--- a/pkgs/development/python-modules/pyproj/default.nix
+++ b/pkgs/development/python-modules/pyproj/default.nix
@@ -1,38 +1,49 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, python
-, nose2
+{ lib, buildPythonPackage, fetchPypi, python, pkgs, pythonOlder, substituteAll
+, aenum
 , cython
-, proj ? null
+, pytest
+, mock
+, numpy
 }:
 
-buildPythonPackage (rec {
+buildPythonPackage rec {
   pname = "pyproj";
-  version = "unstable-2018-11-13";
+  version = "2.2.1";
 
-  src = fetchFromGitHub {
-    owner = "jswhit";
-    repo = pname;
-    rev = "78540f5ff40da92160f80860416c91ee74b7643c";
-    sha256 = "1vq5smxmpdjxialxxglsfh48wx8kaq9sc5mqqxn4fgv1r5n1m3n9";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0yigcxwmx5cczipf2mpmy2gq1dnl0635yjvjq86ay47j1j5fd2gc";
   };
 
-  buildInputs = [ cython ];
+  # force pyproj to use ${pkgs.proj}
+  patches = [
+    (substituteAll {
+      src = ./001.proj.patch;
+      proj = pkgs.proj;
+    })
+  ];
 
-  checkInputs = [ nose2 ];
+  buildInputs = [ cython pkgs.proj ];
 
+  propagatedBuildInputs = [
+    numpy
+  ] ++ lib.optional (pythonOlder "3.6") aenum;
+
+  checkInputs = [ pytest mock ];
+
+  # ignore rounding errors, and impure docgen
+  # datadir is ignored because it does the proj look up logic, which isn't relevant
   checkPhase = ''
-    runHook preCheck
-    pushd unittest  # changing directory should ensure we're importing the global pyproj
-    ${python.interpreter} test.py && ${python.interpreter} -c "import doctest, pyproj, sys; sys.exit(doctest.testmod(pyproj)[0])"
-    popd
-    runHook postCheck
+    pytest . -k 'not alternative_grid_name \
+                 and not transform_wgs84_to_alaska \
+                 and not repr' \
+            --ignore=test/test_doctest_wrapper.py \
+            --ignore=test/test_datadir.py
   '';
 
   meta = {
     description = "Python interface to PROJ.4 library";
-    homepage = https://github.com/jswhit/pyproj;
+    homepage = "https://github.com/jswhit/pyproj";
     license = with lib.licenses; [ isc ];
   };
-} // (if proj == null then {} else { PROJ_DIR = proj; }))
+}
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 5dac3b894f5..2150ed83c41 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -4032,11 +4032,7 @@ in {
 
   pyotp = callPackage ../development/python-modules/pyotp { };
 
-  pyproj = callPackage ../development/python-modules/pyproj {
-    # pyproj does *work* if you want to use a system supplied proj, but with the current version(s) the tests fail by
-    # a few decimal places, so caveat emptor.
-    proj = null;
-  };
+  pyproj = callPackage ../development/python-modules/pyproj { };
 
   pyqrcode = callPackage ../development/python-modules/pyqrcode { };