1{
2 lib,
3 buildPythonPackage,
4 cython,
5 fetchPypi,
6 fontconfig,
7 gdal,
8 geos,
9 matplotlib,
10 numpy,
11 owslib,
12 pillow,
13 proj,
14 pyproj,
15 pyshp,
16 pytest-mpl,
17 pytestCheckHook,
18 pythonOlder,
19 scipy,
20 setuptools-scm,
21 shapely,
22}:
23
24buildPythonPackage rec {
25 pname = "cartopy";
26 version = "0.25.0";
27 pyproject = true;
28
29 disabled = pythonOlder "3.10";
30
31 src = fetchPypi {
32 inherit pname version;
33 hash = "sha256-VfGjkOXz8HWyIcfZH7ECWK2XjbeGx5MOugbrRdKHU/4=";
34 };
35
36 build-system = [ setuptools-scm ];
37
38 nativeBuildInputs = [
39 cython
40 geos # for geos-config
41 proj
42 ];
43
44 buildInputs = [
45 geos
46 proj
47 ];
48
49 dependencies = [
50 matplotlib
51 numpy
52 pyproj
53 pyshp
54 shapely
55 ];
56
57 optional-dependencies = {
58 ows = [
59 owslib
60 pillow
61 ];
62 plotting = [
63 gdal
64 pillow
65 scipy
66 ];
67 };
68
69 nativeCheckInputs = [
70 pytest-mpl
71 pytestCheckHook
72 ]
73 ++ lib.flatten (lib.attrValues optional-dependencies);
74
75 preCheck = ''
76 export FONTCONFIG_FILE=${fontconfig.out}/etc/fonts/fonts.conf
77 export HOME=$TMPDIR
78 '';
79
80 pytestFlags = [
81 "--pyargs"
82 "cartopy"
83 ];
84
85 disabledTestMarks = [
86 "network"
87 "natural_earth"
88 ];
89
90 disabledTests = [
91 "test_gridliner_constrained_adjust_datalim"
92 "test_gridliner_labels_bbox_style"
93 ];
94
95 meta = with lib; {
96 description = "Process geospatial data to create maps and perform analyses";
97 homepage = "https://scitools.org.uk/cartopy/docs/latest/";
98 changelog = "https://github.com/SciTools/cartopy/releases/tag/v${version}";
99 license = licenses.lgpl3Plus;
100 maintainers = with maintainers; [ ];
101 mainProgram = "feature_download";
102 };
103}