1{ lib
2, buildPythonPackage
3, fetchFromGitHub
4, python
5, proj
6, pythonOlder
7, substituteAll
8, cython
9, pytestCheckHook
10, mock
11, certifi
12, numpy
13, shapely
14, pandas
15, xarray
16}:
17
18buildPythonPackage rec {
19 pname = "pyproj";
20 version = "3.6.1";
21 disabled = pythonOlder "3.9";
22
23 src = fetchFromGitHub {
24 owner = "pyproj4";
25 repo = "pyproj";
26 rev = "refs/tags/${version}";
27 hash = "sha256-ynAhu89VpvtQJRkIeVyffQHhd+OvWSiZzaI/7nd6fXA=";
28 };
29
30 # force pyproj to use ${proj}
31 patches = [
32 (substituteAll {
33 src = ./001.proj.patch;
34 proj = proj;
35 projdev = proj.dev;
36 })
37 ];
38
39 nativeBuildInputs = [ cython ];
40 buildInputs = [ proj ];
41
42 propagatedBuildInputs = [
43 certifi
44 ];
45
46 nativeCheckInputs = [
47 pytestCheckHook
48 mock
49 numpy
50 shapely
51 pandas
52 xarray
53 ];
54
55 preCheck = ''
56 # import from $out
57 rm -r pyproj
58 '';
59
60 disabledTestPaths = [
61 "test/test_doctest_wrapper.py"
62 "test/test_datadir.py"
63 ];
64
65 disabledTests = [
66 # The following tests try to access network and end up with a URLError
67 "test__load_grid_geojson_old_file"
68 "test_get_transform_grid_list"
69 "test_get_transform_grid_list__area_of_use"
70 "test_get_transform_grid_list__bbox__antimeridian"
71 "test_get_transform_grid_list__bbox__out_of_bounds"
72 "test_get_transform_grid_list__contains"
73 "test_get_transform_grid_list__file"
74 "test_get_transform_grid_list__source_id"
75 "test_sync__area_of_use__list"
76 "test_sync__bbox__list"
77 "test_sync__bbox__list__exclude_world_coverage"
78 "test_sync__download_grids"
79 "test_sync__file__list"
80 "test_sync__source_id__list"
81 "test_sync_download"
82 "test_sync_download__directory"
83 "test_sync_download__system_directory"
84 "test_transformer_group__download_grids"
85 ];
86
87 pythonImportsCheck = [
88 "pyproj"
89 "pyproj.crs"
90 "pyproj.transformer"
91 "pyproj.geod"
92 "pyproj.proj"
93 "pyproj.database"
94 "pyproj.list"
95 "pyproj.datadir"
96 "pyproj.network"
97 "pyproj.sync"
98 "pyproj.enums"
99 "pyproj.aoi"
100 "pyproj.exceptions"
101 ];
102
103 meta = with lib; {
104 description = "Python interface to PROJ library";
105 homepage = "https://github.com/pyproj4/pyproj";
106 changelog = "https://github.com/pyproj4/pyproj/blob/${src.rev}/docs/history.rst";
107 license = licenses.mit;
108 maintainers = with maintainers; teams.geospatial.members ++ [ lsix dotlambda ];
109 };
110}