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