From 6bf7ba332ca1e0962dfd1b92f98943c7850804c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 15 Feb 2024 14:40:44 +0100 Subject: [PATCH 01/95] Set version back to 1.5.0-dev --- CHANGELOG.md | 2 ++ packages/basemap/src/_geoslib.pyx | 2 +- packages/basemap/src/mpl_toolkits/basemap/__init__.py | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d9bdc4fa9..4244ab5a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ https://keepachangelog.com/en/1.0.0/ https://semver.org/spec/v2.0.0.html +## [Unreleased] + ## [1.4.1] - 2024-02-15 ### Changed diff --git a/packages/basemap/src/_geoslib.pyx b/packages/basemap/src/_geoslib.pyx index 1e2ced532..676ac4d4b 100644 --- a/packages/basemap/src/_geoslib.pyx +++ b/packages/basemap/src/_geoslib.pyx @@ -2,7 +2,7 @@ import sys import numpy cimport numpy as cnp -__version__ = "1.4.1" +__version__ = "1.5.0-dev" # Need some Python C-API functions for strings. diff --git a/packages/basemap/src/mpl_toolkits/basemap/__init__.py b/packages/basemap/src/mpl_toolkits/basemap/__init__.py index 651a2dd5a..a7050beed 100644 --- a/packages/basemap/src/mpl_toolkits/basemap/__init__.py +++ b/packages/basemap/src/mpl_toolkits/basemap/__init__.py @@ -48,7 +48,7 @@ from . proj import Proj -__version__ = "1.4.1" +__version__ = "1.5.0-dev" # basemap data files now installed in lib/matplotlib/toolkits/basemap/data # check to see if environment variable BASEMAPDATA set to a directory, From 4b85706b70ab7a4e6e8fd3def392d576793230df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 15 Feb 2024 15:37:47 +0100 Subject: [PATCH 02/95] Revert name change for github-pages artifact --- .github/workflows/basemap-for-manylinux.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/basemap-for-manylinux.yml b/.github/workflows/basemap-for-manylinux.yml index cdd577b17..617568c9a 100644 --- a/.github/workflows/basemap-for-manylinux.yml +++ b/.github/workflows/basemap-for-manylinux.yml @@ -389,7 +389,7 @@ jobs: name: Upload github-pages artifact uses: actions/upload-pages-artifact@v3 with: - name: artifacts-github-pages + name: github-pages path: ${{ env.PKGDIR }}/public pages: From 6e9f2f8f662f6fa35e4c47ce5c9475a9eb8e9318 Mon Sep 17 00:00:00 2001 From: Lumir Balhar Date: Mon, 11 Mar 2024 19:02:57 +0100 Subject: [PATCH 03/95] Allow packaging version 24.0 --- packages/basemap/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/basemap/requirements.txt b/packages/basemap/requirements.txt index 3c028489e..7e10e9c1b 100644 --- a/packages/basemap/requirements.txt +++ b/packages/basemap/requirements.txt @@ -35,4 +35,4 @@ packaging >= 16.0, < 21.0; python_version == "2.7" packaging >= 16.0, < 17.0; python_version == "3.2" packaging >= 16.0, < 17.0; python_version == "3.3" packaging >= 16.0, < 21.0; python_version == "3.4" -packaging >= 16.0, < 24.0; python_version >= "3.5" +packaging >= 16.0, < 25.0; python_version >= "3.5" From cbe0cb6fc45b34e30675bad65a770ac292cb155d Mon Sep 17 00:00:00 2001 From: Kyle Sunden Date: Thu, 8 Jun 2023 16:42:59 -0500 Subject: [PATCH 04/95] Convert to new style namespace packages --- packages/basemap/setup.py | 4 ++-- packages/basemap/src/mpl_toolkits/__init__.py | 6 ------ packages/basemap_data/setup.py | 4 ++-- packages/basemap_data/src/mpl_toolkits/__init__.py | 4 ---- .../basemap_data/src/mpl_toolkits/basemap_data/__init__.py | 4 ---- packages/basemap_data_hires/setup.py | 4 ++-- packages/basemap_data_hires/src/mpl_toolkits/__init__.py | 4 ---- .../src/mpl_toolkits/basemap_data/__init__.py | 4 ---- 8 files changed, 6 insertions(+), 28 deletions(-) delete mode 100644 packages/basemap/src/mpl_toolkits/__init__.py delete mode 100644 packages/basemap_data/src/mpl_toolkits/__init__.py delete mode 100644 packages/basemap_data/src/mpl_toolkits/basemap_data/__init__.py delete mode 100644 packages/basemap_data_hires/src/mpl_toolkits/__init__.py delete mode 100644 packages/basemap_data_hires/src/mpl_toolkits/basemap_data/__init__.py diff --git a/packages/basemap/setup.py b/packages/basemap/setup.py index 4c98a8776..e32646b5d 100644 --- a/packages/basemap/setup.py +++ b/packages/basemap/setup.py @@ -10,7 +10,7 @@ import glob import warnings from setuptools import setup -from setuptools import find_packages +from setuptools import find_namespace_packages from setuptools.command.sdist import sdist from setuptools.extension import Extension @@ -230,7 +230,7 @@ def run(self): "package_dir": {"": "src"}, "packages": - find_packages(where="src"), + find_namespace_packages(where="src"), "ext_modules": ext_modules, "data_files": diff --git a/packages/basemap/src/mpl_toolkits/__init__.py b/packages/basemap/src/mpl_toolkits/__init__.py deleted file mode 100644 index b5cd40f18..000000000 --- a/packages/basemap/src/mpl_toolkits/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -from __future__ import (absolute_import, division, print_function) - -try: - __import__('pkg_resources').declare_namespace(__name__) -except ImportError: - pass # must not have setuptools diff --git a/packages/basemap_data/setup.py b/packages/basemap_data/setup.py index 2d8e4e620..9a5ad0343 100644 --- a/packages/basemap_data/setup.py +++ b/packages/basemap_data/setup.py @@ -7,7 +7,7 @@ import os import itertools from setuptools import setup -from setuptools import find_packages +from setuptools import find_namespace_packages def get_content(name, splitlines=False): @@ -114,7 +114,7 @@ def get_content(name, splitlines=False): "package_dir": {"": "src"}, "packages": - find_packages(where="src"), + find_namespace_packages(where="src"), "package_data": { "mpl_toolkits.basemap_data": data_files, diff --git a/packages/basemap_data/src/mpl_toolkits/__init__.py b/packages/basemap_data/src/mpl_toolkits/__init__.py deleted file mode 100644 index 02de4115d..000000000 --- a/packages/basemap_data/src/mpl_toolkits/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -try: - __import__('pkg_resources').declare_namespace(__name__) -except ImportError: - pass # must not have setuptools diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/__init__.py b/packages/basemap_data/src/mpl_toolkits/basemap_data/__init__.py deleted file mode 100644 index 02de4115d..000000000 --- a/packages/basemap_data/src/mpl_toolkits/basemap_data/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -try: - __import__('pkg_resources').declare_namespace(__name__) -except ImportError: - pass # must not have setuptools diff --git a/packages/basemap_data_hires/setup.py b/packages/basemap_data_hires/setup.py index 7dbe83cf6..b36a0b11b 100644 --- a/packages/basemap_data_hires/setup.py +++ b/packages/basemap_data_hires/setup.py @@ -7,7 +7,7 @@ import os import itertools from setuptools import setup -from setuptools import find_packages +from setuptools import find_namespace_packages def get_content(name, splitlines=False): @@ -92,7 +92,7 @@ def get_content(name, splitlines=False): "package_dir": {"": "src"}, "packages": - find_packages(where="src"), + find_namespace_packages(where="src"), "package_data": { "mpl_toolkits.basemap_data": data_files, diff --git a/packages/basemap_data_hires/src/mpl_toolkits/__init__.py b/packages/basemap_data_hires/src/mpl_toolkits/__init__.py deleted file mode 100644 index 02de4115d..000000000 --- a/packages/basemap_data_hires/src/mpl_toolkits/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -try: - __import__('pkg_resources').declare_namespace(__name__) -except ImportError: - pass # must not have setuptools diff --git a/packages/basemap_data_hires/src/mpl_toolkits/basemap_data/__init__.py b/packages/basemap_data_hires/src/mpl_toolkits/basemap_data/__init__.py deleted file mode 100644 index 02de4115d..000000000 --- a/packages/basemap_data_hires/src/mpl_toolkits/basemap_data/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -try: - __import__('pkg_resources').declare_namespace(__name__) -except ImportError: - pass # must not have setuptools From 422827b14deb35bc526c8450ba4a1e562fd1e8d1 Mon Sep 17 00:00:00 2001 From: Kyle Sunden Date: Thu, 8 Jun 2023 17:47:57 -0500 Subject: [PATCH 05/95] remove namespace_packages key from setup --- packages/basemap/setup.py | 3 --- packages/basemap_data/setup.py | 3 --- packages/basemap_data_hires/setup.py | 3 --- 3 files changed, 9 deletions(-) diff --git a/packages/basemap/setup.py b/packages/basemap/setup.py index e32646b5d..b48d04224 100644 --- a/packages/basemap/setup.py +++ b/packages/basemap/setup.py @@ -224,9 +224,6 @@ def run(self): "maps", "plots", ], - "namespace_packages": [ - "mpl_toolkits", - ], "package_dir": {"": "src"}, "packages": diff --git a/packages/basemap_data/setup.py b/packages/basemap_data/setup.py index 9a5ad0343..dc50f9040 100644 --- a/packages/basemap_data/setup.py +++ b/packages/basemap_data/setup.py @@ -108,9 +108,6 @@ def get_content(name, splitlines=False): "maps", "plots", ], - "namespace_packages": [ - "mpl_toolkits.basemap_data", - ], "package_dir": {"": "src"}, "packages": diff --git a/packages/basemap_data_hires/setup.py b/packages/basemap_data_hires/setup.py index b36a0b11b..a841bf1d4 100644 --- a/packages/basemap_data_hires/setup.py +++ b/packages/basemap_data_hires/setup.py @@ -86,9 +86,6 @@ def get_content(name, splitlines=False): "maps", "plots", ], - "namespace_packages": [ - "mpl_toolkits.basemap_data", - ], "package_dir": {"": "src"}, "packages": From 43ed6a5e21a7c84603b4f72e0a37c239eca35cb2 Mon Sep 17 00:00:00 2001 From: Kyle Sunden Date: Wed, 5 Jun 2024 12:32:23 -0500 Subject: [PATCH 06/95] Adjust CI to only test on python 3.5+ --- .github/workflows/basemap-data-hires.yml | 7 +++---- .github/workflows/basemap-data.yml | 7 +++---- .github/workflows/basemap-for-manylinux.yml | 12 +++++------- .github/workflows/basemap-for-windows.yml | 20 ++++++-------------- 4 files changed, 17 insertions(+), 29 deletions(-) diff --git a/.github/workflows/basemap-data-hires.yml b/.github/workflows/basemap-data-hires.yml index a33ddb149..25b2dd395 100644 --- a/.github/workflows/basemap-data-hires.yml +++ b/.github/workflows/basemap-data-hires.yml @@ -39,7 +39,7 @@ jobs: strategy: matrix: python-version: - ["2.7"] + ["3.5"] max-parallel: 1 needs: checkout runs-on: ubuntu-latest @@ -68,8 +68,7 @@ jobs: strategy: matrix: python-version: - ["2.6", "2.7", "3.2", "3.3", "3.4", "3.5", "3.6", "3.7", "3.8", - "3.9", "3.10", "3.11", "3.12"] + ["3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] max-parallel: 3 fail-fast: false needs: build @@ -101,7 +100,7 @@ jobs: strategy: matrix: python-version: - ["2.7"] + ["3.5"] max-parallel: 1 if: startsWith(github.event.ref, 'refs/tags/v') needs: test diff --git a/.github/workflows/basemap-data.yml b/.github/workflows/basemap-data.yml index 629213f31..8bacb6331 100644 --- a/.github/workflows/basemap-data.yml +++ b/.github/workflows/basemap-data.yml @@ -39,7 +39,7 @@ jobs: strategy: matrix: python-version: - ["2.7"] + ["3.5"] max-parallel: 1 needs: checkout runs-on: ubuntu-latest @@ -68,8 +68,7 @@ jobs: strategy: matrix: python-version: - ["2.6", "2.7", "3.2", "3.3", "3.4", "3.5", "3.6", "3.7", "3.8", - "3.9", "3.10", "3.11", "3.12"] + ["3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] max-parallel: 3 fail-fast: false needs: build @@ -101,7 +100,7 @@ jobs: strategy: matrix: python-version: - ["2.7"] + ["3.5"] max-parallel: 1 if: startsWith(github.event.ref, 'refs/tags/v') needs: test diff --git a/.github/workflows/basemap-for-manylinux.yml b/.github/workflows/basemap-for-manylinux.yml index cdd577b17..9fb2c82aa 100644 --- a/.github/workflows/basemap-for-manylinux.yml +++ b/.github/workflows/basemap-for-manylinux.yml @@ -40,7 +40,7 @@ jobs: strategy: matrix: python-version: - ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] + ["3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] max-parallel: 3 fail-fast: false needs: checkout @@ -132,7 +132,7 @@ jobs: arch: ["x64", "x86"] python-version: - ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] + ["3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] max-parallel: 3 fail-fast: false needs: build-geos @@ -164,8 +164,6 @@ jobs: x86) arch="i686" ;; esac case "${{ matrix.python-version }}" in - 2.6|3.[23]) pkgvers=1.11.3; tag=manylinux1 ;; - 2.7|3.[456789]) pkgvers=1.16.6; tag=manylinux1 ;; 3.10) pkgvers=1.21.4; tag=manylinux1 ;; 3.11) pkgvers=1.23.3; tag=manylinux_2_17 ;; *) pkgvers=1.26.1; tag=manylinux_2_28 ;; @@ -213,7 +211,7 @@ jobs: arch: ["x64", "x86"] python-version: - ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] + ["3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] max-parallel: 3 fail-fast: false needs: build @@ -258,7 +256,7 @@ jobs: arch: ["x64", "x86"] python-version: - ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] + ["3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] exclude: # Missing precompiled binaries for `numpy`, `matplotlib`, # `pyproj`, `pillow` and `lxml`. @@ -413,7 +411,7 @@ jobs: arch: ["x64", "x86"] python-version: - ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] + ["3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] max-parallel: 1 if: startsWith(github.event.ref, 'refs/tags/v') needs: test diff --git a/.github/workflows/basemap-for-windows.yml b/.github/workflows/basemap-for-windows.yml index 92eb337fc..4b35b8020 100644 --- a/.github/workflows/basemap-for-windows.yml +++ b/.github/workflows/basemap-for-windows.yml @@ -42,7 +42,7 @@ jobs: strategy: matrix: python-version: - ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] + ["3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] max-parallel: 3 fail-fast: false needs: checkout @@ -96,10 +96,8 @@ jobs: arch: ["x64", "x86"] msvc-toolset: - ["9.0", "14.0"] + ["14.0"] include: - - msvc-toolset: "9.0" - python-version: "2.7" - msvc-toolset: "14.0" python-version: "3.5" max-parallel: 4 @@ -148,7 +146,7 @@ jobs: arch: ["x64", "x86"] python-version: - ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] + ["3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] max-parallel: 3 fail-fast: false needs: build-geos @@ -174,8 +172,6 @@ jobs: name: Build old numpy from source run: | Switch -regex ("${{ matrix.python-version }}") { - "^2\.6|3\.[123]$" { Set-Variable -Name "pkgvers" -Value "1.11.3" } - "^2\.7|3\.[456789]$" { Set-Variable -Name "pkgvers" -Value "1.16.6" } "^3\.10$" { Set-Variable -Name "pkgvers" -Value "1.21.4" } "^3\.11$" { Set-Variable -Name "pkgvers" -Value "1.23.3" } default { Set-Variable -Name "pkgvers" -Value "1.26.1" } @@ -185,11 +181,7 @@ jobs: - name: Set MSVC toolset version run: | - if ("${{ matrix.python-version }}" -eq "2.7") { - echo "msvc-toolset=9.0" >> $env:GITHUB_ENV - } else { - echo "msvc-toolset=14.0" >> $env:GITHUB_ENV - } + echo "msvc-toolset=14.0" >> $env:GITHUB_ENV - name: Set MSVC toolset uses: pylegacy/actions/setup-msvc@v2 @@ -223,7 +215,7 @@ jobs: arch: ["x64", "x86"] python-version: - ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] + ["3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] exclude: # Missing precompiled binaries for `numpy` and `matplotlib`. - arch: "x86" @@ -286,7 +278,7 @@ jobs: arch: ["x64", "x86"] python-version: - ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] + ["3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] max-parallel: 1 if: startsWith(github.event.ref, 'refs/tags/v') needs: test From 87a5b91c90ec5a6d29e71fd9f668690eed0ebc20 Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Tue, 18 Feb 2025 12:57:10 +0100 Subject: [PATCH 07/95] unified build and modernizes to CIBUILD --- .github/workflows/build.yml | 149 ++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..6716a6ec8 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,149 @@ +name: Build +env: + GEOS_VERSION: "3.6.5" + +on: + push: + paths: + - ".github/workflows/**" + - "packages/basemap/**" + - "packages/basemap_data/**" + - "packages/basemap_data_hires/**" + pull_request: + paths: + - ".github/workflows/**" + - "packages/basemap/**" + - "packages/basemap_data/**" + - "packages/basemap_data_hires/**" + workflow_dispatch: + +jobs: + build_data: + name: Build data packages + runs-on: ubuntu-latest + strategy: + matrix: + package: [basemap_data, basemap_data_hires] + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.8" + + - name: Install build dependencies + run: | + python -m pip install --upgrade pip + pip install build wheel + + - name: Build package + run: | + cd packages/${{ matrix.package }} + python -m build --wheel --sdist + + - uses: actions/upload-artifact@v4 + with: + path: packages/${{ matrix.package }}/dist/* + name: dist-${{ matrix.package }} + + build_basemap: + name: Build basemap wheels (${{ matrix.os }}) + needs: [build_data] + strategy: + matrix: + os: [ubuntu-latest, windows-latest] + include: + - os: ubuntu-latest + before_all: | + echo "Starting BEFORE_ALL script" + cd "{package}" + export GEOS_DIR="$(pwd)/extern" + echo "GEOS_DIR set to: $GEOS_DIR" + python -c "import sys; sys.path.append('utils'); from GeosLibrary import GeosLibrary; GeosLibrary('3.6.5', root='extern').build('extern', njobs=16)" + environment: >- + CFLAGS="-I/project/packages/basemap/extern/include -I/project/packages/basemap/extern/include/geos" + LDFLAGS="-L/project/packages/basemap/extern/lib" + PIP_DEFAULT_TIMEOUT=10 + PIP_DISABLE_PIP_VERSION_CHECK=1 + PIP_PREFER_BINARY=1 + PIP_RETRIES=0 + PYTHONUNBUFFERED=1 + PYTHONWARNINGS="ignore:DEPRECATION" + + - os: windows-latest + before_all: >- + pwsh -Command " + Write-Host 'Starting BEFORE_ALL script'; + $pwd = Get-Location; + Write-Host 'Current directory:' $pwd; + Set-Location '{package}'; + $env:GEOS_DIR = '{package}/extern'; + python -c 'import sys, os; sys.path.append(\"utils\"); from GeosLibrary import GeosLibrary; GeosLibrary(\"3.6.5\").build(\"extern\", njobs=16)' + " + environment: >- + GEOS_DIR="D:/a/basemap/basemap/packages/basemap/extern" + CFLAGS="-ID:/a/basemap/basemap/packages/basemap/extern/include -ID:/a/basemap/basemap/packages/basemap/extern/include/geos/include" + LDFLAGS="-LD:/a/basemap/basemap/packages/basemap/extern/lib" + PIP_DEFAULT_TIMEOUT=10 + PIP_DISABLE_PIP_VERSION_CHECK=1 + PIP_PREFER_BINARY=1 + PIP_RETRIES=0 + PYTHONUNBUFFERED=1 + PYTHONWARNINGS="ignore:DEPRECATION" + + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.9" + + - name: Build wheels + uses: pypa/cibuildwheel@v2.22.0 + env: + CIBW_PROJECT_REQUIRES_PYTHON: ">=3.9" + CIBW_ARCHS_LINUX: auto64 + CIBW_BUILD_VERBOSITY: 1 + CIBW_BUILD: "cp39* cp310* cp311* cp312*" + CIBW_SKIP: "pp* *-musllinux_* *-win32 *-manylinux_i686 *-musllinux_i686 *-aarch64 *-armv7l" + CIBW_BEFORE_ALL: ${{ matrix.before_all }} + CIBW_ENVIRONMENT: ${{ matrix.environment }} + CIBW_BUILD_REQUIRES: "cython>=0.29,<3.1" + CIBW_REPAIR_WHEEL_COMMAND: "" + with: + package-dir: packages/basemap + + - uses: actions/upload-artifact@v4 + with: + path: ./wheelhouse/*.whl + name: wheels-basemap-${{ matrix.os }} + + upload_pypi: + needs: [build_data, build_basemap] + runs-on: ubuntu-latest + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') + strategy: + matrix: + package: [basemap, basemap_data, basemap_data_hires] + include: + - package: basemap + artifact_pattern: "wheels-basemap-*" + - package: basemap_data + artifact_pattern: "dist-basemap_data" + - package: basemap_data_hires + artifact_pattern: "dist-basemap_data_hires" + steps: + - uses: actions/download-artifact@v4 + with: + pattern: ${{ matrix.artifact_pattern }} + path: dist + merge-multiple: true + + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + password: ${{ secrets.PYPI_TOKEN }} From ff3680f1ab43163b2984b622e89de368a8ebf677 Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Tue, 18 Feb 2025 12:57:36 +0100 Subject: [PATCH 08/95] removed eol support and set numpy standard --- packages/basemap/pyproject.toml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/packages/basemap/pyproject.toml b/packages/basemap/pyproject.toml index 6a50e2c78..89a9c07da 100644 --- a/packages/basemap/pyproject.toml +++ b/packages/basemap/pyproject.toml @@ -2,14 +2,7 @@ requires = [ 'setuptools', 'wheel', - 'numpy == 1.26.1; python_version >= "3.12"', - 'numpy == 1.23.3; python_version == "3.11"', - 'numpy == 1.21.4; python_version == "3.10"', - 'numpy == 1.21.4; sys_platform == "darwin" and (python_version >= "3.7" and python_version <= "3.9")', - 'numpy == 1.16.6; sys_platform != "darwin" and (python_version >= "3.7" and python_version <= "3.9")', - 'numpy == 1.16.6; python_version == "2.7" or (python_version >= "3.4" and python_version <= "3.6")', - 'numpy == 1.11.3; python_version == "2.6" or (python_version >= "3.2" and python_version <= "3.3")', + 'numpy >= 2.0.0; python_version >= "3.9"', 'cython >= 0.29, < 3.1; python_version >= "3.3" or python_version < "3.0"', - 'cython >= 0.26, < 0.27; python_version == "3.2"' ] build-backend = "setuptools.build_meta" From 7bf4d9a0c540f77af7ec875dd2113b6755845ee4 Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Tue, 18 Feb 2025 12:58:00 +0100 Subject: [PATCH 09/95] update dependencies and remove eol support --- packages/basemap/requirements.txt | 30 +----------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/packages/basemap/requirements.txt b/packages/basemap/requirements.txt index 7e10e9c1b..78a1ce0d3 100644 --- a/packages/basemap/requirements.txt +++ b/packages/basemap/requirements.txt @@ -1,38 +1,10 @@ basemap_data >= 1.3.2, < 1.4 -numpy >= 1.11, < 1.12; python_version == "2.6" -numpy >= 1.16, < 1.17; python_version == "2.7" -numpy >= 1.11, < 1.12; python_version == "3.2" -numpy >= 1.11, < 1.12; python_version == "3.3" -numpy >= 1.15, < 1.17; python_version == "3.4" -numpy >= 1.16, < 1.19; python_version == "3.5" -numpy >= 1.19, < 1.20; python_version == "3.6" -numpy >= 1.21, < 1.22; python_version == "3.7" -numpy >= 1.21, < 1.27; python_version >= "3.8" - -cycler < 0.11; python_version == "3.2" -pyparsing >= 1.5, < 2.4.1; python_version == "2.6" -pyparsing >= 1.5, < 2.3.1; python_version == "3.2" -matplotlib >= 1.5, < 2.0; python_version == "2.6" -matplotlib >= 1.5, < 3.0; python_version == "2.7" -matplotlib >= 1.5, < 2.0; python_version == "3.2" -matplotlib >= 1.5, < 2.0; python_version == "3.3" -matplotlib >= 1.5, < 3.0; python_version == "3.4" +numpy >= 2.0.0; python_version >= "3.9" matplotlib >= 1.5, < 3.9; python_version >= "3.5" -pyproj >= 1.9.3, < 2.1.0; python_version == "2.6" -pyproj >= 1.9.3, < 2.2.0; python_version == "2.7" -pyproj >= 1.9.3, < 1.9.6; python_version == "3.2" -pyproj >= 1.9.3, < 2.1.0; python_version == "3.3" -pyproj >= 1.9.3, < 2.1.0; python_version == "3.4" pyproj >= 1.9.3, < 3.7.0; python_version >= "3.5" -pyshp >= 1.2, < 2.0; python_version == "2.6" pyshp >= 1.2, < 2.4; python_version >= "2.7" -packaging >= 16.0, < 17.0; python_version == "2.6" -packaging >= 16.0, < 21.0; python_version == "2.7" -packaging >= 16.0, < 17.0; python_version == "3.2" -packaging >= 16.0, < 17.0; python_version == "3.3" -packaging >= 16.0, < 21.0; python_version == "3.4" packaging >= 16.0, < 25.0; python_version >= "3.5" From 5330c58bda668f1cfb055aa41154f2f1421bad5b Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Tue, 18 Feb 2025 13:18:09 +0100 Subject: [PATCH 10/95] add necessary noexcept for more recent cython --- packages/basemap/src/_geoslib.pyx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/basemap/src/_geoslib.pyx b/packages/basemap/src/_geoslib.pyx index 676ac4d4b..6d1e36914 100644 --- a/packages/basemap/src/_geoslib.pyx +++ b/packages/basemap/src/_geoslib.pyx @@ -112,7 +112,7 @@ cdef extern from "geos_c.h": # Cython 3: Next cdef needs "noexcept" declaration unless # the compiler directive "legacy_implicit_noexcept" is used # ("noexcept" syntax supported since Cython 0.29.31). -cdef void notice_h(const char *fmt, ...): +cdef void notice_h(const char *fmt, ...) noexcept: pass #format = PyBytes_FromString(fmt) #message = PyBytes_FromString(msg) From b3871cbfc4f529dd886713301f402551006ff93f Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Tue, 18 Feb 2025 13:20:26 +0100 Subject: [PATCH 11/95] cleanup old workflows --- .github/workflows/basemap-for-manylinux.yml | 449 -------------------- .github/workflows/basemap-for-windows.yml | 326 -------------- 2 files changed, 775 deletions(-) delete mode 100644 .github/workflows/basemap-for-manylinux.yml delete mode 100644 .github/workflows/basemap-for-windows.yml diff --git a/.github/workflows/basemap-for-manylinux.yml b/.github/workflows/basemap-for-manylinux.yml deleted file mode 100644 index 617568c9a..000000000 --- a/.github/workflows/basemap-for-manylinux.yml +++ /dev/null @@ -1,449 +0,0 @@ -name: basemap-for-manylinux - -env: - PKGDIR: "packages/basemap" - PIP_DEFAULT_TIMEOUT: 10 - PIP_DISABLE_PIP_VERSION_CHECK: 1 - PIP_PREFER_BINARY: 1 - PIP_RETRIES: 0 - PYTHONUNBUFFERED: "1" - PYTHONWARNINGS: "ignore:DEPRECATION" - -on: - push: - paths: - - ".github/workflows/basemap-for-manylinux.yml" - - "packages/basemap/**" - pull_request: - paths: - - ".github/workflows/basemap-for-manylinux.yml" - - "packages/basemap/**" - workflow_dispatch: - -jobs: - - checkout: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v1 - - - name: Upload checkout - uses: actions/upload-artifact@v1 - with: - name: checkout - path: . - - lint: - runs-on: ubuntu-latest - strategy: - matrix: - python-version: - ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] - max-parallel: 3 - fail-fast: false - needs: checkout - container: "pylegacy/python:${{ matrix.python-version }}-debian-10" - steps: - - - name: Download checkout - uses: actions/download-artifact@v1 - with: - name: checkout - path: . - - - name: Install lint requirements - run: | - cd ${{ env.PKGDIR }} - pip install -r requirements-lint.txt - - - name: Install library requirements - run: | - cd ${{ env.PKGDIR }} - pip install -r requirements.txt - - - name: Run Flake8 - run: | - cd ${{ env.PKGDIR }} - if [ -x "$(command -v flake8)" ]; then - flake8 src/mpl_toolkits/basemap/cm.py src/mpl_toolkits/basemap/diagnostic.py src/mpl_toolkits/basemap/proj.py src/mpl_toolkits/basemap/solar.py test; - fi - - - name: Run PyLint - run: | - cd ${{ env.PKGDIR }} - if [ -x "$(command -v pylint)" ]; then - pylint src/mpl_toolkits/basemap/cm.py src/mpl_toolkits/basemap/diagnostic.py src/mpl_toolkits/basemap/proj.py src/mpl_toolkits/basemap/solar.py test; - fi - - build-geos: - strategy: - matrix: - arch: - ["x64", "x86"] - max-parallel: 2 - fail-fast: false - needs: lint - runs-on: ubuntu-latest - container: "pylegacy/${{ matrix.arch }}-python:3.8-debian-4" - steps: - - - name: Download checkout - uses: actions/download-artifact@v1 - with: - name: checkout - path: . - - - name: Install CMake 3.6.2 - run: | - apt-get update - apt-get install -y libidn11 - pkgvers=3.6.2 - pkgname=cmake - pkgcode=cmake-${pkgvers} - case "${{ matrix.arch }}" in - x86) pkgfile=${pkgcode}-Linux-i386.tar.gz;; - *) pkgfile=${pkgcode}-Linux-x86_64.tar.gz;; - esac - wget https://github.com/Kitware/CMake/releases/download/v${pkgvers}/${pkgfile} -P /tmp - tar -xf /tmp/${pkgfile} --strip-components=1 -C /usr - rm -rf /tmp/${pkgfile} - - - name: Install GCC toolchain - run: | - apt-get update - apt-get install -y gcc g++ make - - - name: Build GEOS from source - run: | - cd ${{ env.PKGDIR }} - python -c "import utils; utils.GeosLibrary('3.6.5').build('extern', njobs=16)" - - - name: Upload GEOS artifacts - uses: actions/upload-artifact@v1 - with: - name: artifacts-geos-${{ matrix.arch }} - path: ${{ env.PKGDIR }}/extern - - build: - strategy: - matrix: - arch: - ["x64", "x86"] - python-version: - ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] - max-parallel: 3 - fail-fast: false - needs: build-geos - runs-on: ubuntu-latest - container: "pylegacy/${{ matrix.arch }}-python:${{ matrix.python-version }}-debian-4" - steps: - - - name: Download checkout - uses: actions/download-artifact@v1 - with: - name: checkout - path: . - - - name: Download GEOS artifacts - uses: actions/download-artifact@v1 - with: - name: artifacts-geos-${{ matrix.arch }} - path: ${{ env.PKGDIR }}/extern - - - name: Install GCC toolchain - run: | - apt-get update - apt-get install -y gcc g++ make - - - name: Build old numpy from source - run: | - case "${{ matrix.arch }}" in - x64) arch="x86_64" ;; - x86) arch="i686" ;; - esac - case "${{ matrix.python-version }}" in - 2.6|3.[23]) pkgvers=1.11.3; tag=manylinux1 ;; - 2.7|3.[456789]) pkgvers=1.16.6; tag=manylinux1 ;; - 3.10) pkgvers=1.21.4; tag=manylinux1 ;; - 3.11) pkgvers=1.23.3; tag=manylinux_2_17 ;; - *) pkgvers=1.26.1; tag=manylinux_2_28 ;; - esac - case "${{ matrix.python-version }}" in - 3.11|3.12) - # Dirty solution to get NumPy headers for Python 3.11 and 3.12. - kwds="--plat=${tag}_${arch}" - pip download --no-deps ${kwds} "numpy==${pkgvers}" - oldpkgfile=$(ls *.whl | head -n1) - newpkgfile=$(echo "${oldpkgfile}" | sed "s/${tag}/linux/") - mv "${oldpkgfile}" "${newpkgfile}" - pip install "${newpkgfile}" - rm "${newpkgfile}" - ;; - *) - pip install "numpy == ${pkgvers}" - ;; - esac - - - name: Build wheel - run: | - sitepkgdir=$(pip show numpy 2>/dev/null | grep Location: | cut -d' ' -f2) - export GEOS_DIR="${GITHUB_WORKSPACE}/${{ env.PKGDIR }}/extern" - export NUMPY_INCLUDE_PATH=${sitepkgdir}/numpy/core/include - case "${{ matrix.python-version }}" in - 3.11|3.12) - kwds="--no-build-isolation" - pip install setuptools wheel "cython >= 0.29, < 3.1" - ;; - esac - cd ${{ env.PKGDIR }} - python setup.py sdist - pip wheel -w dist --no-deps ${kwds} dist/*.zip - - - name: Upload build artifacts - uses: actions/upload-artifact@v1 - with: - name: artifacts-build-${{ matrix.arch }}-${{ matrix.python-version }} - path: ${{ env.PKGDIR }}/dist - - repair: - strategy: - matrix: - arch: - ["x64", "x86"] - python-version: - ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] - max-parallel: 3 - fail-fast: false - needs: build - runs-on: ubuntu-latest - container: "pylegacy/${{ matrix.arch }}-python:3.8-debian-10" - steps: - - - name: Download GEOS artifacts - uses: actions/download-artifact@v1 - with: - name: artifacts-geos-${{ matrix.arch }} - path: ${{ env.PKGDIR }}/extern - - - name: Download build artifacts - uses: actions/download-artifact@v1 - with: - name: artifacts-build-${{ matrix.arch }}-${{ matrix.python-version }} - path: ${{ env.PKGDIR }}/dist - - - name: Install auditwheel - run: | - apt-get update - apt-get install -y unzip - pip install patchelf - pip install "auditwheel < 4.0" - - - name: Repair wheel - run: | - cd ${{ env.PKGDIR }} - export LD_LIBRARY_PATH="$(readlink -f extern/lib)" - auditwheel repair -w dist dist/*.whl - - - name: Upload build artifacts - uses: actions/upload-artifact@v1 - with: - name: artifacts-build-${{ matrix.arch }}-${{ matrix.python-version }} - path: ${{ env.PKGDIR }}/dist - - test: - strategy: - matrix: - arch: - ["x64", "x86"] - python-version: - ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] - exclude: - # Missing precompiled binaries for `numpy`, `matplotlib`, - # `pyproj`, `pillow` and `lxml`. - - arch: "x86" - python-version: "3.12" - max-parallel: 3 - fail-fast: false - needs: repair - runs-on: ubuntu-latest - container: "pylegacy/${{ matrix.arch }}-python:${{ matrix.python-version }}-debian-10" - steps: - - - name: Download checkout - uses: actions/download-artifact@v1 - with: - name: checkout - path: . - - - name: Download build artifacts - uses: actions/download-artifact@v1 - with: - name: artifacts-build-${{ matrix.arch }}-${{ matrix.python-version }} - path: ${{ env.PKGDIR }}/dist - - - name: Install numpy from source - run: | - apt-get update - apt-get install -y gcc g++ make - pip install "numpy < 1.24" - if: matrix.arch == 'x86' && (matrix.python-version >= '3.8' || matrix.python-version >= '3.10') - - - name: Install test requirements - run: | - cd ${{ env.PKGDIR }} - pip install -r requirements-test.txt - - - name: Install package (full) - run: | - whlpath=$(ls ${{ env.PKGDIR }}/dist/*-manylinux1*.whl | head -n1) - pip install "${whlpath}[owslib,pillow]" - - - name: Test package - run: | - cd ${{ env.PKGDIR }} - export COVERAGE_FILE=.coverage.${{ matrix.python-version }} - python -m pytest \ - --cov="mpl_toolkits.basemap" --cov-report=term \ - --ignore=dist --ignore=build - - - name: Upload test artifacts - uses: actions/upload-artifact@v1 - with: - name: artifacts-test - path: ${{ env.PKGDIR }}/.coverage.${{ matrix.python-version }} - - coverage: - needs: test - runs-on: ubuntu-latest - container: "pylegacy/python:3.8-debian-10" - steps: - - - name: Checkout - uses: actions/checkout@v1 - - - name: Download test artifacts - uses: actions/download-artifact@v1 - with: - name: artifacts-test - path: ${{ env.PKGDIR }} - - - name: Install test requirements - run: | - cd ${{ env.PKGDIR }} - pip install -r requirements-test.txt - - - name: Compute combined coverage - run: | - cd ${{ env.PKGDIR }} - coverage combine - coverage html - coverage report - - - name: Upload coverage artifacts - uses: actions/upload-artifact@v1 - with: - name: artifacts-coverage - path: ${{ env.PKGDIR }}/htmlcov - - docs: - needs: test - runs-on: ubuntu-latest - container: "pylegacy/python:3.8-debian-10" - steps: - - - name: Download checkout - uses: actions/download-artifact@v1 - with: - name: checkout - path: . - - - name: Install doc requirements - run: | - cd ${{ env.PKGDIR }} - pip install -r requirements-doc.txt - - - name: Download build artifacts - uses: actions/download-artifact@v1 - with: - name: artifacts-build-x64-3.8 - path: ${{ env.PKGDIR }}/dist - - - name: Install package - run: | - cd ${{ env.PKGDIR }} - pip install dist/*-manylinux1*.whl - - - name: Run sphinx - run: | - cd ${{ env.PKGDIR }} - python -m sphinx doc/source public - - - name: Upload docs artifacts - uses: actions/upload-artifact@v1 - with: - name: artifacts-docs - path: ${{ env.PKGDIR }}/public - - - name: Upload github-pages artifact - uses: actions/upload-pages-artifact@v3 - with: - name: github-pages - path: ${{ env.PKGDIR }}/public - - pages: - if: startsWith(github.event.ref, 'refs/tags/v') - needs: docs - runs-on: ubuntu-latest - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - permissions: - pages: write - id-token: write - steps: - - name: Deploy github-pages - uses: actions/deploy-pages@v3 - id: deployment - - upload: - strategy: - matrix: - arch: - ["x64", "x86"] - python-version: - ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] - max-parallel: 1 - if: startsWith(github.event.ref, 'refs/tags/v') - needs: test - runs-on: ubuntu-latest - container: "pylegacy/${{ matrix.arch }}-python:${{ matrix.python-version }}-debian-10" - environment: PyPI - steps: - - - name: Download build artifacts - uses: actions/download-artifact@v1 - with: - name: artifacts-build-${{ matrix.arch }}-${{ matrix.python-version }} - path: ${{ env.PKGDIR }}/dist - - - name: Install upload requirements - run: | - pip install twine - - - name: Check distributables - run: | - python -m twine check \ - ${{ env.PKGDIR }}/dist/*.zip \ - ${{ env.PKGDIR }}/dist/*-manylinux1*.whl - - - name: Upload distributables - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: "${{ secrets.PYPI_TOKEN }}" - TWINE_REPOSITORY_URL: "${{ secrets.PYPI_REPOSITORY_URL }}" - run: | - python -m twine upload --skip-existing \ - ${{ env.PKGDIR }}/dist/*.zip \ - ${{ env.PKGDIR }}/dist/*-manylinux1*.whl diff --git a/.github/workflows/basemap-for-windows.yml b/.github/workflows/basemap-for-windows.yml deleted file mode 100644 index 92eb337fc..000000000 --- a/.github/workflows/basemap-for-windows.yml +++ /dev/null @@ -1,326 +0,0 @@ -name: basemap-for-windows - -env: - PKGDIR: "packages/basemap" - PIP_DEFAULT_TIMEOUT: 10 - PIP_DISABLE_PIP_VERSION_CHECK: 1 - PIP_PREFER_BINARY: 1 - PIP_RETRIES: 0 - PYTHONUNBUFFERED: "1" - PYTHONWARNINGS: "ignore:DEPRECATION" - -on: - push: - paths: - - ".github/workflows/basemap-for-windows.yml" - - "!packages/basemap/doc/**" - - "packages/basemap/**" - pull_request: - paths: - - ".github/workflows/basemap-for-windows.yml" - - "!packages/basemap/doc/**" - - "packages/basemap/**" - workflow_dispatch: - -jobs: - - checkout: - runs-on: windows-2019 - steps: - - - name: Checkout - uses: actions/checkout@v4 - - - name: Upload checkout - uses: actions/upload-artifact@v4 - with: - name: checkout - path: . - - lint: - runs-on: windows-2019 - strategy: - matrix: - python-version: - ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] - max-parallel: 3 - fail-fast: false - needs: checkout - steps: - - - name: Download checkout - uses: actions/download-artifact@v4 - with: - name: checkout - path: . - - - name: Set Python - uses: pylegacy/actions/setup-pyenv-win@v2 - with: - architecture: ${{ matrix.arch }} - python-version: ${{ matrix.python-version }} - - - name: Set Python base packages - run: | - python -m pip install --upgrade pip setuptools wheel - - - name: Install lint requirements - run: | - cd ${{ env.PKGDIR }} - python -m pip install -r requirements-lint.txt - - - name: Install library requirements - run: | - cd ${{ env.PKGDIR }} - python -m pip install -r requirements.txt - - - name: Run Flake8 - run: | - cd ${{ env.PKGDIR }} - if (Get-Command flake8 -errorAction SilentlyContinue) - { - flake8 src/mpl_toolkits/basemap/cm.py src/mpl_toolkits/basemap/diagnostic.py src/mpl_toolkits/basemap/proj.py src/mpl_toolkits/basemap/solar.py test; - } - - - name: Run PyLint - run: | - cd ${{ env.PKGDIR }} - if (Get-Command pylint -errorAction SilentlyContinue) - { - pylint src/mpl_toolkits/basemap/cm.py src/mpl_toolkits/basemap/diagnostic.py src/mpl_toolkits/basemap/proj.py src/mpl_toolkits/basemap/solar.py test; - } - - build-geos: - strategy: - matrix: - arch: - ["x64", "x86"] - msvc-toolset: - ["9.0", "14.0"] - include: - - msvc-toolset: "9.0" - python-version: "2.7" - - msvc-toolset: "14.0" - python-version: "3.5" - max-parallel: 4 - fail-fast: false - needs: lint - runs-on: windows-2019 - steps: - - - name: Download checkout - uses: actions/download-artifact@v4 - with: - name: checkout - path: . - - - name: Set MSVC toolset - uses: pylegacy/actions/setup-msvc@v2 - with: - arch: ${{ matrix.arch }} - toolset: ${{ matrix.msvc-toolset }} - - - name: Set CMake - uses: jwlawson/actions-setup-cmake@v2.0 - with: - cmake-version: "3.24.2" - - - name: Set Python - uses: pylegacy/actions/setup-pyenv-win@v2 - with: - architecture: ${{ matrix.arch }} - python-version: ${{ matrix.python-version }} - - - name: Build GEOS from source - run: | - cd ${{ env.PKGDIR }} - python -c "import utils; utils.GeosLibrary('3.6.5').build('extern', toolset='${{ matrix.msvc-toolset }}', njobs=16)" - - - name: Upload GEOS artifacts - uses: actions/upload-artifact@v4 - with: - name: artifacts-geos-${{ matrix.arch }}-msvc${{ matrix.msvc-toolset }} - path: ${{ env.PKGDIR }}/extern - - build: - strategy: - matrix: - arch: - ["x64", "x86"] - python-version: - ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] - max-parallel: 3 - fail-fast: false - needs: build-geos - runs-on: windows-2019 - steps: - - - name: Download checkout - uses: actions/download-artifact@v4 - with: - name: checkout - path: . - - - name: Set Python - uses: pylegacy/actions/setup-pyenv-win@v2 - with: - architecture: ${{ matrix.arch }} - python-version: ${{ matrix.python-version }} - - - name: Set Python base packages - run: | - python -m pip install --upgrade pip setuptools wheel - - - name: Build old numpy from source - run: | - Switch -regex ("${{ matrix.python-version }}") { - "^2\.6|3\.[123]$" { Set-Variable -Name "pkgvers" -Value "1.11.3" } - "^2\.7|3\.[456789]$" { Set-Variable -Name "pkgvers" -Value "1.16.6" } - "^3\.10$" { Set-Variable -Name "pkgvers" -Value "1.21.4" } - "^3\.11$" { Set-Variable -Name "pkgvers" -Value "1.23.3" } - default { Set-Variable -Name "pkgvers" -Value "1.26.1" } - } - $env:SETUPTOOLS_USE_DISTUTILS = "stdlib" - python -m pip install "numpy == ${pkgvers}" - - - name: Set MSVC toolset version - run: | - if ("${{ matrix.python-version }}" -eq "2.7") { - echo "msvc-toolset=9.0" >> $env:GITHUB_ENV - } else { - echo "msvc-toolset=14.0" >> $env:GITHUB_ENV - } - - - name: Set MSVC toolset - uses: pylegacy/actions/setup-msvc@v2 - with: - arch: ${{ matrix.arch }} - toolset: ${{ env.msvc-toolset }} - - - name: Download GEOS artifacts - uses: actions/download-artifact@v4 - with: - name: artifacts-geos-${{ matrix.arch }}-msvc${{ env.msvc-toolset }} - path: ${{ env.PKGDIR }}/extern - - - name: Build sdist and wheel - run: | - cd ${{ env.PKGDIR }} - $env:GEOS_DIR = "$env:GITHUB_WORKSPACE/${{ env.PKGDIR }}/extern" - python -m pip install -r requirements-setup.txt - python setup.py sdist - python -m pip wheel -w dist --no-deps (Get-Item dist/*.zip) - - - name: Upload build artifacts - uses: actions/upload-artifact@v4 - with: - name: artifacts-build-${{ matrix.arch }}-${{ matrix.python-version }} - path: ${{ env.PKGDIR }}/dist - - test: - strategy: - matrix: - arch: - ["x64", "x86"] - python-version: - ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] - exclude: - # Missing precompiled binaries for `numpy` and `matplotlib`. - - arch: "x86" - python-version: "3.12" - max-parallel: 3 - fail-fast: false - needs: build - runs-on: windows-2019 - steps: - - - name: Download checkout - uses: actions/download-artifact@v4 - with: - name: checkout - path: . - - - name: Download build artifacts - uses: actions/download-artifact@v4 - with: - name: artifacts-build-${{ matrix.arch }}-${{ matrix.python-version }} - path: ${{ env.PKGDIR }}/dist - - - name: Set Python - uses: pylegacy/actions/setup-pyenv-win@v2 - with: - architecture: ${{ matrix.arch }} - python-version: ${{ matrix.python-version }} - - - name: Set Python base packages - run: | - python -m pip install --upgrade pip setuptools wheel - - - name: Install test requirements - run: | - cd ${{ env.PKGDIR }} - pip install -r requirements-test.txt - - - name: Install package (full) - run: | - $whlpath = "$(Get-Item ${{ env.PKGDIR }}/dist/*-win*.whl)" - python -m pip install "${whlpath}[owslib,pillow]" - - - name: Test package - run: | - cd ${{ env.PKGDIR }} - $env:COVERAGE_FILE = ".coverage.${{ matrix.arch }}.${{ matrix.python-version }}" - python -m pytest ` - --cov="mpl_toolkits.basemap" --cov-report=term ` - --ignore=dist --ignore=build - - - name: Upload test artifacts - uses: actions/upload-artifact@v4 - with: - name: artifacts-test-${{ matrix.arch }}-${{ matrix.python-version }} - path: ${{ env.PKGDIR }}/.coverage.${{ matrix.arch }}.${{ matrix.python-version }} - - upload: - strategy: - matrix: - arch: - ["x64", "x86"] - python-version: - ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] - max-parallel: 1 - if: startsWith(github.event.ref, 'refs/tags/v') - needs: test - runs-on: windows-2019 - environment: PyPI - steps: - - - name: Set Python - uses: pylegacy/actions/setup-pyenv-win@v2 - with: - architecture: ${{ matrix.arch }} - python-version: ${{ matrix.python-version }} - - - name: Download build artifacts - uses: actions/download-artifact@v4 - with: - name: artifacts-build-${{ matrix.arch }}-${{ matrix.python-version }} - path: ${{ env.PKGDIR }}/dist - - - name: Install upload requirements - run: | - python -m pip install twine - - - name: Check distributables - run: | - python -m twine check ` - ${{ env.PKGDIR }}/dist/*.zip ` - ${{ env.PKGDIR }}/dist/*.whl - - - name: Upload distributables - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: "${{ secrets.PYPI_TOKEN }}" - TWINE_REPOSITORY_URL: "${{ secrets.PYPI_REPOSITORY_URL }}" - run: | - python -m twine upload --skip-existing ` - ${{ env.PKGDIR }}/dist/*.whl From 4830331ffb15fb4798934b1065b42fdf0d468c9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 18 Feb 2025 18:43:51 +0100 Subject: [PATCH 12/95] Change Python version in setup step to 3.9 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6716a6ec8..a19cab4f3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,7 +31,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: "3.8" + python-version: "3.9" - name: Install build dependencies run: | From 121ecb2f23ca963271cb059b2f64695539fc9a0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 18 Feb 2025 18:45:01 +0100 Subject: [PATCH 13/95] Restrict numpy version in pyproject.toml build requirements --- packages/basemap/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/basemap/pyproject.toml b/packages/basemap/pyproject.toml index 89a9c07da..62fefffed 100644 --- a/packages/basemap/pyproject.toml +++ b/packages/basemap/pyproject.toml @@ -2,7 +2,7 @@ requires = [ 'setuptools', 'wheel', - 'numpy >= 2.0.0; python_version >= "3.9"', + 'numpy == 2.0.0', 'cython >= 0.29, < 3.1; python_version >= "3.3" or python_version < "3.0"', ] build-backend = "setuptools.build_meta" From 980584234d27abf1b60e20a52a0bb597fd31a9b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 18 Feb 2025 18:45:29 +0100 Subject: [PATCH 14/95] Clean Cython conditions in pyproject.toml build requirements --- packages/basemap/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/basemap/pyproject.toml b/packages/basemap/pyproject.toml index 62fefffed..8ab927ff8 100644 --- a/packages/basemap/pyproject.toml +++ b/packages/basemap/pyproject.toml @@ -3,6 +3,6 @@ requires = [ 'setuptools', 'wheel', 'numpy == 2.0.0', - 'cython >= 0.29, < 3.1; python_version >= "3.3" or python_version < "3.0"', + 'cython >= 0.29, < 3.1', ] build-backend = "setuptools.build_meta" From bac26196ba69a639edaceb6bc608a113b1988157 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 18 Feb 2025 18:47:54 +0100 Subject: [PATCH 15/95] Update python_requires in setup.py files --- packages/basemap/setup.py | 4 +--- packages/basemap_data/setup.py | 4 +--- packages/basemap_data_hires/setup.py | 4 +--- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/packages/basemap/setup.py b/packages/basemap/setup.py index 4c98a8776..8d2bebdd0 100644 --- a/packages/basemap/setup.py +++ b/packages/basemap/setup.py @@ -237,9 +237,7 @@ def run(self): data_files, "python_requires": ", ".join([ - ">=2.6", - "!=3.0.*", - "!=3.1.*", + ">=3.9", "<3.13", ]), "setup_requires": diff --git a/packages/basemap_data/setup.py b/packages/basemap_data/setup.py index 2d8e4e620..2286b7419 100644 --- a/packages/basemap_data/setup.py +++ b/packages/basemap_data/setup.py @@ -121,9 +121,7 @@ def get_content(name, splitlines=False): }, "python_requires": ", ".join([ - ">=2.6", - "!=3.0.*", - "!=3.1.*", + ">=3.9", "<4", ]), "project_urls": { diff --git a/packages/basemap_data_hires/setup.py b/packages/basemap_data_hires/setup.py index 7dbe83cf6..5dc8009ad 100644 --- a/packages/basemap_data_hires/setup.py +++ b/packages/basemap_data_hires/setup.py @@ -99,9 +99,7 @@ def get_content(name, splitlines=False): }, "python_requires": ", ".join([ - ">=2.6", - "!=3.0.*", - "!=3.1.*", + ">=3.9", "<4", ]), "project_urls": { From ddc58bf076bf71041091df29fc662ea7bee8f919 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 18 Feb 2025 19:04:11 +0100 Subject: [PATCH 16/95] Remove CIBW_REPAIR_WHEEL_COMMAND entry in build.yml Based on the `cibuildwheel` docs: https://cibuildwheel.pypa.io/en/stable/options/ If `CIBW_REPAIR_WHEEL_COMMAND` is not specified, then the default behaviour for Linux is our desired behaviour: auditwheel repair -w {dest_dir} {wheel} Because `CIBW_REPAIR_WHEEL_COMMAND` was set before to "", the repair step was being skipped. --- .github/workflows/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a19cab4f3..723638074 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -113,7 +113,6 @@ jobs: CIBW_BEFORE_ALL: ${{ matrix.before_all }} CIBW_ENVIRONMENT: ${{ matrix.environment }} CIBW_BUILD_REQUIRES: "cython>=0.29,<3.1" - CIBW_REPAIR_WHEEL_COMMAND: "" with: package-dir: packages/basemap From 1010b530c42203b87fd46621e042776630cd35a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 18 Feb 2025 19:14:32 +0100 Subject: [PATCH 17/95] Ensure auditwheel can find libraries to bundle This is done by forcing the value of `LD_LIBRARY_PATH` temporarily to the location of the GEOS shared library. --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 723638074..593f34517 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -65,6 +65,7 @@ jobs: environment: >- CFLAGS="-I/project/packages/basemap/extern/include -I/project/packages/basemap/extern/include/geos" LDFLAGS="-L/project/packages/basemap/extern/lib" + LD_LIBRARY_PATH="/project/packages/basemap/extern/lib" PIP_DEFAULT_TIMEOUT=10 PIP_DISABLE_PIP_VERSION_CHECK=1 PIP_PREFER_BINARY=1 From a856f41957aeb2dc6f0788b62e8e0d3daaf93e0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 18 Feb 2025 19:30:14 +0100 Subject: [PATCH 18/95] Remove old workflows building the data packages --- .github/workflows/basemap-data-hires.yml | 137 ----------------------- .github/workflows/basemap-data.yml | 137 ----------------------- 2 files changed, 274 deletions(-) delete mode 100644 .github/workflows/basemap-data-hires.yml delete mode 100644 .github/workflows/basemap-data.yml diff --git a/.github/workflows/basemap-data-hires.yml b/.github/workflows/basemap-data-hires.yml deleted file mode 100644 index a33ddb149..000000000 --- a/.github/workflows/basemap-data-hires.yml +++ /dev/null @@ -1,137 +0,0 @@ -name: basemap-data-hires - -env: - PKGDIR: "packages/basemap_data_hires" - PIP_DEFAULT_TIMEOUT: 10 - PIP_DISABLE_PIP_VERSION_CHECK: 1 - PIP_PREFER_BINARY: 1 - PIP_RETRIES: 0 - PYTHONUNBUFFERED: "1" - PYTHONWARNINGS: "ignore:DEPRECATION" - -on: - push: - paths: - - ".github/workflows/basemap-data-hires.yml" - - "packages/basemap_data_hires/**" - pull_request: - paths: - - ".github/workflows/basemap-data-hires.yml" - - "packages/basemap_data_hires/**" - workflow_dispatch: - -jobs: - - checkout: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v4 - - - name: Upload checkout - uses: actions/upload-artifact@v4 - with: - name: checkout - path: . - - build: - strategy: - matrix: - python-version: - ["2.7"] - max-parallel: 1 - needs: checkout - runs-on: ubuntu-latest - container: "pylegacy/python:${{ matrix.python-version }}-debian-10" - steps: - - - name: Download checkout - uses: actions/download-artifact@v4 - with: - name: checkout - path: . - - - name: Build sdist and wheel - run: | - cd ${{ env.PKGDIR }} - python setup.py sdist - pip wheel -w dist --no-deps dist/*.zip - - - name: Upload build artifacts - uses: actions/upload-artifact@v4 - with: - name: artifacts-build - path: ${{ env.PKGDIR }}/dist - - test: - strategy: - matrix: - python-version: - ["2.6", "2.7", "3.2", "3.3", "3.4", "3.5", "3.6", "3.7", "3.8", - "3.9", "3.10", "3.11", "3.12"] - max-parallel: 3 - fail-fast: false - needs: build - runs-on: ubuntu-latest - container: "pylegacy/python:${{ matrix.python-version }}-debian-10" - steps: - - - name: Download checkout - uses: actions/download-artifact@v4 - with: - name: checkout - path: . - - - name: Download build artifacts - uses: actions/download-artifact@v4 - with: - name: artifacts-build - path: ${{ env.PKGDIR }}/dist - - - name: Install package - run: | - pip install ${{ env.PKGDIR }}/dist/*.whl - - - name: Test package - run: | - python -c "from mpl_toolkits import basemap_data; print(basemap_data)" - - upload: - strategy: - matrix: - python-version: - ["2.7"] - max-parallel: 1 - if: startsWith(github.event.ref, 'refs/tags/v') - needs: test - runs-on: ubuntu-latest - container: "pylegacy/python:${{ matrix.python-version }}-debian-10" - environment: PyPI - steps: - - - name: Download build artifacts - uses: actions/download-artifact@v4 - with: - name: artifacts-build - path: ${{ env.PKGDIR }}/dist - - - name: Install upload requirements - run: | - pip install twine - - - name: Check distributables - run: | - python -m twine check \ - ${{ env.PKGDIR }}/dist/*.zip \ - ${{ env.PKGDIR }}/dist/*.whl - - - name: Upload distributables - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: "${{ secrets.PYPI_TOKEN }}" - TWINE_REPOSITORY_URL: "${{ secrets.PYPI_REPOSITORY_URL }}" - run: | - python -m twine upload --skip-existing \ - ${{ env.PKGDIR }}/dist/*.zip \ - ${{ env.PKGDIR }}/dist/*.whl diff --git a/.github/workflows/basemap-data.yml b/.github/workflows/basemap-data.yml deleted file mode 100644 index 629213f31..000000000 --- a/.github/workflows/basemap-data.yml +++ /dev/null @@ -1,137 +0,0 @@ -name: basemap-data - -env: - PKGDIR: "packages/basemap_data" - PIP_DEFAULT_TIMEOUT: 10 - PIP_DISABLE_PIP_VERSION_CHECK: 1 - PIP_PREFER_BINARY: 1 - PIP_RETRIES: 0 - PYTHONUNBUFFERED: "1" - PYTHONWARNINGS: "ignore:DEPRECATION" - -on: - push: - paths: - - ".github/workflows/basemap-data.yml" - - "packages/basemap_data/**" - pull_request: - paths: - - ".github/workflows/basemap-data.yml" - - "packages/basemap_data/**" - workflow_dispatch: - -jobs: - - checkout: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v4 - - - name: Upload checkout - uses: actions/upload-artifact@v4 - with: - name: checkout - path: . - - build: - strategy: - matrix: - python-version: - ["2.7"] - max-parallel: 1 - needs: checkout - runs-on: ubuntu-latest - container: "pylegacy/python:${{ matrix.python-version }}-debian-10" - steps: - - - name: Download checkout - uses: actions/download-artifact@v4 - with: - name: checkout - path: . - - - name: Build sdist and wheel - run: | - cd ${{ env.PKGDIR }} - python setup.py sdist - pip wheel -w dist --no-deps dist/*.zip - - - name: Upload build artifacts - uses: actions/upload-artifact@v4 - with: - name: artifacts-build - path: ${{ env.PKGDIR }}/dist - - test: - strategy: - matrix: - python-version: - ["2.6", "2.7", "3.2", "3.3", "3.4", "3.5", "3.6", "3.7", "3.8", - "3.9", "3.10", "3.11", "3.12"] - max-parallel: 3 - fail-fast: false - needs: build - runs-on: ubuntu-latest - container: "pylegacy/python:${{ matrix.python-version }}-debian-10" - steps: - - - name: Download checkout - uses: actions/download-artifact@v4 - with: - name: checkout - path: . - - - name: Download build artifacts - uses: actions/download-artifact@v4 - with: - name: artifacts-build - path: ${{ env.PKGDIR }}/dist - - - name: Install package - run: | - pip install ${{ env.PKGDIR }}/dist/*.whl - - - name: Test package - run: | - python -c "from mpl_toolkits import basemap_data; print(basemap_data)" - - upload: - strategy: - matrix: - python-version: - ["2.7"] - max-parallel: 1 - if: startsWith(github.event.ref, 'refs/tags/v') - needs: test - runs-on: ubuntu-latest - container: "pylegacy/python:${{ matrix.python-version }}-debian-10" - environment: PyPI - steps: - - - name: Download build artifacts - uses: actions/download-artifact@v4 - with: - name: artifacts-build - path: ${{ env.PKGDIR }}/dist - - - name: Install upload requirements - run: | - pip install twine - - - name: Check distributables - run: | - python -m twine check \ - ${{ env.PKGDIR }}/dist/*.zip \ - ${{ env.PKGDIR }}/dist/*.whl - - - name: Upload distributables - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: "${{ secrets.PYPI_TOKEN }}" - TWINE_REPOSITORY_URL: "${{ secrets.PYPI_REPOSITORY_URL }}" - run: | - python -m twine upload --skip-existing \ - ${{ env.PKGDIR }}/dist/*.zip \ - ${{ env.PKGDIR }}/dist/*.whl From 43c5e35b53cf44d1bee631404303bffe3c393e99 Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Tue, 18 Feb 2025 20:26:20 +0100 Subject: [PATCH 19/95] add sdist --- .github/workflows/build.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 593f34517..a1013f0bc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -103,6 +103,15 @@ jobs: with: python-version: "3.9" + - name: Build SDist + if: matrix.os == 'ubuntu-latest' + run: | + pip install build + mkdir -p wheelhouse + cd packages/basemap + python -m build --sdist + mv dist/* ../../wheelhouse/ + - name: Build wheels uses: pypa/cibuildwheel@v2.22.0 env: @@ -119,7 +128,9 @@ jobs: - uses: actions/upload-artifact@v4 with: - path: ./wheelhouse/*.whl + path: | + ./wheelhouse/*.whl + ./wheelhouse/*.tar.gz name: wheels-basemap-${{ matrix.os }} upload_pypi: From 3b817f905ad1e0517ce198048b8e6d122927ebd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Wed, 19 Feb 2025 09:46:12 +0100 Subject: [PATCH 20/95] Add missing GEOS_DIR to build_basemap environment on GNU/Linux --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a1013f0bc..fd8d5ef01 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -63,6 +63,7 @@ jobs: echo "GEOS_DIR set to: $GEOS_DIR" python -c "import sys; sys.path.append('utils'); from GeosLibrary import GeosLibrary; GeosLibrary('3.6.5', root='extern').build('extern', njobs=16)" environment: >- + GEOS_DIR="/project/packages/basemap/extern" CFLAGS="-I/project/packages/basemap/extern/include -I/project/packages/basemap/extern/include/geos" LDFLAGS="-L/project/packages/basemap/extern/lib" LD_LIBRARY_PATH="/project/packages/basemap/extern/lib" From 55b90161427e28172773f8a85cef320fd568e5a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Wed, 19 Feb 2025 10:38:44 +0100 Subject: [PATCH 21/95] Remove CFLAGS and LDFLAGS from workflow environments --- .github/workflows/build.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fd8d5ef01..a64b60753 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -62,10 +62,9 @@ jobs: export GEOS_DIR="$(pwd)/extern" echo "GEOS_DIR set to: $GEOS_DIR" python -c "import sys; sys.path.append('utils'); from GeosLibrary import GeosLibrary; GeosLibrary('3.6.5', root='extern').build('extern', njobs=16)" + # LD_LIBRARY_PATH in environment is needed by auditwheel. environment: >- GEOS_DIR="/project/packages/basemap/extern" - CFLAGS="-I/project/packages/basemap/extern/include -I/project/packages/basemap/extern/include/geos" - LDFLAGS="-L/project/packages/basemap/extern/lib" LD_LIBRARY_PATH="/project/packages/basemap/extern/lib" PIP_DEFAULT_TIMEOUT=10 PIP_DISABLE_PIP_VERSION_CHECK=1 @@ -86,8 +85,6 @@ jobs: " environment: >- GEOS_DIR="D:/a/basemap/basemap/packages/basemap/extern" - CFLAGS="-ID:/a/basemap/basemap/packages/basemap/extern/include -ID:/a/basemap/basemap/packages/basemap/extern/include/geos/include" - LDFLAGS="-LD:/a/basemap/basemap/packages/basemap/extern/lib" PIP_DEFAULT_TIMEOUT=10 PIP_DISABLE_PIP_VERSION_CHECK=1 PIP_PREFER_BINARY=1 From 042e1eb1a61c5e227eccd3334b2cb1d7b628d845 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Wed, 19 Feb 2025 10:54:34 +0100 Subject: [PATCH 22/95] Refactor pip calls and pip environment variables in new workflow --- .github/workflows/build.yml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a64b60753..32170579c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,13 +35,12 @@ jobs: - name: Install build dependencies run: | - python -m pip install --upgrade pip - pip install build wheel + python -m pip install build wheel - name: Build package run: | cd packages/${{ matrix.package }} - python -m build --wheel --sdist + python -m build --sdist --wheel - uses: actions/upload-artifact@v4 with: @@ -66,10 +65,8 @@ jobs: environment: >- GEOS_DIR="/project/packages/basemap/extern" LD_LIBRARY_PATH="/project/packages/basemap/extern/lib" - PIP_DEFAULT_TIMEOUT=10 PIP_DISABLE_PIP_VERSION_CHECK=1 PIP_PREFER_BINARY=1 - PIP_RETRIES=0 PYTHONUNBUFFERED=1 PYTHONWARNINGS="ignore:DEPRECATION" @@ -85,10 +82,8 @@ jobs: " environment: >- GEOS_DIR="D:/a/basemap/basemap/packages/basemap/extern" - PIP_DEFAULT_TIMEOUT=10 PIP_DISABLE_PIP_VERSION_CHECK=1 PIP_PREFER_BINARY=1 - PIP_RETRIES=0 PYTHONUNBUFFERED=1 PYTHONWARNINGS="ignore:DEPRECATION" @@ -104,7 +99,7 @@ jobs: - name: Build SDist if: matrix.os == 'ubuntu-latest' run: | - pip install build + python -m pip install build mkdir -p wheelhouse cd packages/basemap python -m build --sdist From 8b7ce96bec1b1c5ed56e1117c84f95cd567c9f38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Wed, 19 Feb 2025 11:04:14 +0100 Subject: [PATCH 23/95] Remove PIP_DISABLE_PIP_VERSION_CHECK from workflow environment Based on the `cibuildwheel` docs, this environment variable is already defined by `cibuildwheel`: https://cibuildwheel.pypa.io/en/stable/options/#environment --- .github/workflows/build.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 32170579c..307014b20 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -65,7 +65,6 @@ jobs: environment: >- GEOS_DIR="/project/packages/basemap/extern" LD_LIBRARY_PATH="/project/packages/basemap/extern/lib" - PIP_DISABLE_PIP_VERSION_CHECK=1 PIP_PREFER_BINARY=1 PYTHONUNBUFFERED=1 PYTHONWARNINGS="ignore:DEPRECATION" @@ -82,7 +81,6 @@ jobs: " environment: >- GEOS_DIR="D:/a/basemap/basemap/packages/basemap/extern" - PIP_DISABLE_PIP_VERSION_CHECK=1 PIP_PREFER_BINARY=1 PYTHONUNBUFFERED=1 PYTHONWARNINGS="ignore:DEPRECATION" From 68a554178621cd75bd1327b3a471020f1582dea9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Wed, 19 Feb 2025 11:08:07 +0100 Subject: [PATCH 24/95] Remove PYTHONWARNINGS from workflow environment This used to be set in order to silence some deprecation warnings, but now we want these warnings to appear in the logs, to address them as soon as we see them. --- .github/workflows/build.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 307014b20..b970e8f96 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -67,7 +67,6 @@ jobs: LD_LIBRARY_PATH="/project/packages/basemap/extern/lib" PIP_PREFER_BINARY=1 PYTHONUNBUFFERED=1 - PYTHONWARNINGS="ignore:DEPRECATION" - os: windows-latest before_all: >- @@ -83,7 +82,6 @@ jobs: GEOS_DIR="D:/a/basemap/basemap/packages/basemap/extern" PIP_PREFER_BINARY=1 PYTHONUNBUFFERED=1 - PYTHONWARNINGS="ignore:DEPRECATION" runs-on: ${{ matrix.os }} steps: From ea3437f158a06d46b8daea1b87713250185f8c56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Wed, 19 Feb 2025 11:44:31 +0100 Subject: [PATCH 25/95] Apply minor refactoring in new workflow --- .github/workflows/build.yml | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b970e8f96..25aecaefa 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,7 +24,6 @@ jobs: strategy: matrix: package: [basemap_data, basemap_data_hires] - steps: - uses: actions/checkout@v4 @@ -33,13 +32,10 @@ jobs: with: python-version: "3.9" - - name: Install build dependencies - run: | - python -m pip install build wheel - - - name: Build package + - name: Build sdist and wheels run: | cd packages/${{ matrix.package }} + python -m pip install build wheel python -m build --sdist --wheel - uses: actions/upload-artifact@v4 @@ -48,7 +44,7 @@ jobs: name: dist-${{ matrix.package }} build_basemap: - name: Build basemap wheels (${{ matrix.os }}) + name: Build basemap package (${{ matrix.os }}) needs: [build_data] strategy: matrix: @@ -67,7 +63,6 @@ jobs: LD_LIBRARY_PATH="/project/packages/basemap/extern/lib" PIP_PREFER_BINARY=1 PYTHONUNBUFFERED=1 - - os: windows-latest before_all: >- pwsh -Command " @@ -82,7 +77,6 @@ jobs: GEOS_DIR="D:/a/basemap/basemap/packages/basemap/extern" PIP_PREFER_BINARY=1 PYTHONUNBUFFERED=1 - runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 @@ -92,12 +86,12 @@ jobs: with: python-version: "3.9" - - name: Build SDist + - name: Build sdist if: matrix.os == 'ubuntu-latest' run: | - python -m pip install build mkdir -p wheelhouse cd packages/basemap + python -m pip install build python -m build --sdist mv dist/* ../../wheelhouse/ From 1af79b545b1908536c7e7a2d6101b3be4c90a9fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Wed, 19 Feb 2025 12:05:24 +0100 Subject: [PATCH 26/95] Simplify cibuildwheel before_all block for GNU/Linux --- .github/workflows/build.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 25aecaefa..d716e327a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -53,10 +53,9 @@ jobs: - os: ubuntu-latest before_all: | echo "Starting BEFORE_ALL script" + echo "GEOS_DIR set to: ${GEOS_DIR}" cd "{package}" - export GEOS_DIR="$(pwd)/extern" - echo "GEOS_DIR set to: $GEOS_DIR" - python -c "import sys; sys.path.append('utils'); from GeosLibrary import GeosLibrary; GeosLibrary('3.6.5', root='extern').build('extern', njobs=16)" + python -c "import utils; utils.GeosLibrary('${GEOS_VERSION}').build('${GEOS_DIR}', njobs=2)" # LD_LIBRARY_PATH in environment is needed by auditwheel. environment: >- GEOS_DIR="/project/packages/basemap/extern" From f78a4b7ffb44de41e578804267085cb39989a317 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Wed, 19 Feb 2025 12:17:52 +0100 Subject: [PATCH 27/95] Move GEOS_VERSION definition to cibuildwheel GNU/Linux environment --- .github/workflows/build.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d716e327a..c89a76e2b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,6 +1,4 @@ name: Build -env: - GEOS_VERSION: "3.6.5" on: push: @@ -58,6 +56,7 @@ jobs: python -c "import utils; utils.GeosLibrary('${GEOS_VERSION}').build('${GEOS_DIR}', njobs=2)" # LD_LIBRARY_PATH in environment is needed by auditwheel. environment: >- + GEOS_VERSION="3.6.5" GEOS_DIR="/project/packages/basemap/extern" LD_LIBRARY_PATH="/project/packages/basemap/extern/lib" PIP_PREFER_BINARY=1 From 8e85717e64bc876a6d4a9250543bd7197c23d89d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Wed, 19 Feb 2025 12:44:36 +0100 Subject: [PATCH 28/95] Simplify cibuildwheel before_all block for Windows --- .github/workflows/build.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c89a76e2b..1b9aa5e5e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -65,13 +65,11 @@ jobs: before_all: >- pwsh -Command " Write-Host 'Starting BEFORE_ALL script'; - $pwd = Get-Location; - Write-Host 'Current directory:' $pwd; Set-Location '{package}'; - $env:GEOS_DIR = '{package}/extern'; - python -c 'import sys, os; sys.path.append(\"utils\"); from GeosLibrary import GeosLibrary; GeosLibrary(\"3.6.5\").build(\"extern\", njobs=16)' + python -c 'import utils; utils.GeosLibrary(\"${env:GEOS_VERSION}\").build(\"${env:GEOS_DIR}\", njobs=2)' " environment: >- + GEOS_VERSION="3.6.5" GEOS_DIR="D:/a/basemap/basemap/packages/basemap/extern" PIP_PREFER_BINARY=1 PYTHONUNBUFFERED=1 From 57e0c402c6113e48aa90392417d6545d0339434e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Wed, 19 Feb 2025 13:00:46 +0100 Subject: [PATCH 29/95] Edit before_all block in Windows workflow to use pwsh commands directly --- .github/workflows/build.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1b9aa5e5e..93828513f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -63,11 +63,10 @@ jobs: PYTHONUNBUFFERED=1 - os: windows-latest before_all: >- - pwsh -Command " - Write-Host 'Starting BEFORE_ALL script'; - Set-Location '{package}'; - python -c 'import utils; utils.GeosLibrary(\"${env:GEOS_VERSION}\").build(\"${env:GEOS_DIR}\", njobs=2)' - " + Write-Host "Starting BEFORE_ALL script" + Write-Host "GEOS_DIR set to: ${env:GEOS_DIR}" + Set-Location "{package}" + python -c "import utils; utils.GeosLibrary('${env:GEOS_VERSION}').build('${env:GEOS_DIR}', njobs=2)" environment: >- GEOS_VERSION="3.6.5" GEOS_DIR="D:/a/basemap/basemap/packages/basemap/extern" From 220cdc10203246f431b60a08c7038dbeac3e4dda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Wed, 19 Feb 2025 13:32:24 +0100 Subject: [PATCH 30/95] Rewrite before_all block in Windows workflow to use cmd --- .github/workflows/build.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 93828513f..14d0832ba 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -62,11 +62,11 @@ jobs: PIP_PREFER_BINARY=1 PYTHONUNBUFFERED=1 - os: windows-latest - before_all: >- - Write-Host "Starting BEFORE_ALL script" - Write-Host "GEOS_DIR set to: ${env:GEOS_DIR}" - Set-Location "{package}" - python -c "import utils; utils.GeosLibrary('${env:GEOS_VERSION}').build('${env:GEOS_DIR}', njobs=2)" + before_all: | + echo Starting BEFORE_ALL script + echo GEOS_DIR set to: %GEOS_DIR% + cd "{package}" + python -c "import utils; utils.GeosLibrary('%GEOS_VERSION%').build('%GEOS_DIR%', njobs=2)" environment: >- GEOS_VERSION="3.6.5" GEOS_DIR="D:/a/basemap/basemap/packages/basemap/extern" From 18fe4c4ee1b90dedeb50814fcabefc067a55f762 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Wed, 19 Feb 2025 14:12:42 +0100 Subject: [PATCH 31/95] Rewrite before_all block in Windows workflow as a one-liner --- .github/workflows/build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 14d0832ba..e10d1f452 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -62,10 +62,10 @@ jobs: PIP_PREFER_BINARY=1 PYTHONUNBUFFERED=1 - os: windows-latest - before_all: | - echo Starting BEFORE_ALL script - echo GEOS_DIR set to: %GEOS_DIR% - cd "{package}" + before_all: >- + echo Starting BEFORE_ALL script && + echo GEOS_DIR set to: %GEOS_DIR% && + cd "{package}" && python -c "import utils; utils.GeosLibrary('%GEOS_VERSION%').build('%GEOS_DIR%', njobs=2)" environment: >- GEOS_VERSION="3.6.5" From 37423253e1bc258543a84f70725008002fcb19eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 20 Feb 2025 19:28:25 +0100 Subject: [PATCH 32/95] Refactor handling of artifacts in new workflow --- .github/workflows/build.yml | 38 ++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e10d1f452..a7e9e4e02 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -109,27 +109,39 @@ jobs: path: | ./wheelhouse/*.whl ./wheelhouse/*.tar.gz - name: wheels-basemap-${{ matrix.os }} + name: dist-basemap-${{ matrix.os }} - upload_pypi: + check: + name: Check basemap packages needs: [build_data, build_basemap] runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v4 + with: + path: dist + pattern: "dist-*" + merge-multiple: true + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.9" + + - name: Check packages with twine + run: | + python -m pip install twine + python -m twine check dist/* + + upload: + name: Upload basemap packages + needs: [build_data, build_basemap, check] + runs-on: ubuntu-latest if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') - strategy: - matrix: - package: [basemap, basemap_data, basemap_data_hires] - include: - - package: basemap - artifact_pattern: "wheels-basemap-*" - - package: basemap_data - artifact_pattern: "dist-basemap_data" - - package: basemap_data_hires - artifact_pattern: "dist-basemap_data_hires" steps: - uses: actions/download-artifact@v4 with: - pattern: ${{ matrix.artifact_pattern }} path: dist + pattern: "dist-*" merge-multiple: true - name: Publish to PyPI From 51c1c2bbac601de185a8154870d2492342f55f98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 20 Feb 2025 19:40:58 +0100 Subject: [PATCH 33/95] Apply minor modification in twine check --- .github/workflows/build.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a7e9e4e02..5841848a7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -112,7 +112,7 @@ jobs: name: dist-basemap-${{ matrix.os }} check: - name: Check basemap packages + name: Check packages needs: [build_data, build_basemap] runs-on: ubuntu-latest steps: @@ -130,10 +130,11 @@ jobs: - name: Check packages with twine run: | python -m pip install twine - python -m twine check dist/* + python -m twine check dist/*.tar.gz + python -m twine check dist/*.whl upload: - name: Upload basemap packages + name: Upload packages needs: [build_data, build_basemap, check] runs-on: ubuntu-latest if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') From 35d848f83aa13fee6d3e5ce32e3f07c364db97ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 20 Feb 2025 20:47:17 +0100 Subject: [PATCH 34/95] Remove unused CIBW_BUILD_REQUIRES environment variable --- .github/workflows/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5841848a7..28982fcd7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -100,7 +100,6 @@ jobs: CIBW_SKIP: "pp* *-musllinux_* *-win32 *-manylinux_i686 *-musllinux_i686 *-aarch64 *-armv7l" CIBW_BEFORE_ALL: ${{ matrix.before_all }} CIBW_ENVIRONMENT: ${{ matrix.environment }} - CIBW_BUILD_REQUIRES: "cython>=0.29,<3.1" with: package-dir: packages/basemap From 80f45d69dc8daf750dafb8e89866c89279c42aba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 21 Feb 2025 19:00:45 +0100 Subject: [PATCH 35/95] Remove unused CIBW_PROJECT_REQUIRES_PYTHON environment variable --- .github/workflows/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 28982fcd7..b350f2095 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -93,7 +93,6 @@ jobs: - name: Build wheels uses: pypa/cibuildwheel@v2.22.0 env: - CIBW_PROJECT_REQUIRES_PYTHON: ">=3.9" CIBW_ARCHS_LINUX: auto64 CIBW_BUILD_VERBOSITY: 1 CIBW_BUILD: "cp39* cp310* cp311* cp312*" From 28c88a8956f570ae664d7fed843ba90b82beeb22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 21 Feb 2025 19:02:44 +0100 Subject: [PATCH 36/95] Make cibuildwheel store wheels in package dist folder --- .github/workflows/build.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b350f2095..9410e5a55 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,7 +38,9 @@ jobs: - uses: actions/upload-artifact@v4 with: - path: packages/${{ matrix.package }}/dist/* + path: | + packages/${{ matrix.package }}/dist/*.tar.gz + packages/${{ matrix.package }}/dist/*.whl name: dist-${{ matrix.package }} build_basemap: @@ -84,11 +86,9 @@ jobs: - name: Build sdist if: matrix.os == 'ubuntu-latest' run: | - mkdir -p wheelhouse cd packages/basemap python -m pip install build python -m build --sdist - mv dist/* ../../wheelhouse/ - name: Build wheels uses: pypa/cibuildwheel@v2.22.0 @@ -100,13 +100,14 @@ jobs: CIBW_BEFORE_ALL: ${{ matrix.before_all }} CIBW_ENVIRONMENT: ${{ matrix.environment }} with: - package-dir: packages/basemap + package-dir: "packages/basemap" + output-dir: "packages/basemap/dist" - uses: actions/upload-artifact@v4 with: path: | - ./wheelhouse/*.whl - ./wheelhouse/*.tar.gz + packages/basemap/dist/*.tar.gz + packages/basemap/dist/*.whl name: dist-basemap-${{ matrix.os }} check: From 21368dc187769aebf267b7cceb67ee501f844043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 21 Feb 2025 19:48:09 +0100 Subject: [PATCH 37/95] Redefine GEOS_DIR in new workflow using pwd command --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9410e5a55..a0963b565 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -59,8 +59,8 @@ jobs: # LD_LIBRARY_PATH in environment is needed by auditwheel. environment: >- GEOS_VERSION="3.6.5" - GEOS_DIR="/project/packages/basemap/extern" - LD_LIBRARY_PATH="/project/packages/basemap/extern/lib" + GEOS_DIR="$(pwd)/extern" + LD_LIBRARY_PATH="${GEOS_DIR}/lib" PIP_PREFER_BINARY=1 PYTHONUNBUFFERED=1 - os: windows-latest @@ -71,7 +71,7 @@ jobs: python -c "import utils; utils.GeosLibrary('%GEOS_VERSION%').build('%GEOS_DIR%', njobs=2)" environment: >- GEOS_VERSION="3.6.5" - GEOS_DIR="D:/a/basemap/basemap/packages/basemap/extern" + GEOS_DIR="$(pwd)/extern" PIP_PREFER_BINARY=1 PYTHONUNBUFFERED=1 runs-on: ${{ matrix.os }} From bed3d4d29d6b70ad8a174f57b4799c589fc83240 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Sat, 22 Feb 2025 18:24:59 +0100 Subject: [PATCH 38/95] Unify setup of cibuildwheel environment variables in new workflow --- .github/workflows/build.yml | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a0963b565..6ce986151 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -56,24 +56,12 @@ jobs: echo "GEOS_DIR set to: ${GEOS_DIR}" cd "{package}" python -c "import utils; utils.GeosLibrary('${GEOS_VERSION}').build('${GEOS_DIR}', njobs=2)" - # LD_LIBRARY_PATH in environment is needed by auditwheel. - environment: >- - GEOS_VERSION="3.6.5" - GEOS_DIR="$(pwd)/extern" - LD_LIBRARY_PATH="${GEOS_DIR}/lib" - PIP_PREFER_BINARY=1 - PYTHONUNBUFFERED=1 - os: windows-latest before_all: >- echo Starting BEFORE_ALL script && echo GEOS_DIR set to: %GEOS_DIR% && cd "{package}" && python -c "import utils; utils.GeosLibrary('%GEOS_VERSION%').build('%GEOS_DIR%', njobs=2)" - environment: >- - GEOS_VERSION="3.6.5" - GEOS_DIR="$(pwd)/extern" - PIP_PREFER_BINARY=1 - PYTHONUNBUFFERED=1 runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 @@ -98,7 +86,13 @@ jobs: CIBW_BUILD: "cp39* cp310* cp311* cp312*" CIBW_SKIP: "pp* *-musllinux_* *-win32 *-manylinux_i686 *-musllinux_i686 *-aarch64 *-armv7l" CIBW_BEFORE_ALL: ${{ matrix.before_all }} - CIBW_ENVIRONMENT: ${{ matrix.environment }} + CIBW_ENVIRONMENT: > + GEOS_VERSION="3.6.5" + GEOS_DIR="$(pwd)/extern" + PIP_PREFER_BINARY=1 + PYTHONUNBUFFERED=1 + LD_LIBRARY_PATH="${GEOS_DIR}/lib" + # LD_LIBRARY_PATH in environment is needed by auditwheel (Linux). with: package-dir: "packages/basemap" output-dir: "packages/basemap/dist" From 6170ef07dff13b96901b916fcc12b473d7aa1ae6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Sat, 22 Feb 2025 18:26:51 +0100 Subject: [PATCH 39/95] Make before_all block use YAML folded style --- .github/workflows/build.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6ce986151..e809dec60 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -51,13 +51,13 @@ jobs: os: [ubuntu-latest, windows-latest] include: - os: ubuntu-latest - before_all: | - echo "Starting BEFORE_ALL script" - echo "GEOS_DIR set to: ${GEOS_DIR}" - cd "{package}" + before_all: > + echo "Starting BEFORE_ALL script" && + echo "GEOS_DIR set to: ${GEOS_DIR}" && + cd "{package}" && python -c "import utils; utils.GeosLibrary('${GEOS_VERSION}').build('${GEOS_DIR}', njobs=2)" - os: windows-latest - before_all: >- + before_all: > echo Starting BEFORE_ALL script && echo GEOS_DIR set to: %GEOS_DIR% && cd "{package}" && From 1a839251bbcb9726aef26e8b50abb1a884f3d847 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Sat, 22 Feb 2025 18:31:14 +0100 Subject: [PATCH 40/95] Bring back hyphen in YAML folded syntax This ensures that no line break is appended at the end of the multiline string. --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e809dec60..be11641f6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -51,13 +51,13 @@ jobs: os: [ubuntu-latest, windows-latest] include: - os: ubuntu-latest - before_all: > + before_all: >- echo "Starting BEFORE_ALL script" && echo "GEOS_DIR set to: ${GEOS_DIR}" && cd "{package}" && python -c "import utils; utils.GeosLibrary('${GEOS_VERSION}').build('${GEOS_DIR}', njobs=2)" - os: windows-latest - before_all: > + before_all: >- echo Starting BEFORE_ALL script && echo GEOS_DIR set to: %GEOS_DIR% && cd "{package}" && @@ -86,7 +86,7 @@ jobs: CIBW_BUILD: "cp39* cp310* cp311* cp312*" CIBW_SKIP: "pp* *-musllinux_* *-win32 *-manylinux_i686 *-musllinux_i686 *-aarch64 *-armv7l" CIBW_BEFORE_ALL: ${{ matrix.before_all }} - CIBW_ENVIRONMENT: > + CIBW_ENVIRONMENT: >- GEOS_VERSION="3.6.5" GEOS_DIR="$(pwd)/extern" PIP_PREFER_BINARY=1 From 55b9718f4451f80d9e5c52d5bd7737e194031eaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Sat, 22 Feb 2025 18:35:22 +0100 Subject: [PATCH 41/95] Apply minor reordering in build_data job --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index be11641f6..8d7a9810f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,10 +18,10 @@ on: jobs: build_data: name: Build data packages - runs-on: ubuntu-latest strategy: matrix: package: [basemap_data, basemap_data_hires] + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 From 71694578de69579d9dbce89cb2383366e0f9aa06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Sat, 22 Feb 2025 18:56:58 +0100 Subject: [PATCH 42/95] Remove unused CIBW_ARCHS_LINUX environment variable --- .github/workflows/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8d7a9810f..23a7a299b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -81,7 +81,6 @@ jobs: - name: Build wheels uses: pypa/cibuildwheel@v2.22.0 env: - CIBW_ARCHS_LINUX: auto64 CIBW_BUILD_VERBOSITY: 1 CIBW_BUILD: "cp39* cp310* cp311* cp312*" CIBW_SKIP: "pp* *-musllinux_* *-win32 *-manylinux_i686 *-musllinux_i686 *-aarch64 *-armv7l" From 05e1608cfe0b934a78baf167ce14305c26120e7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 08:50:54 +0100 Subject: [PATCH 43/95] Update minimum pin for Cython in requirements The `noexcept` syntax was first included in Cython 3.0, and it was backported only from Cython 0.29.31 onwards. --- packages/basemap/pyproject.toml | 2 +- packages/basemap/requirements-setup.txt | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/basemap/pyproject.toml b/packages/basemap/pyproject.toml index 8ab927ff8..d5dfe2906 100644 --- a/packages/basemap/pyproject.toml +++ b/packages/basemap/pyproject.toml @@ -3,6 +3,6 @@ requires = [ 'setuptools', 'wheel', 'numpy == 2.0.0', - 'cython >= 0.29, < 3.1', + 'cython >= 0.29.31, < 3.1', ] build-backend = "setuptools.build_meta" diff --git a/packages/basemap/requirements-setup.txt b/packages/basemap/requirements-setup.txt index 6f39a1a05..d12bb0661 100644 --- a/packages/basemap/requirements-setup.txt +++ b/packages/basemap/requirements-setup.txt @@ -1,2 +1 @@ -cython >= 0.29, < 3.1; python_version >= "3.3" or python_version < "3.0" -cython >= 0.26, < 0.27; python_version == "3.2" +cython >= 0.29.31, < 3.1 From 31338336fa1a3001621ea54114a62be60c417662 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 08:52:30 +0100 Subject: [PATCH 44/95] Remove unneeded legacy_implicit_noexcept in setup.py Since the code is migrated to use `noexcept`, this Cython directive is no longer needed. --- packages/basemap/setup.py | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/basemap/setup.py b/packages/basemap/setup.py index 8d2bebdd0..3a16d3d64 100644 --- a/packages/basemap/setup.py +++ b/packages/basemap/setup.py @@ -162,7 +162,6 @@ def run(self): for ext in ext_modules: ext.cython_directives = [ ("language_level", str(sys.version_info[0])), - ("legacy_implicit_noexcept", True), ][:1 + int(cython_major_version >= 3)] # Define all the different requirements. From d6c30d7698b46afcad0111990c8c3e9d3cf5389a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 10:31:37 +0100 Subject: [PATCH 45/95] Update CHANGELOG --- CHANGELOG.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4244ab5a1..d9821539c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,18 @@ https://semver.org/spec/v2.0.0.html ## [Unreleased] +### Added +- Support `numpy` 2.0 (PR [#614] by @cvanelteren, solves issue [#604]). + +### Changed +- **BREAKING CHANGE**: Set Python minimum supported version to 3.9. +- **BREAKING CHANGE**: Migrate `basemap` libraries to use implicit + namespace packages (PR [#576] by @ksunden). +- Migrate workflows to use `cibuildwheel` (PR [#614] by @cvanelteren). + +### Fixed +- Fix Cython extension to use `noexcept` (PR [#615] by @cvanelteren). + ## [1.4.1] - 2024-02-15 ### Changed @@ -1098,6 +1110,12 @@ https://semver.org/spec/v2.0.0.html - Fix glitches in drawing of parallels and meridians. +[#615]: +https://github.com/matplotlib/basemap/pull/615 +[#614]: +https://github.com/matplotlib/basemap/pull/614 +[#604]: +https://github.com/matplotlib/basemap/issues/604 [#598]: https://github.com/matplotlib/basemap/pull/598 [#595]: @@ -1126,6 +1144,8 @@ https://github.com/matplotlib/basemap/pull/580 https://github.com/matplotlib/basemap/issues/579 [#577]: https://github.com/matplotlib/basemap/issues/577 +[#576]: +https://github.com/matplotlib/basemap/pull/576 [#574]: https://github.com/matplotlib/basemap/issues/574 [#573]: From 1b6ee1c61e0bd1c9d2333ce69fa9f65f8c366a5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 10:38:08 +0100 Subject: [PATCH 46/95] Remove deprecated bdist_wheel.universal option --- CHANGELOG.md | 3 +++ packages/basemap_data/setup.cfg | 3 --- packages/basemap_data_hires/setup.cfg | 3 --- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d9821539c..d3cab477e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,9 @@ https://semver.org/spec/v2.0.0.html ### Fixed - Fix Cython extension to use `noexcept` (PR [#615] by @cvanelteren). +### Removed +- Deprecated `bdist_wheel.universal` option when building wheels. + ## [1.4.1] - 2024-02-15 ### Changed diff --git a/packages/basemap_data/setup.cfg b/packages/basemap_data/setup.cfg index 46fc44d00..e22ef7143 100644 --- a/packages/basemap_data/setup.cfg +++ b/packages/basemap_data/setup.cfg @@ -7,6 +7,3 @@ license_files = [sdist] formats = zip - -[bdist_wheel] -universal = 1 diff --git a/packages/basemap_data_hires/setup.cfg b/packages/basemap_data_hires/setup.cfg index e408a4da9..e43de0337 100644 --- a/packages/basemap_data_hires/setup.cfg +++ b/packages/basemap_data_hires/setup.cfg @@ -5,6 +5,3 @@ license_files = [sdist] formats = zip - -[bdist_wheel] -universal = 1 From 52eb8509c069f143c7f0089583d5693fc5d4abae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 11:15:20 +0100 Subject: [PATCH 47/95] Ensure graceful error in GeosLibrary.__del__ with missing instance attributes --- packages/basemap/utils/GeosLibrary.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/basemap/utils/GeosLibrary.py b/packages/basemap/utils/GeosLibrary.py index 4db6b88e9..0462d6775 100644 --- a/packages/basemap/utils/GeosLibrary.py +++ b/packages/basemap/utils/GeosLibrary.py @@ -1,7 +1,7 @@ #! /usr/bin/env python # -*- coding: utf-8 -*- # -# Copyright (c) 2021-2024 Víctor Molina García +# Copyright (c) 2021-2025 Víctor Molina García # # GeosLibrary.py is free software: you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published @@ -62,7 +62,7 @@ def __init__(self, version, root=None): def __del__(self): """Clean up after :class:`GeosLibrary` destruction.""" - if self.temp: + if getattr(self, "temp", None) and getattr(self, "root", None): try: shutil.rmtree(self.root) except OSError: From 2b00aa4a80eb61e05fca8f1d25450b3d3030ee29 Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Mon, 24 Feb 2025 13:29:25 +0100 Subject: [PATCH 48/95] rm changes to setup --- .github/workflows/build.yml | 2 ++ packages/basemap/requirements-test.txt | 1 + 2 files changed, 3 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 23a7a299b..3b5e6ec7c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -85,6 +85,8 @@ jobs: CIBW_BUILD: "cp39* cp310* cp311* cp312*" CIBW_SKIP: "pp* *-musllinux_* *-win32 *-manylinux_i686 *-musllinux_i686 *-aarch64 *-armv7l" CIBW_BEFORE_ALL: ${{ matrix.before_all }} + CIBW_TEST_REQUIRES: pytest + CIBW_TEST_COMMAND: "pytest {project}/packages/basemap" CIBW_ENVIRONMENT: >- GEOS_VERSION="3.6.5" GEOS_DIR="$(pwd)/extern" diff --git a/packages/basemap/requirements-test.txt b/packages/basemap/requirements-test.txt index 7491b2686..f2a52ffeb 100644 --- a/packages/basemap/requirements-test.txt +++ b/packages/basemap/requirements-test.txt @@ -21,3 +21,4 @@ pytest-cov >= 2.5, < 2.6; python_version == "3.2" pytest-cov >= 2.5, < 2.6; python_version == "3.3" pytest-cov >= 2.5, < 2.9; python_version == "3.4" pytest-cov >= 2.9, < 4.2; python_version >= "3.5" +pytest From b13c6a46bbb13b66ef3cfebdc604a5f5f4e8f560 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 19:52:53 +0100 Subject: [PATCH 49/95] Invoke pytest in workflow with python -m syntax --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3b5e6ec7c..2a83ea8a6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -86,7 +86,7 @@ jobs: CIBW_SKIP: "pp* *-musllinux_* *-win32 *-manylinux_i686 *-musllinux_i686 *-aarch64 *-armv7l" CIBW_BEFORE_ALL: ${{ matrix.before_all }} CIBW_TEST_REQUIRES: pytest - CIBW_TEST_COMMAND: "pytest {project}/packages/basemap" + CIBW_TEST_COMMAND: "python -m pytest {project}/packages/basemap" CIBW_ENVIRONMENT: >- GEOS_VERSION="3.6.5" GEOS_DIR="$(pwd)/extern" From beab20689fc4aba669c2b22d43ac2fb9758f564c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 19:54:14 +0100 Subject: [PATCH 50/95] Remove duplicate pytest requirement in requirements-test.txt --- packages/basemap/requirements-test.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/basemap/requirements-test.txt b/packages/basemap/requirements-test.txt index f2a52ffeb..7491b2686 100644 --- a/packages/basemap/requirements-test.txt +++ b/packages/basemap/requirements-test.txt @@ -21,4 +21,3 @@ pytest-cov >= 2.5, < 2.6; python_version == "3.2" pytest-cov >= 2.5, < 2.6; python_version == "3.3" pytest-cov >= 2.5, < 2.9; python_version == "3.4" pytest-cov >= 2.9, < 4.2; python_version >= "3.5" -pytest From 5c6f0724cfe1d52af97099229563972bbcc733e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 19:54:37 +0100 Subject: [PATCH 51/95] Replace CIBW_TEST_REQUIRES with CIBW_TEST_EXTRAS --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2a83ea8a6..ed065d625 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -85,7 +85,7 @@ jobs: CIBW_BUILD: "cp39* cp310* cp311* cp312*" CIBW_SKIP: "pp* *-musllinux_* *-win32 *-manylinux_i686 *-musllinux_i686 *-aarch64 *-armv7l" CIBW_BEFORE_ALL: ${{ matrix.before_all }} - CIBW_TEST_REQUIRES: pytest + CIBW_TEST_EXTRAS: "test" CIBW_TEST_COMMAND: "python -m pytest {project}/packages/basemap" CIBW_ENVIRONMENT: >- GEOS_VERSION="3.6.5" From 64989db1a0434e2295f4198cb8f6f3c9900e63e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 20:19:44 +0100 Subject: [PATCH 52/95] Bump library versions to 2.0.0-dev --- packages/basemap/requirements.txt | 2 +- packages/basemap/src/_geoslib.pyx | 2 +- packages/basemap/src/mpl_toolkits/basemap/__init__.py | 2 +- packages/basemap_data/setup.py | 2 +- packages/basemap_data_hires/setup.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/basemap/requirements.txt b/packages/basemap/requirements.txt index 78a1ce0d3..22a60005e 100644 --- a/packages/basemap/requirements.txt +++ b/packages/basemap/requirements.txt @@ -1,4 +1,4 @@ -basemap_data >= 1.3.2, < 1.4 +basemap_data >= 1.3.2, < 3.0 numpy >= 2.0.0; python_version >= "3.9" matplotlib >= 1.5, < 3.9; python_version >= "3.5" diff --git a/packages/basemap/src/_geoslib.pyx b/packages/basemap/src/_geoslib.pyx index 6d1e36914..1298e6e91 100644 --- a/packages/basemap/src/_geoslib.pyx +++ b/packages/basemap/src/_geoslib.pyx @@ -2,7 +2,7 @@ import sys import numpy cimport numpy as cnp -__version__ = "1.5.0-dev" +__version__ = "2.0.0-dev" # Need some Python C-API functions for strings. diff --git a/packages/basemap/src/mpl_toolkits/basemap/__init__.py b/packages/basemap/src/mpl_toolkits/basemap/__init__.py index a7050beed..3f61c2c4f 100644 --- a/packages/basemap/src/mpl_toolkits/basemap/__init__.py +++ b/packages/basemap/src/mpl_toolkits/basemap/__init__.py @@ -48,7 +48,7 @@ from . proj import Proj -__version__ = "1.5.0-dev" +__version__ = "2.0.0-dev" # basemap data files now installed in lib/matplotlib/toolkits/basemap/data # check to see if environment variable BASEMAPDATA set to a directory, diff --git a/packages/basemap_data/setup.py b/packages/basemap_data/setup.py index 42863fca7..abc05e2d7 100644 --- a/packages/basemap_data/setup.py +++ b/packages/basemap_data/setup.py @@ -73,7 +73,7 @@ def get_content(name, splitlines=False): "name": "basemap_data", "version": - "1.3.2", + "2.0.0-dev", "license": "GNU Lesser General Public License v3 or later (LGPLv3+)", "description": diff --git a/packages/basemap_data_hires/setup.py b/packages/basemap_data_hires/setup.py index 9b8630ff5..159f3ab03 100644 --- a/packages/basemap_data_hires/setup.py +++ b/packages/basemap_data_hires/setup.py @@ -51,7 +51,7 @@ def get_content(name, splitlines=False): "name": "basemap_data_hires", "version": - "1.3.2", + "2.0.0-dev", "license": "GNU Lesser General Public License v3 or later (LGPLv3+)", "description": From 8cd627d5ee03643d685bae54a5abe53a55511831 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 20:21:07 +0100 Subject: [PATCH 53/95] Remove remaining empty __init__.py files --- packages/basemap_data/src/__init__.py | 0 packages/basemap_data_hires/src/__init__.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 packages/basemap_data/src/__init__.py delete mode 100644 packages/basemap_data_hires/src/__init__.py diff --git a/packages/basemap_data/src/__init__.py b/packages/basemap_data/src/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/basemap_data_hires/src/__init__.py b/packages/basemap_data_hires/src/__init__.py deleted file mode 100644 index e69de29bb..000000000 From cc403074d3f8f43ccfeddc99e60e6737144d1138 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 20:22:29 +0100 Subject: [PATCH 54/95] Remove outdated classifiers in setup.py files --- packages/basemap/setup.py | 1 - packages/basemap_data/setup.py | 1 - packages/basemap_data_hires/setup.py | 1 - 3 files changed, 3 deletions(-) diff --git a/packages/basemap/setup.py b/packages/basemap/setup.py index 44b5d039a..55231eec4 100644 --- a/packages/basemap/setup.py +++ b/packages/basemap/setup.py @@ -213,7 +213,6 @@ def run(self): "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", - "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering :: Visualization", "Topic :: Software Development :: Libraries :: Python Modules", diff --git a/packages/basemap_data/setup.py b/packages/basemap_data/setup.py index abc05e2d7..d56dd243d 100644 --- a/packages/basemap_data/setup.py +++ b/packages/basemap_data/setup.py @@ -98,7 +98,6 @@ def get_content(name, splitlines=False): "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", "Operating System :: OS Independent", - "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering :: Visualization", "Topic :: Software Development :: Libraries :: Python Modules", diff --git a/packages/basemap_data_hires/setup.py b/packages/basemap_data_hires/setup.py index 159f3ab03..7421194d1 100644 --- a/packages/basemap_data_hires/setup.py +++ b/packages/basemap_data_hires/setup.py @@ -76,7 +76,6 @@ def get_content(name, splitlines=False): "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", "Operating System :: OS Independent", - "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering :: Visualization", "Topic :: Software Development :: Libraries :: Python Modules", From 4dfa9325d78fd8ddcff141059ac24d7909448bcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 20:26:50 +0100 Subject: [PATCH 55/95] Remove pleistocenic marker workarounds in basemap setup.py --- packages/basemap/setup.py | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/packages/basemap/setup.py b/packages/basemap/setup.py index 55231eec4..2db26ba6b 100644 --- a/packages/basemap/setup.py +++ b/packages/basemap/setup.py @@ -164,26 +164,6 @@ def run(self): ("language_level", str(sys.version_info[0])), ][:1 + int(cython_major_version >= 3)] -# Define all the different requirements. -setup_requires = get_content("requirements-setup.txt", splitlines=True) -install_requires = get_content("requirements.txt", splitlines=True) -if sys.version_info[:2] == (3, 2): - # Hack for Python 3.2 because pip < 8 cannot handle version markers. - marker1 = '; python_version == "3.2"' - marker2 = '; python_version >= "2.7"' - setup_requires = [ - item.replace(marker1, "").replace(marker2, "") for item in setup_requires - if item.endswith(marker1) or item.endswith(marker2) - or "python_version" not in item] - install_requires = [ - item.replace(marker1, "").replace(marker2, "") for item in install_requires - if item.endswith(marker1) or item.endswith(marker2) - or "python_version" not in item] -else: - marker1 = '; python_version == "3.2"' - setup_requires = [item for item in setup_requires if not item.endswith(marker1)] - install_requires = [item for item in install_requires if not item.endswith(marker1)] - setup(**{ "name": "basemap", @@ -236,9 +216,9 @@ def run(self): "<3.13", ]), "setup_requires": - setup_requires, + get_content("requirements-setup.txt", splitlines=True), "install_requires": - install_requires, + get_content("requirements.txt", splitlines=True), "extras_require": { "doc": get_content("requirements-doc.txt", splitlines=True), From 8ab734d236be4021caca2180838233ff7527e91c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 20:30:02 +0100 Subject: [PATCH 56/95] Remove outdated Cython switches in basemap setup.py --- packages/basemap/setup.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/packages/basemap/setup.py b/packages/basemap/setup.py index 2db26ba6b..1c47e85bf 100644 --- a/packages/basemap/setup.py +++ b/packages/basemap/setup.py @@ -14,12 +14,6 @@ from setuptools.command.sdist import sdist from setuptools.extension import Extension -try: - import Cython - cython_major_version = int(Cython.__version__.split(".", 1)[0]) -except ImportError: - cython_major_version = 0 - def get_content(name, splitlines=False): """Return the file contents with project root as root folder.""" @@ -162,7 +156,7 @@ def run(self): for ext in ext_modules: ext.cython_directives = [ ("language_level", str(sys.version_info[0])), - ][:1 + int(cython_major_version >= 3)] + ] setup(**{ "name": From f197052bd979170ac6a746d8db6879224e9ad8ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 20:41:39 +0100 Subject: [PATCH 57/95] Update library requirements --- CHANGELOG.md | 11 +++++++++++ packages/basemap/requirements.txt | 12 +++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d3cab477e..58a34881f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,17 @@ https://semver.org/spec/v2.0.0.html - **BREAKING CHANGE**: Migrate `basemap` libraries to use implicit namespace packages (PR [#576] by @ksunden). - Migrate workflows to use `cibuildwheel` (PR [#614] by @cvanelteren). +- Update library dependencies: + - Upgrade upper limit for `basemap_data` to 3.0. + - Upgrade lower limit for `packaging` to 20.5. + - Upgrade upper limit for `packaging` to 25.0. + - Upgrade lower limit for `numpy` to 2.0. + - Upgrade upper limit for `numpy` to 2.3. + - Upgrade lower limit for `matplotlib` to 3.4. + - Upgrade upper limit for `matplotlib` to 3.11. + - Upgrade lower limit for `pyproj` to 3.0. + - Upgrade upper limit for `pyproj` to 3.8. + - Upgrade lower limit for `pyshp` to 2.0. ### Fixed - Fix Cython extension to use `noexcept` (PR [#615] by @cvanelteren). diff --git a/packages/basemap/requirements.txt b/packages/basemap/requirements.txt index 22a60005e..3f20dc53c 100644 --- a/packages/basemap/requirements.txt +++ b/packages/basemap/requirements.txt @@ -1,10 +1,8 @@ basemap_data >= 1.3.2, < 3.0 +packaging >= 20.5, < 25.0 -numpy >= 2.0.0; python_version >= "3.9" -matplotlib >= 1.5, < 3.9; python_version >= "3.5" +numpy >= 2.0, < 2.3 +matplotlib >= 3.4, < 3.11 -pyproj >= 1.9.3, < 3.7.0; python_version >= "3.5" - -pyshp >= 1.2, < 2.4; python_version >= "2.7" - -packaging >= 16.0, < 25.0; python_version >= "3.5" +pyproj >= 3.0, < 3.8 +pyshp >= 2.0, < 2.4 From ccbe443409e598b1477aaa37ee626c71f44b5df5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 21:02:36 +0100 Subject: [PATCH 58/95] Update test requirements --- CHANGELOG.md | 8 ++++++ packages/basemap/requirements-test.txt | 25 +++---------------- packages/basemap/setup.cfg | 2 -- .../test/mpl_toolkits/basemap/test_Basemap.py | 5 +--- .../test/mpl_toolkits/basemap/test_cm.py | 6 +---- .../mpl_toolkits/basemap/test_diagnostic.py | 6 +---- .../test/mpl_toolkits/basemap/test_proj.py | 6 +---- .../basemap/test/mpl_toolkits/test_basemap.py | 6 +---- 8 files changed, 16 insertions(+), 48 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 58a34881f..bdaee824f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,14 @@ https://semver.org/spec/v2.0.0.html - Upgrade lower limit for `pyproj` to 3.0. - Upgrade upper limit for `pyproj` to 3.8. - Upgrade lower limit for `pyshp` to 2.0. +- Update test dependencies: + - Remove dependency on `unittest2`. + - Upgrade lower limit for `pytest` to 7.0. + - Upgrade upper limit for `pytest` to 8.4. + - Upgrade lower limit for `pytest-cov` to 3.0. + - Upgrade upper limit for `pytest-cov` to 6.1. + - Downgrade lower limit for `coverage` to 5.0. + - Upgrade upper limit for `coverage` to 7.7. ### Fixed - Fix Cython extension to use `noexcept` (PR [#615] by @cvanelteren). diff --git a/packages/basemap/requirements-test.txt b/packages/basemap/requirements-test.txt index 7491b2686..6a0458527 100644 --- a/packages/basemap/requirements-test.txt +++ b/packages/basemap/requirements-test.txt @@ -1,23 +1,4 @@ -unittest2; python_version <= "3.9" +pytest >= 7.0, < 8.4 -pytest >= 3.2.0, < 3.3; python_version == "2.6" -pytest >= 4.6.9, < 5.0; python_version == "2.7" -pytest >= 2.9.0, < 3.0; python_version == "3.2" -pytest >= 3.2.0, < 3.3; python_version == "3.3" -pytest >= 4.6.9, < 5.0; python_version == "3.4" -pytest >= 6.1.2, < 6.2; python_version == "3.5" -pytest >= 6.2.5, < 7.5; python_version >= "3.6" - -coverage >= 4.5, < 5.0; python_version == "2.6" -coverage >= 5.5, < 6.0; python_version == "2.7" -coverage >= 3.7, < 4.0; python_version == "3.2" -coverage >= 4.5, < 5.0; python_version == "3.3" -coverage >= 4.5, < 5.0; python_version == "3.4" -coverage >= 5.5, < 6.0; python_version == "3.5" -coverage >= 5.5, < 7.4; python_version >= "3.6" -pytest-cov >= 2.5, < 2.6; python_version == "2.6" -pytest-cov >= 2.9, < 3.0; python_version == "2.7" -pytest-cov >= 2.5, < 2.6; python_version == "3.2" -pytest-cov >= 2.5, < 2.6; python_version == "3.3" -pytest-cov >= 2.5, < 2.9; python_version == "3.4" -pytest-cov >= 2.9, < 4.2; python_version >= "3.5" +pytest-cov >= 3.0, < 6.1 +coverage >= 5.0, < 7.7 diff --git a/packages/basemap/setup.cfg b/packages/basemap/setup.cfg index 58e39b69a..bf415ac0a 100644 --- a/packages/basemap/setup.cfg +++ b/packages/basemap/setup.cfg @@ -22,8 +22,6 @@ ignore = [tool:pytest] filterwarnings = error - # To be removed when replacing `unittest2`. - ignore:Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated:DeprecationWarning:unittest2.compatibility:143 # To be removed with `dateutil` release after 2.8.2. # See: https://github.com/dateutil/dateutil/issues/1314 ignore:datetime.datetime.utcfromtimestamp\(\) is deprecated:DeprecationWarning:dateutil.tz.tz:37 diff --git a/packages/basemap/test/mpl_toolkits/basemap/test_Basemap.py b/packages/basemap/test/mpl_toolkits/basemap/test_Basemap.py index 6a94d291f..f18b2c29e 100644 --- a/packages/basemap/test/mpl_toolkits/basemap/test_Basemap.py +++ b/packages/basemap/test/mpl_toolkits/basemap/test_Basemap.py @@ -4,10 +4,7 @@ import shutil import tempfile import datetime as dt -try: - import unittest2 as unittest -except ImportError: - import unittest +import unittest import numpy as np import matplotlib as mpl diff --git a/packages/basemap/test/mpl_toolkits/basemap/test_cm.py b/packages/basemap/test/mpl_toolkits/basemap/test_cm.py index 77df7d3bf..66d8ef665 100644 --- a/packages/basemap/test/mpl_toolkits/basemap/test_cm.py +++ b/packages/basemap/test/mpl_toolkits/basemap/test_cm.py @@ -1,10 +1,6 @@ """Import test for :mod:`mpl_toolkits.basemap.cm`.""" -try: - import unittest2 as unittest -except ImportError: - import unittest - +import unittest from mpl_toolkits.basemap import cm diff --git a/packages/basemap/test/mpl_toolkits/basemap/test_diagnostic.py b/packages/basemap/test/mpl_toolkits/basemap/test_diagnostic.py index b5bacce3a..f5ac65564 100644 --- a/packages/basemap/test/mpl_toolkits/basemap/test_diagnostic.py +++ b/packages/basemap/test/mpl_toolkits/basemap/test_diagnostic.py @@ -1,11 +1,7 @@ """Import test for :mod:`mpl_toolkits.basemap.diagnostic`.""" +import unittest from collections import namedtuple -try: - import unittest2 as unittest -except ImportError: - import unittest - from mpl_toolkits.basemap import diagnostic diff --git a/packages/basemap/test/mpl_toolkits/basemap/test_proj.py b/packages/basemap/test/mpl_toolkits/basemap/test_proj.py index dfdcd69ba..4385c8f6f 100644 --- a/packages/basemap/test/mpl_toolkits/basemap/test_proj.py +++ b/packages/basemap/test/mpl_toolkits/basemap/test_proj.py @@ -1,10 +1,6 @@ """Import test for :mod:`mpl_toolkits.basemap.proj`.""" -try: - import unittest2 as unittest -except ImportError: - import unittest - +import unittest from mpl_toolkits.basemap.proj import Proj diff --git a/packages/basemap/test/mpl_toolkits/test_basemap.py b/packages/basemap/test/mpl_toolkits/test_basemap.py index 80a31cb2e..2070c2e50 100644 --- a/packages/basemap/test/mpl_toolkits/test_basemap.py +++ b/packages/basemap/test/mpl_toolkits/test_basemap.py @@ -1,10 +1,6 @@ """Import test for the :mod:`mpl_toolkits.basemap` package.""" -try: - import unittest2 as unittest -except ImportError: - import unittest - +import unittest from mpl_toolkits import basemap From ee311e44c7c124730f1afd2cfa3525f0a0fbeda1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 21:13:31 +0100 Subject: [PATCH 59/95] Update optional library requirements --- CHANGELOG.md | 9 +++++++++ packages/basemap/requirements-owslib.txt | 9 +-------- packages/basemap/requirements-pillow.txt | 9 +-------- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bdaee824f..7225afec4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,11 @@ https://semver.org/spec/v2.0.0.html - Upgrade lower limit for `pyproj` to 3.0. - Upgrade upper limit for `pyproj` to 3.8. - Upgrade lower limit for `pyshp` to 2.0. +- Update optional library dependencies: + - Upgrade lower limit for `pillow` to 10.3 due to + vulnerabilities [CVE-2023-50447] and [CVE-2024-28219]. + - Upgrade upper limit for `pillow` to 11.2. + - Upgrade upper limit for `OWSLib` to 0.33. - Update test dependencies: - Remove dependency on `unittest2`. - Upgrade lower limit for `pytest` to 7.0. @@ -1340,6 +1345,10 @@ https://github.com/matplotlib/basemap/compare/v1.0.3rel...v1.0.4rel [1.0.3]: https://github.com/matplotlib/basemap/tree/v1.0.3rel +[CVE-2024-28219]: +https://nvd.nist.gov/vuln/detail/CVE-2024-28219 +[CVE-2023-50447]: +https://nvd.nist.gov/vuln/detail/CVE-2023-50447 [CVE-2023-27476]: https://nvd.nist.gov/vuln/detail/CVE-2023-27476 [CVE-2022-45198]: diff --git a/packages/basemap/requirements-owslib.txt b/packages/basemap/requirements-owslib.txt index 5c4f0439d..5c7425ee0 100644 --- a/packages/basemap/requirements-owslib.txt +++ b/packages/basemap/requirements-owslib.txt @@ -1,8 +1 @@ -ordereddict; python_version == "2.6" -OWSLib >= 0.8.0, < 0.15.0; python_version == "2.6" -OWSLib >= 0.8.0, < 0.19.0; python_version == "2.7" -OWSLib >= 0.8.0, < 0.11.0; python_version == "3.2" -OWSLib >= 0.8.0, < 0.11.0; python_version == "3.3" -OWSLib >= 0.8.0, < 0.18.0; python_version == "3.4" -OWSLib >= 0.8.0, < 0.20.0; python_version == "3.5" -OWSLib >= 0.28.1, < 0.30.0; python_version >= "3.6" +OWSLib >= 0.28.1, < 0.33 diff --git a/packages/basemap/requirements-pillow.txt b/packages/basemap/requirements-pillow.txt index 647257799..89493b01d 100644 --- a/packages/basemap/requirements-pillow.txt +++ b/packages/basemap/requirements-pillow.txt @@ -1,8 +1 @@ -pillow >= 3.4.0, < 4.0.0; python_version == "2.6" -pillow >= 6.2.2, < 7.0.0; python_version == "2.7" -pillow >= 3.4.0, < 4.0.0; python_version == "3.2" -pillow >= 4.3.0, < 5.0.0; python_version == "3.3" -pillow >= 5.4.0, < 6.0.0; python_version == "3.4" -pillow >= 7.1.0, < 8.0.0; python_version == "3.5" -pillow >= 8.3.2, < 9.0.0; python_version == "3.6" -pillow >= 9.4.0, < 10.2.0; python_version >= "3.7" +pillow >= 10.3, < 11.2 From 52b1e01a60965363ed62b2fc55a6e848ae38997e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 21:19:46 +0100 Subject: [PATCH 60/95] Update lint requirements --- CHANGELOG.md | 8 ++++++++ packages/basemap/requirements-lint.txt | 19 +++---------------- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7225afec4..8fd6cd68a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,14 @@ https://semver.org/spec/v2.0.0.html vulnerabilities [CVE-2023-50447] and [CVE-2024-28219]. - Upgrade upper limit for `pillow` to 11.2. - Upgrade upper limit for `OWSLib` to 0.33. +- Update lint dependencies: + - Remove dependency on `unittest2`. + - Upgrade lower limit for `flake8` to 3.9. + - Upgrade upper limit for `flake8` to 7.2. + - Upgrade lower limit for `astroid` to 3.0. + - Upgrade upper limit for `astroid` to 3.4. + - Upgrade lower limit for `pylint` to 3.0. + - Upgrade upper limit for `pylint` to 3.4. - Update test dependencies: - Remove dependency on `unittest2`. - Upgrade lower limit for `pytest` to 7.0. diff --git a/packages/basemap/requirements-lint.txt b/packages/basemap/requirements-lint.txt index 2b2a187c4..a13cd4285 100644 --- a/packages/basemap/requirements-lint.txt +++ b/packages/basemap/requirements-lint.txt @@ -1,17 +1,4 @@ -unittest2; python_version <= "3.9" +flake8 >= 3.9, < 7.2 -flake8 >= 2.6, < 3.0; python_version == "2.6" -flake8 >= 2.6, < 4.0; python_version == "2.7" -flake8 >= 2.6, < 3.0; python_version == "3.2" -flake8 >= 2.6, < 3.0; python_version == "3.3" -flake8 >= 2.6, < 3.9; python_version == "3.4" -flake8 >= 2.6, < 6.2; python_version >= "3.5" - -astroid >= 1.6, < 2.0; python_version == "2.7" -astroid >= 2.4, < 2.5; python_version == "3.5" -astroid >= 2.5, < 2.7; python_version == "3.6" -astroid >= 2.8, < 3.1; python_version >= "3.7" -pylint >= 1.9, < 2.0; python_version == "2.7" -pylint >= 2.6, < 2.7; python_version == "3.5" -pylint >= 2.7, < 2.10; python_version == "3.6" -pylint >= 2.11, < 3.1; python_version >= "3.7" +astroid >= 3.0, < 3.4 +pylint >= 3.0, < 3.4 From 0be520e0ba6956372aea6cddc8995dff82673da5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 21:24:42 +0100 Subject: [PATCH 61/95] Update doc requirements --- CHANGELOG.md | 7 +++++++ packages/basemap/requirements-doc.txt | 10 +++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fd6cd68a..539eeb530 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,13 @@ https://semver.org/spec/v2.0.0.html vulnerabilities [CVE-2023-50447] and [CVE-2024-28219]. - Upgrade upper limit for `pillow` to 11.2. - Upgrade upper limit for `OWSLib` to 0.33. +- Update doc dependencies: + - Upgrade upper limit for `sphinx` to 8.0. + - Upgrade lower limit for `furo` to 2023.9.10. + - Upgrade upper limit for `furo` to 2024.8.7. + - Upgrade lower limit for `scipy` to 1.6. + - Upgrade upper limit for `scipy` to 1.16. + - Upgrade upper limit for `netCDF4` to 1.8.0. - Update lint dependencies: - Remove dependency on `unittest2`. - Upgrade lower limit for `flake8` to 3.9. diff --git a/packages/basemap/requirements-doc.txt b/packages/basemap/requirements-doc.txt index 385d1e158..e89d7e235 100644 --- a/packages/basemap/requirements-doc.txt +++ b/packages/basemap/requirements-doc.txt @@ -1,6 +1,6 @@ -sphinx >= 5.3, < 7.2; python_version >= "3.8" -furo >= 2022.4.7, < 2023.9.11; python_version >= "3.8" +sphinx >= 7.0, < 8.0 +furo >= 2023.9.10, < 2024.8.7 -scipy >= 1.2, < 1.12; python_version >= "3.5" -cftime >= 1.4.0, < 1.7.0; python_version >= "3.6" -netCDF4 >= 1.5.6, < 1.7.0; python_version >= "3.6" +scipy >= 1.6, < 1.16 +cftime >= 1.4.0, < 1.7.0 +netCDF4 >= 1.5.6, < 1.8.0 From c65e1c221e3d956d2d84a0f22f1bca007d97e38b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 21:25:27 +0100 Subject: [PATCH 62/95] Remove outdated warning exclusion for pytest --- packages/basemap/setup.cfg | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/basemap/setup.cfg b/packages/basemap/setup.cfg index bf415ac0a..643dee05f 100644 --- a/packages/basemap/setup.cfg +++ b/packages/basemap/setup.cfg @@ -22,9 +22,6 @@ ignore = [tool:pytest] filterwarnings = error - # To be removed with `dateutil` release after 2.8.2. - # See: https://github.com/dateutil/dateutil/issues/1314 - ignore:datetime.datetime.utcfromtimestamp\(\) is deprecated:DeprecationWarning:dateutil.tz.tz:37 [coverage:paths] source = From 5b109a5d956eab29a72c787c01da3671ee979693 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 21:27:43 +0100 Subject: [PATCH 63/95] Remove empty __init__.py files in test folder --- packages/basemap/test/__init__.py | 0 packages/basemap/test/mpl_toolkits/__init__.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 packages/basemap/test/__init__.py delete mode 100644 packages/basemap/test/mpl_toolkits/__init__.py diff --git a/packages/basemap/test/__init__.py b/packages/basemap/test/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/basemap/test/mpl_toolkits/__init__.py b/packages/basemap/test/mpl_toolkits/__init__.py deleted file mode 100644 index e69de29bb..000000000 From 579e6fa777fcef2b926f76053bfe85a31d565a06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 21:28:30 +0100 Subject: [PATCH 64/95] Update copyright years --- packages/basemap/LICENSE | 2 +- packages/basemap/doc/source/conf.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/basemap/LICENSE b/packages/basemap/LICENSE index 120eb7e3f..68cbd3d24 100644 --- a/packages/basemap/LICENSE +++ b/packages/basemap/LICENSE @@ -1,5 +1,5 @@ Copyright (c) 2011-2014 Jeffrey Whitaker -Copyright (c) 2015-2024 The Matplotlib development team +Copyright (c) 2015-2025 The Matplotlib development team Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/packages/basemap/doc/source/conf.py b/packages/basemap/doc/source/conf.py index 460d15c92..daa4b1286 100644 --- a/packages/basemap/doc/source/conf.py +++ b/packages/basemap/doc/source/conf.py @@ -22,7 +22,7 @@ # -- Project information ----------------------------------------------- project = myself.__name__.rsplit(".", 1)[-1] -copyright = "2011-2014 Jeffrey Whitaker; 2015-2024 The Matplotlib development team" +copyright = "2011-2014 Jeffrey Whitaker; 2015-2025 The Matplotlib development team" author = "Jeffrey Whitaker" # The short X.Y version From 8d4e4dc508e8f3ab89bafeada0875b9894cb4fa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 21:43:52 +0100 Subject: [PATCH 65/95] Bump actions/setup-python to v5 --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ed065d625..6809fd38b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,7 @@ jobs: - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3.9" @@ -67,7 +67,7 @@ jobs: - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3.9" @@ -117,7 +117,7 @@ jobs: merge-multiple: true - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3.9" From 3cf8518262168a42a1b7548b27e89f8e7e476b48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 21:47:46 +0100 Subject: [PATCH 66/95] Bump maximum allowed Python version to <3.14 --- packages/basemap/setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/basemap/setup.py b/packages/basemap/setup.py index 1c47e85bf..8927ac115 100644 --- a/packages/basemap/setup.py +++ b/packages/basemap/setup.py @@ -207,7 +207,7 @@ def run(self): "python_requires": ", ".join([ ">=3.9", - "<3.13", + "<3.14", ]), "setup_requires": get_content("requirements-setup.txt", splitlines=True), From 831fa515104db6569dd0f2062c72513b8864d9f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 21:48:12 +0100 Subject: [PATCH 67/95] Add cp313 wheels to build matrix in cibuildwheel --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6809fd38b..b4a1b2751 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -82,7 +82,7 @@ jobs: uses: pypa/cibuildwheel@v2.22.0 env: CIBW_BUILD_VERBOSITY: 1 - CIBW_BUILD: "cp39* cp310* cp311* cp312*" + CIBW_BUILD: "cp39* cp310* cp311* cp312* cp313*" CIBW_SKIP: "pp* *-musllinux_* *-win32 *-manylinux_i686 *-musllinux_i686 *-aarch64 *-armv7l" CIBW_BEFORE_ALL: ${{ matrix.before_all }} CIBW_TEST_EXTRAS: "test" From 61077d5bd8e31071176fd50b2e8d11f0f9032a41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 22:10:50 +0100 Subject: [PATCH 68/95] Fix numpy build dependency pin for Python 3.13 --- packages/basemap/pyproject.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/basemap/pyproject.toml b/packages/basemap/pyproject.toml index d5dfe2906..48161aea9 100644 --- a/packages/basemap/pyproject.toml +++ b/packages/basemap/pyproject.toml @@ -2,7 +2,8 @@ requires = [ 'setuptools', 'wheel', - 'numpy == 2.0.0', 'cython >= 0.29.31, < 3.1', + 'numpy == 2.1.0; python_version == "3.13"', + 'numpy == 2.0.0; python_version <= "3.12"', ] build-backend = "setuptools.build_meta" From d80b7a889fe5709c13cc7094add2b5b329719561 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 22:14:10 +0100 Subject: [PATCH 69/95] Fix setuptools and wheel build dependency pins --- packages/basemap/pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/basemap/pyproject.toml b/packages/basemap/pyproject.toml index 48161aea9..a7d900689 100644 --- a/packages/basemap/pyproject.toml +++ b/packages/basemap/pyproject.toml @@ -1,7 +1,7 @@ [build-system] requires = [ - 'setuptools', - 'wheel', + 'setuptools >= 67.0, < 76.0', + 'wheel >= 0.40, < 0.46', 'cython >= 0.29.31, < 3.1', 'numpy == 2.1.0; python_version == "3.13"', 'numpy == 2.0.0; python_version <= "3.12"', From 312320bc03ac6b41744d57493161b58b29081e71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Mon, 24 Feb 2025 23:35:28 +0100 Subject: [PATCH 70/95] Update CHANGELOG --- CHANGELOG.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 539eeb530..353ffba0a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,9 @@ https://semver.org/spec/v2.0.0.html ## [Unreleased] ### Added -- Support `numpy` 2.0 (PR [#614] by @cvanelteren, solves issue [#604]). +- Support for Python 3.13 (PR [#619], solves issue [#608]). +- Support for NumPy 2.0 (PR [#614] by @cvanelteren, solves issue + [#604]). ### Changed - **BREAKING CHANGE**: Set Python minimum supported version to 3.9. @@ -1152,10 +1154,14 @@ https://semver.org/spec/v2.0.0.html - Fix glitches in drawing of parallels and meridians. +[#619]: +https://github.com/matplotlib/basemap/pull/619 [#615]: https://github.com/matplotlib/basemap/pull/615 [#614]: https://github.com/matplotlib/basemap/pull/614 +[#608]: +https://github.com/matplotlib/basemap/issues/608 [#604]: https://github.com/matplotlib/basemap/issues/604 [#598]: From 92f0508653bac8c152eaa2a2725418c7335fd26a Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Tue, 25 Feb 2025 08:30:24 +0100 Subject: [PATCH 71/95] add macos --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b4a1b2751..21d5403ed 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -48,7 +48,7 @@ jobs: needs: [build_data] strategy: matrix: - os: [ubuntu-latest, windows-latest] + os: [ubuntu-latest, windows-latest, macos-latest] include: - os: ubuntu-latest before_all: >- From 47fd818305bb255c90b0990945235f2b1bf25af4 Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Tue, 25 Feb 2025 08:34:36 +0100 Subject: [PATCH 72/95] update cibuild --- .github/workflows/build.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 21d5403ed..e9f2dac53 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -56,6 +56,12 @@ jobs: echo "GEOS_DIR set to: ${GEOS_DIR}" && cd "{package}" && python -c "import utils; utils.GeosLibrary('${GEOS_VERSION}').build('${GEOS_DIR}', njobs=2)" + - os: macos-latest + before_all: >- + echo "Starting BEFORE_ALL script" && + echo "GEOS_DIR set to: ${GEOS_DIR}" && + cd "{package}" && + python -c "import utils; utils.GeosLibrary('${GEOS_VERSION}').build('${GEOS_DIR}', njobs=2)" - os: windows-latest before_all: >- echo Starting BEFORE_ALL script && From 0641ba68742462d5999a5a19608acd0e5224d92c Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Tue, 25 Feb 2025 08:41:43 +0100 Subject: [PATCH 73/95] add macos arm builds --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e9f2dac53..fbaaa3837 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -89,7 +89,7 @@ jobs: env: CIBW_BUILD_VERBOSITY: 1 CIBW_BUILD: "cp39* cp310* cp311* cp312* cp313*" - CIBW_SKIP: "pp* *-musllinux_* *-win32 *-manylinux_i686 *-musllinux_i686 *-aarch64 *-armv7l" + CIBW_SKIP: "pp* *-musllinux_* *-win32 *-manylinux_i686 *-musllinux_i686 *-linux_aarch64 *-linux_armv7l" CIBW_BEFORE_ALL: ${{ matrix.before_all }} CIBW_TEST_EXTRAS: "test" CIBW_TEST_COMMAND: "python -m pytest {project}/packages/basemap" From 2e000789059b13eb601f8de20eb06a587ad9163d Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Tue, 25 Feb 2025 10:16:12 +0100 Subject: [PATCH 74/95] add explicit x86 support for macos --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fbaaa3837..8f62ba100 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -89,6 +89,7 @@ jobs: env: CIBW_BUILD_VERBOSITY: 1 CIBW_BUILD: "cp39* cp310* cp311* cp312* cp313*" + CIBW_ARCHS_MACOS: "x86_64 arm64" CIBW_SKIP: "pp* *-musllinux_* *-win32 *-manylinux_i686 *-musllinux_i686 *-linux_aarch64 *-linux_armv7l" CIBW_BEFORE_ALL: ${{ matrix.before_all }} CIBW_TEST_EXTRAS: "test" From 8780bd3ad9f51ebac513cd30faf7e84c3b3e380f Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Tue, 25 Feb 2025 10:46:54 +0100 Subject: [PATCH 75/95] set arch flags for macos --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8f62ba100..26d20b63f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -58,6 +58,7 @@ jobs: python -c "import utils; utils.GeosLibrary('${GEOS_VERSION}').build('${GEOS_DIR}', njobs=2)" - os: macos-latest before_all: >- + ARCHFLAGS="-arch x86_64 -arch arm64" echo "Starting BEFORE_ALL script" && echo "GEOS_DIR set to: ${GEOS_DIR}" && cd "{package}" && From d2695754caba73e482a449065d0395e026a0a7ce Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Tue, 25 Feb 2025 10:58:29 +0100 Subject: [PATCH 76/95] update ld path --- .github/workflows/build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 26d20b63f..f0813d386 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -58,6 +58,9 @@ jobs: python -c "import utils; utils.GeosLibrary('${GEOS_VERSION}').build('${GEOS_DIR}', njobs=2)" - os: macos-latest before_all: >- + ARCHFLAGS="-arch x86_64 -arch arm64" + LD_LIBRARY_PATH="${GEOS_DIR}/lib:$LD_LIBRARY_PATH" + DYLD_FALLBACK_LIBRARY_PATH="${GEOS_DIR}/lib:$DYLD_FALLBACK_LIBRARY_PATH" ARCHFLAGS="-arch x86_64 -arch arm64" echo "Starting BEFORE_ALL script" && echo "GEOS_DIR set to: ${GEOS_DIR}" && From 4e4d2dc1e8747d5576e74a5c38626dff4c9cc9ae Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Tue, 25 Feb 2025 11:18:25 +0100 Subject: [PATCH 77/95] add macos-13 for x86 builds --- .github/workflows/build.yml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f0813d386..9d39bbdda 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -51,14 +51,23 @@ jobs: os: [ubuntu-latest, windows-latest, macos-latest] include: - os: ubuntu-latest + arch: x86_64 before_all: >- echo "Starting BEFORE_ALL script" && echo "GEOS_DIR set to: ${GEOS_DIR}" && cd "{package}" && python -c "import utils; utils.GeosLibrary('${GEOS_VERSION}').build('${GEOS_DIR}', njobs=2)" - - os: macos-latest + - os: macos-13: before_all: >- + LD_LIBRARY_PATH="${GEOS_DIR}/lib:$LD_LIBRARY_PATH" + DYLD_FALLBACK_LIBRARY_PATH="${GEOS_DIR}/lib:$DYLD_FALLBACK_LIBRARY_PATH" ARCHFLAGS="-arch x86_64 -arch arm64" + echo "Starting BEFORE_ALL script" && + echo "GEOS_DIR set to: ${GEOS_DIR}" && + cd "{package}" && + python -c "import utils; utils.GeosLibrary('${GEOS_VERSION}').build('${GEOS_DIR}', njobs=2)" + - os: macos-latest + before_all: >- LD_LIBRARY_PATH="${GEOS_DIR}/lib:$LD_LIBRARY_PATH" DYLD_FALLBACK_LIBRARY_PATH="${GEOS_DIR}/lib:$DYLD_FALLBACK_LIBRARY_PATH" ARCHFLAGS="-arch x86_64 -arch arm64" @@ -67,6 +76,7 @@ jobs: cd "{package}" && python -c "import utils; utils.GeosLibrary('${GEOS_VERSION}').build('${GEOS_DIR}', njobs=2)" - os: windows-latest + arch: x86_64 before_all: >- echo Starting BEFORE_ALL script && echo GEOS_DIR set to: %GEOS_DIR% && @@ -93,7 +103,7 @@ jobs: env: CIBW_BUILD_VERBOSITY: 1 CIBW_BUILD: "cp39* cp310* cp311* cp312* cp313*" - CIBW_ARCHS_MACOS: "x86_64 arm64" + CIBW_ARCHS_MACOS: ${{ matrix.arch }} CIBW_SKIP: "pp* *-musllinux_* *-win32 *-manylinux_i686 *-musllinux_i686 *-linux_aarch64 *-linux_armv7l" CIBW_BEFORE_ALL: ${{ matrix.before_all }} CIBW_TEST_EXTRAS: "test" From 06a0d798e3b6e2c6cb92ebe1c7522709523c6ced Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Tue, 25 Feb 2025 11:19:45 +0100 Subject: [PATCH 78/95] update strategy --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9d39bbdda..226871778 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -48,7 +48,7 @@ jobs: needs: [build_data] strategy: matrix: - os: [ubuntu-latest, windows-latest, macos-latest] + os: [ubuntu-latest, windows-latest, macos-latest, macos-13] include: - os: ubuntu-latest arch: x86_64 From 9860f9f40c5d14902ff59b06af8fe904805137af Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Tue, 25 Feb 2025 11:20:32 +0100 Subject: [PATCH 79/95] typo --- .github/workflows/build.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 226871778..f626fde90 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -48,7 +48,8 @@ jobs: needs: [build_data] strategy: matrix: - os: [ubuntu-latest, windows-latest, macos-latest, macos-13] + os: + [ubuntu-latest, windows-latest, macos-latest, macos-13] include: - os: ubuntu-latest arch: x86_64 @@ -57,7 +58,7 @@ jobs: echo "GEOS_DIR set to: ${GEOS_DIR}" && cd "{package}" && python -c "import utils; utils.GeosLibrary('${GEOS_VERSION}').build('${GEOS_DIR}', njobs=2)" - - os: macos-13: + - os: macos-13 before_all: >- LD_LIBRARY_PATH="${GEOS_DIR}/lib:$LD_LIBRARY_PATH" DYLD_FALLBACK_LIBRARY_PATH="${GEOS_DIR}/lib:$DYLD_FALLBACK_LIBRARY_PATH" From 7e58cc86c453b46ec18346dd4db147580abdf475 Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Tue, 25 Feb 2025 11:34:58 +0100 Subject: [PATCH 80/95] add arch --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f626fde90..c385005fe 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -59,6 +59,7 @@ jobs: cd "{package}" && python -c "import utils; utils.GeosLibrary('${GEOS_VERSION}').build('${GEOS_DIR}', njobs=2)" - os: macos-13 + arch: x86_64 before_all: >- LD_LIBRARY_PATH="${GEOS_DIR}/lib:$LD_LIBRARY_PATH" DYLD_FALLBACK_LIBRARY_PATH="${GEOS_DIR}/lib:$DYLD_FALLBACK_LIBRARY_PATH" @@ -68,6 +69,7 @@ jobs: cd "{package}" && python -c "import utils; utils.GeosLibrary('${GEOS_VERSION}').build('${GEOS_DIR}', njobs=2)" - os: macos-latest + arch: arm64 before_all: >- LD_LIBRARY_PATH="${GEOS_DIR}/lib:$LD_LIBRARY_PATH" DYLD_FALLBACK_LIBRARY_PATH="${GEOS_DIR}/lib:$DYLD_FALLBACK_LIBRARY_PATH" From cb009396ad77cbe128809c8c218ef9e7b061892d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 25 Feb 2025 19:43:18 +0100 Subject: [PATCH 81/95] Remove LD_LIBRARY_PATH from MacOS before_all block --- .github/workflows/build.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c385005fe..3b026b0e3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -61,7 +61,6 @@ jobs: - os: macos-13 arch: x86_64 before_all: >- - LD_LIBRARY_PATH="${GEOS_DIR}/lib:$LD_LIBRARY_PATH" DYLD_FALLBACK_LIBRARY_PATH="${GEOS_DIR}/lib:$DYLD_FALLBACK_LIBRARY_PATH" ARCHFLAGS="-arch x86_64 -arch arm64" echo "Starting BEFORE_ALL script" && @@ -71,7 +70,6 @@ jobs: - os: macos-latest arch: arm64 before_all: >- - LD_LIBRARY_PATH="${GEOS_DIR}/lib:$LD_LIBRARY_PATH" DYLD_FALLBACK_LIBRARY_PATH="${GEOS_DIR}/lib:$DYLD_FALLBACK_LIBRARY_PATH" ARCHFLAGS="-arch x86_64 -arch arm64" echo "Starting BEFORE_ALL script" && From 28bbd170417b6c6ab64e25a3d0e14148915dbda6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 25 Feb 2025 20:00:35 +0100 Subject: [PATCH 82/95] Replace macos-latest with macos-14 --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3b026b0e3..041a7a68e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -49,7 +49,7 @@ jobs: strategy: matrix: os: - [ubuntu-latest, windows-latest, macos-latest, macos-13] + [ubuntu-latest, windows-latest, macos-13, macos-14] include: - os: ubuntu-latest arch: x86_64 @@ -67,7 +67,7 @@ jobs: echo "GEOS_DIR set to: ${GEOS_DIR}" && cd "{package}" && python -c "import utils; utils.GeosLibrary('${GEOS_VERSION}').build('${GEOS_DIR}', njobs=2)" - - os: macos-latest + - os: macos-14 arch: arm64 before_all: >- DYLD_FALLBACK_LIBRARY_PATH="${GEOS_DIR}/lib:$DYLD_FALLBACK_LIBRARY_PATH" From 19f0b8f70547dc47a30d6f96ed1d3810a5ac8e6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 25 Feb 2025 20:01:08 +0100 Subject: [PATCH 83/95] Remove DYLD_FALLBACK_LIBRARY_PATH from MacOS before_all block --- .github/workflows/build.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 041a7a68e..2b2df731d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -61,7 +61,6 @@ jobs: - os: macos-13 arch: x86_64 before_all: >- - DYLD_FALLBACK_LIBRARY_PATH="${GEOS_DIR}/lib:$DYLD_FALLBACK_LIBRARY_PATH" ARCHFLAGS="-arch x86_64 -arch arm64" echo "Starting BEFORE_ALL script" && echo "GEOS_DIR set to: ${GEOS_DIR}" && @@ -70,7 +69,6 @@ jobs: - os: macos-14 arch: arm64 before_all: >- - DYLD_FALLBACK_LIBRARY_PATH="${GEOS_DIR}/lib:$DYLD_FALLBACK_LIBRARY_PATH" ARCHFLAGS="-arch x86_64 -arch arm64" echo "Starting BEFORE_ALL script" && echo "GEOS_DIR set to: ${GEOS_DIR}" && From 343af4f4146f3c431a681f122b2f55731ea42303 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 25 Feb 2025 20:26:45 +0100 Subject: [PATCH 84/95] Remove ARCHFLAGS from MacOS before_all block --- .github/workflows/build.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2b2df731d..a4546f742 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -61,7 +61,6 @@ jobs: - os: macos-13 arch: x86_64 before_all: >- - ARCHFLAGS="-arch x86_64 -arch arm64" echo "Starting BEFORE_ALL script" && echo "GEOS_DIR set to: ${GEOS_DIR}" && cd "{package}" && @@ -69,7 +68,6 @@ jobs: - os: macos-14 arch: arm64 before_all: >- - ARCHFLAGS="-arch x86_64 -arch arm64" echo "Starting BEFORE_ALL script" && echo "GEOS_DIR set to: ${GEOS_DIR}" && cd "{package}" && From 79b94231b14e8c8874fefca6aaf7728382b80cb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 25 Feb 2025 20:56:16 +0100 Subject: [PATCH 85/95] Update comment about LD_LIBRARY_PATH --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a4546f742..6c518d3ba 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -111,7 +111,8 @@ jobs: PIP_PREFER_BINARY=1 PYTHONUNBUFFERED=1 LD_LIBRARY_PATH="${GEOS_DIR}/lib" - # LD_LIBRARY_PATH in environment is needed by auditwheel (Linux). + # LD_LIBRARY_PATH in environment is needed by + # auditwheel (Linux) and delocate (MacOS). with: package-dir: "packages/basemap" output-dir: "packages/basemap/dist" From b19d33decf0cf50288cc2dc776c976e6bb64aa05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 25 Feb 2025 20:56:42 +0100 Subject: [PATCH 86/95] Remove redundant entry in workflow matrix --- .github/workflows/build.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6c518d3ba..e1f436449 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -48,8 +48,6 @@ jobs: needs: [build_data] strategy: matrix: - os: - [ubuntu-latest, windows-latest, macos-13, macos-14] include: - os: ubuntu-latest arch: x86_64 From d67603eceaee568c0974ad7a1000fe566b6485f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 25 Feb 2025 21:19:29 +0100 Subject: [PATCH 87/95] Update CHANGELOG --- CHANGELOG.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 353ffba0a..6031e398c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,15 +13,17 @@ https://semver.org/spec/v2.0.0.html ## [Unreleased] ### Added -- Support for Python 3.13 (PR [#619], solves issue [#608]). -- Support for NumPy 2.0 (PR [#614] by @cvanelteren, solves issue - [#604]). +- Python 3.13 support (PR [#619], solves issue [#608]). +- NumPy 2.0 support (PR [#614] by @cvanelteren, solves issue [#604]). +- Automated wheels for x86_64 and arm64 (PR [#620] by @cvanelteren, + solves issue [#608]). ### Changed - **BREAKING CHANGE**: Set Python minimum supported version to 3.9. - **BREAKING CHANGE**: Migrate `basemap` libraries to use implicit namespace packages (PR [#576] by @ksunden). -- Migrate workflows to use `cibuildwheel` (PR [#614] by @cvanelteren). +- Migrate workflows to use `cibuildwheel` (PRs [#614] and [#618] by + @cvanelteren, solves sunset of v1 of GitHub artifact actions). - Update library dependencies: - Upgrade upper limit for `basemap_data` to 3.0. - Upgrade lower limit for `packaging` to 20.5. @@ -1154,8 +1156,12 @@ https://semver.org/spec/v2.0.0.html - Fix glitches in drawing of parallels and meridians. +[#620]: +https://github.com/matplotlib/basemap/pull/620 [#619]: https://github.com/matplotlib/basemap/pull/619 +[#618]: +https://github.com/matplotlib/basemap/pull/618 [#615]: https://github.com/matplotlib/basemap/pull/615 [#614]: From b82fb80be1e8c80564a198e71062cc6b586c4d61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 25 Feb 2025 21:40:42 +0100 Subject: [PATCH 88/95] Set image versions explicitly in workflow --- .github/workflows/build.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e1f436449..0c5331200 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,7 +21,7 @@ jobs: strategy: matrix: package: [basemap_data, basemap_data_hires] - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 @@ -49,7 +49,7 @@ jobs: strategy: matrix: include: - - os: ubuntu-latest + - os: ubuntu-22.04 arch: x86_64 before_all: >- echo "Starting BEFORE_ALL script" && @@ -70,7 +70,7 @@ jobs: echo "GEOS_DIR set to: ${GEOS_DIR}" && cd "{package}" && python -c "import utils; utils.GeosLibrary('${GEOS_VERSION}').build('${GEOS_DIR}', njobs=2)" - - os: windows-latest + - os: windows-2019 arch: x86_64 before_all: >- echo Starting BEFORE_ALL script && @@ -87,7 +87,7 @@ jobs: python-version: "3.9" - name: Build sdist - if: matrix.os == 'ubuntu-latest' + if: matrix.os == 'ubuntu-22.04' run: | cd packages/basemap python -m pip install build @@ -125,7 +125,7 @@ jobs: check: name: Check packages needs: [build_data, build_basemap] - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - uses: actions/download-artifact@v4 with: @@ -147,7 +147,7 @@ jobs: upload: name: Upload packages needs: [build_data, build_basemap, check] - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') steps: - uses: actions/download-artifact@v4 From 3ecaec6c679a46fe58be79f93e6b3fa1959e51ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 25 Feb 2025 21:58:36 +0100 Subject: [PATCH 89/95] Add Python script for cibuildwheel before_all block --- .github/workflows/run_before_all.py | 37 +++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .github/workflows/run_before_all.py diff --git a/.github/workflows/run_before_all.py b/.github/workflows/run_before_all.py new file mode 100644 index 000000000..575a26763 --- /dev/null +++ b/.github/workflows/run_before_all.py @@ -0,0 +1,37 @@ +#! /usr/bin/env python +"""Helper script to be run by `cibuildwheel` as `before_all` step.""" + +import os +import sys + +HERE = os.path.abspath(__file__) +ROOT = os.path.dirname(os.path.dirname(os.path.dirname(HERE))) +sys.path.insert(0, os.path.join(ROOT, "packages", "basemap")) +import utils # noqa: E402 # pylint: disable=imports + + +def main(): + """Build the GEOS library based on parsed environment variables.""" + + geos_version = os.environ.get("GEOS_VERSION", None) + if geos_version is None: + raise ValueError("Undefined environment variable GEOS_VERSION") + + geos_dir = os.environ.get("GEOS_DIR", None) + if geos_dir is None: + raise ValueError("Undefined environment variable GEOS_DIR") + + geos_njobs = int(os.environ.get("GEOS_NJOBS", 1)) + + # pylint: disable=consider-using-f-string + print("Running before_all script with the following settings:") + print("GEOS_DIR: {0}".format(geos_dir)) + print("GEOS_VERSION: {0}".format(geos_version)) + print("GEOS_NJOBS: {0}".format(geos_njobs)) + + utils.GeosLibrary(geos_version).build(geos_dir, njobs=geos_njobs) + return 0 + + +if __name__ == "__main__": + sys.exit(main()) From 4fd2ec91cf9e400c514f154cce960816a63471a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 25 Feb 2025 22:03:11 +0100 Subject: [PATCH 90/95] Replace before_all blocks with Python script --- .github/workflows/build.yml | 27 ++++----------------------- 1 file changed, 4 insertions(+), 23 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0c5331200..f15dfbf9c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -51,32 +51,12 @@ jobs: include: - os: ubuntu-22.04 arch: x86_64 - before_all: >- - echo "Starting BEFORE_ALL script" && - echo "GEOS_DIR set to: ${GEOS_DIR}" && - cd "{package}" && - python -c "import utils; utils.GeosLibrary('${GEOS_VERSION}').build('${GEOS_DIR}', njobs=2)" + - os: windows-2019 + arch: x86_64 - os: macos-13 arch: x86_64 - before_all: >- - echo "Starting BEFORE_ALL script" && - echo "GEOS_DIR set to: ${GEOS_DIR}" && - cd "{package}" && - python -c "import utils; utils.GeosLibrary('${GEOS_VERSION}').build('${GEOS_DIR}', njobs=2)" - os: macos-14 arch: arm64 - before_all: >- - echo "Starting BEFORE_ALL script" && - echo "GEOS_DIR set to: ${GEOS_DIR}" && - cd "{package}" && - python -c "import utils; utils.GeosLibrary('${GEOS_VERSION}').build('${GEOS_DIR}', njobs=2)" - - os: windows-2019 - arch: x86_64 - before_all: >- - echo Starting BEFORE_ALL script && - echo GEOS_DIR set to: %GEOS_DIR% && - cd "{package}" && - python -c "import utils; utils.GeosLibrary('%GEOS_VERSION%').build('%GEOS_DIR%', njobs=2)" runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 @@ -100,12 +80,13 @@ jobs: CIBW_BUILD: "cp39* cp310* cp311* cp312* cp313*" CIBW_ARCHS_MACOS: ${{ matrix.arch }} CIBW_SKIP: "pp* *-musllinux_* *-win32 *-manylinux_i686 *-musllinux_i686 *-linux_aarch64 *-linux_armv7l" - CIBW_BEFORE_ALL: ${{ matrix.before_all }} + CIBW_BEFORE_ALL: "python {project}/.github/workflows/run_before_all.py" CIBW_TEST_EXTRAS: "test" CIBW_TEST_COMMAND: "python -m pytest {project}/packages/basemap" CIBW_ENVIRONMENT: >- GEOS_VERSION="3.6.5" GEOS_DIR="$(pwd)/extern" + GEOS_NJOBS=4 PIP_PREFER_BINARY=1 PYTHONUNBUFFERED=1 LD_LIBRARY_PATH="${GEOS_DIR}/lib" From 2c0bb76b43b52cfbd7a62a5435223ccf06c061e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 25 Feb 2025 22:06:44 +0100 Subject: [PATCH 91/95] Apply minor correction to CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6031e398c..6e212b9d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,7 +23,7 @@ https://semver.org/spec/v2.0.0.html - **BREAKING CHANGE**: Migrate `basemap` libraries to use implicit namespace packages (PR [#576] by @ksunden). - Migrate workflows to use `cibuildwheel` (PRs [#614] and [#618] by - @cvanelteren, solves sunset of v1 of GitHub artifact actions). + @cvanelteren, solves sunset of GitHub artifact actions v1). - Update library dependencies: - Upgrade upper limit for `basemap_data` to 3.0. - Upgrade lower limit for `packaging` to 20.5. From 861998b1d29b24c080f5301dda708a4ed44beb4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 25 Feb 2025 22:11:59 +0100 Subject: [PATCH 92/95] Fix and simplify setup of archs in cibuildwheel --- .github/workflows/build.yml | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f15dfbf9c..5714e5483 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -48,15 +48,7 @@ jobs: needs: [build_data] strategy: matrix: - include: - - os: ubuntu-22.04 - arch: x86_64 - - os: windows-2019 - arch: x86_64 - - os: macos-13 - arch: x86_64 - - os: macos-14 - arch: arm64 + os: [ubuntu-22.04, windows-2019, macos-13, macos-14] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 @@ -78,7 +70,7 @@ jobs: env: CIBW_BUILD_VERBOSITY: 1 CIBW_BUILD: "cp39* cp310* cp311* cp312* cp313*" - CIBW_ARCHS_MACOS: ${{ matrix.arch }} + CIBW_ARCHS: "native" CIBW_SKIP: "pp* *-musllinux_* *-win32 *-manylinux_i686 *-musllinux_i686 *-linux_aarch64 *-linux_armv7l" CIBW_BEFORE_ALL: "python {project}/.github/workflows/run_before_all.py" CIBW_TEST_EXTRAS: "test" From 7d689ad14204bb5278f8e5c58a7b9b2904471fd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Tue, 25 Feb 2025 22:26:13 +0100 Subject: [PATCH 93/95] Clean up unneeded wheel exclusions in CIBW_SKIP --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5714e5483..d3fa1c773 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -68,10 +68,10 @@ jobs: - name: Build wheels uses: pypa/cibuildwheel@v2.22.0 env: - CIBW_BUILD_VERBOSITY: 1 - CIBW_BUILD: "cp39* cp310* cp311* cp312* cp313*" CIBW_ARCHS: "native" - CIBW_SKIP: "pp* *-musllinux_* *-win32 *-manylinux_i686 *-musllinux_i686 *-linux_aarch64 *-linux_armv7l" + CIBW_BUILD: "cp39* cp310* cp311* cp312* cp313*" + CIBW_BUILD_VERBOSITY: 1 + CIBW_SKIP: "*-musllinux_*" CIBW_BEFORE_ALL: "python {project}/.github/workflows/run_before_all.py" CIBW_TEST_EXTRAS: "test" CIBW_TEST_COMMAND: "python -m pytest {project}/packages/basemap" From d762db0025c9d3b319852013a1cf8eefb6eaebad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Wed, 26 Feb 2025 00:34:24 +0100 Subject: [PATCH 94/95] Update CHANGELOG --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e212b9d9..b14c8acd8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,7 +23,7 @@ https://semver.org/spec/v2.0.0.html - **BREAKING CHANGE**: Migrate `basemap` libraries to use implicit namespace packages (PR [#576] by @ksunden). - Migrate workflows to use `cibuildwheel` (PRs [#614] and [#618] by - @cvanelteren, solves sunset of GitHub artifact actions v1). + @cvanelteren and PR [#621], solves GitHub artifact actions v1 sunset). - Update library dependencies: - Upgrade upper limit for `basemap_data` to 3.0. - Upgrade lower limit for `packaging` to 20.5. @@ -1156,6 +1156,8 @@ https://semver.org/spec/v2.0.0.html - Fix glitches in drawing of parallels and meridians. +[#621]: +https://github.com/matplotlib/basemap/pull/621 [#620]: https://github.com/matplotlib/basemap/pull/620 [#619]: From 7913a36cbc262f4641f0debdd578a54799f9d31c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Wed, 26 Feb 2025 01:22:04 +0100 Subject: [PATCH 95/95] Fix missing environment and parameters in upload job --- .github/workflows/build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d3fa1c773..c2ca8e4bd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -121,6 +121,7 @@ jobs: name: Upload packages needs: [build_data, build_basemap, check] runs-on: ubuntu-22.04 + environment: PyPI if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') steps: - uses: actions/download-artifact@v4 @@ -133,3 +134,5 @@ jobs: uses: pypa/gh-action-pypi-publish@release/v1 with: password: ${{ secrets.PYPI_TOKEN }} + repository-url: ${{ secrets.PYPI_REPOSITORY_URL }} + skip-existing: true