diff --git a/.gitignore b/.gitignore index e031551..6526b10 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,8 @@ /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 diff --git a/.packit.yaml b/.packit.yaml new file mode 100644 index 0000000..b2a3bc6 --- /dev/null +++ b/.packit.yaml @@ -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 diff --git a/0001-Reduce-numpy-build-dependency.patch b/0001-Reduce-numpy-build-dependency.patch new file mode 100644 index 0000000..42c7c25 --- /dev/null +++ b/0001-Reduce-numpy-build-dependency.patch @@ -0,0 +1,26 @@ +From e3a61e272d5ab58a2b8f13c6ad05d1136d3a5ecc Mon Sep 17 00:00:00 2001 +From: Elliott Sales de Andrade +Date: Thu, 25 Apr 2024 16:35:29 -0400 +Subject: [PATCH 1/2] Reduce numpy build dependency + +Signed-off-by: Elliott Sales de Andrade +--- + 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 + diff --git a/0001-Increase-tolerance-for-new-FreeType.patch b/0002-Increase-tolerance-for-new-FreeType.patch similarity index 61% rename from 0001-Increase-tolerance-for-new-FreeType.patch rename to 0002-Increase-tolerance-for-new-FreeType.patch index 1413359..cc87dde 100644 --- a/0001-Increase-tolerance-for-new-FreeType.patch +++ b/0002-Increase-tolerance-for-new-FreeType.patch @@ -1,78 +1,69 @@ -From 3cd4152ba8a7ec7f089fdb912cff92fbd55ecedb Mon Sep 17 00:00:00 2001 +From d3d4e7a80ded257b3094d837e5133b199989b460 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Mon, 26 Feb 2018 02:42:50 -0500 -Subject: [PATCH 1/4] Increase tolerance for new FreeType. +Subject: [PATCH 2/2] Increase tolerance for new FreeType Signed-off-by: Elliott Sales de Andrade --- - lib/cartopy/tests/mpl/test_crs.py | 4 ++-- - lib/cartopy/tests/mpl/test_examples.py | 4 +--- - lib/cartopy/tests/mpl/test_gridliner.py | 11 +++++++---- + 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 +++++++++----- - 5 files changed, 20 insertions(+), 15 deletions(-) + 4 files changed, 18 insertions(+), 19 deletions(-) -diff --git a/lib/cartopy/tests/mpl/test_crs.py b/lib/cartopy/tests/mpl/test_crs.py -index 7c8580a5..40321df8 100644 ---- a/lib/cartopy/tests/mpl/test_crs.py -+++ b/lib/cartopy/tests/mpl/test_crs.py -@@ -14,7 +14,7 @@ from cartopy.tests.mpl import MPL_VERSION - @pytest.mark.natural_earth - @pytest.mark.mpl_image_compare(filename="igh_land.png", - tolerance=(3.6 -- if MPL_VERSION.release[:2] < (3, 5) -+ if MPL_VERSION.release[:2] < (3, 6) - else 0.5)) - def test_igh_land(): - crs = ccrs.InterruptedGoodeHomolosine(emphasis="land") -@@ -27,7 +27,7 @@ def test_igh_land(): - @pytest.mark.natural_earth - @pytest.mark.mpl_image_compare(filename="igh_ocean.png", - tolerance=(4.5 -- if MPL_VERSION.release[:2] < (3, 5) -+ if MPL_VERSION.release[:2] < (3, 6) - else 0.5)) - def test_igh_ocean(): - crs = ccrs.InterruptedGoodeHomolosine( diff --git a/lib/cartopy/tests/mpl/test_examples.py b/lib/cartopy/tests/mpl/test_examples.py -index c678cc59..32bff3d4 100644 +index a7f64ac9..404d3d83 100644 --- a/lib/cartopy/tests/mpl/test_examples.py +++ b/lib/cartopy/tests/mpl/test_examples.py -@@ -33,9 +33,7 @@ def test_global_map(): +@@ -37,7 +37,7 @@ def test_global_map(): @pytest.mark.natural_earth - @pytest.mark.mpl_image_compare(filename='contour_label.png', -- tolerance=(9.9 -- if MPL_VERSION.release[:2] < (3, 3) -- else 0.5)) -+ tolerance=10.4) + @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 ba1614f9..918dd4f0 100644 +index 66144070..3ff88139 100644 --- a/lib/cartopy/tests/mpl/test_gridliner.py +++ b/lib/cartopy/tests/mpl/test_gridliner.py -@@ -127,6 +127,9 @@ def test_gridliner_specified_lines(): - # of text objects. A new testing strategy is needed for this kind of test. - grid_label_tol = 3.9 +@@ -130,15 +130,10 @@ def test_gridliner_specified_lines(): + assert gl.ylocator.tick_values(None, None).tolist() == parallels -+# Force higher tolerance due to new FreeType on Fedora. -+grid_label_tol = 15.2 -+ +-# 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 -@@ -208,7 +211,7 @@ def test_grid_labels(): + @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.92) +- tolerance=2.9) + tolerance=47.1) def test_grid_labels_tight(): # Ensure tight layout accounts for gridlines fig = plt.figure(figsize=(7, 5)) -@@ -252,7 +255,7 @@ def test_grid_labels_tight(): +@@ -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) @@ -81,7 +72,7 @@ index ba1614f9..918dd4f0 100644 def test_grid_labels_inline(proj): fig = plt.figure() if isinstance(proj, tuple): -@@ -268,7 +271,7 @@ def test_grid_labels_inline(proj): +@@ -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) @@ -90,8 +81,8 @@ index ba1614f9..918dd4f0 100644 def test_grid_labels_inline_usa(proj): top = 49.3457868 # north lat left = -124.7844079 # west long -@@ -292,7 +295,7 @@ def test_grid_labels_inline_usa(proj): - +@@ -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) @@ -99,34 +90,43 @@ index ba1614f9..918dd4f0 100644 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 884a950f..4740f796 100644 +index f1aeccdf..78866085 100644 --- a/lib/cartopy/tests/mpl/test_mpl_integration.py +++ b/lib/cartopy/tests/mpl/test_mpl_integration.py -@@ -859,7 +859,7 @@ def test_streamplot(): +@@ -1016,7 +1016,7 @@ def test_streamplot(): @pytest.mark.natural_earth -@pytest.mark.mpl_image_compare() -+@pytest.mark.mpl_image_compare(tolerance=3.95) ++@pytest.mark.mpl_image_compare(tolerance=3.96) def test_annotate(): - """ test a variety of annotate options on mulitple projections + """ 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 d629ccd7..fcf72164 100644 +index f75ad2d2..bc0ba0b7 100644 --- a/lib/cartopy/tests/mpl/test_ticks.py +++ b/lib/cartopy/tests/mpl/test_ticks.py -@@ -11,7 +11,8 @@ from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter +@@ -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', ++@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') -@@ -22,7 +23,8 @@ def test_set_xticks_no_transform(): +@@ -21,7 +22,8 @@ def test_set_xticks_no_transform(): @pytest.mark.natural_earth @@ -136,7 +136,7 @@ index d629ccd7..fcf72164 100644 def test_set_xticks_cylindrical(): ax = plt.axes(projection=ccrs.Mercator(min_latitude=-85, max_latitude=85)) ax.coastlines('110m') -@@ -41,7 +43,8 @@ def test_set_xticks_non_cylindrical(): +@@ -40,7 +42,8 @@ def test_set_xticks_non_cylindrical(): @pytest.mark.natural_earth @@ -146,7 +146,7 @@ index d629ccd7..fcf72164 100644 def test_set_yticks_no_transform(): ax = plt.axes(projection=ccrs.PlateCarree()) ax.coastlines('110m') -@@ -52,7 +55,8 @@ def test_set_yticks_no_transform(): +@@ -51,7 +54,8 @@ def test_set_yticks_no_transform(): @pytest.mark.natural_earth @@ -156,7 +156,7 @@ index d629ccd7..fcf72164 100644 def test_set_yticks_cylindrical(): ax = plt.axes(projection=ccrs.Mercator(min_latitude=-85, max_latitude=85)) ax.coastlines('110m') -@@ -73,7 +77,7 @@ def test_set_yticks_non_cylindrical(): +@@ -72,7 +76,7 @@ def test_set_yticks_non_cylindrical(): @pytest.mark.natural_earth @@ -166,5 +166,5 @@ index d629ccd7..fcf72164 100644 fig = plt.figure(figsize=(10, 10)) projections = (ccrs.PlateCarree(), -- -2.36.1 +2.50.0 diff --git a/0002-Use-pkg-config-to-find-GEOS-instead-of-geos-config.patch b/0002-Use-pkg-config-to-find-GEOS-instead-of-geos-config.patch deleted file mode 100644 index b5ad1c5..0000000 --- a/0002-Use-pkg-config-to-find-GEOS-instead-of-geos-config.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 9c5213d34d9d9b72516832afa70824941cec0961 Mon Sep 17 00:00:00 2001 -From: Elliott Sales de Andrade -Date: Sat, 21 May 2022 01:36:44 -0400 -Subject: [PATCH 2/4] Use pkg-config to find GEOS instead of geos-config - -Signed-off-by: Elliott Sales de Andrade ---- - setup.py | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/setup.py b/setup.py -index 8e061479..e1db810e 100644 ---- a/setup.py -+++ b/setup.py -@@ -81,11 +81,11 @@ def file_walk_relative(top, remove=''): - - # GEOS - try: -- geos_version = subprocess.check_output(['geos-config', '--version']) -+ geos_version = subprocess.check_output(['pkg-config', '--modversion', 'geos']) - geos_version = tuple(int(v) for v in geos_version.split(b'.') - if 'dev' not in str(v)) -- geos_includes = subprocess.check_output(['geos-config', '--includes']) -- geos_clibs = subprocess.check_output(['geos-config', '--clibs']) -+ geos_includes = subprocess.check_output(['pkg-config', '--cflags', 'geos']) -+ geos_clibs = subprocess.check_output(['pkg-config', '--libs', 'geos']) - except (OSError, ValueError, subprocess.CalledProcessError): - warnings.warn( - 'Unable to determine GEOS version. Ensure you have %s or later ' --- -2.36.1 - diff --git a/0003-Remove-extraneous-insertion-of-default-compiler-path.patch b/0003-Remove-extraneous-insertion-of-default-compiler-path.patch deleted file mode 100644 index 703c471..0000000 --- a/0003-Remove-extraneous-insertion-of-default-compiler-path.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 0aee6b4dcb2b8d0a8e571e071c39d997296b5aa8 Mon Sep 17 00:00:00 2001 -From: Elliott Sales de Andrade -Date: Mon, 23 May 2022 02:42:38 -0400 -Subject: [PATCH 3/4] Remove extraneous insertion of default compiler paths - -Signed-off-by: Elliott Sales de Andrade ---- - setup.py | 14 ++------------ - 1 file changed, 2 insertions(+), 12 deletions(-) - -diff --git a/setup.py b/setup.py -index e1db810e..bd4ab057 100644 ---- a/setup.py -+++ b/setup.py -@@ -29,7 +29,6 @@ import shutil - import subprocess - import warnings - from collections import defaultdict --from sysconfig import get_config_var - - from setuptools import Extension, find_packages, setup - -@@ -130,16 +129,7 @@ install_requires = extras_require.pop('default') - tests_require = extras_require.get('tests', []) - - # General extension paths --if sys.platform.startswith('win'): -- def get_config_var(name): -- return '.' --include_dir = get_config_var('INCLUDEDIR') --library_dir = get_config_var('LIBDIR') - extra_extension_args = defaultdict(list) --if not sys.platform.startswith('win'): -- extra_extension_args["runtime_library_dirs"].append( -- get_config_var('LIBDIR') -- ) - - # Description - # =========== -@@ -157,10 +147,10 @@ extensions = [ - Extension( - 'cartopy.trace', - ['lib/cartopy/trace.pyx'], -- include_dirs=([include_dir, './lib/cartopy', np.get_include()] + -+ include_dirs=(['./lib/cartopy', np.get_include()] + - geos_includes), - libraries=geos_libraries, -- library_dirs=[library_dir] + geos_library_dirs, -+ library_dirs=geos_library_dirs, - language='c++', - **extra_extension_args), - ] --- -2.36.1 - diff --git a/0004-Allow-older-setuptools-scm.patch b/0004-Allow-older-setuptools-scm.patch deleted file mode 100644 index d1f5bdf..0000000 --- a/0004-Allow-older-setuptools-scm.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 7c0b8014159fe09c4931208b13ba3ca0e3f34786 Mon Sep 17 00:00:00 2001 -From: Elliott Sales de Andrade -Date: Wed, 14 Sep 2022 04:15:29 -0400 -Subject: [PATCH 4/4] Allow older setuptools-scm - -Signed-off-by: Elliott Sales de Andrade ---- - pyproject.toml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/pyproject.toml b/pyproject.toml -index b905cf90..107d8eef 100644 ---- a/pyproject.toml -+++ b/pyproject.toml -@@ -4,6 +4,6 @@ requires = [ - "setuptools >= 40.6.0", - "Cython >= 0.29.13", - "oldest-supported-numpy", -- "setuptools_scm >= 7.0.0", -+ "setuptools_scm", - ] - build-backend = "setuptools.build_meta" --- -2.36.1 - diff --git a/README.packit b/README.packit new file mode 100644 index 0000000..3ad54d6 --- /dev/null +++ b/README.packit @@ -0,0 +1,3 @@ +This repository is maintained by packit. +https://packit.dev/ +The file was generated using packit 1.11.0. diff --git a/python-cartopy.spec b/python-cartopy.spec index df04fee..ba75e74 100644 --- a/python-cartopy.spec +++ b/python-cartopy.spec @@ -1,33 +1,30 @@ %global srcname cartopy -%global Srcname Cartopy # Some tests use the network. %bcond_with network Name: python-%{srcname} -Version: 0.21.1 +Version: 0.25.0 Release: %autorelease Summary: Cartographic Python library with Matplotlib visualisations -License: LGPLv3 -URL: http://scitools.org.uk/cartopy/docs/latest/ -Source0: %pypi_source %{Srcname} +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 +# Fedora specific. +Patch: 0001-Reduce-numpy-build-dependency.patch # Might not go upstream in current form. -Patch0001: 0001-Increase-tolerance-for-new-FreeType.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=2088864 -Patch0002: 0002-Use-pkg-config-to-find-GEOS-instead-of-geos-config.patch -Patch0003: 0003-Remove-extraneous-insertion-of-default-compiler-path.patch -# We don't need to worry about the bugs with setuptools-scm < 7. -Patch0004: 0004-Allow-older-setuptools-scm.patch +Patch: 0002-Increase-tolerance-for-new-FreeType.patch + +# See https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} BuildRequires: gcc-c++ -BuildRequires: geos-devel >= 3.7.2 BuildRequires: proj-data-uk BuildRequires: python3-devel -BuildRequires: python3dist(pytest-xdist) %global _description %{expand: Cartopy is a Python package designed to make drawing maps for data analysis @@ -49,7 +46,7 @@ Summary: %{summary} Requires: python-%{srcname}-common = %{version}-%{release} Recommends: python3dist(cartopy[ows]) = %{version}-%{release} Recommends: python3dist(cartopy[plotting]) = %{version}-%{release} -Recommends: python3dist(pykdtree) >= 1.2.2 +Recommends: python3dist(cartopy[speedups]) = %{version}-%{release} %description -n python3-%{srcname} %{_description} @@ -69,21 +66,21 @@ Suggests: natural-earth-map-data-10m Data files for %{srcname}. -%pyproject_extras_subpkg -n python3-cartopy ows plotting +%pyproject_extras_subpkg -n python3-cartopy ows plotting speedups %prep -%autosetup -n %{Srcname}-%{version} -p1 +%autosetup -n %{srcname}-%{version} -p1 cp -a %SOURCE1 lib/cartopy/ -sed -i -e 's/oldest-supported-numpy/numpy/g' pyproject.toml +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,tests +%pyproject_buildrequires -r -x ows,plotting,speedups,test %build @@ -93,7 +90,7 @@ export FORCE_CYTHON=1 SETUPTOOLS_SCM_PRETEND_VERSION=%{version} %install %pyproject_install -%pyproject_save_files %{srcname} +%pyproject_save_files -l %{srcname} mkdir -p %{buildroot}%{_datadir}/cartopy/shapefiles/natural_earth/ for theme in physical cultural; do @@ -104,7 +101,7 @@ done %check MPLBACKEND=Agg \ - %{pytest} -n auto --doctest-modules --mpl --pyargs cartopy \ + %{pytest} -n auto --doctest-modules --mpl --mpl-generate-summary=html --pyargs cartopy \ %if %{with network} %{nil} %else @@ -114,11 +111,10 @@ MPLBACKEND=Agg \ %files -n python-%{srcname}-common %doc README.md -%license COPYING COPYING.LESSER lib/cartopy/data/LICENSE %{_datadir}/cartopy/ %files -n python3-%{srcname} -f %{pyproject_files} -%{_bindir}/cartopy_feature_download.py +%{_bindir}/cartopy_feature_download %changelog diff --git a/sources b/sources index c06d0a7..5b897b0 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (Cartopy-0.21.1.tar.gz) = c73d18fc1db4706f11a8f1a82a24c2109140eb6789fe56e7947194a3f1bca7c286c6de6c394607c30054d538656e38da3c49b00f0a31dcf58f4f2b22d09175d3 +SHA512 (cartopy-0.25.0.tar.gz) = 6e0576f87dbd154d7dec3c2bbec520d1602874e6b416ca6e461745ceb319dc0f38a53267ad0b1f73bcd0d81674151324c07b7a799fb0a3ad590d1a27c98b3ae7