Compare commits

..

81 commits

Author SHA1 Message Date
Python Maint
87594fc045 Rebuilt for Python 3.14.0rc3 bytecode 2025-09-19 12:57:27 +02:00
Python Maint
e9295fafc0 Rebuilt for Python 3.14.0rc2 bytecode 2025-08-15 13:25:45 +02:00
Jerry James
20e8b0730d
Stop building for 32-bit x86 2025-08-11 08:44:13 -06:00
Packit
2ec6011486 Update to 0.25.0 upstream release
- Resolves: rhbz#2385945

Commit authored by Packit automation (https://packit.dev/)
2025-08-01 16:25:45 -04:00
Fedora Release Engineering
8241eb8dea Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-25 07:07:28 +00:00
Python Maint
16f5d2534e Rebuilt for Python 3.14 2025-06-18 21:31:53 +02:00
Fedora Release Engineering
db1263d5f0 Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-18 12:45:16 +00:00
Packit
f2000c0cba Update to 0.24.1 upstream release
- Resolves: rhbz#2317031

Commit authored by Packit automation (https://packit.dev/)
2024-10-08 23:29:03 +00:00
Elliott Sales de Andrade
f46a01eada Update to latest version (#2317031) 2024-10-08 18:47:03 -04:00
Elliott Sales de Andrade
a04112c2b7 Configure Packit for release automation 2024-10-08 16:56:06 -04:00
Fedora Release Engineering
6a7aca5e10 Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-19 10:14:01 +00:00
Elliott Sales de Andrade
f963ea5e0b Correct license tag 2024-06-25 20:44:46 -04:00
Elliott Sales de Andrade
ac90935ea5 Update to latest version (#2274386) 2024-06-25 19:06:23 -04:00
Python Maint
919282549a Rebuilt for Python 3.13 2024-06-19 18:28:32 +02:00
Fedora Release Engineering
3550949e23 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-26 02:17:21 +00:00
Fedora Release Engineering
87e78b5ae7 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-22 00:01:16 +00:00
Elliott Sales de Andrade
feb2384c05 Fix tests with Matplotlib 3.8.0 2023-09-13 23:46:37 -04:00
Elliott Sales de Andrade
138595d962 Drop speedups on i686 2023-08-11 01:02:10 -04:00
Elliott Sales de Andrade
14753fe553 Update to latest version (#2229333) 2023-08-11 00:19:32 -04:00
Elliott Sales de Andrade
96c686c205 Fix tests with Proj 9.2 2023-07-19 19:15:06 -04:00
Elliott Sales de Andrade
7e262aab02 Rebuild for Python 3.12b4 2023-07-19 19:12:50 -04:00
Elliott Sales de Andrade
ebebe36587 Update to SPDX license 2023-04-07 23:26:01 -04:00
Elliott Sales de Andrade
de2e44cdf6 Backport fix for Matplotlib 3.7 2023-02-28 20:30:45 -05:00
Fedora Release Engineering
25ebc1e3bc Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-01-20 11:56:41 +00:00
Elliott Sales de Andrade
ae2332e136 Update to latest version (#2152747) 2022-12-12 22:13:41 -05:00
Elliott Sales de Andrade
b92ea55e55 Update to latest version (#2125749) 2022-09-16 00:12:31 -04:00
Elliott Sales de Andrade
c1c216adbe Fix compatibility with Matplotlib 3.6 2022-08-21 00:07:35 -04:00
Fedora Release Engineering
02e54ce8b9 Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-07-22 17:08:40 +00:00
Lumir Balhar
d9c25b2d70 Allow the latest setuptools_scm 7 2022-06-30 10:47:19 +02:00
Elliott Sales de Andrade
996cfd1bc1 Update to latest version (#2101991) 2022-06-29 17:00:40 -04:00
Python Maint
250c76973d Rebuilt for Python 3.11 2022-06-21 19:11:06 +02:00
Elliott Sales de Andrade
f07ae9547e Merge remote-tracking branch 'origin/rawhide' into rawhide 2022-05-23 04:53:38 -04:00
Elliott Sales de Andrade
f9e1aeefe5 Update to latest version (#2040130) 2022-05-23 02:49:15 -04:00
Elliott Sales de Andrade
85fdfde1c8 Fix FTBFS due to broken rpath 2022-05-23 02:48:53 -04:00
Sandro Mani
b1cc8deb57 Rebuild for proj-9.0.0 2022-03-10 13:52:18 +01:00
Sandro Mani
35ad1b4422 Add Cartopy-test_shapereader.patch 2022-03-10 13:52:18 +01:00
Fedora Release Engineering
b5bb9b5192 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-01-21 10:59:15 +00:00
Sandro Mani
d5763caf8a Rebuild (geos) 2021-10-21 13:22:58 +02:00
Elliott Sales de Andrade
a5c7dbc311 Update to latest version
And also fix the internal version provides.
2021-10-09 00:52:41 -04:00
Elliott Sales de Andrade
420a586aa8 Update to latest version (#2005405) 2021-09-21 20:00:46 -04:00
Elliott Sales de Andrade
379e9f2e10 Convert to rpmautospec 2021-09-21 03:07:13 -04:00
Fedora Release Engineering
de708eaca3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-07-23 05:29:39 +00:00
Python Maint
d245345e3a Rebuilt for Python 3.10 2021-06-04 20:23:29 +02:00
Elliott Sales de Andrade
12797a1b0d Update to latest version. 2021-04-22 04:30:53 -04:00
Sandro Mani
d8458795b4 Rebuild (geos) 2021-03-24 00:56:30 +01:00
Sandro Mani
c1911066e5 Bundle proj7 2021-03-23 23:56:14 +01:00
Elliott Sales de Andrade
4205ee9b1f Update patch for tests skipped with GEOS 3.9.0. 2021-03-13 03:31:58 -05:00
Elliott Sales de Andrade
a10a1934fb Update to latest release candidate. 2021-03-13 01:04:20 -05:00
Elliott Sales de Andrade
a21437d90e Modernize spec file. 2021-03-13 00:42:21 -05:00
Sandro Mani
d674a68ba7 Rebuild (proj) 2021-03-07 11:14:54 +01:00
Sandro Mani
b3f0b3b58b Rebuild (geos) 2021-02-13 18:27:40 +01:00
Jos de Kloe
b9d2b3ca78 fix failing builds 2021-01-30 17:06:42 +01:00
Fedora Release Engineering
59a4e8fdc7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-01-27 09:41:46 +00:00
Tomas Hrnciar
5c8c0fa5a0 Regenerate Cython files 2021-01-13 12:01:32 +01:00
Sandro Mani
3236128922 Rebuild (proj, gdal) 2020-11-12 13:06:23 +01:00
Fedora Release Engineering
82a7ad4e13 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-07-29 00:02:41 +00:00
Miro Hrončok
dd2c7c9a86 Rebuilt for Python 3.9 2020-05-26 03:05:24 +02:00
Elliott Sales de Andrade
ca844a291b Update to latest version. 2020-05-18 00:45:06 -04:00
Elliott Sales de Andrade
4ebb4918dd Update to latest release candidate. 2020-05-01 02:28:35 -04:00
Elliott Sales de Andrade
da6d5c3ab3 Update to latest beta version. 2020-04-13 05:53:33 -04:00
Elliott Sales de Andrade
6f9ce1278f Update to latest beta. 2020-02-10 19:54:41 -05:00
Fedora Release Engineering
9ec2689f3d - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-01-30 11:03:12 +00:00
Miro Hrončok
f4c20d7b9b Rebuilt for Python 3.8 2019-08-19 10:30:13 +02:00
Fedora Release Engineering
13e978015f - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-07-26 12:32:37 +00:00
Elliott Sales de Andrade
0380692b6d Fix build against FreeType 2.10.0. 2019-05-31 03:56:49 -04:00
Elliott Sales de Andrade
38de19b9fc Add an option to run tests with the network. 2019-05-31 02:55:24 -04:00
Elliott Sales de Andrade
c18ae140d1 Rebuilt for updated Proj. 2019-02-11 23:35:25 -05:00
Fedora Release Engineering
368d29b02a - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2019-02-02 05:57:21 +00:00
Elliott Sales de Andrade
bf65f858af Merge branch 'f29' 2018-12-06 01:26:54 -05:00
Elliott Sales de Andrade
afa320ad56 Remove pytest bytecode. 2018-12-06 01:25:34 -05:00
Elliott Sales de Andrade
17a84073b4 Remove checks for old Fedora. 2018-11-17 05:11:04 -05:00
Elliott Sales de Andrade
3c0ed7abeb Drop Python 2 subpackage. 2018-11-17 04:30:36 -05:00
Elliott Sales de Andrade
0cf216b969 Update to 0.17.0. 2018-11-17 04:07:49 -05:00
Elliott Sales de Andrade
a6258904f7 Remove workaround for unavailable NE map data. 2018-11-17 02:39:30 -05:00
Fedora Release Engineering
af6cf9e711 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2018-07-13 23:42:11 +00:00
Elliott Sales de Andrade
ea0a420149 Add gcc-c++ BR. 2018-07-11 18:58:04 -04:00
Miro Hrončok
2009d04c55 Rebuilt for Python 3.7 2018-06-19 10:56:02 +02:00
Elliott Sales de Andrade
43745dbfcf Delete the old patch too. 2018-03-01 03:07:24 -05:00
Elliott Sales de Andrade
21f47e7855 Fix owslib dep. 2018-02-28 20:10:21 -05:00
Elliott Sales de Andrade
55c041bfc2 Use python2- prefix for dependencies. 2018-02-28 19:42:43 -05:00
Elliott Sales de Andrade
d54b107f94 Drop patch for old Matplotlib. 2018-02-28 19:39:11 -05:00
16 changed files with 401 additions and 1395 deletions

19
.gitignore vendored
View file

@ -1,2 +1,21 @@
/Cartopy-0.16.0.tar.gz
/Cartopy-norm-images.tar.xz
/Cartopy-0.17.0.tar.gz
/Cartopy-0.18.0b1.tar.gz
/Cartopy-0.18.0b2.tar.gz
/Cartopy-0.18.0rc1.tar.gz
/Cartopy-0.18.0.tar.gz
/Cartopy-0.19.0rc1.tar.gz
/proj-7.2.1.tar.gz
/Cartopy-0.19.0.tar.gz
/Cartopy-0.20.0.tar.gz
/Cartopy-0.20.1.tar.gz
/Cartopy-0.20.2.tar.gz
/Cartopy-0.20.3.tar.gz
/Cartopy-0.21.0.tar.gz
/Cartopy-0.21.1.tar.gz
/Cartopy-0.22.0.tar.gz
/Cartopy-0.23.0.tar.gz
/cartopy-0.24.0.tar.gz
/cartopy-0.24.1.tar.gz
/cartopy-0.25.0.tar.gz

20
.packit.yaml Normal file
View file

@ -0,0 +1,20 @@
# See the documentation for more information:
# https://packit.dev/docs/configuration/
---
jobs:
- job: pull_from_upstream
trigger: release
dist_git_branches:
rawhide:
fast_forward_merge_into:
- fedora-branched
- job: koji_build
trigger: commit
allowed_committers:
- all_admins
dist_git_branches:
- fedora-all
- job: bodhi_update
trigger: commit
dist_git_branches:
- fedora-all

View file

@ -1,911 +0,0 @@
From 756c9af63aee1785da91b218633a2c2fdfa09f11 Mon Sep 17 00:00:00 2001
From: Phil Elson <pelson.pub@gmail.com>
Date: Fri, 23 Feb 2018 06:55:16 +0000
Subject: [PATCH 1/7] Merge pull request #1032 from QuLogic/test-updates
Improvements to test metadata
Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
---
lib/cartopy/_epsg.py | 5 +++--
lib/cartopy/tests/io/test_downloaders.py | 4 +++-
lib/cartopy/tests/io/test_ogc_clients.py | 5 ++++-
lib/cartopy/tests/io/test_srtm.py | 5 +++--
lib/cartopy/tests/mpl/test_caching.py | 3 +++
lib/cartopy/tests/mpl/test_crs.py | 5 ++++-
lib/cartopy/tests/mpl/test_examples.py | 2 ++
lib/cartopy/tests/mpl/test_features.py | 5 ++++-
lib/cartopy/tests/mpl/test_gridliner.py | 4 +++-
lib/cartopy/tests/mpl/test_images.py | 8 ++++++-
lib/cartopy/tests/mpl/test_img_transform.py | 3 ++-
lib/cartopy/tests/mpl/test_mpl_integration.py | 31 ++++++++++++++++++++++++++-
lib/cartopy/tests/mpl/test_shapely_to_mpl.py | 5 ++++-
lib/cartopy/tests/mpl/test_ticks.py | 7 +++++-
lib/cartopy/tests/mpl/test_web_services.py | 4 +++-
lib/cartopy/tests/test_coastline.py | 9 +++++---
lib/cartopy/tests/test_coding_standards.py | 6 ++++--
lib/cartopy/tests/test_crs.py | 3 ++-
lib/cartopy/tests/test_img_nest.py | 4 +++-
lib/cartopy/tests/test_img_tiles.py | 3 ++-
lib/cartopy/tests/test_shapereader.py | 19 ++++++++--------
lib/cartopy/util.py | 31 ++++++++++++++++-----------
22 files changed, 127 insertions(+), 44 deletions(-)
diff --git a/lib/cartopy/_epsg.py b/lib/cartopy/_epsg.py
index 8444d47..65c03de 100644
--- a/lib/cartopy/_epsg.py
+++ b/lib/cartopy/_epsg.py
@@ -21,11 +21,11 @@ Provide support for converting EPSG codes to Projection instances.
from __future__ import (absolute_import, division, print_function)
-import cartopy.crs as ccrs
import numpy as np
-import pyepsg
import shapely.geometry as sgeom
+import cartopy.crs as ccrs
+
_GLOBE_PARAMS = {'datum': 'datum',
'ellps': 'ellipse',
@@ -39,6 +39,7 @@ _GLOBE_PARAMS = {'datum': 'datum',
class _EPSGProjection(ccrs.Projection):
def __init__(self, code):
+ import pyepsg
projection = pyepsg.get(code)
if not isinstance(projection, pyepsg.ProjectedCRS):
raise ValueError('EPSG code does not define a projection')
diff --git a/lib/cartopy/tests/io/test_downloaders.py b/lib/cartopy/tests/io/test_downloaders.py
index 4fade4d..c935b41 100644
--- a/lib/cartopy/tests/io/test_downloaders.py
+++ b/lib/cartopy/tests/io/test_downloaders.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2011 - 2017, Met Office
+# (C) British Crown Copyright 2011 - 2018, Met Office
#
# This file is part of cartopy.
#
@@ -107,6 +107,7 @@ def test_from_config():
assert r is land_downloader
+@pytest.mark.network
def test_downloading_simple_ascii(download_to_temp):
# downloads a file from the Google APIs. (very high uptime and file will
# always be there - if this goes down, most of the internet would break!)
@@ -139,6 +140,7 @@ def test_downloading_simple_ascii(download_to_temp):
assert counter.count == 0, 'Item was re-downloaded.'
+@pytest.mark.network
def test_natural_earth_downloader(tmpdir):
# downloads a file to a temporary location, and uses that temporary
# location, then:
diff --git a/lib/cartopy/tests/io/test_ogc_clients.py b/lib/cartopy/tests/io/test_ogc_clients.py
index 1dc7048..b1d0f3c 100644
--- a/lib/cartopy/tests/io/test_ogc_clients.py
+++ b/lib/cartopy/tests/io/test_ogc_clients.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2011 - 2017, Met Office
+# (C) British Crown Copyright 2011 - 2018, Met Office
#
# This file is part of cartopy.
#
@@ -41,6 +41,7 @@ from cartopy.io.ogc_clients import _OWSLIB_AVAILABLE
RESOLUTION = (30, 30)
+@pytest.mark.network
@pytest.mark.skipif(not _OWSLIB_AVAILABLE, reason='OWSLib is unavailable.')
class TestWMSRasterSource(object):
URI = 'http://vmap0.tiles.osgeo.org/wms/vmap0'
@@ -144,6 +145,7 @@ class TestWMSRasterSource(object):
assert img.shape == (40, 20, 4)
+@pytest.mark.network
@pytest.mark.skipif(not _OWSLIB_AVAILABLE, reason='OWSLib is unavailable.')
class TestWMTSRasterSource(object):
URI = 'https://map1c.vis.earthdata.nasa.gov/wmts-geo/wmts.cgi'
@@ -217,6 +219,7 @@ class TestWMTSRasterSource(object):
assert im2.extent == extent
+@pytest.mark.network
@pytest.mark.skipif(not _OWSLIB_AVAILABLE, reason='OWSLib is unavailable.')
class TestWFSGeometrySource(object):
URI = 'https://nsidc.org/cgi-bin/atlas_south?service=WFS'
diff --git a/lib/cartopy/tests/io/test_srtm.py b/lib/cartopy/tests/io/test_srtm.py
index e998dfc..2f255d2 100644
--- a/lib/cartopy/tests/io/test_srtm.py
+++ b/lib/cartopy/tests/io/test_srtm.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2011 - 2017, Met Office
+# (C) British Crown Copyright 2011 - 2018, Met Office
#
# This file is part of cartopy.
#
@@ -27,7 +27,8 @@ import cartopy.crs as ccrs
import cartopy.io.srtm
-pytestmark = pytest.mark.skip('SRTM login not supported')
+pytestmark = [pytest.mark.skip('SRTM login not supported'),
+ pytest.mark.network]
class TestRetrieve(object):
diff --git a/lib/cartopy/tests/mpl/test_caching.py b/lib/cartopy/tests/mpl/test_caching.py
index f8da599..dbc367f 100644
--- a/lib/cartopy/tests/mpl/test_caching.py
+++ b/lib/cartopy/tests/mpl/test_caching.py
@@ -76,6 +76,7 @@ class CallCounter(object):
setattr(self.parent, self.function_name, self.orig_fn)
+@pytest.mark.natural_earth
def test_coastline_loading_cache():
# a5caae040ee11e72a62a53100fe5edc355304419 added coastline caching.
# This test ensures it is working.
@@ -99,6 +100,7 @@ def test_coastline_loading_cache():
plt.close()
+@pytest.mark.natural_earth
def test_shapefile_transform_cache():
# a5caae040ee11e72a62a53100fe5edc355304419 added shapefile mpl
# geometry caching based on geometry object id. This test ensures
@@ -185,6 +187,7 @@ def test_contourf_transform_path_counting():
plt.close()
+@pytest.mark.network
@pytest.mark.skipif(not _OWSLIB_AVAILABLE, reason='OWSLib is unavailable.')
def test_wmts_tile_caching():
image_cache = WMTSRasterSource._shared_image_cache
diff --git a/lib/cartopy/tests/mpl/test_crs.py b/lib/cartopy/tests/mpl/test_crs.py
index d0099fa..9076e38 100644
--- a/lib/cartopy/tests/mpl/test_crs.py
+++ b/lib/cartopy/tests/mpl/test_crs.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2013 - 2017, Met Office
+# (C) British Crown Copyright 2013 - 2018, Met Office
#
# This file is part of cartopy.
#
@@ -18,11 +18,13 @@
from __future__ import (absolute_import, division, print_function)
import matplotlib.pyplot as plt
+import pytest
import cartopy.crs as ccrs
from cartopy.tests.mpl import ImageTesting
+@pytest.mark.natural_earth
@ImageTesting(['lambert_conformal_south'])
def test_lambert_south():
# Reference image: http://www.icsm.gov.au/mapping/map_projections.html
@@ -33,6 +35,7 @@ def test_lambert_south():
ax.gridlines()
+@pytest.mark.natural_earth
@ImageTesting(['mercator_squashed'])
def test_mercator_squashed():
globe = ccrs.Globe(semimajor_axis=10000, semiminor_axis=9000,
diff --git a/lib/cartopy/tests/mpl/test_examples.py b/lib/cartopy/tests/mpl/test_examples.py
index 59fd1f5..db689e0 100644
--- a/lib/cartopy/tests/mpl/test_examples.py
+++ b/lib/cartopy/tests/mpl/test_examples.py
@@ -18,6 +18,7 @@
from __future__ import (absolute_import, division, print_function)
import matplotlib.pyplot as plt
+import pytest
from cartopy.tests.mpl import MPL_VERSION, ImageTesting
@@ -40,6 +41,7 @@ class ExampleImageTesting(ImageTesting):
return new_fn
+@pytest.mark.natural_earth
@ExampleImageTesting(['global_map'],
tolerance=4 if MPL_VERSION < '2' else 0)
def test_global_map():
diff --git a/lib/cartopy/tests/mpl/test_features.py b/lib/cartopy/tests/mpl/test_features.py
index c675a3b..250e3db 100644
--- a/lib/cartopy/tests/mpl/test_features.py
+++ b/lib/cartopy/tests/mpl/test_features.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2011 - 2017, Met Office
+# (C) British Crown Copyright 2011 - 2018, Met Office
#
# This file is part of cartopy.
#
@@ -27,6 +27,7 @@ from cartopy.io.ogc_clients import _OWSLIB_AVAILABLE
from cartopy.tests.mpl import MPL_VERSION, ImageTesting
+@pytest.mark.natural_earth
@ImageTesting(['natural_earth'])
def test_natural_earth():
ax = plt.axes(projection=ccrs.PlateCarree())
@@ -40,6 +41,7 @@ def test_natural_earth():
ax.set_ylim((-40, 40))
+@pytest.mark.natural_earth
@ImageTesting(['natural_earth_custom'])
def test_natural_earth_custom():
ax = plt.axes(projection=ccrs.PlateCarree())
@@ -65,6 +67,7 @@ def test_gshhs():
facecolor='green'), facecolor='blue')
+@pytest.mark.network
@pytest.mark.skipif(not _OWSLIB_AVAILABLE, reason='OWSLib is unavailable.')
@ImageTesting(['wfs'])
def test_wfs():
diff --git a/lib/cartopy/tests/mpl/test_gridliner.py b/lib/cartopy/tests/mpl/test_gridliner.py
index d59e639..9fbeba7 100644
--- a/lib/cartopy/tests/mpl/test_gridliner.py
+++ b/lib/cartopy/tests/mpl/test_gridliner.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2011 - 2017, Met Office
+# (C) British Crown Copyright 2011 - 2018, Met Office
#
# This file is part of cartopy.
#
@@ -33,6 +33,7 @@ from cartopy.mpl.gridliner import LATITUDE_FORMATTER, LONGITUDE_FORMATTER
from cartopy.tests.mpl import MPL_VERSION, ImageTesting
+@pytest.mark.natural_earth
@ImageTesting(['gridliner1'])
def test_gridliner():
ny, nx = 2, 4
@@ -112,6 +113,7 @@ else:
grid_label_image = 'gridliner_labels_pre_mpl_1.5'
+@pytest.mark.natural_earth
@ImageTesting([grid_label_image])
def test_grid_labels():
plt.figure(figsize=(8, 10))
diff --git a/lib/cartopy/tests/mpl/test_images.py b/lib/cartopy/tests/mpl/test_images.py
index b705c8d..105ee80 100644
--- a/lib/cartopy/tests/mpl/test_images.py
+++ b/lib/cartopy/tests/mpl/test_images.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2011 - 2017, Met Office
+# (C) British Crown Copyright 2011 - 2018, Met Office
#
# This file is part of cartopy.
#
@@ -23,6 +23,7 @@ import types
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
+import pytest
import shapely.geometry as sgeom
from cartopy import config
@@ -43,6 +44,8 @@ REGIONAL_IMG = os.path.join(config['repo_data_dir'], 'raster', 'sample',
# We have an exceptionally large tolerance for the web_tiles test.
# The basemap changes on a regular basis (for seasons) and we really only
# care that it is putting images onto the map which are roughly correct.
+@pytest.mark.natural_earth
+@pytest.mark.network
@ImageTesting(['web_tiles'],
tolerance=12 if MPL_VERSION < '2' else 2.9)
def test_web_tiles():
@@ -78,6 +81,8 @@ def test_web_tiles():
ax.coastlines()
+@pytest.mark.natural_earth
+@pytest.mark.network
@ImageTesting(['image_merge'],
tolerance=3.6 if MPL_VERSION < '2' else 0)
def test_image_merge():
@@ -118,6 +123,7 @@ def test_imshow():
extent=[-180, 180, -90, 90])
+@pytest.mark.natural_earth
@ImageTesting(['imshow_regional_projected'],
tolerance=10.4 if MPL_VERSION < '2' else 0)
def test_imshow_projected():
diff --git a/lib/cartopy/tests/mpl/test_img_transform.py b/lib/cartopy/tests/mpl/test_img_transform.py
index d966cc8..3b53c0a 100644
--- a/lib/cartopy/tests/mpl/test_img_transform.py
+++ b/lib/cartopy/tests/mpl/test_img_transform.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2011 - 2017, Met Office
+# (C) British Crown Copyright 2011 - 2018, Met Office
#
# This file is part of cartopy.
#
@@ -101,6 +101,7 @@ else:
regrid_tolerance = 0
+@pytest.mark.natural_earth
@ImageTesting(['regrid_image'],
tolerance=regrid_tolerance)
def test_regrid_image():
diff --git a/lib/cartopy/tests/mpl/test_mpl_integration.py b/lib/cartopy/tests/mpl/test_mpl_integration.py
index 1fe91f8..681c9bc 100644
--- a/lib/cartopy/tests/mpl/test_mpl_integration.py
+++ b/lib/cartopy/tests/mpl/test_mpl_integration.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2011 - 2017, Met Office
+# (C) British Crown Copyright 2011 - 2018, Met Office
#
# This file is part of cartopy.
#
@@ -23,6 +23,7 @@ import warnings
import numpy as np
import matplotlib.pyplot as plt
+import pytest
import six
import cartopy.crs as ccrs
@@ -41,6 +42,7 @@ else:
_STREAMPLOT_IMAGE = 'streamplot_pre_mpl_1.4.3'
+@pytest.mark.natural_earth
@ImageTesting(['global_contour_wrap'])
def test_global_contour_wrap_new_transform():
ax = plt.axes(projection=ccrs.PlateCarree())
@@ -50,6 +52,7 @@ def test_global_contour_wrap_new_transform():
plt.contour(x, y, data, transform=ccrs.PlateCarree())
+@pytest.mark.natural_earth
@ImageTesting(['global_contour_wrap'])
def test_global_contour_wrap_no_transform():
ax = plt.axes(projection=ccrs.PlateCarree())
@@ -59,6 +62,7 @@ def test_global_contour_wrap_no_transform():
plt.contour(x, y, data)
+@pytest.mark.natural_earth
@ImageTesting(['global_contourf_wrap'])
def test_global_contourf_wrap_new_transform():
ax = plt.axes(projection=ccrs.PlateCarree())
@@ -68,6 +72,7 @@ def test_global_contourf_wrap_new_transform():
plt.contourf(x, y, data, transform=ccrs.PlateCarree())
+@pytest.mark.natural_earth
@ImageTesting(['global_contourf_wrap'])
def test_global_contourf_wrap_no_transform():
ax = plt.axes(projection=ccrs.PlateCarree())
@@ -82,6 +87,7 @@ global_pcolor_wrap = ('global_pcolor_wrap'
'global_pcolor_wrap_pre_mpl_1.4.3')
+@pytest.mark.natural_earth
@ImageTesting([global_pcolor_wrap])
def test_global_pcolor_wrap_new_transform():
ax = plt.axes(projection=ccrs.PlateCarree())
@@ -91,6 +97,7 @@ def test_global_pcolor_wrap_new_transform():
plt.pcolor(x, y, data, transform=ccrs.PlateCarree())
+@pytest.mark.natural_earth
@ImageTesting([global_pcolor_wrap])
def test_global_pcolor_wrap_no_transform():
ax = plt.axes(projection=ccrs.PlateCarree())
@@ -100,6 +107,7 @@ def test_global_pcolor_wrap_no_transform():
plt.pcolor(x, y, data)
+@pytest.mark.natural_earth
@ImageTesting(['global_scatter_wrap'])
def test_global_scatter_wrap_new_transform():
ax = plt.axes(projection=ccrs.PlateCarree())
@@ -112,6 +120,7 @@ def test_global_scatter_wrap_new_transform():
plt.scatter(x, y, c=data, transform=ccrs.PlateCarree())
+@pytest.mark.natural_earth
@ImageTesting(['global_scatter_wrap'])
def test_global_scatter_wrap_no_transform():
ax = plt.axes(projection=ccrs.PlateCarree())
@@ -137,6 +146,7 @@ def test_global_map():
transform=ccrs.Geodetic())
+@pytest.mark.natural_earth
@ImageTesting(['simple_global'])
def test_simple_global():
plt.axes(projection=ccrs.PlateCarree())
@@ -144,6 +154,7 @@ def test_simple_global():
# produces a global map, despite not having needed to set the limits
+@pytest.mark.natural_earth
@ImageTesting(['multiple_projections1'])
def test_multiple_projections():
@@ -206,6 +217,7 @@ def test_cursor_values():
plt.close()
+@pytest.mark.natural_earth
@ImageTesting(['natural_earth_interface'], tolerance=_ROB_TOL)
def test_axes_natural_earth_interface():
rob = ccrs.Robinson()
@@ -226,6 +238,7 @@ def test_axes_natural_earth_interface():
assert 'add_feature' in msg
+@pytest.mark.natural_earth
@ImageTesting(['pcolormesh_global_wrap1'])
def test_pcolormesh_global_with_wrap1():
# make up some realistic data with bounds (such as data from the UM)
@@ -248,6 +261,7 @@ def test_pcolormesh_global_with_wrap1():
ax.set_global() # make sure everything is visible
+@pytest.mark.natural_earth
@ImageTesting(['pcolormesh_global_wrap2'])
def test_pcolormesh_global_with_wrap2():
# make up some realistic data with bounds (such as data from the UM)
@@ -274,6 +288,7 @@ def test_pcolormesh_global_with_wrap2():
ax.set_global() # make sure everything is visible
+@pytest.mark.natural_earth
@ImageTesting(['pcolormesh_global_wrap3'], tolerance=_ROB_TOL)
def test_pcolormesh_global_with_wrap3():
nx, ny = 33, 17
@@ -311,6 +326,7 @@ def test_pcolormesh_global_with_wrap3():
ax.set_global() # make sure everything is visible
+@pytest.mark.natural_earth
@ImageTesting(['pcolormesh_limited_area_wrap'],
tolerance=1.41 if MPL_VERSION >= '2.1.0' else 0.7)
def test_pcolormesh_limited_area_wrap():
@@ -349,6 +365,7 @@ def test_pcolormesh_limited_area_wrap():
ax.coastlines()
+@pytest.mark.natural_earth
@ImageTesting(['pcolormesh_single_column_wrap'], tolerance=0.7)
def test_pcolormesh_single_column_wrap():
# Check a wrapped mesh like test_pcolormesh_limited_area_wrap, but only use
@@ -371,6 +388,7 @@ def test_pcolormesh_single_column_wrap():
ax.set_global()
+@pytest.mark.natural_earth
@ImageTesting(['pcolormesh_goode_wrap'])
def test_pcolormesh_goode_wrap():
# global data on an Interrupted Goode Homolosine projection
@@ -385,6 +403,7 @@ def test_pcolormesh_goode_wrap():
ax.pcolormesh(x, y, Z, transform=ccrs.PlateCarree())
+@pytest.mark.natural_earth
@ImageTesting(['pcolormesh_mercator_wrap'])
def test_pcolormesh_mercator_wrap():
x = np.linspace(0, 360, 73)
@@ -397,6 +416,7 @@ def test_pcolormesh_mercator_wrap():
ax.pcolormesh(x, y, Z, transform=ccrs.PlateCarree())
+@pytest.mark.natural_earth
@ImageTesting(['quiver_plate_carree'])
def test_quiver_plate_carree():
x = np.arange(-60, 42.5, 2.5)
@@ -419,6 +439,7 @@ def test_quiver_plate_carree():
ax.quiver(x, y, u, v, mag, transform=ccrs.PlateCarree())
+@pytest.mark.natural_earth
@ImageTesting(['quiver_rotated_pole'])
def test_quiver_rotated_pole():
nx, ny = 22, 36
@@ -443,6 +464,7 @@ def test_quiver_rotated_pole():
ax.quiver(x, y, u, v, mag, transform=rp)
+@pytest.mark.natural_earth
@ImageTesting(['quiver_regrid'])
def test_quiver_regrid():
x = np.arange(-60, 42.5, 2.5)
@@ -460,6 +482,7 @@ def test_quiver_regrid():
regrid_shape=30)
+@pytest.mark.natural_earth
@ImageTesting(['quiver_regrid_with_extent'])
def test_quiver_regrid_with_extent():
x = np.arange(-60, 42.5, 2.5)
@@ -478,6 +501,7 @@ def test_quiver_regrid_with_extent():
regrid_shape=10, target_extent=target_extent)
+@pytest.mark.natural_earth
@ImageTesting(['barbs_plate_carree'])
def test_barbs():
x = np.arange(-60, 45, 5)
@@ -499,6 +523,7 @@ def test_barbs():
ax.barbs(x, y, u, v, transform=ccrs.PlateCarree(), length=4, linewidth=.25)
+@pytest.mark.natural_earth
@ImageTesting(['barbs_regrid'])
def test_barbs_regrid():
x = np.arange(-60, 42.5, 2.5)
@@ -516,6 +541,7 @@ def test_barbs_regrid():
length=4, linewidth=.4, regrid_shape=20)
+@pytest.mark.natural_earth
@ImageTesting(['barbs_regrid_with_extent'])
def test_barbs_regrid_with_extent():
x = np.arange(-60, 42.5, 2.5)
@@ -535,6 +561,7 @@ def test_barbs_regrid_with_extent():
target_extent=target_extent)
+@pytest.mark.natural_earth
@ImageTesting(['barbs_1d'])
def test_barbs_1d():
x = np.array([20., 30., -17., 15.])
@@ -550,6 +577,7 @@ def test_barbs_1d():
length=8, linewidth=1, color='#7f7f7f')
+@pytest.mark.natural_earth
@ImageTesting(['barbs_1d_transformed'])
def test_barbs_1d_transformed():
x = np.array([20., 30., -17., 15.])
@@ -565,6 +593,7 @@ def test_barbs_1d_transformed():
length=8, linewidth=1, color='#7f7f7f')
+@pytest.mark.natural_earth
@ImageTesting([_STREAMPLOT_IMAGE])
def test_streamplot():
x = np.arange(-60, 42.5, 2.5)
diff --git a/lib/cartopy/tests/mpl/test_shapely_to_mpl.py b/lib/cartopy/tests/mpl/test_shapely_to_mpl.py
index f9146ae..f46dde3 100644
--- a/lib/cartopy/tests/mpl/test_shapely_to_mpl.py
+++ b/lib/cartopy/tests/mpl/test_shapely_to_mpl.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2011 - 2017, Met Office
+# (C) British Crown Copyright 2011 - 2018, Met Office
#
# This file is part of cartopy.
#
@@ -22,6 +22,7 @@ import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
from matplotlib.collections import PatchCollection
from matplotlib.path import Path
+import pytest
import shapely.geometry as sgeom
import cartopy.crs as ccrs
@@ -30,6 +31,7 @@ import cartopy.mpl.patch as cpatch
from cartopy.tests.mpl import MPL_VERSION, ImageTesting
+@pytest.mark.natural_earth
@ImageTesting(['poly_interiors'
if MPL_VERSION >= '1.5' else
'poly_interiors_pre_mpl_1.5'])
@@ -83,6 +85,7 @@ def test_polygon_interiors():
ax.add_collection(collection)
+@pytest.mark.natural_earth
@ImageTesting(['contour_with_interiors'])
def test_contour_interiors():
# produces a polygon with multiple holes:
diff --git a/lib/cartopy/tests/mpl/test_ticks.py b/lib/cartopy/tests/mpl/test_ticks.py
index 3ec6844..1397f19 100644
--- a/lib/cartopy/tests/mpl/test_ticks.py
+++ b/lib/cartopy/tests/mpl/test_ticks.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2011 - 2017, Met Office
+# (C) British Crown Copyright 2011 - 2018, Met Office
#
# This file is part of cartopy.
#
@@ -61,6 +61,7 @@ else:
ticks_tolerance = 0.5
+@pytest.mark.natural_earth
@ImageTesting(['xticks_no_transform' + test_fn_suffix],
tolerance=ticks_tolerance)
def test_set_xticks_no_transform():
@@ -72,6 +73,7 @@ def test_set_xticks_no_transform():
ax.set_xticks([-135, -45, 45, 135], minor=True)
+@pytest.mark.natural_earth
@ImageTesting(['xticks_cylindrical' + test_fn_suffix],
tolerance=ticks_tolerance)
def test_set_xticks_cylindrical():
@@ -95,6 +97,7 @@ def test_set_xticks_non_cylindrical():
plt.close()
+@pytest.mark.natural_earth
@ImageTesting(['yticks_no_transform' + test_fn_suffix],
tolerance=ticks_tolerance)
def test_set_yticks_no_transform():
@@ -106,6 +109,7 @@ def test_set_yticks_no_transform():
ax.set_yticks([-75, -45, 15, 45, 75], minor=True)
+@pytest.mark.natural_earth
@ImageTesting(['yticks_cylindrical' + test_fn_suffix],
tolerance=ticks_tolerance)
def test_set_yticks_cylindrical():
@@ -129,6 +133,7 @@ def test_set_yticks_non_cylindrical():
plt.close()
+@pytest.mark.natural_earth
@ImageTesting(['xyticks' + test_fn_suffix], tolerance=ticks_tolerance)
def test_set_xyticks():
fig = plt.figure(figsize=(10, 10))
diff --git a/lib/cartopy/tests/mpl/test_web_services.py b/lib/cartopy/tests/mpl/test_web_services.py
index 1f50868..07aae88 100644
--- a/lib/cartopy/tests/mpl/test_web_services.py
+++ b/lib/cartopy/tests/mpl/test_web_services.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2014 - 2017, Met Office
+# (C) British Crown Copyright 2014 - 2018, Met Office
#
# This file is part of cartopy.
#
@@ -25,6 +25,7 @@ import cartopy.crs as ccrs
from cartopy.io.ogc_clients import _OWSLIB_AVAILABLE
+@pytest.mark.network
@pytest.mark.skipif(not _OWSLIB_AVAILABLE, reason='OWSLib is unavailable.')
@ImageTesting(['wmts'], tolerance=7.56 if MPL_VERSION < '2' else 0)
def test_wmts():
@@ -34,6 +35,7 @@ def test_wmts():
ax.add_wmts(url, 'MODIS_Water_Mask')
+@pytest.mark.network
@pytest.mark.skipif(not _OWSLIB_AVAILABLE, reason='OWSLib is unavailable.')
@ImageTesting(['wms'], tolerance=7.76 if MPL_VERSION < '2' else 0)
def test_wms():
diff --git a/lib/cartopy/tests/test_coastline.py b/lib/cartopy/tests/test_coastline.py
index 7c995cb..d1eb76d 100644
--- a/lib/cartopy/tests/test_coastline.py
+++ b/lib/cartopy/tests/test_coastline.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2011 - 2017, Met Office
+# (C) British Crown Copyright 2011 - 2018, Met Office
#
# This file is part of cartopy.
#
@@ -17,14 +17,17 @@
from __future__ import (absolute_import, division, print_function)
+import pytest
+
import cartopy
import cartopy.io.shapereader as shp
-COASTLINE_PATH = shp.natural_earth()
-
+@pytest.mark.natural_earth
class TestCoastline(object):
def test_robust(self):
+ COASTLINE_PATH = shp.natural_earth()
+
# Make sure all the coastlines can be projected without raising any
# exceptions.
projection = cartopy.crs.TransverseMercator(central_longitude=-90)
diff --git a/lib/cartopy/tests/test_coding_standards.py b/lib/cartopy/tests/test_coding_standards.py
index 0b0f1de..cfa1cd8 100644
--- a/lib/cartopy/tests/test_coding_standards.py
+++ b/lib/cartopy/tests/test_coding_standards.py
@@ -24,6 +24,8 @@ import os
import re
import subprocess
+import pytest
+
import cartopy
@@ -133,8 +135,8 @@ class TestLicenseHeaders(object):
last_change_by_fname = self.last_change_by_fname()
except ValueError as e:
# Caught the case where this is not a git repo.
- return self.skipTest('cartopy installation did not look like a '
- 'git repo: ' + str(e))
+ return pytest.skip('cartopy installation did not look like a git '
+ 'repo: ' + str(e))
failed = False
for fname, last_change in sorted(last_change_by_fname.items()):
diff --git a/lib/cartopy/tests/test_crs.py b/lib/cartopy/tests/test_crs.py
index a9dc3ff..b54463c 100644
--- a/lib/cartopy/tests/test_crs.py
+++ b/lib/cartopy/tests/test_crs.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2011 - 2017, Met Office
+# (C) British Crown Copyright 2011 - 2018, Met Office
#
# This file is part of cartopy.
#
@@ -85,6 +85,7 @@ class TestCRS(object):
def test_osgb(self):
self._check_osgb(ccrs.OSGB())
+ @pytest.mark.network
@pytest.mark.skipif(pyepsg is None, reason='requires pyepsg')
def test_epsg(self):
uk = ccrs.epsg(27700)
diff --git a/lib/cartopy/tests/test_img_nest.py b/lib/cartopy/tests/test_img_nest.py
index aac87dd..97ee401 100644
--- a/lib/cartopy/tests/test_img_nest.py
+++ b/lib/cartopy/tests/test_img_nest.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2011 - 2017, Met Office
+# (C) British Crown Copyright 2011 - 2018, Met Office
#
# This file is part of cartopy.
#
@@ -219,6 +219,7 @@ class RoundedImg(cimg_nest.Img):
@pytest.mark.xfail(reason='MapQuest is unavailable')
+@pytest.mark.network
def test_nest(nest_from_config):
crs = cimgt.GoogleTiles().crs
z0 = cimg_nest.ImageCollection('aerial z0 test', crs)
@@ -365,6 +366,7 @@ def wmts_data():
@pytest.mark.xfail(reason='MapQuest is unavailable')
+@pytest.mark.network
def test_find_images(wmts_data):
z2_dir = os.path.join(_TEST_DATA_DIR, 'z_2')
img_fname = os.path.join(z2_dir, 'x_2_y_0.png')
diff --git a/lib/cartopy/tests/test_img_tiles.py b/lib/cartopy/tests/test_img_tiles.py
index 11efda5..9af3cc9 100644
--- a/lib/cartopy/tests/test_img_tiles.py
+++ b/lib/cartopy/tests/test_img_tiles.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2011 - 2017, Met Office
+# (C) British Crown Copyright 2011 - 2018, Met Office
#
# This file is part of cartopy.
#
@@ -141,6 +141,7 @@ def test_tile_find_images():
[(7, 4, 4), (7, 5, 4), (8, 4, 4), (8, 5, 4)])
+@pytest.mark.network
def test_image_for_domain():
gt = cimgt.GoogleTiles()
gt._image_url = types.MethodType(GOOGLE_IMAGE_URL_REPLACEMENT, gt)
diff --git a/lib/cartopy/tests/test_shapereader.py b/lib/cartopy/tests/test_shapereader.py
index 0e17fac..895721a 100644
--- a/lib/cartopy/tests/test_shapereader.py
+++ b/lib/cartopy/tests/test_shapereader.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2011 - 2017, Met Office
+# (C) British Crown Copyright 2011 - 2018, Met Office
#
# This file is part of cartopy.
#
@@ -19,20 +19,17 @@ from __future__ import (absolute_import, division, print_function)
import numpy as np
from numpy.testing import assert_array_almost_equal
+import pytest
import cartopy.io.shapereader as shp
-LAKES_PATH = shp.natural_earth(resolution='110m',
- category='physical',
- name='lakes')
-RIVERS_PATH = shp.natural_earth(resolution='110m',
- category='physical',
- name='rivers_lake_centerlines')
-
-
+@pytest.mark.natural_earth
class TestLakes(object):
def setup_class(self):
+ LAKES_PATH = shp.natural_earth(resolution='110m',
+ category='physical',
+ name='lakes')
self.reader = shp.Reader(LAKES_PATH)
names = [record.attributes['name'] for record in self.reader.records()]
# Choose a nice small lake
@@ -83,8 +80,12 @@ class TestLakes(object):
'The geometry was loaded in order to create the bounds.'
+@pytest.mark.natural_earth
class TestRivers(object):
def setup_class(self):
+ RIVERS_PATH = shp.natural_earth(resolution='110m',
+ category='physical',
+ name='rivers_lake_centerlines')
self.reader = shp.Reader(RIVERS_PATH)
names = [record.attributes['name'] for record in self.reader.records()]
# Choose a nice small river
diff --git a/lib/cartopy/util.py b/lib/cartopy/util.py
index ec181ba..0725e8d 100644
--- a/lib/cartopy/util.py
+++ b/lib/cartopy/util.py
@@ -56,26 +56,33 @@ def add_cyclic_point(data, coord=None, axis=-1):
Adding a cyclic point to a data array, where the cyclic dimension is
the right-most dimension
+ .. testsetup::
+ >>> from distutils.version import LooseVersion
+ >>> import numpy as np
+ >>> if LooseVersion(np.__version__) >= '1.14.0':
+ ... # To provide consistent doctests.
+ ... np.set_printoptions(legacy='1.13')
+
>>> import numpy as np
>>> data = np.ones([5, 6]) * np.arange(6)
>>> cyclic_data = add_cyclic_point(data)
- >>> print(cyclic_data)
- [[0. 1. 2. 3. 4. 5. 0.]
- [0. 1. 2. 3. 4. 5. 0.]
- [0. 1. 2. 3. 4. 5. 0.]
- [0. 1. 2. 3. 4. 5. 0.]
- [0. 1. 2. 3. 4. 5. 0.]]
+ >>> print(cyclic_data) # doctest: +NORMALIZE_WHITESPACE
+ [[ 0. 1. 2. 3. 4. 5. 0.]
+ [ 0. 1. 2. 3. 4. 5. 0.]
+ [ 0. 1. 2. 3. 4. 5. 0.]
+ [ 0. 1. 2. 3. 4. 5. 0.]
+ [ 0. 1. 2. 3. 4. 5. 0.]]
Adding a cyclic point to a data array and an associated coordinate
>>> lons = np.arange(0, 360, 60)
>>> cyclic_data, cyclic_lons = add_cyclic_point(data, coord=lons)
- >>> print(cyclic_data)
- [[0. 1. 2. 3. 4. 5. 0.]
- [0. 1. 2. 3. 4. 5. 0.]
- [0. 1. 2. 3. 4. 5. 0.]
- [0. 1. 2. 3. 4. 5. 0.]
- [0. 1. 2. 3. 4. 5. 0.]]
+ >>> print(cyclic_data) # doctest: +NORMALIZE_WHITESPACE
+ [[ 0. 1. 2. 3. 4. 5. 0.]
+ [ 0. 1. 2. 3. 4. 5. 0.]
+ [ 0. 1. 2. 3. 4. 5. 0.]
+ [ 0. 1. 2. 3. 4. 5. 0.]
+ [ 0. 1. 2. 3. 4. 5. 0.]]
>>> print(cyclic_lons)
[ 0 60 120 180 240 300 360]
--
2.14.3

View file

@ -0,0 +1,26 @@
From e3a61e272d5ab58a2b8f13c6ad05d1136d3a5ecc Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Thu, 25 Apr 2024 16:35:29 -0400
Subject: [PATCH 1/2] Reduce numpy build dependency
Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
---
pyproject.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pyproject.toml b/pyproject.toml
index f0172aac..4e012ede 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -9,7 +9,7 @@ requires = [
# Note that building against numpy 1.x works fine too - users and
# redistributors can do this by installing the numpy version they like and
# disabling build isolation.
- "numpy>=2.0.0",
+ "numpy>=1.23",
"setuptools_scm >= 8.0.0",
]
build-backend = "setuptools.build_meta"
--
2.50.0

View file

@ -0,0 +1,170 @@
From d3d4e7a80ded257b3094d837e5133b199989b460 Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Mon, 26 Feb 2018 02:42:50 -0500
Subject: [PATCH 2/2] Increase tolerance for new FreeType
Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
---
lib/cartopy/tests/mpl/test_examples.py | 2 +-
lib/cartopy/tests/mpl/test_gridliner.py | 19 +++++++------------
lib/cartopy/tests/mpl/test_mpl_integration.py | 2 +-
lib/cartopy/tests/mpl/test_ticks.py | 14 +++++++++-----
4 files changed, 18 insertions(+), 19 deletions(-)
diff --git a/lib/cartopy/tests/mpl/test_examples.py b/lib/cartopy/tests/mpl/test_examples.py
index a7f64ac9..404d3d83 100644
--- a/lib/cartopy/tests/mpl/test_examples.py
+++ b/lib/cartopy/tests/mpl/test_examples.py
@@ -37,7 +37,7 @@ def test_global_map():
@pytest.mark.natural_earth
@pytest.mark.mpl_image_compare(
- filename='contour_label.png', tolerance=3.9 if _MPL_38 else 0.5)
+ filename='contour_label.png', tolerance=11.2 if _MPL_38 else 0.5)
def test_contour_label():
from cartopy.tests.mpl.test_caching import sample_data
fig = plt.figure()
diff --git a/lib/cartopy/tests/mpl/test_gridliner.py b/lib/cartopy/tests/mpl/test_gridliner.py
index 66144070..3ff88139 100644
--- a/lib/cartopy/tests/mpl/test_gridliner.py
+++ b/lib/cartopy/tests/mpl/test_gridliner.py
@@ -130,15 +130,10 @@ def test_gridliner_specified_lines():
assert gl.ylocator.tick_values(None, None).tolist() == parallels
-# The tolerance on these tests are particularly high because of the high number
-# of text objects. A new testing strategy is needed for this kind of test.
-grid_label_tol = 3.9
-
-
@pytest.mark.skipif(geos_version == (3, 9, 0), reason="GEOS intersection bug")
@pytest.mark.natural_earth
@pytest.mark.mpl_image_compare(filename='gridliner_labels.png',
- tolerance=grid_label_tol)
+ tolerance=15.2)
def test_grid_labels():
fig = plt.figure(figsize=(10, 10))
@@ -211,7 +206,7 @@ def test_grid_labels():
@pytest.mark.skipif(geos_version == (3, 9, 0), reason="GEOS intersection bug")
@pytest.mark.natural_earth
@pytest.mark.mpl_image_compare(filename='gridliner_labels_tight.png',
- tolerance=2.9)
+ tolerance=47.1)
def test_grid_labels_tight():
# Ensure tight layout accounts for gridlines
fig = plt.figure(figsize=(7, 5))
@@ -259,7 +254,7 @@ def test_grid_labels_tight():
@pytest.mark.mpl_image_compare(
filename='gridliner_constrained_adjust_datalim.png',
- tolerance=grid_label_tol)
+ tolerance=46.5)
def test_gridliner_constrained_adjust_datalim():
fig = plt.figure(figsize=(8, 4), layout="constrained")
@@ -293,7 +288,7 @@ def test_gridliner_constrained_adjust_datalim():
@pytest.mark.skipif(geos_version == (3, 9, 0), reason="GEOS intersection bug")
@pytest.mark.natural_earth
@pytest.mark.parametrize('proj', TEST_PROJS)
-@pytest.mark.mpl_image_compare(style='mpl20')
+@pytest.mark.mpl_image_compare(style='mpl20', tolerance=8.36)
def test_grid_labels_inline(proj):
fig = plt.figure()
if isinstance(proj, tuple):
@@ -309,7 +304,7 @@ def test_grid_labels_inline(proj):
@pytest.mark.skipif(geos_version == (3, 9, 0), reason="GEOS intersection bug")
@pytest.mark.natural_earth
@pytest.mark.parametrize('proj', TEST_PROJS)
-@pytest.mark.mpl_image_compare(style='mpl20', tolerance=0.79)
+@pytest.mark.mpl_image_compare(style='mpl20', tolerance=7.76)
def test_grid_labels_inline_usa(proj):
top = 49.3457868 # north lat
left = -124.7844079 # west long
@@ -334,7 +329,7 @@ def test_grid_labels_inline_usa(proj):
@pytest.mark.natural_earth
@pytest.mark.skipif(geos_version == (3, 9, 0), reason="GEOS intersection bug")
@pytest.mark.mpl_image_compare(filename='gridliner_labels_bbox_style.png',
- tolerance=grid_label_tol)
+ tolerance=41.5)
def test_gridliner_labels_bbox_style():
top = 49.3457868 # north lat
left = -124.7844079 # west long
@@ -521,7 +516,7 @@ def test_gridliner_save_tight_bbox():
@pytest.mark.natural_earth
@pytest.mark.mpl_image_compare(filename='gridliner_labels_title_adjust.png',
- tolerance=grid_label_tol)
+ tolerance=61.3)
def test_gridliner_title_adjust():
# Test that title do not overlap labels
projs = [ccrs.Mercator(), ccrs.AlbersEqualArea(), ccrs.LambertConformal(),
diff --git a/lib/cartopy/tests/mpl/test_mpl_integration.py b/lib/cartopy/tests/mpl/test_mpl_integration.py
index f1aeccdf..78866085 100644
--- a/lib/cartopy/tests/mpl/test_mpl_integration.py
+++ b/lib/cartopy/tests/mpl/test_mpl_integration.py
@@ -1016,7 +1016,7 @@ def test_streamplot():
@pytest.mark.natural_earth
-@pytest.mark.mpl_image_compare()
+@pytest.mark.mpl_image_compare(tolerance=3.96)
def test_annotate():
""" test a variety of annotate options on multiple projections
diff --git a/lib/cartopy/tests/mpl/test_ticks.py b/lib/cartopy/tests/mpl/test_ticks.py
index f75ad2d2..bc0ba0b7 100644
--- a/lib/cartopy/tests/mpl/test_ticks.py
+++ b/lib/cartopy/tests/mpl/test_ticks.py
@@ -10,7 +10,8 @@ from cartopy.mpl.ticker import LatitudeFormatter, LongitudeFormatter
@pytest.mark.natural_earth
-@pytest.mark.mpl_image_compare(filename='xticks_no_transform.png')
+@pytest.mark.mpl_image_compare(filename='xticks_no_transform.png',
+ tolerance=6.71)
def test_set_xticks_no_transform():
ax = plt.axes(projection=ccrs.PlateCarree())
ax.coastlines('110m')
@@ -21,7 +22,8 @@ def test_set_xticks_no_transform():
@pytest.mark.natural_earth
-@pytest.mark.mpl_image_compare(filename='xticks_cylindrical.png')
+@pytest.mark.mpl_image_compare(filename='xticks_cylindrical.png',
+ tolerance=7.13)
def test_set_xticks_cylindrical():
ax = plt.axes(projection=ccrs.Mercator(min_latitude=-85, max_latitude=85))
ax.coastlines('110m')
@@ -40,7 +42,8 @@ def test_set_xticks_non_cylindrical():
@pytest.mark.natural_earth
-@pytest.mark.mpl_image_compare(filename='yticks_no_transform.png')
+@pytest.mark.mpl_image_compare(filename='yticks_no_transform.png',
+ tolerance=3.75)
def test_set_yticks_no_transform():
ax = plt.axes(projection=ccrs.PlateCarree())
ax.coastlines('110m')
@@ -51,7 +54,8 @@ def test_set_yticks_no_transform():
@pytest.mark.natural_earth
-@pytest.mark.mpl_image_compare(filename='yticks_cylindrical.png')
+@pytest.mark.mpl_image_compare(filename='yticks_cylindrical.png',
+ tolerance=4.37)
def test_set_yticks_cylindrical():
ax = plt.axes(projection=ccrs.Mercator(min_latitude=-85, max_latitude=85))
ax.coastlines('110m')
@@ -72,7 +76,7 @@ def test_set_yticks_non_cylindrical():
@pytest.mark.natural_earth
-@pytest.mark.mpl_image_compare(filename='xyticks.png')
+@pytest.mark.mpl_image_compare(filename='xyticks.png', tolerance=7.19)
def test_set_xyticks():
fig = plt.figure(figsize=(10, 10))
projections = (ccrs.PlateCarree(),
--
2.50.0

View file

@ -1,46 +0,0 @@
From 21375d8f3488af5d405f5dbba7340cb20a22432b Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Wed, 21 Feb 2018 23:47:09 -0500
Subject: [PATCH 2/7] Skip doctest that uses the network.
Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
---
lib/cartopy/io/shapereader.py | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/lib/cartopy/io/shapereader.py b/lib/cartopy/io/shapereader.py
index f857b38..fae9367 100644
--- a/lib/cartopy/io/shapereader.py
+++ b/lib/cartopy/io/shapereader.py
@@ -24,19 +24,20 @@ geometry representation of shapely:
>>> filename = natural_earth(resolution='110m',
... category='physical',
... name='geography_regions_points')
- >>> reader = shapereader.Reader(filename)
- >>> len(reader)
+ ... # doctest: +SKIP
+ >>> reader = shapereader.Reader(filename) # doctest: +SKIP
+ >>> len(reader) # doctest: +SKIP
3
- >>> records = list(reader.records())
- >>> print(type(records[0]))
+ >>> records = list(reader.records()) # doctest: +SKIP
+ >>> print(type(records[0])) # doctest: +SKIP
<class 'cartopy.io.shapereader.Record'>
- >>> print(sorted(records[0].attributes.keys()))
+ >>> print(sorted(records[0].attributes.keys())) # doctest: +SKIP
['comment', 'featurecla', 'lat_y', 'long_x', 'min_zoom', 'name', \
'name_alt', 'region', 'scalerank', 'subregion']
- >>> print(records[0].attributes['name'])
+ >>> print(records[0].attributes['name']) # doctest: +SKIP
Niagara Falls
- >>> geoms = list(reader.geometries())
- >>> print(type(geoms[0]))
+ >>> geoms = list(reader.geometries()) # doctest: +SKIP
+ >>> print(type(geoms[0])) # doctest: +SKIP
<class 'shapely.geometry.point.Point'>
"""
--
2.14.3

View file

@ -1,36 +0,0 @@
From 4c3cc0ec55edb54de25174e1c534cd7c03281954 Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Fri, 23 Feb 2018 02:09:01 -0500
Subject: [PATCH 3/7] Add ne_ prefix to NaturalEarth cache files.
This prefix is used in the zip files provided by NaturalEarth, so if you
download anything manually, you need to rename all the files for Cartopy
to find them. This change makes that renaming no longer necessary, at
the expense of a few extra re-downloads.
Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
---
lib/cartopy/io/shapereader.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/cartopy/io/shapereader.py b/lib/cartopy/io/shapereader.py
index fae9367..68471be 100644
--- a/lib/cartopy/io/shapereader.py
+++ b/lib/cartopy/io/shapereader.py
@@ -346,11 +346,11 @@ class NEShpDownloader(Downloader):
>>> ne_dnldr = NEShpDownloader.default_downloader()
>>> print(ne_dnldr.target_path_template)
{config[data_dir]}/shapefiles/natural_earth/{category}/\
-{resolution}_{name}.shp
+ne_{resolution}_{name}.shp
"""
default_spec = ('shapefiles', 'natural_earth', '{category}',
- '{resolution}_{name}.shp')
+ 'ne_{resolution}_{name}.shp')
ne_path_template = os.path.join('{config[data_dir]}', *default_spec)
pre_path_template = os.path.join('{config[pre_existing_data_dir]}',
*default_spec)
--
2.14.3

View file

@ -1,71 +0,0 @@
From 9618c40af668c27dedd83fcc101a99f9573c1b09 Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Mon, 26 Feb 2018 02:42:50 -0500
Subject: [PATCH 4/7] Increase tolerance for new FreeType.
Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
---
lib/cartopy/tests/mpl/test_gridliner.py | 10 +++++++++-
lib/cartopy/tests/mpl/test_ticks.py | 5 +++++
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/lib/cartopy/tests/mpl/test_gridliner.py b/lib/cartopy/tests/mpl/test_gridliner.py
index 9fbeba7..3412b2f 100644
--- a/lib/cartopy/tests/mpl/test_gridliner.py
+++ b/lib/cartopy/tests/mpl/test_gridliner.py
@@ -17,7 +17,10 @@
from __future__ import (absolute_import, division, print_function)
+from distutils.version import LooseVersion
+
from matplotlib.backends.backend_agg import FigureCanvasAgg
+import matplotlib.ft2font
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
try:
@@ -111,10 +114,15 @@ elif MPL_VERSION >= '1.5':
grid_label_image = 'gridliner_labels_1.5'
else:
grid_label_image = 'gridliner_labels_pre_mpl_1.5'
+if (MPL_VERSION >= '1.5' and
+ LooseVersion(matplotlib.ft2font.__freetype_version__) >= '2.7'):
+ grid_label_tolerance = 20.3
+else:
+ grid_label_tolerance = 0
@pytest.mark.natural_earth
-@ImageTesting([grid_label_image])
+@ImageTesting([grid_label_image], tolerance=grid_label_tolerance)
def test_grid_labels():
plt.figure(figsize=(8, 10))
diff --git a/lib/cartopy/tests/mpl/test_ticks.py b/lib/cartopy/tests/mpl/test_ticks.py
index 1397f19..33e2b09 100644
--- a/lib/cartopy/tests/mpl/test_ticks.py
+++ b/lib/cartopy/tests/mpl/test_ticks.py
@@ -17,8 +17,10 @@
from __future__ import (absolute_import, division, print_function)
+from distutils.version import LooseVersion
import math
+import matplotlib.ft2font
import matplotlib.pyplot as plt
import matplotlib.ticker
import pytest
@@ -59,6 +61,9 @@ elif '2.0.0' <= MPL_VERSION < '2.0.1':
ticks_tolerance = 9
else:
ticks_tolerance = 0.5
+if (MPL_VERSION >= '1.5' and
+ LooseVersion(matplotlib.ft2font.__freetype_version__) >= '2.7'):
+ ticks_tolerance = max(ticks_tolerance, 6.67)
@pytest.mark.natural_earth
--
2.14.3

View file

@ -1,47 +0,0 @@
From ad04b17fb9751816753d2416ccad05236b41cf1e Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Tue, 27 Feb 2018 20:38:49 -0500
Subject: [PATCH 5/7] Normalize grid coordinates used for interpolation.
Most coordinates are in metres and thus fairly large. This can cause
precision issues in Qhull as it calculates distances via squares and
square roots, at least on non-x86_64 architectures.
This is equivalent to the `rescale=True` argument in SciPy, but doing it
ourselves means a) we don't need to bump requirements to 0.14 and b)
re-scaling is not done for every scalar/vector property.
Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
---
lib/cartopy/vector_transform.py | 10 ++++++----
7 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/lib/cartopy/vector_transform.py b/lib/cartopy/vector_transform.py
index 1fe17a1..c684703 100644
--- a/lib/cartopy/vector_transform.py
+++ b/lib/cartopy/vector_transform.py
@@ -56,15 +56,17 @@ def _interpolate_to_grid(nx, ny, x, y, *scalars, **kwargs):
target_extent = kwargs.get('target_extent', None)
if target_extent is None:
target_extent = (x.min(), x.max(), y.min(), y.max())
- points = np.array([x.ravel(), y.ravel()]).T
x0, x1, y0, y1 = target_extent
- x_grid, y_grid = np.meshgrid(np.linspace(x0, x1, nx),
- np.linspace(y0, y1, ny))
+ xr = x1 - x0
+ yr = y1 - y0
+ points = np.column_stack([(x.ravel() - x0) / xr, (y.ravel() - y0) / yr])
+ x_grid, y_grid = np.meshgrid(np.linspace(0, 1, nx),
+ np.linspace(0, 1, ny))
s_grid_tuple = tuple()
for s in scalars:
s_grid_tuple += (griddata(points, s.ravel(), (x_grid, y_grid),
method='linear'),)
- return (x_grid, y_grid) + s_grid_tuple
+ return (x_grid * xr + x0, y_grid * yr + y0) + s_grid_tuple
def vector_scalar_to_grid(src_crs, target_proj, regrid_shape, x, y, u, v,
--
2.14.3

View file

@ -1,82 +0,0 @@
From 49e10df68f0c59f81aa5ec07ead5941db349da6d Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Tue, 27 Feb 2018 02:14:00 -0500
Subject: [PATCH 6/7] Increase some tolerances for 32-bit systems.
Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
---
lib/cartopy/tests/crs/test_lambert_azimuthal_equal_area.py | 2 +-
lib/cartopy/tests/mpl/test_examples.py | 2 +-
lib/cartopy/tests/mpl/test_features.py | 2 +-
lib/cartopy/tests/mpl/test_images.py | 2 +-
lib/cartopy/tests/mpl/test_img_transform.py | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/lib/cartopy/tests/crs/test_lambert_azimuthal_equal_area.py b/lib/cartopy/tests/crs/test_lambert_azimuthal_equal_area.py
index b6fb853..ca7e235 100644
--- a/lib/cartopy/tests/crs/test_lambert_azimuthal_equal_area.py
+++ b/lib/cartopy/tests/crs/test_lambert_azimuthal_equal_area.py
@@ -35,7 +35,7 @@ class TestLambertAzimuthalEqualArea(object):
decimal=4)
assert_almost_equal(np.array(crs.y_limits),
[-12727770.598700099, 12727770.598700099],
- decimal=4)
+ decimal=1)
def test_eccentric_globe(self):
globe = ccrs.Globe(semimajor_axis=1000, semiminor_axis=500,
diff --git a/lib/cartopy/tests/mpl/test_examples.py b/lib/cartopy/tests/mpl/test_examples.py
index db689e0..69d4f5a 100644
--- a/lib/cartopy/tests/mpl/test_examples.py
+++ b/lib/cartopy/tests/mpl/test_examples.py
@@ -43,7 +43,7 @@ class ExampleImageTesting(ImageTesting):
@pytest.mark.natural_earth
@ExampleImageTesting(['global_map'],
- tolerance=4 if MPL_VERSION < '2' else 0)
+ tolerance=4 if MPL_VERSION < '2' else 0.05)
def test_global_map():
import cartopy.examples.global_map as c
c.main()
diff --git a/lib/cartopy/tests/mpl/test_features.py b/lib/cartopy/tests/mpl/test_features.py
index 250e3db..f36c344 100644
--- a/lib/cartopy/tests/mpl/test_features.py
+++ b/lib/cartopy/tests/mpl/test_features.py
@@ -54,7 +54,7 @@ def test_natural_earth_custom():
@ImageTesting(['gshhs_coastlines'],
- tolerance=1.7 if MPL_VERSION < '2' else 0)
+ tolerance=1.7 if MPL_VERSION < '2' else 0.07)
def test_gshhs():
ax = plt.axes(projection=ccrs.Mollweide())
ax.set_extent([138, 142, 32, 42], ccrs.Geodetic())
diff --git a/lib/cartopy/tests/mpl/test_images.py b/lib/cartopy/tests/mpl/test_images.py
index 105ee80..119ba7c 100644
--- a/lib/cartopy/tests/mpl/test_images.py
+++ b/lib/cartopy/tests/mpl/test_images.py
@@ -155,7 +155,7 @@ def test_pil_Image():
@ImageTesting(['imshow_natural_earth_ortho'],
- tolerance=4.2 if MPL_VERSION < '2' else 0)
+ tolerance=4.2 if MPL_VERSION < '2' else 0.05)
def test_background_img():
ax = plt.axes(projection=ccrs.Orthographic())
ax.background_img(name='ne_shaded', resolution='low')
diff --git a/lib/cartopy/tests/mpl/test_img_transform.py b/lib/cartopy/tests/mpl/test_img_transform.py
index 3b53c0a..dfea25a 100644
--- a/lib/cartopy/tests/mpl/test_img_transform.py
+++ b/lib/cartopy/tests/mpl/test_img_transform.py
@@ -98,7 +98,7 @@ elif '2.0.1' <= MPL_VERSION:
# Bug in latest Matplotlib that we don't consider correct.
regrid_tolerance = 4.75
else:
- regrid_tolerance = 0
+ regrid_tolerance = 0.03
@pytest.mark.natural_earth
--
2.14.3

View file

@ -1,44 +0,0 @@
From 9792ed5ef9d7db4b0ef8aefb70b11eccc0bdfbcb Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
Date: Wed, 28 Feb 2018 00:35:24 -0500
Subject: [PATCH 7/7] Increase tolerance for non-x86 systems.
Signed-off-by: Elliott Sales de Andrade <quantum.analyst@gmail.com>
---
lib/cartopy/tests/mpl/test_mpl_integration.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/cartopy/tests/mpl/test_mpl_integration.py b/lib/cartopy/tests/mpl/test_mpl_integration.py
index 681c9bc..1ce5152 100644
--- a/lib/cartopy/tests/mpl/test_mpl_integration.py
+++ b/lib/cartopy/tests/mpl/test_mpl_integration.py
@@ -502,7 +502,7 @@ def test_quiver_regrid_with_extent():
@pytest.mark.natural_earth
-@ImageTesting(['barbs_plate_carree'])
+@ImageTesting(['barbs_plate_carree'], tolerance=0.57)
def test_barbs():
x = np.arange(-60, 45, 5)
y = np.arange(30, 75, 5)
@@ -524,7 +524,7 @@ def test_barbs():
@pytest.mark.natural_earth
-@ImageTesting(['barbs_regrid'])
+@ImageTesting(['barbs_regrid'], tolerance=1.16)
def test_barbs_regrid():
x = np.arange(-60, 42.5, 2.5)
y = np.arange(30, 72.5, 2.5)
@@ -542,7 +542,7 @@ def test_barbs_regrid():
@pytest.mark.natural_earth
-@ImageTesting(['barbs_regrid_with_extent'])
+@ImageTesting(['barbs_regrid_with_extent'], tolerance=0.52)
def test_barbs_regrid_with_extent():
x = np.arange(-60, 42.5, 2.5)
y = np.arange(30, 72.5, 2.5)
--
2.14.3

3
README.packit Normal file
View file

@ -0,0 +1,3 @@
This repository is maintained by packit.
https://packit.dev/
The file was generated using packit 1.11.0.

101
changelog Normal file
View file

@ -0,0 +1,101 @@
* Thu Oct 21 2021 Sandro Mani <manisandro@gmail.com> - 0.19.0-4
- Rebuild (geos)
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.19.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 0.19.0-2
- Rebuilt for Python 3.10
* Thu Apr 22 2021 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.19.0-1
- Update to latest version (#1952194)
* Tue Mar 23 2021 Sandro Mani <manisandro@gmail.com> - 0.19.0~rc1-3
- Rebuild (geos)
* Tue Mar 23 2021 Sandro Mani <manisandro@gmail.com> - 0.19.0~rc1-2
- Bundle proj 7, as cartopy does not build against proj8
* Sat Mar 13 2021 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.19.0~rc1-1
- Update to latest version (#1938248)
* Sun Mar 07 2021 Sandro Mani <manisandro@gmail.com> - 0.18.0-7
- Rebuild (proj)
* Sat Feb 13 2021 Sandro Mani <manisandro@gmail.com> - 0.18.0-6
- Rebuild (geos)
* Sat Jan 30 2021 Jos de Kloe <josdekloe@gmail.com> 0.18.0-5
- Add a patch to fix build failures caused by np.float deprecation
- Modify patch to add more tolerance to image comparisons
- skip test_grid_labels, since it seems to suffer from a bug that is
not yet solved upstream
* Wed Jan 27 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.18.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Nov 11 13:06:18 CET 2020 Sandro Mani <manisandro@gmail.com> - 0.18.0-4
- Rebuild (proj, gdal)
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.18.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue May 26 2020 Miro Hrončok <mhroncok@redhat.com> - 0.18.0-2
- Rebuilt for Python 3.9
* Mon May 18 2020 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.18.0-1
- Update to latest version
* Fri May 01 2020 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.18.0~rc1-1
- Update to latest release candidate
* Mon Apr 13 2020 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.18.0~b2-1
- Update to latest beta
* Mon Feb 10 2020 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.18.0~b1-1
- Update to latest beta
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.17.0-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Mon Aug 19 2019 Miro Hrončok <mhroncok@redhat.com> - 0.17.0-7
- Rebuilt for Python 3.8
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.17.0-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Fri May 31 2019 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.17.0-5
- Fix build against FreeType 2.10.0
* Tue Feb 12 2019 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.17.0-4
- Rebuilt for updated Proj
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.17.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Thu Dec 06 2018 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.17.0-2
- Remove pytest bytecode
* Sat Nov 17 2018 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.17.0-1
- Update to latest version
- Remove workaround for unpackaged Natural Earth data
- Drop Python 2 subpackage
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.16.0-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Wed Jul 11 2018 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.16.0-5
- Add explicit gcc-c++ BR
* Tue Jun 19 2018 Miro Hrončok <mhroncok@redhat.com> - 0.16.0-4
- Rebuilt for Python 3.7
* Wed Feb 28 2018 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.16.0-3
- Drop patch for old versions of Matplotlib.
- Use python2- prefix for dependencies.
* Sun Feb 25 2018 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.16.0-2
- Enable testing with now-packaged Natural Earth data.
* Fri Feb 23 2018 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.16.0-1
- Initial package.

View file

@ -1,138 +1,52 @@
%global srcname cartopy
%global Srcname Cartopy
# Natural Earth data may not packaged be yet.
%global test_natural_earth 1
# Some tests use the network.
%bcond_with network
Name: python-%{srcname}
Version: 0.16.0
Release: 2%{?dist}
Version: 0.25.0
Release: %autorelease
Summary: Cartographic Python library with Matplotlib visualisations
License: LGPLv3
URL: http://scitools.org.uk/cartopy/docs/latest/
Source0: https://files.pythonhosted.org/packages/source/C/%{Srcname}/%{Srcname}-%{version}.tar.gz
License: BSD-3-Clause
URL: https://scitools.org.uk/cartopy/docs/latest/
Source0: %pypi_source %{srcname}
# Set location of Fedora-provided pre-existing data.
Source1: siteconfig.py
# https://github.com/SciTools/cartopy/pull/1032
Patch0001: 0001-Merge-pull-request-1032-from-QuLogic-test-updates.patch
# Probably won't go upstream.
Patch0002: 0002-Skip-doctest-that-uses-the-network.patch
# https://github.com/SciTools/cartopy/pull/1037
Patch0003: 0003-Add-ne_-prefix-to-NaturalEarth-cache-files.patch
# Fedora specific.
Patch: 0001-Reduce-numpy-build-dependency.patch
# Might not go upstream in current form.
Patch0004: 0004-Increase-tolerance-for-new-FreeType.patch
# https://github.com/SciTools/cartopy/pull/1042
Patch0005: 0005-Normalize-grid-coordinates-used-for-interpolation.patch
Source5: %{Srcname}-norm-images.tar.xz
# Might not go upstream.
Patch0006: 0006-Increase-some-tolerances-for-32-bit-systems.patch
# Due to https://github.com/matplotlib/matplotlib/issues/7797; not necessary
# with Matplotlib 2.1.0.
Patch0007: 0007-Increase-tolerance-for-non-x86-systems.patch
Patch: 0002-Increase-tolerance-for-new-FreeType.patch
BuildRequires: geos-devel >= 3.3.3
BuildRequires: proj-devel >= 4.9.0
# See https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
ExcludeArch: %{ix86}
%global _description \
Cartopy is a Python package designed to make drawing maps for data analysis \
and visualisation easy. It features: \
* object oriented projection definitions \
* point, line, polygon and image transformations between projections \
* integration to expose advanced mapping in matplotlib with a simple and \
intuitive interface \
* powerful vector data handling by integrating shapefile reading with Shapely \
BuildRequires: gcc-c++
BuildRequires: proj-data-uk
BuildRequires: python3-devel
%global _description %{expand:
Cartopy is a Python package designed to make drawing maps for data analysis
and visualisation easy. It features:
* object oriented projection definitions
* point, line, polygon and image transformations between projections
* integration to expose advanced mapping in Matplotlib with a simple and
intuitive interface
* powerful vector data handling by integrating shapefile reading with Shapely
capabilities
}
%description %{_description}
%package -n python2-%{srcname}
Summary: %{summary}
%{?python_provide:%python_provide python2-%{srcname}}
BuildRequires: python2-devel
BuildRequires: python2-setuptools >= 0.7.2
BuildRequires: python2-Cython >= 0.15.1
BuildRequires: python2-six >= 1.3.0
BuildRequires: python2-numpy >= 1.6
BuildRequires: python-shapely >= 1.5.6
BuildRequires: python2-pyshp >= 1.1.4
# OWS requirements
BuildRequires: python-OWSLib >= 0.8.11
BuildRequires: python2-pillow >= 1.7.8
# Plotting requirements
BuildRequires: python2-matplotlib >= 1.3.0
BuildRequires: gdal-python >= 1.10.0
BuildRequires: python2-pillow >= 1.7.8
BuildRequires: python2-scipy >= 0.10
# Testing requirements
BuildRequires: python2-mock >= 1.0.1
BuildRequires: python2-pytest >= 3.0.0
%if %{fedora} < 28
# For old matplotlib
BuildRequires: python2-nose
%endif
Requires: python-%{srcname}-common = %{version}-%{release}
Requires: python2-six >= 1.3.0
Requires: python2-numpy >= 1.6
Requires: python-shapely >= 1.5.6
Requires: python2-pyshp >= 1.1.4
Requires: python2-setuptools >= 0.7.2
# OWS requirements
Recommends: python-OWSLib >= 0.8.11
Recommends: python2-pillow >= 1.7.8
# Plotting requirements
Recommends: python2-matplotlib >= 1.3.0
Recommends: gdal-python >= 1.10.0
Recommends: python2-pillow >= 1.7.8
Recommends: python2-scipy >= 0.10
%description -n python2-%{srcname} %{_description}
%package -n python3-%{srcname}
Summary: %{summary}
%{?python_provide:%python_provide python3-%{srcname}}
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-Cython >= 0.15.1
BuildRequires: python3-six >= 1.3.0
BuildRequires: python3-numpy >= 1.6
BuildRequires: python3-shapely >= 1.5.6
BuildRequires: python3-pyshp >= 1.1.4
# OWS requirements
BuildRequires: python3-OWSLib >= 0.8.11
BuildRequires: python3-pillow >= 1.7.8
# Plotting requirements
BuildRequires: python3-matplotlib >= 1.3.0
BuildRequires: gdal-python3 >= 1.10.0
BuildRequires: python3-pillow >= 1.7.8
BuildRequires: python3-scipy >= 0.10
# Testing requirements
BuildRequires: python3-mock >= 1.0.1
BuildRequires: python3-pytest >= 3.0.0
%if %{fedora} < 28
# For old matplotlib
BuildRequires: python3-nose
%endif
Requires: python-%{srcname}-common = %{version}-%{release}
Requires: python3-setuptools >= 0.7.2
Requires: python3-six >= 1.3.0
Requires: python3-numpy >= 1.6
Requires: python3-shapely >= 1.5.6
Requires: python3-pyshp >= 1.1.4
# OWS requirements
Recommends: python3-OWSLib >= 0.8.11
Recommends: python3-pillow >= 1.7.8
# Plotting requirements
Recommends: python3-matplotlib >= 1.3.0
Recommends: gdal-python3 >= 1.10.0
Recommends: python3-pillow >= 1.7.8
Recommends: python3-scipy >= 0.10
Recommends: python3dist(cartopy[ows]) = %{version}-%{release}
Recommends: python3dist(cartopy[plotting]) = %{version}-%{release}
Recommends: python3dist(cartopy[speedups]) = %{version}-%{release}
%description -n python3-%{srcname} %{_description}
@ -141,10 +55,8 @@ Recommends: python3-scipy >= 0.10
Summary: Data files for %{srcname}
BuildArch: noarch
%if 0%{?test_natural_earth}
BuildRequires: natural-earth-map-data-110m
BuildRequires: natural-earth-map-data-50m
%endif
Recommends: natural-earth-map-data-110m
Suggests: natural-earth-map-data-50m
@ -154,29 +66,31 @@ Suggests: natural-earth-map-data-10m
Data files for %{srcname}.
%prep
%autosetup -n %{Srcname}-%{version} -p1
cp -a %SOURCE1 lib/cartopy/
%setup -q -n %{Srcname}-%{version} -D -T -a 5
%pyproject_extras_subpkg -n python3-cartopy ows plotting speedups
# Remove bundled egg-info
rm -rf %{srcname}.egg-info
%prep
%autosetup -n %{srcname}-%{version} -p1
cp -a %SOURCE1 lib/cartopy/
sed -i -e 's/, "pytest-cov", "coveralls"//g' pyproject.toml
# Remove generated Cython sources
rm lib/cartopy/trace.cpp
%generate_buildrequires
%pyproject_buildrequires -r -x ows,plotting,speedups,test
%build
%py2_build
# Purge generated Cython files.
rm -f lib/cartopy/trace.cpp lib/cartopy/trace.pyd
rm -f lib/cartopy/_crs.c lib/cartopy/_crs.pyd
rm -f lib/cartopy/geodesic/_geodesic.c lib/cartopy/geodesic/_geodesic.pyd
%py3_build
export FORCE_CYTHON=1 SETUPTOOLS_SCM_PRETEND_VERSION=%{version}
%pyproject_wheel
%install
%py3_install
%py2_install
%pyproject_install
%pyproject_save_files -l %{srcname}
mkdir -p %{buildroot}%{_datadir}/cartopy/shapefiles/natural_earth/
for theme in physical cultural; do
@ -186,29 +100,22 @@ done
%check
PYTHONPATH="%{buildroot}%{python2_sitearch}" MPLBACKEND=Agg \
pytest-2 --doctest-modules --pyargs cartopy -m "not network%{!?test_natural_earth: and not natural_earth}"
PYTHONPATH="%{buildroot}%{python3_sitearch}" MPLBACKEND=Agg \
pytest-3 --doctest-modules --pyargs cartopy -m "not network%{!?test_natural_earth: and not natural_earth}"
MPLBACKEND=Agg \
%{pytest} -n auto --doctest-modules --mpl --mpl-generate-summary=html --pyargs cartopy \
%if %{with network}
%{nil}
%else
-m "not network"
%endif
%files -n python-%{srcname}-common
%doc README.rst
%license COPYING.LESSER lib/cartopy/data/LICENSE
%doc README.md
%{_datadir}/cartopy/
%files -n python2-%{srcname}
%{python2_sitearch}/cartopy
%{python2_sitearch}/%{Srcname}-%{version}-py?.?.egg-info
%files -n python3-%{srcname}
%{python3_sitearch}/cartopy
%{python3_sitearch}/%{Srcname}-%{version}-py?.?.egg-info
%files -n python3-%{srcname} -f %{pyproject_files}
%{_bindir}/cartopy_feature_download
%changelog
* Sun Feb 25 2018 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.16.0-2
- Enable testing with now-packaged Natural Earth data.
* Fri Feb 23 2018 Elliott Sales de Andrade <quantum.analyst@gmail.com> - 0.16.0-1
- Initial package.
%autochangelog

View file

@ -1,9 +1,7 @@
from __future__ import (absolute_import, division, print_function)
import os
from pathlib import Path
def update_config(conf):
# This works when installed and when in buildroot.
conf['pre_existing_data_dir'] = os.path.join(os.path.dirname(__file__),
'../../../../share/cartopy')
conf['pre_existing_data_dir'] = str(
Path(__file__).parents[4] / 'share/cartopy')

View file

@ -1,2 +1 @@
SHA512 (Cartopy-0.16.0.tar.gz) = aaef27eda5a31b49361a014156ac6f6cf92b7ea84356f342afc1b7f818162537ea6447cf1af4799196482bc811aba8cb3db3044d8a2fa501c327fee079205c44
SHA512 (Cartopy-norm-images.tar.xz) = bfea8ab2045e89acd2e4cff45fecee5baf6efdc41b90cf160c931e90c0e41b35ea553ccf8d36e9ae9009157a99c7eb4a0054e6301948d40b045ce0a880105f40
SHA512 (cartopy-0.25.0.tar.gz) = 6e0576f87dbd154d7dec3c2bbec520d1602874e6b416ca6e461745ceb319dc0f38a53267ad0b1f73bcd0d81674151324c07b7a799fb0a3ad590d1a27c98b3ae7