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 001/188] 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 002/188] 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 003/188] 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 73655928a6f75e89ff98bb5dc4e76745248478ea Mon Sep 17 00:00:00 2001 From: Kurea Date: Wed, 15 May 2024 11:49:54 +0200 Subject: [PATCH 004/188] Update __init__.py managing WebMapService constructor parameters when available --- packages/basemap/src/mpl_toolkits/basemap/__init__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/basemap/src/mpl_toolkits/basemap/__init__.py b/packages/basemap/src/mpl_toolkits/basemap/__init__.py index a7050beed..669fddb88 100644 --- a/packages/basemap/src/mpl_toolkits/basemap/__init__.py +++ b/packages/basemap/src/mpl_toolkits/basemap/__init__.py @@ -4452,7 +4452,10 @@ def wmsimage(self,server,\ if ypixels is None: ypixels = int(self.aspect*xpixels) if verbose: print(server) - wms = WebMapService(server) + wmsInitKeys = ['version', 'xml', 'username', 'password','parse_remote_metadata', 'timeout', 'headers', 'auth'] + wms_options = {k:kwargs[v] for k in wmsInitKeys if k in kwargs} + kwargs = {k:kwargs[v] for k in kwargs if k not in wmsInitKeys} + wms = WebMapService(server, **wms_options) if verbose: print('id: %s, version: %s' % (wms.identification.type,wms.identification.version)) From cbe0cb6fc45b34e30675bad65a770ac292cb155d Mon Sep 17 00:00:00 2001 From: Kyle Sunden Date: Thu, 8 Jun 2023 16:42:59 -0500 Subject: [PATCH 005/188] 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 006/188] 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 007/188] 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 008/188] 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 009/188] 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 010/188] 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 011/188] 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 012/188] 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 013/188] 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 014/188] 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 015/188] 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 016/188] 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 017/188] 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 018/188] 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 019/188] 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 020/188] 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 021/188] 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 022/188] 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 023/188] 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 024/188] 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 025/188] 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 026/188] 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 027/188] 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 028/188] 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 029/188] 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 030/188] 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 031/188] 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 032/188] 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 033/188] 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 034/188] 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 035/188] 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 036/188] 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 037/188] 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 038/188] 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 039/188] 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 040/188] 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 041/188] 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 042/188] 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 043/188] 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 044/188] 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 045/188] 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 046/188] 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 047/188] 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 048/188] 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 049/188] 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 050/188] 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 051/188] 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 052/188] 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 053/188] 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 054/188] 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 055/188] 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 056/188] 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 057/188] 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 058/188] 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 059/188] 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 060/188] 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 061/188] 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 062/188] 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 063/188] 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 064/188] 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 065/188] 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 066/188] 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 067/188] 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 068/188] 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 069/188] 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 070/188] 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 071/188] 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 072/188] 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 073/188] 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 074/188] 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 075/188] 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 076/188] 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 077/188] 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 078/188] 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 079/188] 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 080/188] 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 081/188] 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 082/188] 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 083/188] 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 084/188] 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 085/188] 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 086/188] 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 087/188] 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 088/188] 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 089/188] 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 090/188] 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 091/188] 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 092/188] 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 093/188] 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 094/188] 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 095/188] 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 096/188] 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 From 1d489e50cdfea8d3b836e25a2245547c6fa8717e Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Wed, 26 Feb 2025 15:42:35 +0100 Subject: [PATCH 097/188] flow sdist->wheel --- .github/workflows/build.yml | 121 ++++++++++++++++++++++++++++++------ 1 file changed, 102 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c2ca8e4bd..b165df011 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -43,13 +43,9 @@ jobs: packages/${{ matrix.package }}/dist/*.whl name: dist-${{ matrix.package }} - build_basemap: - name: Build basemap package (${{ matrix.os }}) - needs: [build_data] - strategy: - matrix: - os: [ubuntu-22.04, windows-2019, macos-13, macos-14] - runs-on: ${{ matrix.os }} + build_sdist: + name: Build basemap sdist + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 @@ -59,13 +55,83 @@ jobs: python-version: "3.9" - name: Build sdist - if: matrix.os == 'ubuntu-22.04' run: | cd packages/basemap python -m pip install build python -m build --sdist - - name: Build wheels + - uses: actions/upload-artifact@v4 + with: + path: packages/basemap/dist/*.tar.gz + name: basemap-sdist + + build_wheels: + name: Build wheels on ${{ matrix.os }} + needs: [build_data, build_sdist] + strategy: + matrix: + os: [ubuntu-22.04, windows-2019, macos-13, macos-14] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.9" + + - name: Download basemap sdist + uses: actions/download-artifact@v4 + with: + name: basemap-sdist + path: ./sdist/ + + - name: Extract sdist (Linux/macOS) + if: runner.os != 'Windows' + shell: bash + run: | + # Create extraction directory in the workspace + mkdir -p ./sdist_extract + + # Extract using tar (Unix-style) + tar -xvf ./sdist/*.tar.gz -C ./sdist_extract + + # Get the extracted directory name + EXTRACTED_DIR=$(ls -d ./sdist_extract/*/ | head -1) + echo "SDIST_DIR=$(pwd)/${EXTRACTED_DIR}" >> $GITHUB_ENV + + # Verify contents + ls -la ${EXTRACTED_DIR} + + - name: Extract sdist (Windows) + if: runner.os == 'Windows' + shell: pwsh + run: | + # Create extraction directory + New-Item -ItemType Directory -Force -Path "sdist_extract" + + # Find the tarball file (without using wildcards) + $tarball = Get-ChildItem -Path "sdist" -Filter "*.tar.gz" | Select-Object -First 1 + + # Debug - show what we found + Write-Host "Found tarball: $($tarball.FullName)" + + # Extract using the specific file path (not wildcard) + tar -xvf $tarball.FullName -C "sdist_extract" + + # Get the extracted directory name + $extractedDir = (Get-ChildItem -Path "sdist_extract" -Directory | Select-Object -First 1).FullName + + # Debug - show what we found + Write-Host "Extracted directory: $extractedDir" + + # Set the environment variable + echo "SDIST_DIR=$extractedDir" | Out-File -FilePath $env:GITHUB_ENV -Append + + # Verify contents + Get-ChildItem $extractedDir + + - name: Build wheels from sdist uses: pypa/cibuildwheel@v2.22.0 env: CIBW_ARCHS: "native" @@ -82,22 +148,18 @@ jobs: PIP_PREFER_BINARY=1 PYTHONUNBUFFERED=1 LD_LIBRARY_PATH="${GEOS_DIR}/lib" - # LD_LIBRARY_PATH in environment is needed by - # auditwheel (Linux) and delocate (MacOS). with: - package-dir: "packages/basemap" - output-dir: "packages/basemap/dist" + package-dir: ${{ env.SDIST_DIR }} # Use extracted sdist + output-dir: "dist" - uses: actions/upload-artifact@v4 with: - path: | - packages/basemap/dist/*.tar.gz - packages/basemap/dist/*.whl - name: dist-basemap-${{ matrix.os }} + path: dist/*.whl + name: dist-basemap-wheels-${{ matrix.os }} check: name: Check packages - needs: [build_data, build_basemap] + needs: [build_data, build_sdist, build_wheels] runs-on: ubuntu-22.04 steps: - uses: actions/download-artifact@v4 @@ -106,6 +168,11 @@ jobs: pattern: "dist-*" merge-multiple: true + - uses: actions/download-artifact@v4 + with: + path: dist + name: basemap-sdist + - name: Set up Python uses: actions/setup-python@v5 with: @@ -117,9 +184,20 @@ jobs: python -m twine check dist/*.tar.gz python -m twine check dist/*.whl + # Verification step to ensure sdist is complete + - name: Verify sdist can build wheel + run: | + python -m pip install build setuptools wheel + mkdir -p /tmp/sdist_test + tar -xvf dist/*.tar.gz -C /tmp/sdist_test + cd /tmp/sdist_test/*/ + python -m pip install -e . + python -m build --wheel + ls -la dist/*.whl + upload: name: Upload packages - needs: [build_data, build_basemap, check] + needs: [build_data, build_sdist, build_wheels, check] runs-on: ubuntu-22.04 environment: PyPI if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') @@ -130,6 +208,11 @@ jobs: pattern: "dist-*" merge-multiple: true + - uses: actions/download-artifact@v4 + with: + path: dist + name: basemap-sdist + - name: Publish to PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: From b86db26aa140d69f1f8b42ce8060d72e05d695bd Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Wed, 26 Feb 2025 16:05:08 +0100 Subject: [PATCH 098/188] build data packages directly --- .github/workflows/build.yml | 53 +++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b165df011..b1f8cc175 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -86,6 +86,57 @@ jobs: name: basemap-sdist path: ./sdist/ + - name: Download data packages + uses: actions/download-artifact@v4 + with: + pattern: dist-basemap_data* + path: ./data_packages/ + merge-multiple: true + + - name: Install data packages (Linux/macOS) + if: runner.os != 'Windows' + shell: bash + run: | + # Debug - show what we downloaded + ls -la ./data_packages/ + + # Install the data packages + python -m pip install ./data_packages/*.whl + + # Verify they're installed + python -c "import mpl_toolkits.basemap_data; print('Data package installed')" + python -c "import mpl_toolkits.basemap_data_hires; print('Hires data package installed')" || echo "Optional hires package not installed" + + # Install the data packages (Windows) + - name: Install data packages (Windows) + if: runner.os == 'Windows' + shell: pwsh + run: | + # Debug - show what we downloaded + Get-ChildItem -Path "./data_packages" -Recurse + + # Find all wheel files + $wheels = Get-ChildItem -Path "./data_packages" -Filter "*.whl" -Recurse + + # Install each wheel file + foreach ($wheel in $wheels) { + Write-Host "Installing $($wheel.FullName)" + python -m pip install $wheel.FullName + } + + # Verify they're installed + try { + python -c "import mpl_toolkits.basemap_data; print('Data package installed')" + } catch { + Write-Host "Error importing basemap_data" + } + + try { + python -c "import mpl_toolkits.basemap_data_hires; print('Hires data package installed')" + } catch { + Write-Host "Optional hires package not installed" + } + - name: Extract sdist (Linux/macOS) if: runner.os != 'Windows' shell: bash @@ -148,6 +199,8 @@ jobs: PIP_PREFER_BINARY=1 PYTHONUNBUFFERED=1 LD_LIBRARY_PATH="${GEOS_DIR}/lib" + # LD_LIBRARY_PATH in environment is needed by + # auditwheel (Linux) and delocate (MacOS). with: package-dir: ${{ env.SDIST_DIR }} # Use extracted sdist output-dir: "dist" From 8db731f3bfdb1f4353771a190fe0241c0d32f76e Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Wed, 26 Feb 2025 16:10:00 +0100 Subject: [PATCH 099/188] attempt fix install windows --- .github/workflows/build.yml | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b1f8cc175..cb13bdbf1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -105,7 +105,6 @@ jobs: # Verify they're installed python -c "import mpl_toolkits.basemap_data; print('Data package installed')" - python -c "import mpl_toolkits.basemap_data_hires; print('Hires data package installed')" || echo "Optional hires package not installed" # Install the data packages (Windows) - name: Install data packages (Windows) @@ -124,18 +123,12 @@ jobs: python -m pip install $wheel.FullName } - # Verify they're installed - try { - python -c "import mpl_toolkits.basemap_data; print('Data package installed')" - } catch { - Write-Host "Error importing basemap_data" - } + # Show installed packages + python -m pip list | Select-String "mpl_toolkits.basemap" - try { - python -c "import mpl_toolkits.basemap_data_hires; print('Hires data package installed')" - } catch { - Write-Host "Optional hires package not installed" - } + # Try different import paths + Write-Host "Trying to import basemap_data..." + python -c "import mpl_toolkits.basemap_data; print('mpl_toolkits.basemap_data imported successfully')" - name: Extract sdist (Linux/macOS) if: runner.os != 'Windows' From 026ceea20daff80f56446d2c5336dea45f5b4a18 Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Wed, 26 Feb 2025 16:38:02 +0100 Subject: [PATCH 100/188] update verification step --- .github/workflows/build.yml | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cb13bdbf1..86a4ef736 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -235,11 +235,43 @@ jobs: run: | python -m pip install build setuptools wheel mkdir -p /tmp/sdist_test - tar -xvf dist/*.tar.gz -C /tmp/sdist_test + + # List all files in dist directory + echo "Files in dist directory:" + ls -la dist/ + + # Extract only the basemap sdist + BASEMAP_SDIST=$(ls dist/basemap-*.tar.gz 2>/dev/null || echo "") + + if [ -z "$BASEMAP_SDIST" ]; then + echo "Basemap sdist not found with pattern 'basemap-*.tar.gz', trying alternative patterns..." + BASEMAP_SDIST=$(ls dist/*basemap*.tar.gz 2>/dev/null | head -1 || echo "") + fi + + if [ -z "$BASEMAP_SDIST" ]; then + echo "ERROR: Could not find any basemap sdist" + exit 1 + fi + + echo "Using sdist: $BASEMAP_SDIST" + + # Extract just the one sdist file + tar -xvf "$BASEMAP_SDIST" -C /tmp/sdist_test + + # Enter extracted directory cd /tmp/sdist_test/*/ + + # Install and build python -m pip install -e . python -m build --wheel - ls -la dist/*.whl + + # Check for built wheel + if [ -d "dist" ]; then + ls -la dist/*.whl || echo "No wheels found in dist directory" + else + echo "No dist directory created" + exit 1 + fi upload: name: Upload packages From 76ed633aab944a4be56a551e05790f4b961c2f96 Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Wed, 26 Feb 2025 16:54:02 +0100 Subject: [PATCH 101/188] simplify verification --- .github/workflows/build.yml | 43 +++++++++---------------------------- 1 file changed, 10 insertions(+), 33 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 86a4ef736..fcaf1336c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -230,46 +230,23 @@ jobs: python -m twine check dist/*.tar.gz python -m twine check dist/*.whl - # Verification step to ensure sdist is complete - - name: Verify sdist can build wheel + - name: Verify sdist content run: | - python -m pip install build setuptools wheel mkdir -p /tmp/sdist_test - # List all files in dist directory - echo "Files in dist directory:" - ls -la dist/ - - # Extract only the basemap sdist - BASEMAP_SDIST=$(ls dist/basemap-*.tar.gz 2>/dev/null || echo "") - - if [ -z "$BASEMAP_SDIST" ]; then - echo "Basemap sdist not found with pattern 'basemap-*.tar.gz', trying alternative patterns..." - BASEMAP_SDIST=$(ls dist/*basemap*.tar.gz 2>/dev/null | head -1 || echo "") - fi - - if [ -z "$BASEMAP_SDIST" ]; then - echo "ERROR: Could not find any basemap sdist" - exit 1 - fi - - echo "Using sdist: $BASEMAP_SDIST" - - # Extract just the one sdist file + # Find and extract basemap sdist + BASEMAP_SDIST=$(ls dist/basemap-*.tar.gz 2>/dev/null || ls dist/*basemap*.tar.gz 2>/dev/null | head -1) tar -xvf "$BASEMAP_SDIST" -C /tmp/sdist_test - # Enter extracted directory - cd /tmp/sdist_test/*/ - - # Install and build - python -m pip install -e . - python -m build --wheel + # Verify contents + echo "Files in extracted sdist:" + find /tmp/sdist_test -type f | grep -v "__pycache__" | sort - # Check for built wheel - if [ -d "dist" ]; then - ls -la dist/*.whl || echo "No wheels found in dist directory" + # Check for critical files + if [ -f "$(find /tmp/sdist_test -name "_geoslib.pyx")" ]; then + echo "✓ Source files verified in sdist" else - echo "No dist directory created" + echo "✗ Missing critical source files in sdist" exit 1 fi From 80476d7855213654d5c840bc41247e5f1165f5e2 Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Wed, 26 Feb 2025 17:19:04 +0100 Subject: [PATCH 102/188] add doc building --- .github/workflows/build.yml | 85 +++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fcaf1336c..f3549b87d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -250,6 +250,91 @@ jobs: exit 1 fi + docs: + name: Build documentation + needs: [build_wheels] + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.9" + + - name: Download basemap wheel for Linux + uses: actions/download-artifact@v4 + with: + name: dist-basemap-wheels-ubuntu-22.04 + path: ./wheels/ + + - name: Download data packages + uses: actions/download-artifact@v4 + with: + pattern: dist-basemap_data* + path: ./data_packages/ + merge-multiple: true + + - name: Install packages + run: | + # Get Python version to find matching wheel + PYTHON_VERSION=$(python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')") + echo "Using Python $PYTHON_VERSION" + + # Install matching wheel for Linux + MATCHING_WHEEL=$(find ./wheels -name "basemap-*-cp3${PYTHON_VERSION/./}*.whl" | head -1) + if [ -n "$MATCHING_WHEEL" ]; then + echo "Installing wheel: $MATCHING_WHEEL" + python -m pip install "$MATCHING_WHEEL" + else + echo "No matching wheel found for Python $PYTHON_VERSION. Available wheels:" + ls -la ./wheels/ + echo "Falling back to installing any available wheel..." + python -m pip install ./wheels/*.whl + fi + + # Install data packages + echo "Installing data packages..." + python -m pip install ./data_packages/*.whl + + - name: Install documentation requirements + run: | + cd packages/basemap + python -m pip install -r requirements-doc.txt + + - name: Build documentation + run: | + cd packages/basemap + python -m sphinx doc/source public + + - name: Upload docs artifacts + uses: actions/upload-artifact@v4 + with: + name: docs-artifact + path: packages/basemap/public + + - name: Upload github-pages artifact + uses: actions/upload-pages-artifact@v3 + with: + name: github-pages + path: packages/basemap/public + + pages: + name: Deploy documentation + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') + needs: [docs, check] + runs-on: ubuntu-22.04 + 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: name: Upload packages needs: [build_data, build_sdist, build_wheels, check] From db61f75c247f8da07c7380b032526c6a7b5d4616 Mon Sep 17 00:00:00 2001 From: cvanelteren Date: Wed, 26 Feb 2025 18:12:31 +0100 Subject: [PATCH 103/188] ensure correct version is used --- .github/workflows/build.yml | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f3549b87d..03d0a5a47 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -277,26 +277,33 @@ jobs: - name: Install packages run: | - # Get Python version to find matching wheel - PYTHON_VERSION=$(python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')") - echo "Using Python $PYTHON_VERSION" + # Get Python version + PY_VER=$(python -c "import sys; print(f'{sys.version_info.major}{sys.version_info.minor}')") + echo "Using Python $PY_VER" + + # List available wheels + echo "Available wheels:" + ls -la ./wheels/ + + # Find wheel matching current Python version + MATCHING_WHEEL=$(find ./wheels -name "*-cp${PY_VER}-cp${PY_VER}*" | head -1) - # Install matching wheel for Linux - MATCHING_WHEEL=$(find ./wheels -name "basemap-*-cp3${PYTHON_VERSION/./}*.whl" | head -1) if [ -n "$MATCHING_WHEEL" ]; then - echo "Installing wheel: $MATCHING_WHEEL" + echo "Installing matching wheel: $MATCHING_WHEEL" python -m pip install "$MATCHING_WHEEL" else - echo "No matching wheel found for Python $PYTHON_VERSION. Available wheels:" - ls -la ./wheels/ - echo "Falling back to installing any available wheel..." + echo "No matching wheel found for Python $PY_VER. Installing any available wheel..." python -m pip install ./wheels/*.whl fi # Install data packages - echo "Installing data packages..." + echo "Installing data packages:" + ls -la ./data_packages/ python -m pip install ./data_packages/*.whl + # Verify installation + python -c "import mpl_toolkits.basemap; print('Basemap version:', mpl_toolkits.basemap.__version__)" + - name: Install documentation requirements run: | cd packages/basemap From 89b31f84be570b030fa4215284eece10b39f4a68 Mon Sep 17 00:00:00 2001 From: Cris Diaz Date: Wed, 9 Apr 2025 02:53:38 -0400 Subject: [PATCH 104/188] Fix incorrect docstring return order in shiftdata() --- packages/basemap/src/mpl_toolkits/basemap/__init__.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/basemap/src/mpl_toolkits/basemap/__init__.py b/packages/basemap/src/mpl_toolkits/basemap/__init__.py index 3f61c2c4f..075a21275 100644 --- a/packages/basemap/src/mpl_toolkits/basemap/__init__.py +++ b/packages/basemap/src/mpl_toolkits/basemap/__init__.py @@ -4836,10 +4836,10 @@ def shiftdata(self,lonsin,datain=None,lon_0=None,fix_wrap_around=True): [lon_0-180, lon_0+180] range. ================ ====================================================== - if datain given, returns ``dataout,lonsout`` (data and longitudes shifted to fit in interval - [lon_0-180,lon_0+180]), otherwise just returns longitudes. If - transformed longitudes lie outside map projection region, data is - masked and longitudes are set to 1.e30. + If datain is given, returns ``lonsout, dataout`` (longitudes and data shifted to fit in the interval +[lon_0-180, lon_0+180]); otherwise, returns just the shifted longitudes. If +transformed longitudes lie outside the map projection region, data is +masked and longitudes are set to 1.e30. """ if lon_0 is None and 'lon_0' not in self.projparams: raise ValueError('lon_0 keyword must be provided') From 2f7d2a557b7d3bff343a9a8fbd214c2f63b82c2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 17:27:35 +0200 Subject: [PATCH 105/188] Ensure wheels are built from sdists Since build 0.5.0, the default behaviour of `python -m build` is to create the sdist first, and then to create the wheel from the sdist. Using `--sdist --wheel` prevents the desired default behaviour. --- .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 c2ca8e4bd..54456b66c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -34,7 +34,7 @@ jobs: run: | cd packages/${{ matrix.package }} python -m pip install build wheel - python -m build --sdist --wheel + python -m build - uses: actions/upload-artifact@v4 with: From dcc6ddccc0d93bd1125206e728db1bda96c4165f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 17:51:11 +0200 Subject: [PATCH 106/188] Remove unneeded sdist verification At this point in the pipeline, if the pyx file is not present in the sdist, the pipeline should have failed before at the cibuildwheel step. --- .github/workflows/build.yml | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ae2868978..2962614ed 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -230,26 +230,6 @@ jobs: python -m twine check dist/*.tar.gz python -m twine check dist/*.whl - - name: Verify sdist content - run: | - mkdir -p /tmp/sdist_test - - # Find and extract basemap sdist - BASEMAP_SDIST=$(ls dist/basemap-*.tar.gz 2>/dev/null || ls dist/*basemap*.tar.gz 2>/dev/null | head -1) - tar -xvf "$BASEMAP_SDIST" -C /tmp/sdist_test - - # Verify contents - echo "Files in extracted sdist:" - find /tmp/sdist_test -type f | grep -v "__pycache__" | sort - - # Check for critical files - if [ -f "$(find /tmp/sdist_test -name "_geoslib.pyx")" ]; then - echo "✓ Source files verified in sdist" - else - echo "✗ Missing critical source files in sdist" - exit 1 - fi - upload: name: Upload packages needs: [build_data, build_sdist, build_wheels, check] From fef1d4d466347da87055c431f8adcf96c2243b55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 17:54:48 +0200 Subject: [PATCH 107/188] Remove redundant comment --- .github/workflows/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2962614ed..1fb176046 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -106,7 +106,6 @@ jobs: # Verify they're installed python -c "import mpl_toolkits.basemap_data; print('Data package installed')" - # Install the data packages (Windows) - name: Install data packages (Windows) if: runner.os == 'Windows' shell: pwsh From 2dccf0250f878b06500f784ebb049fb8c2e3b1f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 17:56:32 +0200 Subject: [PATCH 108/188] Move download basemap sdist step right before extraction --- .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 1fb176046..b507ec399 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -80,12 +80,6 @@ jobs: with: python-version: "3.9" - - name: Download basemap sdist - uses: actions/download-artifact@v4 - with: - name: basemap-sdist - path: ./sdist/ - - name: Download data packages uses: actions/download-artifact@v4 with: @@ -129,6 +123,12 @@ jobs: Write-Host "Trying to import basemap_data..." python -c "import mpl_toolkits.basemap_data; print('mpl_toolkits.basemap_data imported successfully')" + - name: Download basemap sdist + uses: actions/download-artifact@v4 + with: + name: basemap-sdist + path: ./sdist/ + - name: Extract sdist (Linux/macOS) if: runner.os != 'Windows' shell: bash From 26cbb8c85cce325a1cd6a384952a253b9287e53e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 17:59:12 +0200 Subject: [PATCH 109/188] Rename dist artifacts more consistently --- .github/workflows/build.yml | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b507ec399..70db450f7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -63,7 +63,7 @@ jobs: - uses: actions/upload-artifact@v4 with: path: packages/basemap/dist/*.tar.gz - name: basemap-sdist + name: dist-basemap-sdist build_wheels: name: Build wheels on ${{ matrix.os }} @@ -126,7 +126,7 @@ jobs: - name: Download basemap sdist uses: actions/download-artifact@v4 with: - name: basemap-sdist + name: dist-basemap-sdist path: ./sdist/ - name: Extract sdist (Linux/macOS) @@ -213,11 +213,6 @@ jobs: pattern: "dist-*" merge-multiple: true - - uses: actions/download-artifact@v4 - with: - path: dist - name: basemap-sdist - - name: Set up Python uses: actions/setup-python@v5 with: @@ -242,11 +237,6 @@ jobs: pattern: "dist-*" merge-multiple: true - - uses: actions/download-artifact@v4 - with: - path: dist - name: basemap-sdist - - name: Publish to PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: From f69708150b22ea51200fac21d1273a6003a3a4ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 18:04:58 +0200 Subject: [PATCH 110/188] Update build_wheels job name description --- .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 70db450f7..6cd1e72b6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -66,7 +66,7 @@ jobs: name: dist-basemap-sdist build_wheels: - name: Build wheels on ${{ matrix.os }} + name: Build basemap wheels needs: [build_data, build_sdist] strategy: matrix: From 0fd2ca9db49d5057e913b73860b9b2f2d3130c90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 18:05:30 +0200 Subject: [PATCH 111/188] Update debugging message --- .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 6cd1e72b6..ca9067115 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -98,7 +98,7 @@ jobs: python -m pip install ./data_packages/*.whl # Verify they're installed - python -c "import mpl_toolkits.basemap_data; print('Data package installed')" + python -c "import mpl_toolkits.basemap_data; print('mpl_toolkits.basemap_data installed successfully')" - name: Install data packages (Windows) if: runner.os == 'Windows' @@ -121,7 +121,7 @@ jobs: # Try different import paths Write-Host "Trying to import basemap_data..." - python -c "import mpl_toolkits.basemap_data; print('mpl_toolkits.basemap_data imported successfully')" + python -c "import mpl_toolkits.basemap_data; print('mpl_toolkits.basemap_data installed successfully')" - name: Download basemap sdist uses: actions/download-artifact@v4 From 5ad73ea39e37814153cb059ffeb370a20e4c0056 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 18:19:09 +0200 Subject: [PATCH 112/188] Add missing quotes --- .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 ca9067115..64e287a18 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -140,11 +140,11 @@ jobs: tar -xvf ./sdist/*.tar.gz -C ./sdist_extract # Get the extracted directory name - EXTRACTED_DIR=$(ls -d ./sdist_extract/*/ | head -1) + EXTRACTED_DIR="$(ls -d ./sdist_extract/*/ | head -1)" echo "SDIST_DIR=$(pwd)/${EXTRACTED_DIR}" >> $GITHUB_ENV # Verify contents - ls -la ${EXTRACTED_DIR} + ls -la "${EXTRACTED_DIR}" - name: Extract sdist (Windows) if: runner.os == 'Windows' @@ -172,7 +172,7 @@ jobs: echo "SDIST_DIR=$extractedDir" | Out-File -FilePath $env:GITHUB_ENV -Append # Verify contents - Get-ChildItem $extractedDir + Get-ChildItem "$extractedDir" - name: Build wheels from sdist uses: pypa/cibuildwheel@v2.22.0 From ddd869fd9fcc0da5ecd8ab89ea1d7d291e4e0ca8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 18:20:09 +0200 Subject: [PATCH 113/188] Update CHANGELOG --- CHANGELOG.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b14c8acd8..f63955c22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,8 +15,8 @@ https://semver.org/spec/v2.0.0.html ### Added - 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]). +- Automated wheels for x86_64 and arm64 (PRs [#620] and [#622] by + @cvanelteren, solves issue [#608]). ### Changed - **BREAKING CHANGE**: Set Python minimum supported version to 3.9. @@ -1156,6 +1156,8 @@ https://semver.org/spec/v2.0.0.html - Fix glitches in drawing of parallels and meridians. +[#622]: +https://github.com/matplotlib/basemap/pull/622 [#621]: https://github.com/matplotlib/basemap/pull/621 [#620]: From b06507b399b55d231fdb8e00cc74eac512a84f5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 18:31:50 +0200 Subject: [PATCH 114/188] Homogenise code in CI bifurcated steps --- .github/workflows/build.yml | 42 +++++++++++-------------------------- 1 file changed, 12 insertions(+), 30 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 64e287a18..b0d84b0e3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -91,36 +91,24 @@ jobs: if: runner.os != 'Windows' shell: bash run: | - # Debug - show what we downloaded - ls -la ./data_packages/ - - # Install the data packages + # Install the wheel data packages with wildcard python -m pip install ./data_packages/*.whl - # Verify they're installed + # Verify that the data packages can be imported python -c "import mpl_toolkits.basemap_data; print('mpl_toolkits.basemap_data installed successfully')" - name: Install data packages (Windows) if: runner.os == 'Windows' shell: pwsh run: | - # Debug - show what we downloaded - Get-ChildItem -Path "./data_packages" -Recurse - - # Find all wheel files + # Install the wheel data packages sequentially $wheels = Get-ChildItem -Path "./data_packages" -Filter "*.whl" -Recurse - - # Install each wheel file foreach ($wheel in $wheels) { Write-Host "Installing $($wheel.FullName)" python -m pip install $wheel.FullName } - # Show installed packages - python -m pip list | Select-String "mpl_toolkits.basemap" - - # Try different import paths - Write-Host "Trying to import basemap_data..." + # Verify that the data packages can be imported python -c "import mpl_toolkits.basemap_data; print('mpl_toolkits.basemap_data installed successfully')" - name: Download basemap sdist @@ -136,44 +124,38 @@ jobs: # Create extraction directory in the workspace mkdir -p ./sdist_extract - # Extract using tar (Unix-style) + # Extract with tar using wildcard tar -xvf ./sdist/*.tar.gz -C ./sdist_extract # Get the extracted directory name EXTRACTED_DIR="$(ls -d ./sdist_extract/*/ | head -1)" - echo "SDIST_DIR=$(pwd)/${EXTRACTED_DIR}" >> $GITHUB_ENV # Verify contents ls -la "${EXTRACTED_DIR}" + # Set the environment variable + echo "SDIST_DIR=$(pwd)/${EXTRACTED_DIR}" >> $GITHUB_ENV + - name: Extract sdist (Windows) if: runner.os == 'Windows' shell: pwsh run: | - # Create extraction directory + # Create extraction directory in the workspace New-Item -ItemType Directory -Force -Path "sdist_extract" - # Find the tarball file (without using wildcards) + # Extract with tar using the specific file path (no wildcard) $tarball = Get-ChildItem -Path "sdist" -Filter "*.tar.gz" | Select-Object -First 1 - - # Debug - show what we found - Write-Host "Found tarball: $($tarball.FullName)" - - # Extract using the specific file path (not wildcard) tar -xvf $tarball.FullName -C "sdist_extract" # Get the extracted directory name $extractedDir = (Get-ChildItem -Path "sdist_extract" -Directory | Select-Object -First 1).FullName - # Debug - show what we found - Write-Host "Extracted directory: $extractedDir" + # Verify contents + Get-ChildItem "$extractedDir" # Set the environment variable echo "SDIST_DIR=$extractedDir" | Out-File -FilePath $env:GITHUB_ENV -Append - # Verify contents - Get-ChildItem "$extractedDir" - - name: Build wheels from sdist uses: pypa/cibuildwheel@v2.22.0 env: From 2e196f5f1221964d7a64ff8291d030cadc217529 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 18:38:03 +0200 Subject: [PATCH 115/188] Extend comment about usage of extracted sdist with cibuildwheel --- .github/workflows/build.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b0d84b0e3..df2727ec3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -176,8 +176,13 @@ jobs: # LD_LIBRARY_PATH in environment is needed by # auditwheel (Linux) and delocate (MacOS). with: - package-dir: ${{ env.SDIST_DIR }} # Use extracted sdist + package-dir: ${{ env.SDIST_DIR }} output-dir: "dist" + # Set `package-dir` to a folder with the extracted sdist; + # otherwise, `cibuildwheel` uses `python -m pip wheel` or + # `python -m build --wheel` with the repository package + # folder and we cannot guarantee that wheels can be built + # from the sdist. - uses: actions/upload-artifact@v4 with: From 3dc324a86d09edd9359afa1bcddf489962b10c9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 19:44:37 +0200 Subject: [PATCH 116/188] Simplify docs job --- .github/workflows/build.yml | 48 ++++++++++++++----------------------- 1 file changed, 18 insertions(+), 30 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bb664210d..3ce797441 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -223,12 +223,6 @@ jobs: with: python-version: "3.9" - - name: Download basemap wheel for Linux - uses: actions/download-artifact@v4 - with: - name: dist-basemap-wheels-ubuntu-22.04 - path: ./wheels/ - - name: Download data packages uses: actions/download-artifact@v4 with: @@ -236,41 +230,35 @@ jobs: path: ./data_packages/ merge-multiple: true + - name: Download basemap wheel for Linux + uses: actions/download-artifact@v4 + with: + name: dist-basemap-wheels-ubuntu-* + path: ./wheels/ + - name: Install packages run: | - # Get Python version - PY_VER=$(python -c "import sys; print(f'{sys.version_info.major}{sys.version_info.minor}')") - echo "Using Python $PY_VER" + # Get Python version. + IMPL=cp$(python -c "import sys; print('{0}{1}'.format(*sys.version_info[:2]))") - # List available wheels - echo "Available wheels:" - ls -la ./wheels/ - - # Find wheel matching current Python version - MATCHING_WHEEL=$(find ./wheels -name "*-cp${PY_VER}-cp${PY_VER}*" | head -1) - - if [ -n "$MATCHING_WHEEL" ]; then - echo "Installing matching wheel: $MATCHING_WHEEL" - python -m pip install "$MATCHING_WHEEL" + # Install basemap wheel matching current Python version. + WHEEL=$(find ./wheels -name "*-${IMPL}-${IMPL}*.whl" | head -1) + if [ -n "${WHEEL}" ]; then + python -m pip install "${WHEEL}" else - echo "No matching wheel found for Python $PY_VER. Installing any available wheel..." - python -m pip install ./wheels/*.whl + echo "No matching wheel found for ${IMPL}-${IMPL}" + exit 1 fi - # Install data packages - echo "Installing data packages:" - ls -la ./data_packages/ + # Install basemap data packages. python -m pip install ./data_packages/*.whl - # Verify installation - python -c "import mpl_toolkits.basemap; print('Basemap version:', mpl_toolkits.basemap.__version__)" - - - name: Install documentation requirements + - name: Install docs requirements run: | cd packages/basemap python -m pip install -r requirements-doc.txt - - name: Build documentation + - name: Run sphinx run: | cd packages/basemap python -m sphinx doc/source public @@ -278,7 +266,7 @@ jobs: - name: Upload docs artifacts uses: actions/upload-artifact@v4 with: - name: docs-artifact + name: docs path: packages/basemap/public - name: Upload github-pages artifact From f75179cbbb126ae842b859a1f79ab4d02d31609b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 20:03:55 +0200 Subject: [PATCH 117/188] Fix artifact download for docs when using pattern --- .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 3ce797441..f05c75983 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -226,15 +226,16 @@ jobs: - name: Download data packages uses: actions/download-artifact@v4 with: - pattern: dist-basemap_data* path: ./data_packages/ + pattern: "dist-basemap_data*" merge-multiple: true - name: Download basemap wheel for Linux uses: actions/download-artifact@v4 with: - name: dist-basemap-wheels-ubuntu-* path: ./wheels/ + pattern: "dist-basemap-wheels-ubuntu-*" + merge-multiple: true - name: Install packages run: | From d848f8a03de0ff4dd43ca25af82c6d1b4b97953c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 20:09:17 +0200 Subject: [PATCH 118/188] Update CHANGELOG --- CHANGELOG.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f63955c22..aa768063f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,15 +15,16 @@ https://semver.org/spec/v2.0.0.html ### Added - 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 (PRs [#620] and [#622] by - @cvanelteren, solves issue [#608]). +- 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` (PRs [#614] and [#618] by - @cvanelteren and PR [#621], solves GitHub artifact actions v1 sunset). +- Migrate workflows to use `cibuildwheel` (PRs [#614], [#618], [#622] + and [#623] by @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 +1157,8 @@ https://semver.org/spec/v2.0.0.html - Fix glitches in drawing of parallels and meridians. +[#623]: +https://github.com/matplotlib/basemap/pull/623 [#622]: https://github.com/matplotlib/basemap/pull/622 [#621]: From 3acfbc78408bc9a5a2aa05c83b7d1d52245c2ea4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 21:47:28 +0200 Subject: [PATCH 119/188] Fix docstring indentation after content fix --- packages/basemap/src/mpl_toolkits/basemap/__init__.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/basemap/src/mpl_toolkits/basemap/__init__.py b/packages/basemap/src/mpl_toolkits/basemap/__init__.py index 075a21275..673cb28ab 100644 --- a/packages/basemap/src/mpl_toolkits/basemap/__init__.py +++ b/packages/basemap/src/mpl_toolkits/basemap/__init__.py @@ -4836,10 +4836,11 @@ def shiftdata(self,lonsin,datain=None,lon_0=None,fix_wrap_around=True): [lon_0-180, lon_0+180] range. ================ ====================================================== - If datain is given, returns ``lonsout, dataout`` (longitudes and data shifted to fit in the interval -[lon_0-180, lon_0+180]); otherwise, returns just the shifted longitudes. If -transformed longitudes lie outside the map projection region, data is -masked and longitudes are set to 1.e30. + If datain is given, returns ``lonsout, dataout`` (longitudes and data + shifted to fit in the interval [lon_0-180, lon_0+180]); otherwise, + returns just the shifted longitudes. If transformed longitudes lie + outside the map projection region, data is masked and longitudes are + set to 1.e30. """ if lon_0 is None and 'lon_0' not in self.projparams: raise ValueError('lon_0 keyword must be provided') From ed018c718539e8427f59c44e7e43f67d71fe9974 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 21:53:36 +0200 Subject: [PATCH 120/188] Update CHANGELOG --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index aa768063f..4d8763fd6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,6 +67,8 @@ https://semver.org/spec/v2.0.0.html ### Fixed - Fix Cython extension to use `noexcept` (PR [#615] by @cvanelteren). +- Fix incorrect return order described in `Basemap.shiftdata` docstring + (PR [#624] by @Cdiaz1234, solves issue [#599]). ### Removed - Deprecated `bdist_wheel.universal` option when building wheels. @@ -1157,6 +1159,8 @@ https://semver.org/spec/v2.0.0.html - Fix glitches in drawing of parallels and meridians. +[#624]: +https://github.com/matplotlib/basemap/pull/624 [#623]: https://github.com/matplotlib/basemap/pull/623 [#622]: @@ -1177,6 +1181,8 @@ https://github.com/matplotlib/basemap/pull/614 https://github.com/matplotlib/basemap/issues/608 [#604]: https://github.com/matplotlib/basemap/issues/604 +[#599]: +https://github.com/matplotlib/basemap/issues/599 [#598]: https://github.com/matplotlib/basemap/pull/598 [#595]: From 1cc971bf922ed1d3f0ea2b1a79c4ca8a1943a49e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 22:05:08 +0200 Subject: [PATCH 121/188] Apply basic linting corrections to Basemap.wmsimage additions --- packages/basemap/src/mpl_toolkits/basemap/__init__.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/basemap/src/mpl_toolkits/basemap/__init__.py b/packages/basemap/src/mpl_toolkits/basemap/__init__.py index 225097198..fce035f11 100644 --- a/packages/basemap/src/mpl_toolkits/basemap/__init__.py +++ b/packages/basemap/src/mpl_toolkits/basemap/__init__.py @@ -4452,9 +4452,10 @@ def wmsimage(self,server,\ if ypixels is None: ypixels = int(self.aspect*xpixels) if verbose: print(server) - wmsInitKeys = ['version', 'xml', 'username', 'password','parse_remote_metadata', 'timeout', 'headers', 'auth'] - wms_options = {k:kwargs[v] for k in wmsInitKeys if k in kwargs} - kwargs = {k:kwargs[v] for k in kwargs if k not in wmsInitKeys} + wms_keys = ["version", "xml", "username", "password", "auth", + "headers", "timeout", "parse_remote_metadata"] + wms_options = {k: kwargs[v] for k in wms_keys if k in kwargs} + kwargs = {k: kwargs[v] for k in kwargs if k not in wms_keys} wms = WebMapService(server, **wms_options) if verbose: print('id: %s, version: %s' % From 4fab297fe12417e5e5bef975a7f04628bed7b1e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 22:06:40 +0200 Subject: [PATCH 122/188] Fix incorrect v iterator variable --- packages/basemap/src/mpl_toolkits/basemap/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/basemap/src/mpl_toolkits/basemap/__init__.py b/packages/basemap/src/mpl_toolkits/basemap/__init__.py index fce035f11..e0b343ced 100644 --- a/packages/basemap/src/mpl_toolkits/basemap/__init__.py +++ b/packages/basemap/src/mpl_toolkits/basemap/__init__.py @@ -4454,8 +4454,8 @@ def wmsimage(self,server,\ if verbose: print(server) wms_keys = ["version", "xml", "username", "password", "auth", "headers", "timeout", "parse_remote_metadata"] - wms_options = {k: kwargs[v] for k in wms_keys if k in kwargs} - kwargs = {k: kwargs[v] for k in kwargs if k not in wms_keys} + wms_options = {k: kwargs[k] for k in wms_keys if k in kwargs} + kwargs = {k: kwargs[k] for k in kwargs if k not in wms_keys} wms = WebMapService(server, **wms_options) if verbose: print('id: %s, version: %s' % From eabea54a32fd514898b3ec50176ba2e17ac7e629 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 22:09:07 +0200 Subject: [PATCH 123/188] Update CHANGELOG --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index aa768063f..ee1ff0369 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,8 @@ https://semver.org/spec/v2.0.0.html - 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]). +- Support in `Basemap.wmsimage` to redirect `WebMapService` constructor + parameters when available (PR [#603] by @Kurea, solves issue [#602]). ### Changed - **BREAKING CHANGE**: Set Python minimum supported version to 3.9. @@ -1177,6 +1179,10 @@ https://github.com/matplotlib/basemap/pull/614 https://github.com/matplotlib/basemap/issues/608 [#604]: https://github.com/matplotlib/basemap/issues/604 +[#603]: +https://github.com/matplotlib/basemap/pull/603 +[#602]: +https://github.com/matplotlib/basemap/issues/602 [#598]: https://github.com/matplotlib/basemap/pull/598 [#595]: From 074835cf9e980046ce08f9459ac8bc86c0507125 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 22:15:45 +0200 Subject: [PATCH 124/188] Revert order of items in wms_keys The original order in the PR was the same order as the function signature for `WebMapService`, so let's keep it. --- packages/basemap/src/mpl_toolkits/basemap/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/basemap/src/mpl_toolkits/basemap/__init__.py b/packages/basemap/src/mpl_toolkits/basemap/__init__.py index e0b343ced..a3a12631b 100644 --- a/packages/basemap/src/mpl_toolkits/basemap/__init__.py +++ b/packages/basemap/src/mpl_toolkits/basemap/__init__.py @@ -4452,8 +4452,8 @@ def wmsimage(self,server,\ if ypixels is None: ypixels = int(self.aspect*xpixels) if verbose: print(server) - wms_keys = ["version", "xml", "username", "password", "auth", - "headers", "timeout", "parse_remote_metadata"] + wms_keys = ["version", "xml", "username", "password", + "parse_remote_metadata", "timeout", "headers", "auth"] wms_options = {k: kwargs[k] for k in wms_keys if k in kwargs} kwargs = {k: kwargs[k] for k in kwargs if k not in wms_keys} wms = WebMapService(server, **wms_options) From bc243d9bdd60ffe04cf46c72b8e9e7ebeaf8d174 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 22:16:47 +0200 Subject: [PATCH 125/188] Update Basemap.wmsimage docstring --- packages/basemap/src/mpl_toolkits/basemap/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/basemap/src/mpl_toolkits/basemap/__init__.py b/packages/basemap/src/mpl_toolkits/basemap/__init__.py index a3a12631b..05f9a1eb8 100644 --- a/packages/basemap/src/mpl_toolkits/basemap/__init__.py +++ b/packages/basemap/src/mpl_toolkits/basemap/__init__.py @@ -4413,6 +4413,7 @@ def wmsimage(self,server,\ verbose if True, print WMS server info (default False). \**kwargs extra keyword arguments passed on to + OWSLib.wms.WebMapService and OWSLib.wms.WebMapService.getmap. ============== ==================================================== From 1a74931ca7be740a13467abc70f3e5735970bbae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 22:59:29 +0200 Subject: [PATCH 126/188] Remove zip format as default setuptools sdist format --- CHANGELOG.md | 1 + packages/basemap/setup.cfg | 3 --- packages/basemap_data/setup.cfg | 3 --- packages/basemap_data_hires/setup.cfg | 3 --- 4 files changed, 1 insertion(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d8763fd6..107b76e51 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -72,6 +72,7 @@ https://semver.org/spec/v2.0.0.html ### Removed - Deprecated `bdist_wheel.universal` option when building wheels. +- Configuration of `sdist` format as zip (replaced by default tar.gz). ## [1.4.1] - 2024-02-15 diff --git a/packages/basemap/setup.cfg b/packages/basemap/setup.cfg index 643dee05f..5b4590da3 100644 --- a/packages/basemap/setup.cfg +++ b/packages/basemap/setup.cfg @@ -3,9 +3,6 @@ license_files = LICENSE LICENSE.geos -[sdist] -formats = zip - [flake8] ignore = E301,E306,E402,E501,E731,F401,F403,W503,W504 diff --git a/packages/basemap_data/setup.cfg b/packages/basemap_data/setup.cfg index e22ef7143..a5fcd34b8 100644 --- a/packages/basemap_data/setup.cfg +++ b/packages/basemap_data/setup.cfg @@ -4,6 +4,3 @@ license_files = COPYING.LESSER LICENSE.epsg LICENSE.mit - -[sdist] -formats = zip diff --git a/packages/basemap_data_hires/setup.cfg b/packages/basemap_data_hires/setup.cfg index e43de0337..a293fcdd8 100644 --- a/packages/basemap_data_hires/setup.cfg +++ b/packages/basemap_data_hires/setup.cfg @@ -2,6 +2,3 @@ license_files = COPYING COPYING.LESSER - -[sdist] -formats = zip From 5a789e26657cc21118b1cad0fc563a0c469a2409 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 23:03:24 +0200 Subject: [PATCH 127/188] Move license_files metadata property to setup.py --- packages/basemap/setup.cfg | 5 ----- packages/basemap/setup.py | 8 ++++++-- packages/basemap_data/setup.cfg | 6 ------ packages/basemap_data/setup.py | 10 ++++++++-- packages/basemap_data_hires/setup.cfg | 4 ---- packages/basemap_data_hires/setup.py | 8 ++++++-- 6 files changed, 20 insertions(+), 21 deletions(-) delete mode 100644 packages/basemap_data/setup.cfg delete mode 100644 packages/basemap_data_hires/setup.cfg diff --git a/packages/basemap/setup.cfg b/packages/basemap/setup.cfg index 5b4590da3..f2ce8bbd2 100644 --- a/packages/basemap/setup.cfg +++ b/packages/basemap/setup.cfg @@ -1,8 +1,3 @@ -[metadata] -license_files = - LICENSE - LICENSE.geos - [flake8] ignore = E301,E306,E402,E501,E731,F401,F403,W503,W504 diff --git a/packages/basemap/setup.py b/packages/basemap/setup.py index 8927ac115..d65f1dae8 100644 --- a/packages/basemap/setup.py +++ b/packages/basemap/setup.py @@ -163,8 +163,6 @@ def run(self): "basemap", "version": get_version("mpl_toolkits.basemap"), - "license": - "MIT", "description": "Plot data on map projections with matplotlib", "long_description": @@ -181,6 +179,12 @@ def run(self): "Víctor Molina García", "maintainer_email": "molinav@users.noreply.github.com", + "license": + "MIT", + "license_files": [ + "LICENSE", + "LICENSE.geos", + ], "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Education", diff --git a/packages/basemap_data/setup.cfg b/packages/basemap_data/setup.cfg deleted file mode 100644 index a5fcd34b8..000000000 --- a/packages/basemap_data/setup.cfg +++ /dev/null @@ -1,6 +0,0 @@ -[metadata] -license_files = - COPYING - COPYING.LESSER - LICENSE.epsg - LICENSE.mit diff --git a/packages/basemap_data/setup.py b/packages/basemap_data/setup.py index d56dd243d..d32e31f4b 100644 --- a/packages/basemap_data/setup.py +++ b/packages/basemap_data/setup.py @@ -74,8 +74,6 @@ def get_content(name, splitlines=False): "basemap_data", "version": "2.0.0-dev", - "license": - "GNU Lesser General Public License v3 or later (LGPLv3+)", "description": "Data assets for matplotlib basemap", "long_description": @@ -92,6 +90,14 @@ def get_content(name, splitlines=False): "Víctor Molina García", "maintainer_email": "molinav@users.noreply.github.com", + "license": + "GNU Lesser General Public License v3 or later (LGPLv3+)", + "license_files": [ + "COPYING", + "COPYING.LESSER", + "LICENSE.epsg", + "LICENSE.mit", + ], "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Education", diff --git a/packages/basemap_data_hires/setup.cfg b/packages/basemap_data_hires/setup.cfg deleted file mode 100644 index a293fcdd8..000000000 --- a/packages/basemap_data_hires/setup.cfg +++ /dev/null @@ -1,4 +0,0 @@ -[metadata] -license_files = - COPYING - COPYING.LESSER diff --git a/packages/basemap_data_hires/setup.py b/packages/basemap_data_hires/setup.py index 7421194d1..dd0711555 100644 --- a/packages/basemap_data_hires/setup.py +++ b/packages/basemap_data_hires/setup.py @@ -52,8 +52,6 @@ def get_content(name, splitlines=False): "basemap_data_hires", "version": "2.0.0-dev", - "license": - "GNU Lesser General Public License v3 or later (LGPLv3+)", "description": "High-resolution data assets for matplotlib basemap", "long_description": @@ -70,6 +68,12 @@ def get_content(name, splitlines=False): "Víctor Molina García", "maintainer_email": "molinav@users.noreply.github.com", + "license": + "GNU Lesser General Public License v3 or later (LGPLv3+)", + "license_files": [ + "COPYING", + "COPYING.LESSER", + ], "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Education", From 6c57bdf57819ea9d2abf78f3b7f0330a82156713 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 23:06:24 +0200 Subject: [PATCH 128/188] Update project_urls items in setup.py metadata and remove deprecated url attribute --- packages/basemap/setup.py | 14 +++++++------- packages/basemap_data/setup.py | 14 +++++++------- packages/basemap_data_hires/setup.py | 14 +++++++------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/packages/basemap/setup.py b/packages/basemap/setup.py index d65f1dae8..1bc995954 100644 --- a/packages/basemap/setup.py +++ b/packages/basemap/setup.py @@ -169,8 +169,6 @@ def run(self): get_content("README.md"), "long_description_content_type": "text/markdown", - "url": - "https://matplotlib.org/basemap", "author": "Jeff Whitaker", "author_email": @@ -233,11 +231,13 @@ def run(self): "sdist": basemap_sdist, }, "project_urls": { - "Bug Tracker": - "https://github.com/matplotlib/basemap/issues", - "Documentation": - "https://matplotlib.org/basemap/", - "Source": + "Homepage": "https://github.com/matplotlib/basemap", + "Documentation": + "https://matplotlib.org/basemap", + "Repository": + "https://github.com/matplotlib/basemap.git", + "Issues": + "https://github.com/matplotlib/basemap/issues", }, }) diff --git a/packages/basemap_data/setup.py b/packages/basemap_data/setup.py index d32e31f4b..c090e1926 100644 --- a/packages/basemap_data/setup.py +++ b/packages/basemap_data/setup.py @@ -80,8 +80,6 @@ def get_content(name, splitlines=False): get_content("README.md"), "long_description_content_type": "text/markdown", - "url": - "https://matplotlib.org/basemap", "author": "Jeff Whitaker", "author_email": @@ -127,11 +125,13 @@ def get_content(name, splitlines=False): "<4", ]), "project_urls": { - "Bug Tracker": - "https://github.com/matplotlib/basemap/issues", - "Documentation": - "https://matplotlib.org/basemap/", - "Source": + "Homepage": "https://github.com/matplotlib/basemap", + "Documentation": + "https://matplotlib.org/basemap", + "Repository": + "https://github.com/matplotlib/basemap.git", + "Issues": + "https://github.com/matplotlib/basemap/issues", }, }) diff --git a/packages/basemap_data_hires/setup.py b/packages/basemap_data_hires/setup.py index dd0711555..1f7fc22e2 100644 --- a/packages/basemap_data_hires/setup.py +++ b/packages/basemap_data_hires/setup.py @@ -58,8 +58,6 @@ def get_content(name, splitlines=False): get_content("README.md"), "long_description_content_type": "text/markdown", - "url": - "https://matplotlib.org/basemap", "author": "Jeff Whitaker", "author_email": @@ -103,11 +101,13 @@ def get_content(name, splitlines=False): "<4", ]), "project_urls": { - "Bug Tracker": - "https://github.com/matplotlib/basemap/issues", - "Documentation": - "https://matplotlib.org/basemap/", - "Source": + "Homepage": "https://github.com/matplotlib/basemap", + "Documentation": + "https://matplotlib.org/basemap", + "Repository": + "https://github.com/matplotlib/basemap.git", + "Issues": + "https://github.com/matplotlib/basemap/issues", }, }) From 6225e54129d0045703062b67b98553eb4819e3d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 23:07:14 +0200 Subject: [PATCH 129/188] Remove deprecated license classifier --- 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 1bc995954..fa9e6f8e2 100644 --- a/packages/basemap/setup.py +++ b/packages/basemap/setup.py @@ -187,7 +187,6 @@ def run(self): "Development Status :: 5 - Production/Stable", "Intended Audience :: Education", "Intended Audience :: Science/Research", - "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering :: Visualization", diff --git a/packages/basemap_data/setup.py b/packages/basemap_data/setup.py index c090e1926..807ff1c99 100644 --- a/packages/basemap_data/setup.py +++ b/packages/basemap_data/setup.py @@ -100,7 +100,6 @@ def get_content(name, splitlines=False): "Development Status :: 5 - Production/Stable", "Intended Audience :: Education", "Intended Audience :: Science/Research", - "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering :: Visualization", diff --git a/packages/basemap_data_hires/setup.py b/packages/basemap_data_hires/setup.py index 1f7fc22e2..129e60d0c 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): "Development Status :: 5 - Production/Stable", "Intended Audience :: Education", "Intended Audience :: Science/Research", - "License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Topic :: Scientific/Engineering :: Visualization", From 1a3c89dd587ee32c6b20e0086466903b6d01bdc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 23:12:22 +0200 Subject: [PATCH 130/188] Update lint requirements --- CHANGELOG.md | 2 +- packages/basemap/requirements-lint.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 107b76e51..c01663d68 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,7 +51,7 @@ https://semver.org/spec/v2.0.0.html - Update lint dependencies: - Remove dependency on `unittest2`. - Upgrade lower limit for `flake8` to 3.9. - - Upgrade upper limit for `flake8` to 7.2. + - Upgrade upper limit for `flake8` to 7.3. - Upgrade lower limit for `astroid` to 3.0. - Upgrade upper limit for `astroid` to 3.4. - Upgrade lower limit for `pylint` to 3.0. diff --git a/packages/basemap/requirements-lint.txt b/packages/basemap/requirements-lint.txt index a13cd4285..319801751 100644 --- a/packages/basemap/requirements-lint.txt +++ b/packages/basemap/requirements-lint.txt @@ -1,4 +1,4 @@ -flake8 >= 3.9, < 7.2 +flake8 >= 3.9, < 7.3 astroid >= 3.0, < 3.4 pylint >= 3.0, < 3.4 From fe126df366f8ce4007f430bcfdd5c2f80b0b4bc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 23:14:47 +0200 Subject: [PATCH 131/188] Update test requirements --- CHANGELOG.md | 6 +++--- packages/basemap/requirements-test.txt | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c01663d68..0484dffb0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -59,11 +59,11 @@ https://semver.org/spec/v2.0.0.html - Update test dependencies: - Remove dependency on `unittest2`. - Upgrade lower limit for `pytest` to 7.0. - - Upgrade upper limit for `pytest` to 8.4. + - Upgrade upper limit for `pytest` to 8.5. - Upgrade lower limit for `pytest-cov` to 3.0. - - Upgrade upper limit for `pytest-cov` to 6.1. + - Upgrade upper limit for `pytest-cov` to 6.3. - Downgrade lower limit for `coverage` to 5.0. - - Upgrade upper limit for `coverage` to 7.7. + - Upgrade upper limit for `coverage` to 7.10. ### 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 6a0458527..c8b7f01bb 100644 --- a/packages/basemap/requirements-test.txt +++ b/packages/basemap/requirements-test.txt @@ -1,4 +1,4 @@ -pytest >= 7.0, < 8.4 +pytest >= 7.0, < 8.5 -pytest-cov >= 3.0, < 6.1 -coverage >= 5.0, < 7.7 +pytest-cov >= 3.0, < 6.3 +coverage >= 5.0, < 7.10 From 63c49405fa11e4f620b0d039f6891ad7e7fe06e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 23:16:56 +0200 Subject: [PATCH 132/188] Remove requirements-setup.txt file --- CHANGELOG.md | 1 + packages/basemap/requirements-setup.txt | 1 - packages/basemap/setup.py | 2 -- 3 files changed, 1 insertion(+), 3 deletions(-) delete mode 100644 packages/basemap/requirements-setup.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 0484dffb0..d8fdd6703 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -71,6 +71,7 @@ https://semver.org/spec/v2.0.0.html (PR [#624] by @Cdiaz1234, solves issue [#599]). ### Removed +- Deprecated use of `setup_requires` in `setup.py` file. - Deprecated `bdist_wheel.universal` option when building wheels. - Configuration of `sdist` format as zip (replaced by default tar.gz). diff --git a/packages/basemap/requirements-setup.txt b/packages/basemap/requirements-setup.txt deleted file mode 100644 index d12bb0661..000000000 --- a/packages/basemap/requirements-setup.txt +++ /dev/null @@ -1 +0,0 @@ -cython >= 0.29.31, < 3.1 diff --git a/packages/basemap/setup.py b/packages/basemap/setup.py index fa9e6f8e2..0f7e52675 100644 --- a/packages/basemap/setup.py +++ b/packages/basemap/setup.py @@ -210,8 +210,6 @@ def run(self): ">=3.9", "<3.14", ]), - "setup_requires": - get_content("requirements-setup.txt", splitlines=True), "install_requires": get_content("requirements.txt", splitlines=True), "extras_require": { From 518f3c193a45cacf61687b42ea2b9f2d3603587e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 23:21:19 +0200 Subject: [PATCH 133/188] Update MANIFEST.in --- packages/basemap/MANIFEST.in | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/basemap/MANIFEST.in b/packages/basemap/MANIFEST.in index 93b419369..07fe08a66 100644 --- a/packages/basemap/MANIFEST.in +++ b/packages/basemap/MANIFEST.in @@ -3,7 +3,8 @@ recursive-include doc * recursive-exclude doc/build * recursive-include test * recursive-include utils *.py -recursive-exclude **/__pycache__ * recursive-exclude **/.DS_Store * -exclude **/*.pyc -exclude **/.gitkeep +recursive-exclude **/__pycache__ * +global-exclude *.py[cod] +global-exclude *.dll +global-exclude *.so From f221b33c41426ec1ac18b84a1a04ef9b31340d53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 23:23:35 +0200 Subject: [PATCH 134/188] Update optional requirements --- CHANGELOG.md | 4 ++-- packages/basemap/requirements-owslib.txt | 2 +- packages/basemap/requirements-pillow.txt | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d8fdd6703..2725d8e8b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,8 +39,8 @@ https://semver.org/spec/v2.0.0.html - 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. + - Upgrade upper limit for `pillow` to 11.3. + - Upgrade upper limit for `OWSLib` to 0.35. - Update doc dependencies: - Upgrade upper limit for `sphinx` to 8.0. - Upgrade lower limit for `furo` to 2023.9.10. diff --git a/packages/basemap/requirements-owslib.txt b/packages/basemap/requirements-owslib.txt index 5c7425ee0..83755495b 100644 --- a/packages/basemap/requirements-owslib.txt +++ b/packages/basemap/requirements-owslib.txt @@ -1 +1 @@ -OWSLib >= 0.28.1, < 0.33 +OWSLib >= 0.28.1, < 0.35 diff --git a/packages/basemap/requirements-pillow.txt b/packages/basemap/requirements-pillow.txt index 89493b01d..24df5cd49 100644 --- a/packages/basemap/requirements-pillow.txt +++ b/packages/basemap/requirements-pillow.txt @@ -1 +1 @@ -pillow >= 10.3, < 11.2 +pillow >= 10.3, < 11.3 From ebe6c1695d938dbaf0515a6db025c5c8ab7b0f10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 23:25:28 +0200 Subject: [PATCH 135/188] Update runtime requirements --- CHANGELOG.md | 5 +++-- packages/basemap/requirements.txt | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2725d8e8b..dfb5e1884 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,11 +26,12 @@ https://semver.org/spec/v2.0.0.html and [#623] by @cvanelteren and PR [#621], solves GitHub artifact actions v1 sunset). - Update library dependencies: + - Upgrade lower limit for `basemap_data` to 2.0. - 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 upper limit for `packaging` to 26.0. - Upgrade lower limit for `numpy` to 2.0. - - Upgrade upper limit for `numpy` to 2.3. + - Upgrade upper limit for `numpy` to 2.4. - Upgrade lower limit for `matplotlib` to 3.4. - Upgrade upper limit for `matplotlib` to 3.11. - Upgrade lower limit for `pyproj` to 3.0. diff --git a/packages/basemap/requirements.txt b/packages/basemap/requirements.txt index 3f20dc53c..00759f0d2 100644 --- a/packages/basemap/requirements.txt +++ b/packages/basemap/requirements.txt @@ -1,7 +1,7 @@ -basemap_data >= 1.3.2, < 3.0 -packaging >= 20.5, < 25.0 +basemap_data >= 2.0, < 3.0 +packaging >= 20.5, < 26.0 -numpy >= 2.0, < 2.3 +numpy >= 2.0, < 2.4 matplotlib >= 3.4, < 3.11 pyproj >= 3.0, < 3.8 From 7e87b2aa6680289716ddd042aadd5d1a4a832291 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 23:29:03 +0200 Subject: [PATCH 136/188] Update build requirements in pyproject.toml --- CHANGELOG.md | 9 ++++++++- packages/basemap/pyproject.toml | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dfb5e1884..5537f895f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -42,6 +42,13 @@ https://semver.org/spec/v2.0.0.html vulnerabilities [CVE-2023-50447] and [CVE-2024-28219]. - Upgrade upper limit for `pillow` to 11.3. - Upgrade upper limit for `OWSLib` to 0.35. +- Update build dependencies: + - Upgrade lower limit for `setuptools` to 67.0. + - Upgrade upper limit for `setuptools` to 81.0. + - Upgrade lower limit for `wheel` to 0.40. + - Upgrade upper limit for `wheel` to 0.46. + - Upgrade lower limit for `cython` to 3.0. + - Upgrade upper limit for `cython` to 3.2. - Update doc dependencies: - Upgrade upper limit for `sphinx` to 8.0. - Upgrade lower limit for `furo` to 2023.9.10. @@ -122,7 +129,7 @@ https://semver.org/spec/v2.0.0.html - Downgrade upper limit for `pyproj` to 2.2.0 for Python 2.7. - Set dependency on `packaging` as replacement for `distutils`. - Update build dependencies: - - Upgrade upper limit for `Cython` to 3.1. + - Upgrade upper limit for `cython` to 3.1. - Update doc dependencies and require at least Python 3.8 for them: - Upgrade upper limit for `sphinx` to 7.2. - Upgrade upper limit for `furo` to 2023.9.11. diff --git a/packages/basemap/pyproject.toml b/packages/basemap/pyproject.toml index a7d900689..1f790b748 100644 --- a/packages/basemap/pyproject.toml +++ b/packages/basemap/pyproject.toml @@ -1,8 +1,8 @@ [build-system] requires = [ - 'setuptools >= 67.0, < 76.0', + 'setuptools >= 67.0, < 81.0', 'wheel >= 0.40, < 0.46', - 'cython >= 0.29.31, < 3.1', + 'cython >= 3.0, < 3.2', 'numpy == 2.1.0; python_version == "3.13"', 'numpy == 2.0.0; python_version <= "3.12"', ] From aca8244c338dc1fdf246fd277dc1156214bd9bb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 23:30:04 +0200 Subject: [PATCH 137/188] Add minor coverage path correction in setup.cfg --- packages/basemap/setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/basemap/setup.cfg b/packages/basemap/setup.cfg index f2ce8bbd2..baa2ec222 100644 --- a/packages/basemap/setup.cfg +++ b/packages/basemap/setup.cfg @@ -18,7 +18,7 @@ filterwarnings = [coverage:paths] source = src - /opt/pyenv/versions/**/site-packages + /**/pyenv/versions/**/site-packages [coverage:report] exclude_lines = From 27682f63986629bf9705763bd4260bc1e94baa90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 23:31:59 +0200 Subject: [PATCH 138/188] Normalise version strings --- packages/basemap/src/_geoslib.pyx | 2 +- packages/basemap/src/mpl_toolkits/basemap/__init__.py | 2 +- packages/basemap/test/mpl_toolkits/test_basemap.py | 4 ++-- packages/basemap_data/setup.py | 2 +- packages/basemap_data_hires/setup.py | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/basemap/src/_geoslib.pyx b/packages/basemap/src/_geoslib.pyx index 1298e6e91..127e8c8cf 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__ = "2.0.0-dev" +__version__ = "2.0.0.dev0" # 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 673cb28ab..ada1a4844 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__ = "2.0.0-dev" +__version__ = "2.0.0.dev0" # 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/test/mpl_toolkits/test_basemap.py b/packages/basemap/test/mpl_toolkits/test_basemap.py index 2070c2e50..9aab0ef48 100644 --- a/packages/basemap/test/mpl_toolkits/test_basemap.py +++ b/packages/basemap/test/mpl_toolkits/test_basemap.py @@ -14,8 +14,8 @@ def test_version_attribute(self): basemap_version = basemap.__version__ num = r"(?:0|[1-9]\d*)" - build = r"(?:dev|a[1-4]|b[1-3]|rc[1-2])" - semver = r"^({0}\.{0}\.{0})(?:[+-]?({1}))?$".format(num, build) + build = r"(?:dev[0]?|a[1-4]|b[1-3]|rc[1-2])" + semver = r"^({0}\.{0}\.{0})(?:[+-\.]?({1}))?$".format(num, build) self.assertRegex(basemap_version, semver) diff --git a/packages/basemap_data/setup.py b/packages/basemap_data/setup.py index 807ff1c99..64e2eddeb 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": - "2.0.0-dev", + "2.0.0.dev0", "description": "Data assets for matplotlib basemap", "long_description": diff --git a/packages/basemap_data_hires/setup.py b/packages/basemap_data_hires/setup.py index 129e60d0c..4b4c22c4d 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": - "2.0.0-dev", + "2.0.0.dev0", "description": "High-resolution data assets for matplotlib basemap", "long_description": From 3f7e74367c9b950cd6a7495c15eeb0da02c46d74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 23:40:29 +0200 Subject: [PATCH 139/188] Revert lower pin upgrade for basemap_data --- CHANGELOG.md | 1 - packages/basemap/requirements.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5537f895f..97e8732d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,7 +26,6 @@ https://semver.org/spec/v2.0.0.html and [#623] by @cvanelteren and PR [#621], solves GitHub artifact actions v1 sunset). - Update library dependencies: - - Upgrade lower limit for `basemap_data` to 2.0. - Upgrade upper limit for `basemap_data` to 3.0. - Upgrade lower limit for `packaging` to 20.5. - Upgrade upper limit for `packaging` to 26.0. diff --git a/packages/basemap/requirements.txt b/packages/basemap/requirements.txt index 00759f0d2..f6a88fc10 100644 --- a/packages/basemap/requirements.txt +++ b/packages/basemap/requirements.txt @@ -1,4 +1,4 @@ -basemap_data >= 2.0, < 3.0 +basemap_data >= 1.3.2, < 3.0 packaging >= 20.5, < 26.0 numpy >= 2.0, < 2.4 From d7d7a0c69709b6ba051fb6cbb481e20fa186e278 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 23:42:37 +0200 Subject: [PATCH 140/188] Fix deprecated use of source_suffix in Sphinx conf.py file --- packages/basemap/doc/source/conf.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/basemap/doc/source/conf.py b/packages/basemap/doc/source/conf.py index daa4b1286..1437df386 100644 --- a/packages/basemap/doc/source/conf.py +++ b/packages/basemap/doc/source/conf.py @@ -73,7 +73,11 @@ # You can specify multiple suffix as a list of string: # # source_suffix = [".rst", ".md"] -source_suffix = ".rst" +source_suffix = { + ".rst": "restructuredtext", + ".txt": "restructuredtext", + ".md": "markdown", +} # The master toctree document. master_doc = "index" From 42b524778170aedaec5a601b52071124989207c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 23:55:12 +0200 Subject: [PATCH 141/188] Migrate .pylintrc file --- packages/basemap/.pylintrc | 738 ++++++++++++++++++++----------------- 1 file changed, 391 insertions(+), 347 deletions(-) diff --git a/packages/basemap/.pylintrc b/packages/basemap/.pylintrc index cba37d0fb..fdae75d64 100644 --- a/packages/basemap/.pylintrc +++ b/packages/basemap/.pylintrc @@ -1,198 +1,133 @@ [MASTER] -# A comma-separated list of package or module names from where C extensions may -# be loaded. Extensions are loading into the active Python interpreter and may -# run arbitrary code. -extension-pkg-whitelist=numpy, - _geoslib - -# Add files or directories to the blacklist. They should be base names, not -# paths. +# Analyse import fallback blocks. This can be used to support both +# Python 2 and 3 compatible code, which means that the block might have +# code that exists only in one or another interpreter, leading to false +# positives when analysed. +analyse-fallback-blocks=no + +# Clear in-memory caches upon conclusion of linting. Useful if running +# pylint in a server-like mode. +clear-cache-post-run=yes + +# A comma-separated list of package or module names from where +# C extensions may be loaded. Extensions are loading into the +# active Python interpreter and may run arbitrary code. +extension-pkg-whitelist= + numpy, + _geoslib + +# Files or directories to be skipped (base names, not paths). ignore=CVS -# Add files or directories matching the regex patterns to the blacklist. The -# regex matches against base names, not paths. -ignore-patterns= +# Files or directories matching the regular expression patterns are +# skipped. The regex matches against base names, not paths. The +# default value ignores Emacs file locks. +ignore-patterns=^\.# + +# List of module names for which member attributes should not be checked +# and will not be imported (useful for modules/projects where namespaces +# are manipulated during runtime and thus existing member attributes +# cannot be deduced by static analysis). It supports qualified module +# names, as well as Unix pattern matching. +ignored-modules= + _geoslib # Python code to execute, usually for sys.path manipulation such as # pygtk.require(). -init-hook="import sys; sys.path.insert(0, 'src'); sys.setrecursionlimit(8 * sys.getrecursionlimit())" +init-hook="import sys; sys.path.insert(0, 'src')" -# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the -# number of processors available to use. +# Use multiple processes to speed up Pylint. Specifying 0 will +# auto-detect the number of processors available to use, and will +# cap the count on Windows to avoid hangs. jobs=1 -# Control the amount of potential inferred values when inferring a single -# object. This can help the performance when dealing with large functions or -# complex, nested conditions. +# Control the amount of potential inferred values when inferring a +# single object. This can help the performance when dealing with +# large functions or complex, nested conditions. limit-inference-results=100 -# List of plugins (as comma separated values of python module names) to load, -# usually to register additional checkers. +# List of plugins (as comma separated values of python module names) +# to load, usually to register additional checkers. load-plugins= # Pickle collected data for later comparisons. persistent=yes -# Specify a configuration file. -#rcfile= - -# When enabled, pylint would attempt to guess common misconfiguration and emit -# user-friendly hints instead of false-positive error messages. +# When enabled, pylint would attempt to guess common misconfiguration +# and emit user-friendly hints instead of false-positive error messages. suggestion-mode=yes -# Allow loading of arbitrary C extensions. Extensions are imported into the -# active Python interpreter and may run arbitrary code. +# Allow loading of arbitrary C extensions. Extensions are imported into +# the active Python interpreter and may run arbitrary code. unsafe-load-any-extension=no -[MESSAGES CONTROL] - -# Only show warnings with the listed confidence levels. Leave empty to show -# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED. -confidence= - -# Disable the message, report, category or checker with the given id(s). You -# can either give multiple identifiers separated by comma (,) or put this -# option multiple times (only on the command line, not in the configuration -# file where it should appear only once). You can also use "--disable=all" to -# disable everything first and then reenable specific checks. For example, if -# you want to run only the similarities checker, you can use "--disable=all -# --enable=similarities". If you want to run only the classes checker, but have -# no Warning level messages displayed, use "--disable=all --enable=classes -# --disable=W". -disable= - # Allow freedom with imports. - import-outside-toplevel, - # Allow freedom with globals. - global-statement, - global-variable-not-assigned, - global-variable-undefined, - undefined-all-variable, - # Allow freedom with inheritance. - useless-object-inheritance, - super-with-arguments, - # Allow assigning to returned None. - assignment-from-no-return, - assignment-from-none, - # Allow freedom with error raises. - raise-missing-from, - # Allow freedom with using lambda functions. - unnecessary-lambda-assignment, - # Allow freedom with old ways of doing things. - use-dict-literal, - consider-using-f-string, - # Allow freedom with multiline indentation. - useless-option-value, - bad-continuation - -# Enable the message, report, category or checker with the given id(s). You can -# either give multiple identifier separated by comma (,) or put this option -# multiple time (only on the command line, not in the configuration file where -# it should appear only once). See also the "--disable" option for examples. -enable=c-extension-no-member - - -[REPORTS] - -# Python expression which should return a score less than or equal to 10. You -# have access to the variables 'error', 'warning', 'refactor', and 'convention' -# which contain the number of messages in each category, as well as 'statement' -# which is the total number of statements analyzed. This score is used by the -# global evaluation report (RP0004). -evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) - -# Template used to display messages. This is a python new-style format string -# used to format the message information. See doc for all details. -#msg-template= - -# Set the output format. Available formats are text, parseable, colorized, json -# and msvs (visual studio). You can also give a reporter class, e.g. -# mypackage.mymodule.MyReporterClass. -output-format=text - -# Tells whether to display a full report or only the messages. -reports=no - -# Activate the evaluation score. -score=yes - - -[REFACTORING] - -# Maximum number of nested blocks for function / method body -max-nested-blocks=6 - -# Complete name of functions that never returns. When checking for -# inconsistent-return-statements if a never returning function is called then -# it will be considered as an explicit return statement and no message will be -# printed. -never-returning-functions=sys.exit - - [BASIC] # Naming style matching correct argument names. argument-naming-style=snake_case -# Regular expression matching correct argument names. Overrides argument- -# naming-style. +# Regular expression matching correct argument names. +# Overrides argument-naming-style. #argument-rgx= # Naming style matching correct attribute names. attr-naming-style=snake_case -# Regular expression matching correct attribute names. Overrides attr-naming- -# style. +# Regular expression matching correct attribute names. +# Overrides attr-naming-style. #attr-rgx= -# Bad variable names which should always be refused, separated by a comma. -bad-names=foo, - bar, - baz, - toto, - tutu, - tata +# Bad variable names which should always be refused. +bad-names= + foo, + bar, + baz, + toto, + tutu, + tata # Naming style matching correct class attribute names. class-attribute-naming-style=any -# Regular expression matching correct class attribute names. Overrides class- -# attribute-naming-style. +# Regular expression matching correct class attribute names. +# Overrides class-attribute-naming-style. #class-attribute-rgx= # Naming style matching correct class names. class-naming-style=PascalCase -# Regular expression matching correct class names. Overrides class-naming- -# style. +# Regular expression matching correct class names. +# Overrides class-naming-style. #class-rgx= # Naming style matching correct constant names. const-naming-style=any -# Regular expression matching correct constant names. Overrides const-naming- -# style. +# Regular expression matching correct constant names. +# Overrides const-naming-style. #const-rgx= -# Minimum line length for functions/classes that require docstrings, shorter -# ones are exempt. +# Minimum line length for functions/classes that require docstrings, +# shorter ones are exempt. docstring-min-length=-1 # Naming style matching correct function names. function-naming-style=snake_case -# Regular expression matching correct function names. Overrides function- -# naming-style. +# Regular expression matching correct function names. +# Overrides function-naming-style. #function-rgx= -# Good variable names which should always be accepted, separated by a comma. -good-names=i, j, k, m, n, - t, x, y, z, xy, - nx, dx, x1, x2, - ny, dy, y1, y2, - fd, ax, h, - _ +# Good variable names which should always be accepted. +good-names= + i, j, k, m, n, + t, x, y, z, xy, + nx, dx, x1, x2, + ny, dy, y1, y2, + fd, ax, h, + _ # Include a hint for the correct naming format with invalid-name. include-naming-hint=no @@ -200,58 +135,133 @@ include-naming-hint=no # Naming style matching correct inline iteration names. inlinevar-naming-style=snake_case -# Regular expression matching correct inline iteration names. Overrides -# inlinevar-naming-style. +# Regular expression matching correct inline iteration names. +# Overrides inlinevar-naming-style. #inlinevar-rgx= # Naming style matching correct method names. method-naming-style=snake_case -# Regular expression matching correct method names. Overrides method-naming- -# style. +# Regular expression matching correct method names. +# Overrides method-naming-style. #method-rgx= # Naming style matching correct module names. #module-naming-style=snake_case -# Regular expression matching correct module names. Overrides module-naming- -# style. +# Regular expression matching correct module names. +# Overrides module-naming-style. module-rgx=^(test_)?((?P_{0,2}[a-z][a-z0-9_]{1,29}_{0,2})|(?P_?[A-Z][a-zA-Z0-9]{1,29}_{0,2}))$ -# Colon-delimited sets of names that determine each other's naming style when -# the name regexes allow several styles. +# Colon-delimited sets of names that determine each other's naming style +# when the name regexes allow several styles. name-group= -# Regular expression which should only match function or class names that do -# not require a docstring. +# Regular expression which should only match function or class names +# that do not require a docstring. no-docstring-rgx=^_ -# List of decorators that produce properties, such as abc.abstractproperty. Add -# to this list to register other decorators that produce valid properties. -# These decorators are taken in consideration only for invalid-name. -property-classes=abc.abstractproperty +# List of decorators that produce properties, e.g. abc.abstractproperty. +# Add to this list to register other decorators that produce valid +# properties. These decorators are taken in consideration only for +# invalid-name. +property-classes= + abc.abstractproperty # Naming style matching correct variable names. variable-naming-style=snake_case -# Regular expression matching correct variable names. Overrides variable- -# naming-style. +# Regular expression matching correct variable names. +# Overrides variable-naming-style. #variable-rgx= +[CLASSES] + +# Warn about protected attribute access inside special methods. +check-protected-access-in-special-methods=yes + +# Method names used to declare (i.e. assign) instance attributes. +defining-attr-methods= + __init__, + __new__, + setUp, + asyncSetUp, + __post_init__ + +# Member names to be excluded from the protected access warning. +exclude-protected= + _asdict, + _fields, + _replace, + _source, + _make, + os._exit + +# List of valid names for first argument in a class method. +valid-classmethod-first-arg=cls + +# List of valid names for first argument in a metaclass class method. +valid-metaclass-classmethod-first-arg=mcs + + +[DESIGN] + +# Maximum number of arguments for function / method (R0913). +max-args=6 + +# Maximum number of attributes for a class (R0902). +max-attributes=12 + +# Maximum number of boolean expressions in an if statement (R0916). +max-bool-expr=6 + +# Maximum number of branch for function / method body (R0912). +max-branches=24 + +# Maximum number of locals for function / method body (R0914). +max-locals=24 + +# Maximum number of parents for a class (R0901). +max-parents=18 + +# Maximum number of positional arguments for function / method (R0917). +max-positional-arguments=6 + +# Maximum number of public methods for a class (R0904). +max-public-methods=90 + +# Maximum number of return / yield for function / method body. +max-returns=6 + +# Maximum number of statements in function / method body (R0915). +max-statements=90 + +# Minimum number of public methods for a class (R0903). +min-public-methods=1 + + +[EXCEPTIONS] + +# Exceptions that will emit a warning when caught. +overgeneral-exceptions= + builtins.BaseException, + builtins.Exception + + [FORMAT] -# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. +# Expected format of line ending, e.g. empty (any), LF or CRLF. expected-line-ending-format=LF # Regexp for a line that is allowed to be longer than the limit. ignore-long-lines=^\s*(# )??$ -# Number of spaces of indent required inside a hanging or continued line. +# Number of spaces of indent needed inside a hanging or continued line. indent-after-paren=4 -# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 -# tab). +# String used as indentation unit. This is usually " " (4 spaces) +# or "\t" (1 tab). indent-string=" " # Maximum number of characters on a single line. @@ -260,47 +270,185 @@ max-line-length=99 # Maximum number of lines in a module. max-module-lines=999 -# Allow the body of a class to be on the same line as the declaration if body -# contains single statement. +# Allow the body of a class to be on the same line as the declaration +# if body contains single statement. single-line-class-stmt=no -# Allow the body of an if to be on the same line as the test if there is no -# else. +# Allow the body of an if to be on the same line as the test if there +# is no else. single-line-if-stmt=no +[IMPORTS] + +# List of modules that can be imported at any level, not just the top +# level one. +allow-any-import-level= + +# Allow wildcard imports from modules that define __all__. +allow-wildcard-with-all=no + +# Deprecated modules which should not be used, separated by a comma. +deprecated-modules= + +# Output a graph (.gv or any supported image format) of external +# dependencies to the given file (report RP0402 must not be disabled). +ext-import-graph= + +# Output a graph (.gv or any supported image format) of all +# (i.e. internal and external) dependencies to the given file +# (report RP0402 must not be disabled). +import-graph= + +# Output a graph (.gv or any supported image format) of internal +# dependencies to the given file (report RP0402 must not be disabled). +int-import-graph= + +# Force import order to recognize a module as part of the standard +# compatibility libraries. +known-standard-library= + +# Force import order to recognize a module as part of a third party +# library. +known-third-party= + enchant + +# Couples of modules and preferred modules, separated by a comma. +preferred-modules= + + [LOGGING] -# Format style used to check logging format string. `old` means using % -# formatting, `new` is for `{}` formatting, and `fstr` is for f-strings. -logging-format-style=new +# The type of string formatting that logging methods do. `old` means +# using % formatting, `new` is for `{}` formatting. +logging-format-style=old -# Logging modules to check that the string format arguments are in logging -# function parameter format. +# Logging modules to check that the string format arguments are in +# logging function parameter format. logging-modules=logging +[MESSAGES CONTROL] + +# Only show warnings with the listed confidence levels. Leave empty to +# show all. Valid levels: HIGH, CONTROL_FLOW (pylint >= 2.13.0), +# INFERENCE, INFERENCE_FAILURE, UNDEFINED. +confidence= + +# Disable the message, report, category or checker with the given id(s). +# You can either give multiple identifiers separated by comma (,) or +# put this option multiple times (only on the command line, not in the +# configuration file where it should appear only once). You can also +# use "--disable=all" to disable everything first and then re-enable +# specific checks. For example, if you want to run only the similarities +# checker, you can use "--disable=all --enable=similarities". If you +# want to run only the classes checker, but have no Warning level +# messages displayed, use "--disable=all --enable=classes --disable=W". +disable= + # Allow freedom with imports. + import-outside-toplevel, + # Allow freedom with globals. + global-statement, + global-variable-not-assigned, + global-variable-undefined, + undefined-all-variable, + # Allow freedom with inheritance. + useless-object-inheritance, + super-with-arguments, + # Allow assigning to returned None. + assignment-from-no-return, + assignment-from-none, + # Allow freedom with error raises. + raise-missing-from, + # Allow freedom with using lambda functions. + unnecessary-lambda-assignment, + # Allow freedom with multiline indentation. + useless-option-value, + bad-continuation, + # Allow freedom with old ways of doing things. + consider-using-f-string, + use-dict-literal, + use-yield-from, + # Ignore warnings unknown by old PyLint versions. + bad-option-value, + unrecognized-option, + unknown-option-value + +# Enable the message, report, category or checker with the given id(s). +# You can either give multiple identifier separated by comma (,) or put +# this option multiple time (only on the command line, not in the +# configuration file where it should appear only once). See also the +# "--disable" option for examples. +enable=c-extension-no-member + + [MISCELLANEOUS] # List of note tags to take in consideration, separated by a comma. -notes=FIXME, - XXX, - TODO +notes= + FIXME, + XXX, + TODO + + +[REFACTORING] + +# Maximum number of nested blocks for function / method body. +max-nested-blocks=6 + +# Complete name of functions that never returns. When checking for +# inconsistent-return-statements if a never returning function is +# called then it will be considered as an explicit return statement +# and no message will be printed. +never-returning-functions= + sys.exit, + argparse.parse_error + + +[REPORTS] + +# Python expression which should return a score less than or equal to +# 10. You have access to the variables 'fatal', 'error', 'warning', +# 'refactor', 'convention', and 'info' which contain the number of +# messages in each category, as well as 'statement' which is the total +# number of statements analyzed. This score is used by the global +# evaluation report (RP0004). +evaluation=max(0, 0 if fatal else 10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)) + +# Template used to display messages. This is a python new-style format +# string used to format the message information. See doc for all +# details. +msg-template= + +# Set the output format. Available formats are: text, parseable, +# colorized, json2 (improved json format), json (old json format) +# and msvs (visual studio). You can also give a reporter class, +# e.g. mypackage.mymodule.MyReporterClass. +#output-format= + +# Tells whether to display a full report or only the messages. +reports=no + +# Activate the evaluation score. +score=yes [SIMILARITIES] -# Ignore comments when computing similarities. +# Comments are removed from the similarity computation. ignore-comments=yes -# Ignore docstrings when computing similarities. +# Docstrings are removed from the similarity computation. ignore-docstrings=yes -# Ignore imports when computing similarities. -ignore-imports=no +# Imports are removed from the similarity computation. +ignore-imports=yes + +# Signatures are removed from the similarity computation. +ignore-signatures=yes # Minimum lines number of a similarity. -min-similarity-lines=16 +min-similarity-lines=30 [SPELLING] @@ -308,25 +456,31 @@ min-similarity-lines=16 # Limits count of emitted suggestions for spelling mistakes. max-spelling-suggestions=4 -# Spelling dictionary name. Available dictionaries: none. To make it work, -# install the python-enchant package. +# Spelling dictionary name. No available dictionaries: You need to +# install both the python package and the system dependency for +# enchant to work. spelling-dict= # List of comma separated words that should not be checked. spelling-ignore-words= -# A path to a file that contains the private dictionary; one word per line. +# Path to a file containing the private dictionary; one word per line. spelling-private-dict-file= -# Tells whether to store unknown words to the private dictionary (see the -# --spelling-private-dict-file option) instead of raising a message. +# Tells whether to store unknown words to the private dictionary (see +# the --spelling-private-dict-file option) instead of raising a message. spelling-store-unknown-words=no [STRING] -# This flag controls whether the implicit-str-concat-in-sequence should -# generate a warning on implicit string concatenation in sequences defined over +# This flag controls whether inconsistent-quotes generates a warning +# when the character used as a quote delimiter is used inconsistently +# within a module. +check-quote-consistency=yes + +# This flag controls whether the implicit-str-concat should generate a +# warning on implicit string concatenation in sequences defined over # several lines. check-str-concat-over-line-jumps=no @@ -334,57 +488,51 @@ check-str-concat-over-line-jumps=no [TYPECHECK] # List of decorators that produce context managers, such as -# contextlib.contextmanager. Add to this list to register other decorators that -# produce valid context managers. -contextmanager-decorators=contextlib.contextmanager - -# List of members which are set dynamically and missed by pylint inference -# system, and so shouldn't trigger E1101 when accessed. Python regular -# expressions are accepted. -generated-members=numpy, - pyproj, - netCDF4, - mpl_toolkits.basemap.Basemap - -# Tells whether missing members accessed in mixin class should be ignored. A -# mixin class is detected if its name ends with "mixin" (case insensitive). -ignore-mixin-members=yes - -# Tells whether to warn about missing members when the owner of the attribute -# is inferred to be None. +# contextlib.contextmanager. Add to this list to register +# other decorators that produce valid context managers. +contextmanager-decorators= + contextlib.contextmanager + +# List of members which are set dynamically and missed by pylint +# inference system, and so shouldn't trigger E1101 when accessed. +# Python regular expressions are accepted. +generated-members= + netCDF4, + numpy, + pyproj, + mpl_toolkits.basemap.Basemap + +# Tells whether to warn about missing members when the owner of the +# attribute is inferred to be None. ignore-none=yes -# This flag controls whether pylint should warn about no-member and similar -# checks whenever an opaque object is returned when inferring. The inference -# can return multiple potential results while evaluating a Python object, but -# some branches might not be evaluated, which results in partial inference. In -# that case, it might be useful to still emit no-member and other checks for -# the rest of the inferred objects. +# This flag controls whether pylint should warn about no-member and +# similar checks whenever an opaque object is returned when inferring. +# The inference can return multiple potential results while evaluating a +# Python object, but some branches might not be evaluated, which results +# in partial inference. In that case, it might be useful to still emit +# no-member and other checks for the rest of the inferred objects. ignore-on-opaque-inference=yes -# List of class names for which member attributes should not be checked (useful -# for classes with dynamically set attributes). This supports the use of -# qualified names. -ignored-classes=optparse.Values, - thread._local, - _thread._local - -# List of module names for which member attributes should not be checked -# (useful for modules/projects where namespaces are manipulated during runtime -# and thus existing member attributes cannot be deduced by static analysis). It -# supports qualified module names, as well as Unix pattern matching. -ignored-modules=_geoslib - -# Show a hint with possible names when a member name was not found. The aspect -# of finding the hint is based on edit distance. +# List of class names for which member attributes should not be checked +# (useful for classes with dynamically set attributes). This supports +# the use of qualified names. +ignored-classes= + optparse.Values, + thread._local, + _thread._local, + argparse.Namespace + +# Show a hint with possible names when a member name was not found. +# The aspect of finding the hint is based on edit distance. missing-member-hint=yes -# The minimum edit distance a name should have in order to be considered a -# similar match for a missing member name. +# The minimum edit distance a name should have in order to be +# considered a similar match for a missing member name. missing-member-hint-distance=1 -# The total number of similar names that should be taken in consideration when -# showing a hint for a missing member. +# The total number of similar names that should be taken in +# consideration when showing a hint for a missing member. missing-member-max-choices=1 # List of decorators that change the signature of a decorated function. @@ -393,137 +541,33 @@ signature-mutators= [VARIABLES] -# List of additional names supposed to be defined in builtins. Remember that -# you should avoid defining new builtins when possible. +# List of additional names supposed to be defined in builtins. Remember +# that you should avoid defining new builtins when possible. additional-builtins= -# Tells whether unused global variables should be treated as a violation. +# Set whether unused global variables should be treated as a violation. allow-global-unused-variables=yes -# List of strings which can identify a callback function by name. A callback -# name must start or end with one of those strings. -callbacks=cb_, - _cb +# List of strings which can identify a callback function by name. +# A callback name must start or end with one of those strings. +callbacks= + cb_, + _cb -# A regular expression matching the name of dummy variables (i.e. expected to -# not be used). +# A regular expression matching the name of dummy variables +# (i.e. expected to not be used). dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ -# Argument names that match this expression will be ignored. Default to name -# with leading underscore. +# Argument names that match this expression will be ignored. ignored-argument-names=_.*|^ignored_|^unused_ # Tells whether we should check for unused import in __init__ files. init-import=no -# List of qualified module names which can have objects that can redefine -# builtins. -redefining-builtins-modules=past.builtins, - future.builtins, - builtins, - io - - -[CLASSES] - -# List of method names used to declare (i.e. assign) instance attributes. -defining-attr-methods=__init__, - __new__, - setUp, - __post_init__ - -# List of member names, which should be excluded from the protected access -# warning. -exclude-protected=_asdict, - _fields, - _replace, - _source, - _make - -# List of valid names for the first argument in a class method. -valid-classmethod-first-arg=cls - -# List of valid names for the first argument in a metaclass class method. -valid-metaclass-classmethod-first-arg=mcs - - -[DESIGN] - -# Maximum number of arguments for function / method (see R0913). -max-args=6 - -# Maximum number of attributes for a class (see R0902). -max-attributes=12 - -# Maximum number of boolean expressions in an if statement (see R0916). -max-bool-expr=6 - -# Maximum number of branch for function / method body (see R0912). -max-branches=24 - -# Maximum number of locals for function / method body (see R0914). -max-locals=24 - -# Maximum number of parents for a class (see R0901). -max-parents=18 - -# Maximum number of public methods for a class (see R0904). -max-public-methods=90 - -# Maximum number of return / yield for function / method body. -max-returns=6 - -# Maximum number of statements in function / method body (see R0915). -max-statements=90 - -# Minimum number of public methods for a class (see R0903). -min-public-methods=1 - - -[IMPORTS] - -# List of modules that can be imported at any level, not just the top level -# one. -allow-any-import-level= - -# Allow wildcard imports from modules that define __all__. -allow-wildcard-with-all=no - -# Analyse import fallback blocks. This can be used to support both Python 2 and -# 3 compatible code, which means that the block might have code that exists -# only in one or another interpreter, leading to false positives when analysed. -analyse-fallback-blocks=no - -# Deprecated modules which should not be used, separated by a comma. -deprecated-modules=optparse, - tkinter.tix - -# Create a graph of external dependencies in the given file (report RP0402 must -# not be disabled). -ext-import-graph= - -# Create a graph of every (i.e. internal and external) dependencies in the -# given file (report RP0402 must not be disabled). -import-graph= - -# Create a graph of internal dependencies in the given file (report RP0402 must -# not be disabled). -int-import-graph= - -# Force import order to recognize a module as part of the standard -# compatibility libraries. -known-standard-library= - -# Force import order to recognize a module as part of a third party library. -known-third-party=enchant - -# Couples of modules and preferred modules, separated by a comma. -preferred-modules= - - -[EXCEPTIONS] - -# Exceptions that will emit a warning when being caught. Defaults to -# "builtins.BaseException, builtins.Exception". -overgeneral-exceptions=builtins.BaseException, - builtins.Exception +# List of qualified module names which can have objects that can +# redefine builtins. +redefining-builtins-modules= + past.builtins, + future.builtins, + builtins, + io From 4239d8499f3251f83959ec2e816b9c8c9baf2874 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Thu, 12 Jun 2025 23:59:11 +0200 Subject: [PATCH 142/188] Remove unneeded CI steps in build_wheels job The removed steps were installing the `basemap` data packages in the host environment where `cibuildwheel` is run, but the `basemap` wheels are later built and tested by `cibuildwheel` in isolated environments (where we do need the `basemap` data packages), so installing the `basemap` data packages in the host environment has no purpose. --- .github/workflows/build.yml | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f05c75983..564fb4152 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -87,30 +87,6 @@ jobs: path: ./data_packages/ merge-multiple: true - - name: Install data packages (Linux/macOS) - if: runner.os != 'Windows' - shell: bash - run: | - # Install the wheel data packages with wildcard - python -m pip install ./data_packages/*.whl - - # Verify that the data packages can be imported - python -c "import mpl_toolkits.basemap_data; print('mpl_toolkits.basemap_data installed successfully')" - - - name: Install data packages (Windows) - if: runner.os == 'Windows' - shell: pwsh - run: | - # Install the wheel data packages sequentially - $wheels = Get-ChildItem -Path "./data_packages" -Filter "*.whl" -Recurse - foreach ($wheel in $wheels) { - Write-Host "Installing $($wheel.FullName)" - python -m pip install $wheel.FullName - } - - # Verify that the data packages can be imported - python -c "import mpl_toolkits.basemap_data; print('mpl_toolkits.basemap_data installed successfully')" - - name: Download basemap sdist uses: actions/download-artifact@v4 with: From 056206a762b65ae2b2533643c00f8f8d572ed110 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 00:28:12 +0200 Subject: [PATCH 143/188] Migrate Windows CI builds to windows-2022 --- .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 564fb4152..d8fa8d828 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -70,7 +70,7 @@ jobs: needs: [build_data, build_sdist] strategy: matrix: - os: [ubuntu-22.04, windows-2019, macos-13, macos-14] + os: [ubuntu-22.04, windows-2022, macos-13, macos-14] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 From 5f5cdcbdebfa42bb551df19349081c5eaa93f3f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 00:38:38 +0200 Subject: [PATCH 144/188] Apply minor modifications to CI workflow --- .github/workflows/build.yml | 45 ++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d8fa8d828..41e5829bb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,5 +1,3 @@ -name: Build - on: push: paths: @@ -17,7 +15,7 @@ on: jobs: build_data: - name: Build data packages + name: Build data strategy: matrix: package: [basemap_data, basemap_data_hires] @@ -30,13 +28,14 @@ jobs: with: python-version: "3.9" - - name: Build sdist and wheels + - name: Build data sdist and wheel run: | cd packages/${{ matrix.package }} python -m pip install build wheel python -m build - - uses: actions/upload-artifact@v4 + - name: Upload data sdist and wheel + uses: actions/upload-artifact@v4 with: path: | packages/${{ matrix.package }}/dist/*.tar.gz @@ -44,7 +43,7 @@ jobs: name: dist-${{ matrix.package }} build_sdist: - name: Build basemap sdist + name: Build sdist runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 @@ -54,19 +53,20 @@ jobs: with: python-version: "3.9" - - name: Build sdist + - name: Build basemap sdist run: | cd packages/basemap python -m pip install build python -m build --sdist - - uses: actions/upload-artifact@v4 + - name: Upload basemap sdist + uses: actions/upload-artifact@v4 with: path: packages/basemap/dist/*.tar.gz name: dist-basemap-sdist build_wheels: - name: Build basemap wheels + name: Build wheels needs: [build_data, build_sdist] strategy: matrix: @@ -93,7 +93,7 @@ jobs: name: dist-basemap-sdist path: ./sdist/ - - name: Extract sdist (Linux/macOS) + - name: Extract basemap sdist (Linux/macOS) if: runner.os != 'Windows' shell: bash run: | @@ -112,7 +112,7 @@ jobs: # Set the environment variable echo "SDIST_DIR=$(pwd)/${EXTRACTED_DIR}" >> $GITHUB_ENV - - name: Extract sdist (Windows) + - name: Extract basemap sdist (Windows) if: runner.os == 'Windows' shell: pwsh run: | @@ -132,7 +132,7 @@ jobs: # Set the environment variable echo "SDIST_DIR=$extractedDir" | Out-File -FilePath $env:GITHUB_ENV -Append - - name: Build wheels from sdist + - name: Build basemap wheels from sdist uses: pypa/cibuildwheel@v2.22.0 env: CIBW_ARCHS: "native" @@ -160,7 +160,8 @@ jobs: # folder and we cannot guarantee that wheels can be built # from the sdist. - - uses: actions/upload-artifact@v4 + - name: Upload basemap wheels + uses: actions/upload-artifact@v4 with: path: dist/*.whl name: dist-basemap-wheels-${{ matrix.os }} @@ -170,7 +171,8 @@ jobs: needs: [build_data, build_sdist, build_wheels] runs-on: ubuntu-22.04 steps: - - uses: actions/download-artifact@v4 + - name: Download basemap and data packages + uses: actions/download-artifact@v4 with: path: dist pattern: "dist-*" @@ -188,8 +190,8 @@ jobs: python -m twine check dist/*.whl docs: - name: Build documentation - needs: [build_wheels] + name: Build docs + needs: [check] runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 @@ -206,14 +208,14 @@ jobs: pattern: "dist-basemap_data*" merge-multiple: true - - name: Download basemap wheel for Linux + - name: Download basemap wheels for Linux uses: actions/download-artifact@v4 with: path: ./wheels/ pattern: "dist-basemap-wheels-ubuntu-*" merge-multiple: true - - name: Install packages + - name: Install basemap and data packages run: | # Get Python version. IMPL=cp$(python -c "import sys; print('{0}{1}'.format(*sys.version_info[:2]))") @@ -253,9 +255,9 @@ jobs: path: packages/basemap/public pages: - name: Deploy documentation + name: Deploy docs if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') - needs: [docs, check] + needs: [docs] runs-on: ubuntu-22.04 environment: name: github-pages @@ -275,7 +277,8 @@ jobs: environment: PyPI if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') steps: - - uses: actions/download-artifact@v4 + - name: Download basemap and data packages + uses: actions/download-artifact@v4 with: path: dist pattern: "dist-*" From d5c33b3c37b832112a2036c18378f68f94a01ddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 00:39:51 +0200 Subject: [PATCH 145/188] Remove another unused step in CI workflow --- .github/workflows/build.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 41e5829bb..3cb5300a0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -80,13 +80,6 @@ jobs: with: python-version: "3.9" - - name: Download data packages - uses: actions/download-artifact@v4 - with: - pattern: dist-basemap_data* - path: ./data_packages/ - merge-multiple: true - - name: Download basemap sdist uses: actions/download-artifact@v4 with: From 9e71fb83ba42557e0e56aada7fc3808ddc1e5824 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 00:49:43 +0200 Subject: [PATCH 146/188] Move requirements files to dep folder --- .github/workflows/build.yml | 2 +- CHANGELOG.md | 1 + packages/basemap/MANIFEST.in | 2 +- packages/basemap/{ => dep}/requirements-doc.txt | 0 packages/basemap/{ => dep}/requirements-lint.txt | 0 packages/basemap/{ => dep}/requirements-owslib.txt | 0 packages/basemap/{ => dep}/requirements-pillow.txt | 0 packages/basemap/{ => dep}/requirements-test.txt | 0 packages/basemap/{ => dep}/requirements.txt | 0 packages/basemap/setup.py | 12 ++++++------ 10 files changed, 9 insertions(+), 8 deletions(-) rename packages/basemap/{ => dep}/requirements-doc.txt (100%) rename packages/basemap/{ => dep}/requirements-lint.txt (100%) rename packages/basemap/{ => dep}/requirements-owslib.txt (100%) rename packages/basemap/{ => dep}/requirements-pillow.txt (100%) rename packages/basemap/{ => dep}/requirements-test.txt (100%) rename packages/basemap/{ => dep}/requirements.txt (100%) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3cb5300a0..b0bfd71d5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -228,7 +228,7 @@ jobs: - name: Install docs requirements run: | cd packages/basemap - python -m pip install -r requirements-doc.txt + python -m pip install -r dep/requirements-doc.txt - name: Run sphinx run: | diff --git a/CHANGELOG.md b/CHANGELOG.md index 97e8732d9..e13b6a42d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ https://semver.org/spec/v2.0.0.html - **BREAKING CHANGE**: Set Python minimum supported version to 3.9. - **BREAKING CHANGE**: Migrate `basemap` libraries to use implicit namespace packages (PR [#576] by @ksunden). +- **BREAKING CHANGE**: Move requirements files to its own `dep` folder. - Migrate workflows to use `cibuildwheel` (PRs [#614], [#618], [#622] and [#623] by @cvanelteren and PR [#621], solves GitHub artifact actions v1 sunset). diff --git a/packages/basemap/MANIFEST.in b/packages/basemap/MANIFEST.in index 07fe08a66..a85c8b7d9 100644 --- a/packages/basemap/MANIFEST.in +++ b/packages/basemap/MANIFEST.in @@ -1,4 +1,4 @@ -include requirements*.txt +include dep/requirements*.txt recursive-include doc * recursive-exclude doc/build * recursive-include test * diff --git a/packages/basemap/requirements-doc.txt b/packages/basemap/dep/requirements-doc.txt similarity index 100% rename from packages/basemap/requirements-doc.txt rename to packages/basemap/dep/requirements-doc.txt diff --git a/packages/basemap/requirements-lint.txt b/packages/basemap/dep/requirements-lint.txt similarity index 100% rename from packages/basemap/requirements-lint.txt rename to packages/basemap/dep/requirements-lint.txt diff --git a/packages/basemap/requirements-owslib.txt b/packages/basemap/dep/requirements-owslib.txt similarity index 100% rename from packages/basemap/requirements-owslib.txt rename to packages/basemap/dep/requirements-owslib.txt diff --git a/packages/basemap/requirements-pillow.txt b/packages/basemap/dep/requirements-pillow.txt similarity index 100% rename from packages/basemap/requirements-pillow.txt rename to packages/basemap/dep/requirements-pillow.txt diff --git a/packages/basemap/requirements-test.txt b/packages/basemap/dep/requirements-test.txt similarity index 100% rename from packages/basemap/requirements-test.txt rename to packages/basemap/dep/requirements-test.txt diff --git a/packages/basemap/requirements.txt b/packages/basemap/dep/requirements.txt similarity index 100% rename from packages/basemap/requirements.txt rename to packages/basemap/dep/requirements.txt diff --git a/packages/basemap/setup.py b/packages/basemap/setup.py index 0f7e52675..5a62df384 100644 --- a/packages/basemap/setup.py +++ b/packages/basemap/setup.py @@ -211,18 +211,18 @@ def run(self): "<3.14", ]), "install_requires": - get_content("requirements.txt", splitlines=True), + get_content("dep/requirements.txt", splitlines=True), "extras_require": { "doc": - get_content("requirements-doc.txt", splitlines=True), + get_content("dep/requirements-doc.txt", splitlines=True), "lint": - get_content("requirements-lint.txt", splitlines=True), + get_content("dep/requirements-lint.txt", splitlines=True), "test": - get_content("requirements-test.txt", splitlines=True), + get_content("dep/requirements-test.txt", splitlines=True), "owslib": - get_content("requirements-owslib.txt", splitlines=True), + get_content("dep/requirements-owslib.txt", splitlines=True), "pillow": - get_content("requirements-pillow.txt", splitlines=True), + get_content("dep/requirements-pillow.txt", splitlines=True), }, "cmdclass": { "sdist": basemap_sdist, From 1779c192d11d9a60ff1a2654704d9b20a60975dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 00:59:07 +0200 Subject: [PATCH 147/188] Move coverage configuration to pyproject.toml --- packages/basemap/dep/requirements-test.txt | 2 +- packages/basemap/pyproject.toml | 15 +++++++++++++++ packages/basemap/setup.cfg | 13 ------------- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/packages/basemap/dep/requirements-test.txt b/packages/basemap/dep/requirements-test.txt index c8b7f01bb..b7f9a483b 100644 --- a/packages/basemap/dep/requirements-test.txt +++ b/packages/basemap/dep/requirements-test.txt @@ -1,4 +1,4 @@ pytest >= 7.0, < 8.5 pytest-cov >= 3.0, < 6.3 -coverage >= 5.0, < 7.10 +coverage[toml] >= 5.0, < 7.10 diff --git a/packages/basemap/pyproject.toml b/packages/basemap/pyproject.toml index 1f790b748..a9354726b 100644 --- a/packages/basemap/pyproject.toml +++ b/packages/basemap/pyproject.toml @@ -7,3 +7,18 @@ requires = [ 'numpy == 2.0.0; python_version <= "3.12"', ] build-backend = "setuptools.build_meta" + +[tool.coverage.paths] +source = [ + "src", + "*/site-packages", +] + +[tool.coverage.report] +exclude_also = [ + "pragma: no cover", + "def __repr__", + "def __str__", + "raise NotImplementedError", + "if __name__ == .__main__.:", +] diff --git a/packages/basemap/setup.cfg b/packages/basemap/setup.cfg index baa2ec222..811c2a406 100644 --- a/packages/basemap/setup.cfg +++ b/packages/basemap/setup.cfg @@ -14,16 +14,3 @@ ignore = [tool:pytest] filterwarnings = error - -[coverage:paths] -source = - src - /**/pyenv/versions/**/site-packages - -[coverage:report] -exclude_lines = - pragma: no cover - def __repr__ - def __str__ - raise NotImplementedError - if __name__ == .__main__.: From db166885805cfbe16a224b26a1250065a783b4af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 01:00:03 +0200 Subject: [PATCH 148/188] Update quotes usage in pyproject.toml --- packages/basemap/pyproject.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/basemap/pyproject.toml b/packages/basemap/pyproject.toml index a9354726b..b120783b5 100644 --- a/packages/basemap/pyproject.toml +++ b/packages/basemap/pyproject.toml @@ -1,10 +1,10 @@ [build-system] requires = [ - 'setuptools >= 67.0, < 81.0', - 'wheel >= 0.40, < 0.46', - 'cython >= 3.0, < 3.2', - 'numpy == 2.1.0; python_version == "3.13"', - 'numpy == 2.0.0; python_version <= "3.12"', + "setuptools >= 67.0, < 81.0", + "wheel >= 0.40, < 0.46", + "cython >= 3.0, < 3.2", + "numpy == 2.1.0; python_version == '3.13'", + "numpy == 2.0.0; python_version <= '3.12'", ] build-backend = "setuptools.build_meta" From 4299a404be6fea83d2b4ba3d05751f56c62b7afb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 01:01:51 +0200 Subject: [PATCH 149/188] Migrate pytest configuration to pyproject.toml --- packages/basemap/pyproject.toml | 5 +++++ packages/basemap/setup.cfg | 4 ---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/basemap/pyproject.toml b/packages/basemap/pyproject.toml index b120783b5..fd6f59973 100644 --- a/packages/basemap/pyproject.toml +++ b/packages/basemap/pyproject.toml @@ -8,6 +8,11 @@ requires = [ ] build-backend = "setuptools.build_meta" +[tool.pytest.ini_options] +filterwarnings = [ + "error", +] + [tool.coverage.paths] source = [ "src", diff --git a/packages/basemap/setup.cfg b/packages/basemap/setup.cfg index 811c2a406..600812489 100644 --- a/packages/basemap/setup.cfg +++ b/packages/basemap/setup.cfg @@ -10,7 +10,3 @@ ignore = # F403: wildcard-import # W503: line-break-before-binary-operator # W504: line-break-after-binary-operator - -[tool:pytest] -filterwarnings = - error From a305b3a138cda38594b38079d32b3ad0c6241d45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 01:22:25 +0200 Subject: [PATCH 150/188] Migrate flake8 configuration to pyproject.toml --- CHANGELOG.md | 1 + packages/basemap/dep/requirements-lint.txt | 1 + packages/basemap/pyproject.toml | 13 +++++++++++++ packages/basemap/setup.cfg | 12 ------------ 4 files changed, 15 insertions(+), 12 deletions(-) delete mode 100644 packages/basemap/setup.cfg diff --git a/CHANGELOG.md b/CHANGELOG.md index e13b6a42d..3dcbc3983 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -60,6 +60,7 @@ https://semver.org/spec/v2.0.0.html - Remove dependency on `unittest2`. - Upgrade lower limit for `flake8` to 3.9. - Upgrade upper limit for `flake8` to 7.3. + - Include dependency on `flake8-pyproject`. - Upgrade lower limit for `astroid` to 3.0. - Upgrade upper limit for `astroid` to 3.4. - Upgrade lower limit for `pylint` to 3.0. diff --git a/packages/basemap/dep/requirements-lint.txt b/packages/basemap/dep/requirements-lint.txt index 319801751..016f91380 100644 --- a/packages/basemap/dep/requirements-lint.txt +++ b/packages/basemap/dep/requirements-lint.txt @@ -1,4 +1,5 @@ flake8 >= 3.9, < 7.3 +flake8-pyproject >= 1.0, < 1.3 astroid >= 3.0, < 3.4 pylint >= 3.0, < 3.4 diff --git a/packages/basemap/pyproject.toml b/packages/basemap/pyproject.toml index fd6f59973..390e03843 100644 --- a/packages/basemap/pyproject.toml +++ b/packages/basemap/pyproject.toml @@ -8,6 +8,19 @@ requires = [ ] build-backend = "setuptools.build_meta" +[tool.flake8] +ignore = [ + "E301", # expected-blank-line-missing + "E306", # no-blank-line-before-nested-def + "E402", # module-import-not-at-top-file + "E501", # line-too-long + "E731", # used-lambda + "F401", # unused-import + "F403", # wildcard-import + "W503", # line-break-before-binary-operator + "W504", # line-break-after-binary-operator +] + [tool.pytest.ini_options] filterwarnings = [ "error", diff --git a/packages/basemap/setup.cfg b/packages/basemap/setup.cfg deleted file mode 100644 index 600812489..000000000 --- a/packages/basemap/setup.cfg +++ /dev/null @@ -1,12 +0,0 @@ -[flake8] -ignore = - E301,E306,E402,E501,E731,F401,F403,W503,W504 -# E301: expected-blank-line-missing -# E306: no-blank-line-before-nested-def -# E402: module-import-not-at-top-file -# E501: line-too-long -# E731: used-lambda -# F401: unused-import -# F403: wildcard-import -# W503: line-break-before-binary-operator -# W504: line-break-after-binary-operator From f4440162e3f639219b0285523bfb1776e1f0e3cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 01:29:43 +0200 Subject: [PATCH 151/188] Remove redundant optional dependency for pillow --- CHANGELOG.md | 5 ++--- packages/basemap/dep/requirements-pillow.txt | 1 - packages/basemap/setup.py | 2 -- 3 files changed, 2 insertions(+), 6 deletions(-) delete mode 100644 packages/basemap/dep/requirements-pillow.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 3dcbc3983..31b1b030f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,9 +38,6 @@ https://semver.org/spec/v2.0.0.html - 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.3. - Upgrade upper limit for `OWSLib` to 0.35. - Update build dependencies: - Upgrade lower limit for `setuptools` to 67.0. @@ -83,6 +80,8 @@ https://semver.org/spec/v2.0.0.html - Deprecated use of `setup_requires` in `setup.py` file. - Deprecated `bdist_wheel.universal` option when building wheels. - Configuration of `sdist` format as zip (replaced by default tar.gz). +- Remove `pillow` as optional dependency, since it is now a transitive + dependency through `matplotlib >= 3.3`. ## [1.4.1] - 2024-02-15 diff --git a/packages/basemap/dep/requirements-pillow.txt b/packages/basemap/dep/requirements-pillow.txt deleted file mode 100644 index 24df5cd49..000000000 --- a/packages/basemap/dep/requirements-pillow.txt +++ /dev/null @@ -1 +0,0 @@ -pillow >= 10.3, < 11.3 diff --git a/packages/basemap/setup.py b/packages/basemap/setup.py index 5a62df384..b20393c86 100644 --- a/packages/basemap/setup.py +++ b/packages/basemap/setup.py @@ -221,8 +221,6 @@ def run(self): get_content("dep/requirements-test.txt", splitlines=True), "owslib": get_content("dep/requirements-owslib.txt", splitlines=True), - "pillow": - get_content("dep/requirements-pillow.txt", splitlines=True), }, "cmdclass": { "sdist": basemap_sdist, From b573ff6ef43d3aa5c98147c266ee9704fcf5b036 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 02:03:31 +0200 Subject: [PATCH 152/188] Update MANIFEST.in --- packages/basemap/MANIFEST.in | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/basemap/MANIFEST.in b/packages/basemap/MANIFEST.in index a85c8b7d9..cc9ee7bbe 100644 --- a/packages/basemap/MANIFEST.in +++ b/packages/basemap/MANIFEST.in @@ -1,10 +1,12 @@ +include .pylintrc +include pyproject.toml include dep/requirements*.txt -recursive-include doc * -recursive-exclude doc/build * -recursive-include test * -recursive-include utils *.py -recursive-exclude **/.DS_Store * recursive-exclude **/__pycache__ * global-exclude *.py[cod] global-exclude *.dll global-exclude *.so + +recursive-include doc * +recursive-exclude doc/build * +recursive-include test * +recursive-include utils *.py From f0a1617fefbd7c04f7d8a46961b732c0d606a3b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 02:36:26 +0200 Subject: [PATCH 153/188] Update copyright years in LICENSE --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 120eb7e3f..68cbd3d24 100644 --- a/LICENSE +++ b/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 From 642aea8a16957b39732875db9115141ef14a4224 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 11:11:55 +0200 Subject: [PATCH 154/188] Move almost all basemap contents to root folder --- .gitignore | 7 +++---- packages/basemap/.pylintrc => .pylintrc | 0 packages/basemap/LICENSE.geos => LICENSE.geos | 0 packages/basemap/MANIFEST.in => MANIFEST.in | 0 .../basemap/dep => dep}/requirements-doc.txt | 0 .../basemap/dep => dep}/requirements-lint.txt | 0 .../dep => dep}/requirements-owslib.txt | 0 .../basemap/dep => dep}/requirements-test.txt | 0 .../basemap/dep => dep}/requirements.txt | 0 {packages/basemap/doc => doc}/Makefile | 0 {packages/basemap/doc => doc}/README.txt | 0 {packages/basemap/doc => doc}/make.bat | 0 {packages/basemap/doc => doc}/make.py | 0 .../doc => doc}/source/_static/.gitkeep | 0 .../doc => doc}/source/_templates/.gitkeep | 0 .../source/_templates/autosummary/module.rst | 0 .../doc => doc}/source/api/basemap_api.rst | 0 .../basemap/doc => doc}/source/api/index.rst | 0 {packages/basemap/doc => doc}/source/conf.py | 0 .../basemap/doc => doc}/source/index.rst | 0 .../basemap/doc => doc}/source/matplotlibrc | 0 .../basemap/doc => doc}/source/users/aea.rst | 0 .../basemap/doc => doc}/source/users/aeqd.rst | 0 .../basemap/doc => doc}/source/users/cass.rst | 0 .../basemap/doc => doc}/source/users/cea.rst | 0 .../basemap/doc => doc}/source/users/cyl.rst | 0 .../basemap/doc => doc}/source/users/eck4.rst | 0 .../basemap/doc => doc}/source/users/eqdc.rst | 0 .../doc => doc}/source/users/examples.rst | 0 .../doc => doc}/source/users/figures/aea.py | 0 .../doc => doc}/source/users/figures/aeqd.py | 0 .../source/users/figures/aeqd_fulldisk.py | 0 .../doc => doc}/source/users/figures/azeqd.py | 0 .../source/users/figures/background1.py | 0 .../source/users/figures/background2.py | 0 .../source/users/figures/background3.py | 0 .../source/users/figures/background4.py | 0 .../source/users/figures/background5.py | 0 .../doc => doc}/source/users/figures/cass.py | 0 .../doc => doc}/source/users/figures/cea.py | 0 .../source/users/figures/contour1.py | 0 .../doc => doc}/source/users/figures/cyl.py | 0 .../doc => doc}/source/users/figures/eck4.py | 0 .../doc => doc}/source/users/figures/eqdc.py | 0 .../doc => doc}/source/users/figures/gall.py | 0 .../source/users/figures/geos_full.py | 0 .../source/users/figures/geos_partial.py | 0 .../source/users/figures/gnomon.py | 0 .../source/users/figures/graticule.py | 0 .../source/users/figures/hammer.py | 0 .../source/users/figures/hurrtracks.py | 0 .../doc => doc}/source/users/figures/kav7.py | 0 .../doc => doc}/source/users/figures/laea.py | 0 .../doc => doc}/source/users/figures/lcc.py | 0 .../source/users/figures/mbtfpq.py | 0 .../doc => doc}/source/users/figures/merc.py | 0 .../doc => doc}/source/users/figures/mill.py | 0 .../doc => doc}/source/users/figures/moll.py | 0 .../source/users/figures/npaeqd.py | 0 .../source/users/figures/nplaea.py | 0 .../source/users/figures/npstere.py | 0 .../source/users/figures/nsper_full.py | 0 .../source/users/figures/nsper_partial.py | 0 .../doc => doc}/source/users/figures/omerc.py | 0 .../source/users/figures/ortho_full.py | 0 .../source/users/figures/ortho_partial.py | 0 .../source/users/figures/plotargo.py | 0 .../source/users/figures/plotboulder.py | 0 .../source/users/figures/plotdaynight.py | 0 .../source/users/figures/plotetopo5.py | 0 .../source/users/figures/plotgreatcircle.py | 0 .../source/users/figures/plothighsandlows.py | 0 .../source/users/figures/plotprecip.py | 0 .../source/users/figures/plotsst.py | 0 .../source/users/figures/plotwindvec.py | 0 .../doc => doc}/source/users/figures/poly.py | 0 .../doc => doc}/source/users/figures/robin.py | 0 .../doc => doc}/source/users/figures/sinu.py | 0 .../source/users/figures/spaeqd.py | 0 .../source/users/figures/splaea.py | 0 .../source/users/figures/spstere.py | 0 .../doc => doc}/source/users/figures/stere.py | 0 .../doc => doc}/source/users/figures/tmerc.py | 0 .../doc => doc}/source/users/figures/vandg.py | 0 .../basemap/doc => doc}/source/users/gall.rst | 0 .../doc => doc}/source/users/geography.rst | 0 .../basemap/doc => doc}/source/users/geos.rst | 0 .../doc => doc}/source/users/gnomon.rst | 0 .../doc => doc}/source/users/graticule.rst | 0 .../doc => doc}/source/users/hammer.rst | 0 .../doc => doc}/source/users/index.rst | 0 .../doc => doc}/source/users/installation.rst | 0 .../doc => doc}/source/users/introduction.rst | 0 .../basemap/doc => doc}/source/users/kav7.rst | 0 .../basemap/doc => doc}/source/users/laea.rst | 0 .../basemap/doc => doc}/source/users/lcc.rst | 0 .../doc => doc}/source/users/mapcoords.rst | 0 .../doc => doc}/source/users/mapsetup.rst | 0 .../doc => doc}/source/users/mbtfpq.rst | 0 .../basemap/doc => doc}/source/users/merc.rst | 0 .../basemap/doc => doc}/source/users/mill.rst | 0 .../basemap/doc => doc}/source/users/moll.rst | 0 .../doc => doc}/source/users/nsper.rst | 0 .../doc => doc}/source/users/omerc.rst | 0 .../doc => doc}/source/users/ortho.rst | 0 .../doc => doc}/source/users/paeqd.rst | 0 .../doc => doc}/source/users/plaea.rst | 0 .../basemap/doc => doc}/source/users/poly.rst | 0 .../doc => doc}/source/users/pstere.rst | 0 .../doc => doc}/source/users/robin.rst | 0 .../basemap/doc => doc}/source/users/sinu.rst | 0 .../doc => doc}/source/users/stere.rst | 0 .../doc => doc}/source/users/tmerc.rst | 0 .../doc => doc}/source/users/vandg.rst | 0 packages/basemap/LICENSE | 21 ------------------- .../basemap/pyproject.toml => pyproject.toml | 0 packages/basemap/setup.py => setup.py | 0 {packages/basemap/src => src}/_geoslib.pyx | 0 .../mpl_toolkits/basemap/__init__.py | 0 .../src => src}/mpl_toolkits/basemap/cm.py | 0 .../mpl_toolkits/basemap/diagnostic.py | 0 .../src => src}/mpl_toolkits/basemap/proj.py | 0 .../src => src}/mpl_toolkits/basemap/solar.py | 0 {packages/basemap/test => test}/conftest.py | 0 .../mpl_toolkits/basemap/test_Basemap.py | 0 .../mpl_toolkits/basemap/test_cm.py | 0 .../mpl_toolkits/basemap/test_diagnostic.py | 0 .../mpl_toolkits/basemap/test_proj.py | 0 .../mpl_toolkits/test_basemap.py | 0 .../basemap/utils => utils}/GeosLibrary.py | 0 {packages/basemap/utils => utils}/__init__.py | 0 131 files changed, 3 insertions(+), 25 deletions(-) rename packages/basemap/.pylintrc => .pylintrc (100%) rename packages/basemap/LICENSE.geos => LICENSE.geos (100%) rename packages/basemap/MANIFEST.in => MANIFEST.in (100%) rename {packages/basemap/dep => dep}/requirements-doc.txt (100%) rename {packages/basemap/dep => dep}/requirements-lint.txt (100%) rename {packages/basemap/dep => dep}/requirements-owslib.txt (100%) rename {packages/basemap/dep => dep}/requirements-test.txt (100%) rename {packages/basemap/dep => dep}/requirements.txt (100%) rename {packages/basemap/doc => doc}/Makefile (100%) rename {packages/basemap/doc => doc}/README.txt (100%) rename {packages/basemap/doc => doc}/make.bat (100%) rename {packages/basemap/doc => doc}/make.py (100%) rename {packages/basemap/doc => doc}/source/_static/.gitkeep (100%) rename {packages/basemap/doc => doc}/source/_templates/.gitkeep (100%) rename {packages/basemap/doc => doc}/source/_templates/autosummary/module.rst (100%) rename {packages/basemap/doc => doc}/source/api/basemap_api.rst (100%) rename {packages/basemap/doc => doc}/source/api/index.rst (100%) rename {packages/basemap/doc => doc}/source/conf.py (100%) rename {packages/basemap/doc => doc}/source/index.rst (100%) rename {packages/basemap/doc => doc}/source/matplotlibrc (100%) rename {packages/basemap/doc => doc}/source/users/aea.rst (100%) rename {packages/basemap/doc => doc}/source/users/aeqd.rst (100%) rename {packages/basemap/doc => doc}/source/users/cass.rst (100%) rename {packages/basemap/doc => doc}/source/users/cea.rst (100%) rename {packages/basemap/doc => doc}/source/users/cyl.rst (100%) rename {packages/basemap/doc => doc}/source/users/eck4.rst (100%) rename {packages/basemap/doc => doc}/source/users/eqdc.rst (100%) rename {packages/basemap/doc => doc}/source/users/examples.rst (100%) rename {packages/basemap/doc => doc}/source/users/figures/aea.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/aeqd.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/aeqd_fulldisk.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/azeqd.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/background1.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/background2.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/background3.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/background4.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/background5.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/cass.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/cea.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/contour1.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/cyl.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/eck4.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/eqdc.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/gall.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/geos_full.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/geos_partial.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/gnomon.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/graticule.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/hammer.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/hurrtracks.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/kav7.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/laea.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/lcc.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/mbtfpq.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/merc.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/mill.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/moll.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/npaeqd.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/nplaea.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/npstere.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/nsper_full.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/nsper_partial.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/omerc.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/ortho_full.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/ortho_partial.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/plotargo.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/plotboulder.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/plotdaynight.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/plotetopo5.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/plotgreatcircle.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/plothighsandlows.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/plotprecip.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/plotsst.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/plotwindvec.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/poly.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/robin.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/sinu.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/spaeqd.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/splaea.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/spstere.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/stere.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/tmerc.py (100%) rename {packages/basemap/doc => doc}/source/users/figures/vandg.py (100%) rename {packages/basemap/doc => doc}/source/users/gall.rst (100%) rename {packages/basemap/doc => doc}/source/users/geography.rst (100%) rename {packages/basemap/doc => doc}/source/users/geos.rst (100%) rename {packages/basemap/doc => doc}/source/users/gnomon.rst (100%) rename {packages/basemap/doc => doc}/source/users/graticule.rst (100%) rename {packages/basemap/doc => doc}/source/users/hammer.rst (100%) rename {packages/basemap/doc => doc}/source/users/index.rst (100%) rename {packages/basemap/doc => doc}/source/users/installation.rst (100%) rename {packages/basemap/doc => doc}/source/users/introduction.rst (100%) rename {packages/basemap/doc => doc}/source/users/kav7.rst (100%) rename {packages/basemap/doc => doc}/source/users/laea.rst (100%) rename {packages/basemap/doc => doc}/source/users/lcc.rst (100%) rename {packages/basemap/doc => doc}/source/users/mapcoords.rst (100%) rename {packages/basemap/doc => doc}/source/users/mapsetup.rst (100%) rename {packages/basemap/doc => doc}/source/users/mbtfpq.rst (100%) rename {packages/basemap/doc => doc}/source/users/merc.rst (100%) rename {packages/basemap/doc => doc}/source/users/mill.rst (100%) rename {packages/basemap/doc => doc}/source/users/moll.rst (100%) rename {packages/basemap/doc => doc}/source/users/nsper.rst (100%) rename {packages/basemap/doc => doc}/source/users/omerc.rst (100%) rename {packages/basemap/doc => doc}/source/users/ortho.rst (100%) rename {packages/basemap/doc => doc}/source/users/paeqd.rst (100%) rename {packages/basemap/doc => doc}/source/users/plaea.rst (100%) rename {packages/basemap/doc => doc}/source/users/poly.rst (100%) rename {packages/basemap/doc => doc}/source/users/pstere.rst (100%) rename {packages/basemap/doc => doc}/source/users/robin.rst (100%) rename {packages/basemap/doc => doc}/source/users/sinu.rst (100%) rename {packages/basemap/doc => doc}/source/users/stere.rst (100%) rename {packages/basemap/doc => doc}/source/users/tmerc.rst (100%) rename {packages/basemap/doc => doc}/source/users/vandg.rst (100%) delete mode 100644 packages/basemap/LICENSE rename packages/basemap/pyproject.toml => pyproject.toml (100%) rename packages/basemap/setup.py => setup.py (100%) rename {packages/basemap/src => src}/_geoslib.pyx (100%) rename {packages/basemap/src => src}/mpl_toolkits/basemap/__init__.py (100%) rename {packages/basemap/src => src}/mpl_toolkits/basemap/cm.py (100%) rename {packages/basemap/src => src}/mpl_toolkits/basemap/diagnostic.py (100%) rename {packages/basemap/src => src}/mpl_toolkits/basemap/proj.py (100%) rename {packages/basemap/src => src}/mpl_toolkits/basemap/solar.py (100%) rename {packages/basemap/test => test}/conftest.py (100%) rename {packages/basemap/test => test}/mpl_toolkits/basemap/test_Basemap.py (100%) rename {packages/basemap/test => test}/mpl_toolkits/basemap/test_cm.py (100%) rename {packages/basemap/test => test}/mpl_toolkits/basemap/test_diagnostic.py (100%) rename {packages/basemap/test => test}/mpl_toolkits/basemap/test_proj.py (100%) rename {packages/basemap/test => test}/mpl_toolkits/test_basemap.py (100%) rename {packages/basemap/utils => utils}/GeosLibrary.py (100%) rename {packages/basemap/utils => utils}/__init__.py (100%) diff --git a/.gitignore b/.gitignore index e67dd9643..0b1237770 100644 --- a/.gitignore +++ b/.gitignore @@ -34,7 +34,6 @@ Thumbs.db # Things specific to this project. *.pickle examples/*.png -packages/basemap/doc/examples -packages/basemap/doc/users/installing.rst -packages/basemap/doc/_static/matplotlibrc -packages/basemap/doc/_templates/gallery.html +doc/users/installing.rst +doc/_static/matplotlibrc +doc/_templates/gallery.html diff --git a/packages/basemap/.pylintrc b/.pylintrc similarity index 100% rename from packages/basemap/.pylintrc rename to .pylintrc diff --git a/packages/basemap/LICENSE.geos b/LICENSE.geos similarity index 100% rename from packages/basemap/LICENSE.geos rename to LICENSE.geos diff --git a/packages/basemap/MANIFEST.in b/MANIFEST.in similarity index 100% rename from packages/basemap/MANIFEST.in rename to MANIFEST.in diff --git a/packages/basemap/dep/requirements-doc.txt b/dep/requirements-doc.txt similarity index 100% rename from packages/basemap/dep/requirements-doc.txt rename to dep/requirements-doc.txt diff --git a/packages/basemap/dep/requirements-lint.txt b/dep/requirements-lint.txt similarity index 100% rename from packages/basemap/dep/requirements-lint.txt rename to dep/requirements-lint.txt diff --git a/packages/basemap/dep/requirements-owslib.txt b/dep/requirements-owslib.txt similarity index 100% rename from packages/basemap/dep/requirements-owslib.txt rename to dep/requirements-owslib.txt diff --git a/packages/basemap/dep/requirements-test.txt b/dep/requirements-test.txt similarity index 100% rename from packages/basemap/dep/requirements-test.txt rename to dep/requirements-test.txt diff --git a/packages/basemap/dep/requirements.txt b/dep/requirements.txt similarity index 100% rename from packages/basemap/dep/requirements.txt rename to dep/requirements.txt diff --git a/packages/basemap/doc/Makefile b/doc/Makefile similarity index 100% rename from packages/basemap/doc/Makefile rename to doc/Makefile diff --git a/packages/basemap/doc/README.txt b/doc/README.txt similarity index 100% rename from packages/basemap/doc/README.txt rename to doc/README.txt diff --git a/packages/basemap/doc/make.bat b/doc/make.bat similarity index 100% rename from packages/basemap/doc/make.bat rename to doc/make.bat diff --git a/packages/basemap/doc/make.py b/doc/make.py similarity index 100% rename from packages/basemap/doc/make.py rename to doc/make.py diff --git a/packages/basemap/doc/source/_static/.gitkeep b/doc/source/_static/.gitkeep similarity index 100% rename from packages/basemap/doc/source/_static/.gitkeep rename to doc/source/_static/.gitkeep diff --git a/packages/basemap/doc/source/_templates/.gitkeep b/doc/source/_templates/.gitkeep similarity index 100% rename from packages/basemap/doc/source/_templates/.gitkeep rename to doc/source/_templates/.gitkeep diff --git a/packages/basemap/doc/source/_templates/autosummary/module.rst b/doc/source/_templates/autosummary/module.rst similarity index 100% rename from packages/basemap/doc/source/_templates/autosummary/module.rst rename to doc/source/_templates/autosummary/module.rst diff --git a/packages/basemap/doc/source/api/basemap_api.rst b/doc/source/api/basemap_api.rst similarity index 100% rename from packages/basemap/doc/source/api/basemap_api.rst rename to doc/source/api/basemap_api.rst diff --git a/packages/basemap/doc/source/api/index.rst b/doc/source/api/index.rst similarity index 100% rename from packages/basemap/doc/source/api/index.rst rename to doc/source/api/index.rst diff --git a/packages/basemap/doc/source/conf.py b/doc/source/conf.py similarity index 100% rename from packages/basemap/doc/source/conf.py rename to doc/source/conf.py diff --git a/packages/basemap/doc/source/index.rst b/doc/source/index.rst similarity index 100% rename from packages/basemap/doc/source/index.rst rename to doc/source/index.rst diff --git a/packages/basemap/doc/source/matplotlibrc b/doc/source/matplotlibrc similarity index 100% rename from packages/basemap/doc/source/matplotlibrc rename to doc/source/matplotlibrc diff --git a/packages/basemap/doc/source/users/aea.rst b/doc/source/users/aea.rst similarity index 100% rename from packages/basemap/doc/source/users/aea.rst rename to doc/source/users/aea.rst diff --git a/packages/basemap/doc/source/users/aeqd.rst b/doc/source/users/aeqd.rst similarity index 100% rename from packages/basemap/doc/source/users/aeqd.rst rename to doc/source/users/aeqd.rst diff --git a/packages/basemap/doc/source/users/cass.rst b/doc/source/users/cass.rst similarity index 100% rename from packages/basemap/doc/source/users/cass.rst rename to doc/source/users/cass.rst diff --git a/packages/basemap/doc/source/users/cea.rst b/doc/source/users/cea.rst similarity index 100% rename from packages/basemap/doc/source/users/cea.rst rename to doc/source/users/cea.rst diff --git a/packages/basemap/doc/source/users/cyl.rst b/doc/source/users/cyl.rst similarity index 100% rename from packages/basemap/doc/source/users/cyl.rst rename to doc/source/users/cyl.rst diff --git a/packages/basemap/doc/source/users/eck4.rst b/doc/source/users/eck4.rst similarity index 100% rename from packages/basemap/doc/source/users/eck4.rst rename to doc/source/users/eck4.rst diff --git a/packages/basemap/doc/source/users/eqdc.rst b/doc/source/users/eqdc.rst similarity index 100% rename from packages/basemap/doc/source/users/eqdc.rst rename to doc/source/users/eqdc.rst diff --git a/packages/basemap/doc/source/users/examples.rst b/doc/source/users/examples.rst similarity index 100% rename from packages/basemap/doc/source/users/examples.rst rename to doc/source/users/examples.rst diff --git a/packages/basemap/doc/source/users/figures/aea.py b/doc/source/users/figures/aea.py similarity index 100% rename from packages/basemap/doc/source/users/figures/aea.py rename to doc/source/users/figures/aea.py diff --git a/packages/basemap/doc/source/users/figures/aeqd.py b/doc/source/users/figures/aeqd.py similarity index 100% rename from packages/basemap/doc/source/users/figures/aeqd.py rename to doc/source/users/figures/aeqd.py diff --git a/packages/basemap/doc/source/users/figures/aeqd_fulldisk.py b/doc/source/users/figures/aeqd_fulldisk.py similarity index 100% rename from packages/basemap/doc/source/users/figures/aeqd_fulldisk.py rename to doc/source/users/figures/aeqd_fulldisk.py diff --git a/packages/basemap/doc/source/users/figures/azeqd.py b/doc/source/users/figures/azeqd.py similarity index 100% rename from packages/basemap/doc/source/users/figures/azeqd.py rename to doc/source/users/figures/azeqd.py diff --git a/packages/basemap/doc/source/users/figures/background1.py b/doc/source/users/figures/background1.py similarity index 100% rename from packages/basemap/doc/source/users/figures/background1.py rename to doc/source/users/figures/background1.py diff --git a/packages/basemap/doc/source/users/figures/background2.py b/doc/source/users/figures/background2.py similarity index 100% rename from packages/basemap/doc/source/users/figures/background2.py rename to doc/source/users/figures/background2.py diff --git a/packages/basemap/doc/source/users/figures/background3.py b/doc/source/users/figures/background3.py similarity index 100% rename from packages/basemap/doc/source/users/figures/background3.py rename to doc/source/users/figures/background3.py diff --git a/packages/basemap/doc/source/users/figures/background4.py b/doc/source/users/figures/background4.py similarity index 100% rename from packages/basemap/doc/source/users/figures/background4.py rename to doc/source/users/figures/background4.py diff --git a/packages/basemap/doc/source/users/figures/background5.py b/doc/source/users/figures/background5.py similarity index 100% rename from packages/basemap/doc/source/users/figures/background5.py rename to doc/source/users/figures/background5.py diff --git a/packages/basemap/doc/source/users/figures/cass.py b/doc/source/users/figures/cass.py similarity index 100% rename from packages/basemap/doc/source/users/figures/cass.py rename to doc/source/users/figures/cass.py diff --git a/packages/basemap/doc/source/users/figures/cea.py b/doc/source/users/figures/cea.py similarity index 100% rename from packages/basemap/doc/source/users/figures/cea.py rename to doc/source/users/figures/cea.py diff --git a/packages/basemap/doc/source/users/figures/contour1.py b/doc/source/users/figures/contour1.py similarity index 100% rename from packages/basemap/doc/source/users/figures/contour1.py rename to doc/source/users/figures/contour1.py diff --git a/packages/basemap/doc/source/users/figures/cyl.py b/doc/source/users/figures/cyl.py similarity index 100% rename from packages/basemap/doc/source/users/figures/cyl.py rename to doc/source/users/figures/cyl.py diff --git a/packages/basemap/doc/source/users/figures/eck4.py b/doc/source/users/figures/eck4.py similarity index 100% rename from packages/basemap/doc/source/users/figures/eck4.py rename to doc/source/users/figures/eck4.py diff --git a/packages/basemap/doc/source/users/figures/eqdc.py b/doc/source/users/figures/eqdc.py similarity index 100% rename from packages/basemap/doc/source/users/figures/eqdc.py rename to doc/source/users/figures/eqdc.py diff --git a/packages/basemap/doc/source/users/figures/gall.py b/doc/source/users/figures/gall.py similarity index 100% rename from packages/basemap/doc/source/users/figures/gall.py rename to doc/source/users/figures/gall.py diff --git a/packages/basemap/doc/source/users/figures/geos_full.py b/doc/source/users/figures/geos_full.py similarity index 100% rename from packages/basemap/doc/source/users/figures/geos_full.py rename to doc/source/users/figures/geos_full.py diff --git a/packages/basemap/doc/source/users/figures/geos_partial.py b/doc/source/users/figures/geos_partial.py similarity index 100% rename from packages/basemap/doc/source/users/figures/geos_partial.py rename to doc/source/users/figures/geos_partial.py diff --git a/packages/basemap/doc/source/users/figures/gnomon.py b/doc/source/users/figures/gnomon.py similarity index 100% rename from packages/basemap/doc/source/users/figures/gnomon.py rename to doc/source/users/figures/gnomon.py diff --git a/packages/basemap/doc/source/users/figures/graticule.py b/doc/source/users/figures/graticule.py similarity index 100% rename from packages/basemap/doc/source/users/figures/graticule.py rename to doc/source/users/figures/graticule.py diff --git a/packages/basemap/doc/source/users/figures/hammer.py b/doc/source/users/figures/hammer.py similarity index 100% rename from packages/basemap/doc/source/users/figures/hammer.py rename to doc/source/users/figures/hammer.py diff --git a/packages/basemap/doc/source/users/figures/hurrtracks.py b/doc/source/users/figures/hurrtracks.py similarity index 100% rename from packages/basemap/doc/source/users/figures/hurrtracks.py rename to doc/source/users/figures/hurrtracks.py diff --git a/packages/basemap/doc/source/users/figures/kav7.py b/doc/source/users/figures/kav7.py similarity index 100% rename from packages/basemap/doc/source/users/figures/kav7.py rename to doc/source/users/figures/kav7.py diff --git a/packages/basemap/doc/source/users/figures/laea.py b/doc/source/users/figures/laea.py similarity index 100% rename from packages/basemap/doc/source/users/figures/laea.py rename to doc/source/users/figures/laea.py diff --git a/packages/basemap/doc/source/users/figures/lcc.py b/doc/source/users/figures/lcc.py similarity index 100% rename from packages/basemap/doc/source/users/figures/lcc.py rename to doc/source/users/figures/lcc.py diff --git a/packages/basemap/doc/source/users/figures/mbtfpq.py b/doc/source/users/figures/mbtfpq.py similarity index 100% rename from packages/basemap/doc/source/users/figures/mbtfpq.py rename to doc/source/users/figures/mbtfpq.py diff --git a/packages/basemap/doc/source/users/figures/merc.py b/doc/source/users/figures/merc.py similarity index 100% rename from packages/basemap/doc/source/users/figures/merc.py rename to doc/source/users/figures/merc.py diff --git a/packages/basemap/doc/source/users/figures/mill.py b/doc/source/users/figures/mill.py similarity index 100% rename from packages/basemap/doc/source/users/figures/mill.py rename to doc/source/users/figures/mill.py diff --git a/packages/basemap/doc/source/users/figures/moll.py b/doc/source/users/figures/moll.py similarity index 100% rename from packages/basemap/doc/source/users/figures/moll.py rename to doc/source/users/figures/moll.py diff --git a/packages/basemap/doc/source/users/figures/npaeqd.py b/doc/source/users/figures/npaeqd.py similarity index 100% rename from packages/basemap/doc/source/users/figures/npaeqd.py rename to doc/source/users/figures/npaeqd.py diff --git a/packages/basemap/doc/source/users/figures/nplaea.py b/doc/source/users/figures/nplaea.py similarity index 100% rename from packages/basemap/doc/source/users/figures/nplaea.py rename to doc/source/users/figures/nplaea.py diff --git a/packages/basemap/doc/source/users/figures/npstere.py b/doc/source/users/figures/npstere.py similarity index 100% rename from packages/basemap/doc/source/users/figures/npstere.py rename to doc/source/users/figures/npstere.py diff --git a/packages/basemap/doc/source/users/figures/nsper_full.py b/doc/source/users/figures/nsper_full.py similarity index 100% rename from packages/basemap/doc/source/users/figures/nsper_full.py rename to doc/source/users/figures/nsper_full.py diff --git a/packages/basemap/doc/source/users/figures/nsper_partial.py b/doc/source/users/figures/nsper_partial.py similarity index 100% rename from packages/basemap/doc/source/users/figures/nsper_partial.py rename to doc/source/users/figures/nsper_partial.py diff --git a/packages/basemap/doc/source/users/figures/omerc.py b/doc/source/users/figures/omerc.py similarity index 100% rename from packages/basemap/doc/source/users/figures/omerc.py rename to doc/source/users/figures/omerc.py diff --git a/packages/basemap/doc/source/users/figures/ortho_full.py b/doc/source/users/figures/ortho_full.py similarity index 100% rename from packages/basemap/doc/source/users/figures/ortho_full.py rename to doc/source/users/figures/ortho_full.py diff --git a/packages/basemap/doc/source/users/figures/ortho_partial.py b/doc/source/users/figures/ortho_partial.py similarity index 100% rename from packages/basemap/doc/source/users/figures/ortho_partial.py rename to doc/source/users/figures/ortho_partial.py diff --git a/packages/basemap/doc/source/users/figures/plotargo.py b/doc/source/users/figures/plotargo.py similarity index 100% rename from packages/basemap/doc/source/users/figures/plotargo.py rename to doc/source/users/figures/plotargo.py diff --git a/packages/basemap/doc/source/users/figures/plotboulder.py b/doc/source/users/figures/plotboulder.py similarity index 100% rename from packages/basemap/doc/source/users/figures/plotboulder.py rename to doc/source/users/figures/plotboulder.py diff --git a/packages/basemap/doc/source/users/figures/plotdaynight.py b/doc/source/users/figures/plotdaynight.py similarity index 100% rename from packages/basemap/doc/source/users/figures/plotdaynight.py rename to doc/source/users/figures/plotdaynight.py diff --git a/packages/basemap/doc/source/users/figures/plotetopo5.py b/doc/source/users/figures/plotetopo5.py similarity index 100% rename from packages/basemap/doc/source/users/figures/plotetopo5.py rename to doc/source/users/figures/plotetopo5.py diff --git a/packages/basemap/doc/source/users/figures/plotgreatcircle.py b/doc/source/users/figures/plotgreatcircle.py similarity index 100% rename from packages/basemap/doc/source/users/figures/plotgreatcircle.py rename to doc/source/users/figures/plotgreatcircle.py diff --git a/packages/basemap/doc/source/users/figures/plothighsandlows.py b/doc/source/users/figures/plothighsandlows.py similarity index 100% rename from packages/basemap/doc/source/users/figures/plothighsandlows.py rename to doc/source/users/figures/plothighsandlows.py diff --git a/packages/basemap/doc/source/users/figures/plotprecip.py b/doc/source/users/figures/plotprecip.py similarity index 100% rename from packages/basemap/doc/source/users/figures/plotprecip.py rename to doc/source/users/figures/plotprecip.py diff --git a/packages/basemap/doc/source/users/figures/plotsst.py b/doc/source/users/figures/plotsst.py similarity index 100% rename from packages/basemap/doc/source/users/figures/plotsst.py rename to doc/source/users/figures/plotsst.py diff --git a/packages/basemap/doc/source/users/figures/plotwindvec.py b/doc/source/users/figures/plotwindvec.py similarity index 100% rename from packages/basemap/doc/source/users/figures/plotwindvec.py rename to doc/source/users/figures/plotwindvec.py diff --git a/packages/basemap/doc/source/users/figures/poly.py b/doc/source/users/figures/poly.py similarity index 100% rename from packages/basemap/doc/source/users/figures/poly.py rename to doc/source/users/figures/poly.py diff --git a/packages/basemap/doc/source/users/figures/robin.py b/doc/source/users/figures/robin.py similarity index 100% rename from packages/basemap/doc/source/users/figures/robin.py rename to doc/source/users/figures/robin.py diff --git a/packages/basemap/doc/source/users/figures/sinu.py b/doc/source/users/figures/sinu.py similarity index 100% rename from packages/basemap/doc/source/users/figures/sinu.py rename to doc/source/users/figures/sinu.py diff --git a/packages/basemap/doc/source/users/figures/spaeqd.py b/doc/source/users/figures/spaeqd.py similarity index 100% rename from packages/basemap/doc/source/users/figures/spaeqd.py rename to doc/source/users/figures/spaeqd.py diff --git a/packages/basemap/doc/source/users/figures/splaea.py b/doc/source/users/figures/splaea.py similarity index 100% rename from packages/basemap/doc/source/users/figures/splaea.py rename to doc/source/users/figures/splaea.py diff --git a/packages/basemap/doc/source/users/figures/spstere.py b/doc/source/users/figures/spstere.py similarity index 100% rename from packages/basemap/doc/source/users/figures/spstere.py rename to doc/source/users/figures/spstere.py diff --git a/packages/basemap/doc/source/users/figures/stere.py b/doc/source/users/figures/stere.py similarity index 100% rename from packages/basemap/doc/source/users/figures/stere.py rename to doc/source/users/figures/stere.py diff --git a/packages/basemap/doc/source/users/figures/tmerc.py b/doc/source/users/figures/tmerc.py similarity index 100% rename from packages/basemap/doc/source/users/figures/tmerc.py rename to doc/source/users/figures/tmerc.py diff --git a/packages/basemap/doc/source/users/figures/vandg.py b/doc/source/users/figures/vandg.py similarity index 100% rename from packages/basemap/doc/source/users/figures/vandg.py rename to doc/source/users/figures/vandg.py diff --git a/packages/basemap/doc/source/users/gall.rst b/doc/source/users/gall.rst similarity index 100% rename from packages/basemap/doc/source/users/gall.rst rename to doc/source/users/gall.rst diff --git a/packages/basemap/doc/source/users/geography.rst b/doc/source/users/geography.rst similarity index 100% rename from packages/basemap/doc/source/users/geography.rst rename to doc/source/users/geography.rst diff --git a/packages/basemap/doc/source/users/geos.rst b/doc/source/users/geos.rst similarity index 100% rename from packages/basemap/doc/source/users/geos.rst rename to doc/source/users/geos.rst diff --git a/packages/basemap/doc/source/users/gnomon.rst b/doc/source/users/gnomon.rst similarity index 100% rename from packages/basemap/doc/source/users/gnomon.rst rename to doc/source/users/gnomon.rst diff --git a/packages/basemap/doc/source/users/graticule.rst b/doc/source/users/graticule.rst similarity index 100% rename from packages/basemap/doc/source/users/graticule.rst rename to doc/source/users/graticule.rst diff --git a/packages/basemap/doc/source/users/hammer.rst b/doc/source/users/hammer.rst similarity index 100% rename from packages/basemap/doc/source/users/hammer.rst rename to doc/source/users/hammer.rst diff --git a/packages/basemap/doc/source/users/index.rst b/doc/source/users/index.rst similarity index 100% rename from packages/basemap/doc/source/users/index.rst rename to doc/source/users/index.rst diff --git a/packages/basemap/doc/source/users/installation.rst b/doc/source/users/installation.rst similarity index 100% rename from packages/basemap/doc/source/users/installation.rst rename to doc/source/users/installation.rst diff --git a/packages/basemap/doc/source/users/introduction.rst b/doc/source/users/introduction.rst similarity index 100% rename from packages/basemap/doc/source/users/introduction.rst rename to doc/source/users/introduction.rst diff --git a/packages/basemap/doc/source/users/kav7.rst b/doc/source/users/kav7.rst similarity index 100% rename from packages/basemap/doc/source/users/kav7.rst rename to doc/source/users/kav7.rst diff --git a/packages/basemap/doc/source/users/laea.rst b/doc/source/users/laea.rst similarity index 100% rename from packages/basemap/doc/source/users/laea.rst rename to doc/source/users/laea.rst diff --git a/packages/basemap/doc/source/users/lcc.rst b/doc/source/users/lcc.rst similarity index 100% rename from packages/basemap/doc/source/users/lcc.rst rename to doc/source/users/lcc.rst diff --git a/packages/basemap/doc/source/users/mapcoords.rst b/doc/source/users/mapcoords.rst similarity index 100% rename from packages/basemap/doc/source/users/mapcoords.rst rename to doc/source/users/mapcoords.rst diff --git a/packages/basemap/doc/source/users/mapsetup.rst b/doc/source/users/mapsetup.rst similarity index 100% rename from packages/basemap/doc/source/users/mapsetup.rst rename to doc/source/users/mapsetup.rst diff --git a/packages/basemap/doc/source/users/mbtfpq.rst b/doc/source/users/mbtfpq.rst similarity index 100% rename from packages/basemap/doc/source/users/mbtfpq.rst rename to doc/source/users/mbtfpq.rst diff --git a/packages/basemap/doc/source/users/merc.rst b/doc/source/users/merc.rst similarity index 100% rename from packages/basemap/doc/source/users/merc.rst rename to doc/source/users/merc.rst diff --git a/packages/basemap/doc/source/users/mill.rst b/doc/source/users/mill.rst similarity index 100% rename from packages/basemap/doc/source/users/mill.rst rename to doc/source/users/mill.rst diff --git a/packages/basemap/doc/source/users/moll.rst b/doc/source/users/moll.rst similarity index 100% rename from packages/basemap/doc/source/users/moll.rst rename to doc/source/users/moll.rst diff --git a/packages/basemap/doc/source/users/nsper.rst b/doc/source/users/nsper.rst similarity index 100% rename from packages/basemap/doc/source/users/nsper.rst rename to doc/source/users/nsper.rst diff --git a/packages/basemap/doc/source/users/omerc.rst b/doc/source/users/omerc.rst similarity index 100% rename from packages/basemap/doc/source/users/omerc.rst rename to doc/source/users/omerc.rst diff --git a/packages/basemap/doc/source/users/ortho.rst b/doc/source/users/ortho.rst similarity index 100% rename from packages/basemap/doc/source/users/ortho.rst rename to doc/source/users/ortho.rst diff --git a/packages/basemap/doc/source/users/paeqd.rst b/doc/source/users/paeqd.rst similarity index 100% rename from packages/basemap/doc/source/users/paeqd.rst rename to doc/source/users/paeqd.rst diff --git a/packages/basemap/doc/source/users/plaea.rst b/doc/source/users/plaea.rst similarity index 100% rename from packages/basemap/doc/source/users/plaea.rst rename to doc/source/users/plaea.rst diff --git a/packages/basemap/doc/source/users/poly.rst b/doc/source/users/poly.rst similarity index 100% rename from packages/basemap/doc/source/users/poly.rst rename to doc/source/users/poly.rst diff --git a/packages/basemap/doc/source/users/pstere.rst b/doc/source/users/pstere.rst similarity index 100% rename from packages/basemap/doc/source/users/pstere.rst rename to doc/source/users/pstere.rst diff --git a/packages/basemap/doc/source/users/robin.rst b/doc/source/users/robin.rst similarity index 100% rename from packages/basemap/doc/source/users/robin.rst rename to doc/source/users/robin.rst diff --git a/packages/basemap/doc/source/users/sinu.rst b/doc/source/users/sinu.rst similarity index 100% rename from packages/basemap/doc/source/users/sinu.rst rename to doc/source/users/sinu.rst diff --git a/packages/basemap/doc/source/users/stere.rst b/doc/source/users/stere.rst similarity index 100% rename from packages/basemap/doc/source/users/stere.rst rename to doc/source/users/stere.rst diff --git a/packages/basemap/doc/source/users/tmerc.rst b/doc/source/users/tmerc.rst similarity index 100% rename from packages/basemap/doc/source/users/tmerc.rst rename to doc/source/users/tmerc.rst diff --git a/packages/basemap/doc/source/users/vandg.rst b/doc/source/users/vandg.rst similarity index 100% rename from packages/basemap/doc/source/users/vandg.rst rename to doc/source/users/vandg.rst diff --git a/packages/basemap/LICENSE b/packages/basemap/LICENSE deleted file mode 100644 index 68cbd3d24..000000000 --- a/packages/basemap/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) 2011-2014 Jeffrey Whitaker -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 -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/packages/basemap/pyproject.toml b/pyproject.toml similarity index 100% rename from packages/basemap/pyproject.toml rename to pyproject.toml diff --git a/packages/basemap/setup.py b/setup.py similarity index 100% rename from packages/basemap/setup.py rename to setup.py diff --git a/packages/basemap/src/_geoslib.pyx b/src/_geoslib.pyx similarity index 100% rename from packages/basemap/src/_geoslib.pyx rename to src/_geoslib.pyx diff --git a/packages/basemap/src/mpl_toolkits/basemap/__init__.py b/src/mpl_toolkits/basemap/__init__.py similarity index 100% rename from packages/basemap/src/mpl_toolkits/basemap/__init__.py rename to src/mpl_toolkits/basemap/__init__.py diff --git a/packages/basemap/src/mpl_toolkits/basemap/cm.py b/src/mpl_toolkits/basemap/cm.py similarity index 100% rename from packages/basemap/src/mpl_toolkits/basemap/cm.py rename to src/mpl_toolkits/basemap/cm.py diff --git a/packages/basemap/src/mpl_toolkits/basemap/diagnostic.py b/src/mpl_toolkits/basemap/diagnostic.py similarity index 100% rename from packages/basemap/src/mpl_toolkits/basemap/diagnostic.py rename to src/mpl_toolkits/basemap/diagnostic.py diff --git a/packages/basemap/src/mpl_toolkits/basemap/proj.py b/src/mpl_toolkits/basemap/proj.py similarity index 100% rename from packages/basemap/src/mpl_toolkits/basemap/proj.py rename to src/mpl_toolkits/basemap/proj.py diff --git a/packages/basemap/src/mpl_toolkits/basemap/solar.py b/src/mpl_toolkits/basemap/solar.py similarity index 100% rename from packages/basemap/src/mpl_toolkits/basemap/solar.py rename to src/mpl_toolkits/basemap/solar.py diff --git a/packages/basemap/test/conftest.py b/test/conftest.py similarity index 100% rename from packages/basemap/test/conftest.py rename to test/conftest.py diff --git a/packages/basemap/test/mpl_toolkits/basemap/test_Basemap.py b/test/mpl_toolkits/basemap/test_Basemap.py similarity index 100% rename from packages/basemap/test/mpl_toolkits/basemap/test_Basemap.py rename to test/mpl_toolkits/basemap/test_Basemap.py diff --git a/packages/basemap/test/mpl_toolkits/basemap/test_cm.py b/test/mpl_toolkits/basemap/test_cm.py similarity index 100% rename from packages/basemap/test/mpl_toolkits/basemap/test_cm.py rename to test/mpl_toolkits/basemap/test_cm.py diff --git a/packages/basemap/test/mpl_toolkits/basemap/test_diagnostic.py b/test/mpl_toolkits/basemap/test_diagnostic.py similarity index 100% rename from packages/basemap/test/mpl_toolkits/basemap/test_diagnostic.py rename to test/mpl_toolkits/basemap/test_diagnostic.py diff --git a/packages/basemap/test/mpl_toolkits/basemap/test_proj.py b/test/mpl_toolkits/basemap/test_proj.py similarity index 100% rename from packages/basemap/test/mpl_toolkits/basemap/test_proj.py rename to test/mpl_toolkits/basemap/test_proj.py diff --git a/packages/basemap/test/mpl_toolkits/test_basemap.py b/test/mpl_toolkits/test_basemap.py similarity index 100% rename from packages/basemap/test/mpl_toolkits/test_basemap.py rename to test/mpl_toolkits/test_basemap.py diff --git a/packages/basemap/utils/GeosLibrary.py b/utils/GeosLibrary.py similarity index 100% rename from packages/basemap/utils/GeosLibrary.py rename to utils/GeosLibrary.py diff --git a/packages/basemap/utils/__init__.py b/utils/__init__.py similarity index 100% rename from packages/basemap/utils/__init__.py rename to utils/__init__.py From b82a952f3cac69c81fb58203c160146d7a849312 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 11:41:53 +0200 Subject: [PATCH 155/188] Consolide README file at project root folder --- README.md | 100 ++++++++++++++++++------------------- packages/basemap/README.md | 50 ------------------- 2 files changed, 48 insertions(+), 102 deletions(-) delete mode 100644 packages/basemap/README.md diff --git a/README.md b/README.md index 21b98ad39..e193074a3 100644 --- a/README.md +++ b/README.md @@ -1,39 +1,12 @@ -# Basemap +# basemap -Plot on map projections (with coastlines and political boundaries) -using matplotlib. - -## Requirements - -Basic requirements are the following: - -* Python 2.6 (or higher) -* [matplotlib](https://github.com/matplotlib/matplotlib) -* [numpy](https://github.com/numpy/numpy) -* [pyproj](https://github.com/pyproj4/pyproj) -* [pyshp](https://github.com/GeospatialPython/pyshp) - -Optional requirements include: - -* [OWSLib](https://github.com/geopython/OWSLib). It is needed for the - method `Basemap.wmsimage`. - -* [Pillow](https://github.com/python-pillow/Pillow). It is needed for - the methods `Basemap.bluemarble`, `Basemap.etopo`, - `Basemap.shadedrelief` and `Basemap.warpimage`. +Plot on map projections (with coastlines and political boundaries) using +[`matplotlib`]. ## Installation -The `basemap-data` and `basemap-data-hires` packages are available in -PyPI and can be installed with [`pip`](https://pip.pypa.io/): -```sh -python -m pip install basemap-data -python -m pip install basemap-data-hires -``` - -Precompiled `basemap` binary wheels for Windows and GNU/Linux -(architectures x86 and x64, Python 2.7 and 3.5+) as well as for MacOS -(architectures x64 and arm64, Python 3.9+) are also available in PyPI: +Precompiled binary wheels for Windows, GNU/Linux and MacOS are available +on PyPI and can be installed with [`pip`]: ```sh python -m pip install basemap ``` @@ -45,11 +18,9 @@ on GitHub as indicated in the following steps: - [cython](https://github.com/cython/cython) - [numpy](https://github.com/numpy/numpy) -2. Download the `basemap` source code and move to the `packages/basemap` - folder: +2. Download the `basemap` source code: ```sh git clone --depth 1 https://github.com/matplotlib/basemap.git - cd basemap/packages/basemap ``` 3. Build the [GEOS](https://github.com/libgeos/geos) library. You may @@ -78,29 +49,30 @@ on GitHub as indicated in the following steps: python -c "from mpl_toolkits.basemap import Basemap" ``` -## License +## Requirements + +This package depends on [`basemap-data`] with the basic [`basemap`] +data assets supporting the essential functionality. -The source code and data assets are under the following licenses: +This package depends optionally on [`basemap-data-hires`] with the +high-resolution data assets, which can be installed with [`pip`]: +```sh +python -m pip install basemap-data-hires +``` -* `basemap`: [MIT]. - * GEOS bundled dynamic library is under the [LGPL-2.1-only] license. -* `basemap-data`: [LGPL-3.0-or-later]. - * The EPSG file and the JPG images are also under the [MIT] license. -* `basemap-data-hires`: [LGPL-3.0-or-later]. +This package depends optionally on [`OWSLib`] for the `Basemap` method +`Basemap.wmsimage`. -For a full description, please visit the `README` and `LICENSE` files of -each package. +## License -[MIT]: -https://spdx.org/licenses/MIT.html -[LGPL-2.1-only]: -https://spdx.org/licenses/LGPL-2.1-only.html -[LGPL-3.0-or-later]: -https://spdx.org/licenses/LGPL-3.0-or-later.html +The library is licensed under the terms of the [MIT] license (see +[`LICENSE`]). The GEOS dynamic library bundled with the package wheels +is provided under the terms of the [LGPL-2.1-only] license as given in +[`LICENSE.geos`]. ## Documentation -See https://matplotlib.org/basemap/ +See https://matplotlib.org/basemap/. See scripts in `examples` directory for example usage. @@ -130,4 +102,28 @@ situations, what is the inside of a coastline polygon can be ambiguous, and the outside may be filled instead of the inside. A workaround is to change the map projection region slightly or mask the land areas with the `Basemap.drawlsmask` method instead of filling the coastline -polygons (this is illustrated in the `ortho_demo.py` example). +polygons (this is illustrated in the `ortho_demo.py` example). + + +[`pip`]: +https://pip.pypa.io/ +[`matplotlib`]: +https://matplotlib.org/ +[`basemap`]: +https://matplotlib.org/basemap/ +[`basemap-data`]: +https://pypi.org/project/basemap-data +[`basemap-data-hires`]: +https://pypi.org/project/basemap-data-hires +[`OWSLib`]: +https://pypi.org/project/OWSLib + +[MIT]: +https://spdx.org/licenses/MIT.html +[LGPL-2.1-only]: +https://spdx.org/licenses/LGPL-2.1-only.html + +[`LICENSE`]: +https://github.com/matplotlib/basemap/blob/v2.0.0/LICENSE +[`LICENSE.geos`]: +https://github.com/matplotlib/basemap/blob/v2.0.0/LICENSE.geos diff --git a/packages/basemap/README.md b/packages/basemap/README.md deleted file mode 100644 index be631e774..000000000 --- a/packages/basemap/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# basemap - -Plot on map projections (with coastlines and political boundaries) using -[`matplotlib`]. - -This package depends on the support package [`basemap-data`] with the -basic [`basemap`] data assets, and optionally on the support package -[`basemap-data-hires`] with high-resolution data assets. - -## Installation - -Precompiled binary wheels for Windows and GNU/Linux are available in -PyPI (architectures x86 and x64, Python 2.7 and 3.5+) and can be -installed with [`pip`]: -```sh -python -m pip install basemap -``` - -If you need to install from source, please visit the -[GitHub repository](https://github.com/matplotlib/basemap) for a -step-by-step description. - -## License - -The library is licensed under the terms of the [MIT] license (see -[`LICENSE`]). The GEOS dynamic library bundled with the package wheels -is provided under the terms of the [LGPLv2.1] license as given in -[`LICENSE.geos`]. - - -[`matplotlib`]: -https://matplotlib.org/ -[`basemap`]: -https://matplotlib.org/basemap/ -[`basemap-data`]: -https://pypi.org/project/basemap-data -[`basemap-data-hires`]: -https://pypi.org/project/basemap-data-hires -[`pip`]: -https://pip.pypa.io/ - -[LGPLv2.1]: -https://spdx.org/licenses/LGPL-2.1-only.html -[MIT]: -https://spdx.org/licenses/MIT.html - -[`LICENSE`]: -https://github.com/matplotlib/basemap/blob/v1.4.1/packages/basemap/LICENSE -[`LICENSE.geos`]: -https://github.com/matplotlib/basemap/blob/v1.4.1/packages/basemap/LICENSE.geos From 4f709cd84da77debc42db6886438af629c69d65d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 11:43:15 +0200 Subject: [PATCH 156/188] Move examples folder inside doc folder --- .gitignore | 2 +- .../examples}/200706041200-msg-ch01-SAfrica.jpg | Bin {examples => doc/examples}/500hgtdata.gz | Bin {examples => doc/examples}/500hgtlats.gz | Bin {examples => doc/examples}/500hgtlons.gz | Bin {examples => doc/examples}/C02562.orog.nc | Bin {examples => doc/examples}/README | 0 {examples => doc/examples}/allskymap.py | 0 {examples => doc/examples}/allskymap_cr_example.py | 0 {examples => doc/examples}/animate.py | 0 {examples => doc/examples}/barb_demo.py | 0 {examples => doc/examples}/camx.sample.nc | Bin {examples => doc/examples}/ccsm_popgrid.nc | Bin {examples => doc/examples}/ccsm_popgrid.py | 0 {examples => doc/examples}/cities.dbf | Bin {examples => doc/examples}/cities.shp | Bin {examples => doc/examples}/cities.shx | Bin {examples => doc/examples}/contour_demo.py | 0 {examples => doc/examples}/counties.py | 0 {examples => doc/examples}/cubed_sphere.py | 0 {examples => doc/examples}/customticks.py | 0 {examples => doc/examples}/daynight.py | 0 {examples => doc/examples}/earth_lights_lrg.jpg | Bin {examples => doc/examples}/embedding_map_in_wx.py | 0 {examples => doc/examples}/etopo20data.gz | Bin {examples => doc/examples}/etopo20lats.gz | Bin {examples => doc/examples}/etopo20lons.gz | Bin {examples => doc/examples}/fcover.dat | 0 {examples => doc/examples}/fcstmaps.py | 0 {examples => doc/examples}/fcstmaps_axesgrid.py | 0 {examples => doc/examples}/fillstates.py | 0 {examples => doc/examples}/garp.py | 0 {examples => doc/examples}/geos_demo.py | 0 {examples => doc/examples}/geos_demo_2.py | 0 {examples => doc/examples}/geos_demo_3.py | 0 {examples => doc/examples}/hexbin_demo.py | 0 {examples => doc/examples}/hires.py | 0 {examples => doc/examples}/huralll020.dbf | Bin {examples => doc/examples}/huralll020.shp | Bin {examples => doc/examples}/huralll020.shx | Bin {examples => doc/examples}/hurrtracks.py | 0 .../examples}/land_shallow_topo_2048.jpg | Bin {examples => doc/examples}/lic_demo.py | 0 {examples => doc/examples}/make_inset.py | 0 {examples => doc/examples}/maskoceans.py | 0 {examples => doc/examples}/nsper_demo.py | 0 .../examples}/nws_precip_conus_20061222.nc | Bin {examples => doc/examples}/nytolondon.py | 0 {examples => doc/examples}/ortho_demo.py | 0 {examples => doc/examples}/panelplot.py | 0 {examples => doc/examples}/plot_tissot.py | 0 {examples => doc/examples}/plotcities.py | 0 {examples => doc/examples}/plothighsandlows.py | 0 {examples => doc/examples}/ploticos.py | 0 {examples => doc/examples}/plotmap.py | 0 {examples => doc/examples}/plotmap_masked.py | 0 {examples => doc/examples}/plotmap_oo.py | 0 {examples => doc/examples}/plotmap_shaded.py | 0 {examples => doc/examples}/plotozone.py | 0 {examples => doc/examples}/plotprecip.py | 0 {examples => doc/examples}/plotsst.py | 0 {examples => doc/examples}/polarmaps.py | 0 {examples => doc/examples}/quiver_demo.py | 0 {examples => doc/examples}/randompoints.py | 0 {examples => doc/examples}/rita.nc | Bin {examples => doc/examples}/run_all.py | 0 {examples => doc/examples}/save_background.py | 0 {examples => doc/examples}/setwh.py | 0 {examples => doc/examples}/shiftdata.py | 0 {examples => doc/examples}/show_colormaps.py | 0 {examples => doc/examples}/simpletest.py | 0 {examples => doc/examples}/simpletest_oo.py | 0 {examples => doc/examples}/st99_d00.dbf | Bin {examples => doc/examples}/st99_d00.shp | Bin {examples => doc/examples}/st99_d00.shx | Bin {examples => doc/examples}/streamplot_demo.py | 0 {examples => doc/examples}/test.py | 0 {examples => doc/examples}/test_rotpole.py | 0 {examples => doc/examples}/testarcgis.py | 0 {examples => doc/examples}/testgdal.py | 0 {examples => doc/examples}/testwmsimage.py | 0 {examples => doc/examples}/us_25m.dem | 0 {examples => doc/examples}/utmtest.py | 0 {examples => doc/examples}/warpimage.py | 0 {examples => doc/examples}/wiki_example.py | 0 ...wm201_Arctic_JJA_1990-2008_moyenneDesMoyennes.nc | Bin 86 files changed, 1 insertion(+), 1 deletion(-) rename {examples => doc/examples}/200706041200-msg-ch01-SAfrica.jpg (100%) rename {examples => doc/examples}/500hgtdata.gz (100%) rename {examples => doc/examples}/500hgtlats.gz (100%) rename {examples => doc/examples}/500hgtlons.gz (100%) rename {examples => doc/examples}/C02562.orog.nc (100%) rename {examples => doc/examples}/README (100%) rename {examples => doc/examples}/allskymap.py (100%) rename {examples => doc/examples}/allskymap_cr_example.py (100%) rename {examples => doc/examples}/animate.py (100%) rename {examples => doc/examples}/barb_demo.py (100%) rename {examples => doc/examples}/camx.sample.nc (100%) rename {examples => doc/examples}/ccsm_popgrid.nc (100%) rename {examples => doc/examples}/ccsm_popgrid.py (100%) rename {examples => doc/examples}/cities.dbf (100%) rename {examples => doc/examples}/cities.shp (100%) rename {examples => doc/examples}/cities.shx (100%) rename {examples => doc/examples}/contour_demo.py (100%) rename {examples => doc/examples}/counties.py (100%) rename {examples => doc/examples}/cubed_sphere.py (100%) rename {examples => doc/examples}/customticks.py (100%) rename {examples => doc/examples}/daynight.py (100%) rename {examples => doc/examples}/earth_lights_lrg.jpg (100%) rename {examples => doc/examples}/embedding_map_in_wx.py (100%) rename {examples => doc/examples}/etopo20data.gz (100%) rename {examples => doc/examples}/etopo20lats.gz (100%) rename {examples => doc/examples}/etopo20lons.gz (100%) rename {examples => doc/examples}/fcover.dat (100%) rename {examples => doc/examples}/fcstmaps.py (100%) rename {examples => doc/examples}/fcstmaps_axesgrid.py (100%) rename {examples => doc/examples}/fillstates.py (100%) rename {examples => doc/examples}/garp.py (100%) rename {examples => doc/examples}/geos_demo.py (100%) rename {examples => doc/examples}/geos_demo_2.py (100%) rename {examples => doc/examples}/geos_demo_3.py (100%) rename {examples => doc/examples}/hexbin_demo.py (100%) rename {examples => doc/examples}/hires.py (100%) rename {examples => doc/examples}/huralll020.dbf (100%) rename {examples => doc/examples}/huralll020.shp (100%) rename {examples => doc/examples}/huralll020.shx (100%) rename {examples => doc/examples}/hurrtracks.py (100%) rename {examples => doc/examples}/land_shallow_topo_2048.jpg (100%) rename {examples => doc/examples}/lic_demo.py (100%) rename {examples => doc/examples}/make_inset.py (100%) rename {examples => doc/examples}/maskoceans.py (100%) rename {examples => doc/examples}/nsper_demo.py (100%) rename {examples => doc/examples}/nws_precip_conus_20061222.nc (100%) rename {examples => doc/examples}/nytolondon.py (100%) rename {examples => doc/examples}/ortho_demo.py (100%) rename {examples => doc/examples}/panelplot.py (100%) rename {examples => doc/examples}/plot_tissot.py (100%) rename {examples => doc/examples}/plotcities.py (100%) rename {examples => doc/examples}/plothighsandlows.py (100%) rename {examples => doc/examples}/ploticos.py (100%) rename {examples => doc/examples}/plotmap.py (100%) rename {examples => doc/examples}/plotmap_masked.py (100%) rename {examples => doc/examples}/plotmap_oo.py (100%) rename {examples => doc/examples}/plotmap_shaded.py (100%) rename {examples => doc/examples}/plotozone.py (100%) rename {examples => doc/examples}/plotprecip.py (100%) rename {examples => doc/examples}/plotsst.py (100%) rename {examples => doc/examples}/polarmaps.py (100%) rename {examples => doc/examples}/quiver_demo.py (100%) rename {examples => doc/examples}/randompoints.py (100%) rename {examples => doc/examples}/rita.nc (100%) rename {examples => doc/examples}/run_all.py (100%) rename {examples => doc/examples}/save_background.py (100%) rename {examples => doc/examples}/setwh.py (100%) rename {examples => doc/examples}/shiftdata.py (100%) rename {examples => doc/examples}/show_colormaps.py (100%) rename {examples => doc/examples}/simpletest.py (100%) rename {examples => doc/examples}/simpletest_oo.py (100%) rename {examples => doc/examples}/st99_d00.dbf (100%) rename {examples => doc/examples}/st99_d00.shp (100%) rename {examples => doc/examples}/st99_d00.shx (100%) rename {examples => doc/examples}/streamplot_demo.py (100%) rename {examples => doc/examples}/test.py (100%) rename {examples => doc/examples}/test_rotpole.py (100%) rename {examples => doc/examples}/testarcgis.py (100%) rename {examples => doc/examples}/testgdal.py (100%) rename {examples => doc/examples}/testwmsimage.py (100%) rename {examples => doc/examples}/us_25m.dem (100%) rename {examples => doc/examples}/utmtest.py (100%) rename {examples => doc/examples}/warpimage.py (100%) rename {examples => doc/examples}/wiki_example.py (100%) rename {examples => doc/examples}/wm201_Arctic_JJA_1990-2008_moyenneDesMoyennes.nc (100%) diff --git a/.gitignore b/.gitignore index 0b1237770..72b064754 100644 --- a/.gitignore +++ b/.gitignore @@ -33,7 +33,7 @@ Thumbs.db # Things specific to this project. *.pickle -examples/*.png +doc/examples/*.png doc/users/installing.rst doc/_static/matplotlibrc doc/_templates/gallery.html diff --git a/examples/200706041200-msg-ch01-SAfrica.jpg b/doc/examples/200706041200-msg-ch01-SAfrica.jpg similarity index 100% rename from examples/200706041200-msg-ch01-SAfrica.jpg rename to doc/examples/200706041200-msg-ch01-SAfrica.jpg diff --git a/examples/500hgtdata.gz b/doc/examples/500hgtdata.gz similarity index 100% rename from examples/500hgtdata.gz rename to doc/examples/500hgtdata.gz diff --git a/examples/500hgtlats.gz b/doc/examples/500hgtlats.gz similarity index 100% rename from examples/500hgtlats.gz rename to doc/examples/500hgtlats.gz diff --git a/examples/500hgtlons.gz b/doc/examples/500hgtlons.gz similarity index 100% rename from examples/500hgtlons.gz rename to doc/examples/500hgtlons.gz diff --git a/examples/C02562.orog.nc b/doc/examples/C02562.orog.nc similarity index 100% rename from examples/C02562.orog.nc rename to doc/examples/C02562.orog.nc diff --git a/examples/README b/doc/examples/README similarity index 100% rename from examples/README rename to doc/examples/README diff --git a/examples/allskymap.py b/doc/examples/allskymap.py similarity index 100% rename from examples/allskymap.py rename to doc/examples/allskymap.py diff --git a/examples/allskymap_cr_example.py b/doc/examples/allskymap_cr_example.py similarity index 100% rename from examples/allskymap_cr_example.py rename to doc/examples/allskymap_cr_example.py diff --git a/examples/animate.py b/doc/examples/animate.py similarity index 100% rename from examples/animate.py rename to doc/examples/animate.py diff --git a/examples/barb_demo.py b/doc/examples/barb_demo.py similarity index 100% rename from examples/barb_demo.py rename to doc/examples/barb_demo.py diff --git a/examples/camx.sample.nc b/doc/examples/camx.sample.nc similarity index 100% rename from examples/camx.sample.nc rename to doc/examples/camx.sample.nc diff --git a/examples/ccsm_popgrid.nc b/doc/examples/ccsm_popgrid.nc similarity index 100% rename from examples/ccsm_popgrid.nc rename to doc/examples/ccsm_popgrid.nc diff --git a/examples/ccsm_popgrid.py b/doc/examples/ccsm_popgrid.py similarity index 100% rename from examples/ccsm_popgrid.py rename to doc/examples/ccsm_popgrid.py diff --git a/examples/cities.dbf b/doc/examples/cities.dbf similarity index 100% rename from examples/cities.dbf rename to doc/examples/cities.dbf diff --git a/examples/cities.shp b/doc/examples/cities.shp similarity index 100% rename from examples/cities.shp rename to doc/examples/cities.shp diff --git a/examples/cities.shx b/doc/examples/cities.shx similarity index 100% rename from examples/cities.shx rename to doc/examples/cities.shx diff --git a/examples/contour_demo.py b/doc/examples/contour_demo.py similarity index 100% rename from examples/contour_demo.py rename to doc/examples/contour_demo.py diff --git a/examples/counties.py b/doc/examples/counties.py similarity index 100% rename from examples/counties.py rename to doc/examples/counties.py diff --git a/examples/cubed_sphere.py b/doc/examples/cubed_sphere.py similarity index 100% rename from examples/cubed_sphere.py rename to doc/examples/cubed_sphere.py diff --git a/examples/customticks.py b/doc/examples/customticks.py similarity index 100% rename from examples/customticks.py rename to doc/examples/customticks.py diff --git a/examples/daynight.py b/doc/examples/daynight.py similarity index 100% rename from examples/daynight.py rename to doc/examples/daynight.py diff --git a/examples/earth_lights_lrg.jpg b/doc/examples/earth_lights_lrg.jpg similarity index 100% rename from examples/earth_lights_lrg.jpg rename to doc/examples/earth_lights_lrg.jpg diff --git a/examples/embedding_map_in_wx.py b/doc/examples/embedding_map_in_wx.py similarity index 100% rename from examples/embedding_map_in_wx.py rename to doc/examples/embedding_map_in_wx.py diff --git a/examples/etopo20data.gz b/doc/examples/etopo20data.gz similarity index 100% rename from examples/etopo20data.gz rename to doc/examples/etopo20data.gz diff --git a/examples/etopo20lats.gz b/doc/examples/etopo20lats.gz similarity index 100% rename from examples/etopo20lats.gz rename to doc/examples/etopo20lats.gz diff --git a/examples/etopo20lons.gz b/doc/examples/etopo20lons.gz similarity index 100% rename from examples/etopo20lons.gz rename to doc/examples/etopo20lons.gz diff --git a/examples/fcover.dat b/doc/examples/fcover.dat similarity index 100% rename from examples/fcover.dat rename to doc/examples/fcover.dat diff --git a/examples/fcstmaps.py b/doc/examples/fcstmaps.py similarity index 100% rename from examples/fcstmaps.py rename to doc/examples/fcstmaps.py diff --git a/examples/fcstmaps_axesgrid.py b/doc/examples/fcstmaps_axesgrid.py similarity index 100% rename from examples/fcstmaps_axesgrid.py rename to doc/examples/fcstmaps_axesgrid.py diff --git a/examples/fillstates.py b/doc/examples/fillstates.py similarity index 100% rename from examples/fillstates.py rename to doc/examples/fillstates.py diff --git a/examples/garp.py b/doc/examples/garp.py similarity index 100% rename from examples/garp.py rename to doc/examples/garp.py diff --git a/examples/geos_demo.py b/doc/examples/geos_demo.py similarity index 100% rename from examples/geos_demo.py rename to doc/examples/geos_demo.py diff --git a/examples/geos_demo_2.py b/doc/examples/geos_demo_2.py similarity index 100% rename from examples/geos_demo_2.py rename to doc/examples/geos_demo_2.py diff --git a/examples/geos_demo_3.py b/doc/examples/geos_demo_3.py similarity index 100% rename from examples/geos_demo_3.py rename to doc/examples/geos_demo_3.py diff --git a/examples/hexbin_demo.py b/doc/examples/hexbin_demo.py similarity index 100% rename from examples/hexbin_demo.py rename to doc/examples/hexbin_demo.py diff --git a/examples/hires.py b/doc/examples/hires.py similarity index 100% rename from examples/hires.py rename to doc/examples/hires.py diff --git a/examples/huralll020.dbf b/doc/examples/huralll020.dbf similarity index 100% rename from examples/huralll020.dbf rename to doc/examples/huralll020.dbf diff --git a/examples/huralll020.shp b/doc/examples/huralll020.shp similarity index 100% rename from examples/huralll020.shp rename to doc/examples/huralll020.shp diff --git a/examples/huralll020.shx b/doc/examples/huralll020.shx similarity index 100% rename from examples/huralll020.shx rename to doc/examples/huralll020.shx diff --git a/examples/hurrtracks.py b/doc/examples/hurrtracks.py similarity index 100% rename from examples/hurrtracks.py rename to doc/examples/hurrtracks.py diff --git a/examples/land_shallow_topo_2048.jpg b/doc/examples/land_shallow_topo_2048.jpg similarity index 100% rename from examples/land_shallow_topo_2048.jpg rename to doc/examples/land_shallow_topo_2048.jpg diff --git a/examples/lic_demo.py b/doc/examples/lic_demo.py similarity index 100% rename from examples/lic_demo.py rename to doc/examples/lic_demo.py diff --git a/examples/make_inset.py b/doc/examples/make_inset.py similarity index 100% rename from examples/make_inset.py rename to doc/examples/make_inset.py diff --git a/examples/maskoceans.py b/doc/examples/maskoceans.py similarity index 100% rename from examples/maskoceans.py rename to doc/examples/maskoceans.py diff --git a/examples/nsper_demo.py b/doc/examples/nsper_demo.py similarity index 100% rename from examples/nsper_demo.py rename to doc/examples/nsper_demo.py diff --git a/examples/nws_precip_conus_20061222.nc b/doc/examples/nws_precip_conus_20061222.nc similarity index 100% rename from examples/nws_precip_conus_20061222.nc rename to doc/examples/nws_precip_conus_20061222.nc diff --git a/examples/nytolondon.py b/doc/examples/nytolondon.py similarity index 100% rename from examples/nytolondon.py rename to doc/examples/nytolondon.py diff --git a/examples/ortho_demo.py b/doc/examples/ortho_demo.py similarity index 100% rename from examples/ortho_demo.py rename to doc/examples/ortho_demo.py diff --git a/examples/panelplot.py b/doc/examples/panelplot.py similarity index 100% rename from examples/panelplot.py rename to doc/examples/panelplot.py diff --git a/examples/plot_tissot.py b/doc/examples/plot_tissot.py similarity index 100% rename from examples/plot_tissot.py rename to doc/examples/plot_tissot.py diff --git a/examples/plotcities.py b/doc/examples/plotcities.py similarity index 100% rename from examples/plotcities.py rename to doc/examples/plotcities.py diff --git a/examples/plothighsandlows.py b/doc/examples/plothighsandlows.py similarity index 100% rename from examples/plothighsandlows.py rename to doc/examples/plothighsandlows.py diff --git a/examples/ploticos.py b/doc/examples/ploticos.py similarity index 100% rename from examples/ploticos.py rename to doc/examples/ploticos.py diff --git a/examples/plotmap.py b/doc/examples/plotmap.py similarity index 100% rename from examples/plotmap.py rename to doc/examples/plotmap.py diff --git a/examples/plotmap_masked.py b/doc/examples/plotmap_masked.py similarity index 100% rename from examples/plotmap_masked.py rename to doc/examples/plotmap_masked.py diff --git a/examples/plotmap_oo.py b/doc/examples/plotmap_oo.py similarity index 100% rename from examples/plotmap_oo.py rename to doc/examples/plotmap_oo.py diff --git a/examples/plotmap_shaded.py b/doc/examples/plotmap_shaded.py similarity index 100% rename from examples/plotmap_shaded.py rename to doc/examples/plotmap_shaded.py diff --git a/examples/plotozone.py b/doc/examples/plotozone.py similarity index 100% rename from examples/plotozone.py rename to doc/examples/plotozone.py diff --git a/examples/plotprecip.py b/doc/examples/plotprecip.py similarity index 100% rename from examples/plotprecip.py rename to doc/examples/plotprecip.py diff --git a/examples/plotsst.py b/doc/examples/plotsst.py similarity index 100% rename from examples/plotsst.py rename to doc/examples/plotsst.py diff --git a/examples/polarmaps.py b/doc/examples/polarmaps.py similarity index 100% rename from examples/polarmaps.py rename to doc/examples/polarmaps.py diff --git a/examples/quiver_demo.py b/doc/examples/quiver_demo.py similarity index 100% rename from examples/quiver_demo.py rename to doc/examples/quiver_demo.py diff --git a/examples/randompoints.py b/doc/examples/randompoints.py similarity index 100% rename from examples/randompoints.py rename to doc/examples/randompoints.py diff --git a/examples/rita.nc b/doc/examples/rita.nc similarity index 100% rename from examples/rita.nc rename to doc/examples/rita.nc diff --git a/examples/run_all.py b/doc/examples/run_all.py similarity index 100% rename from examples/run_all.py rename to doc/examples/run_all.py diff --git a/examples/save_background.py b/doc/examples/save_background.py similarity index 100% rename from examples/save_background.py rename to doc/examples/save_background.py diff --git a/examples/setwh.py b/doc/examples/setwh.py similarity index 100% rename from examples/setwh.py rename to doc/examples/setwh.py diff --git a/examples/shiftdata.py b/doc/examples/shiftdata.py similarity index 100% rename from examples/shiftdata.py rename to doc/examples/shiftdata.py diff --git a/examples/show_colormaps.py b/doc/examples/show_colormaps.py similarity index 100% rename from examples/show_colormaps.py rename to doc/examples/show_colormaps.py diff --git a/examples/simpletest.py b/doc/examples/simpletest.py similarity index 100% rename from examples/simpletest.py rename to doc/examples/simpletest.py diff --git a/examples/simpletest_oo.py b/doc/examples/simpletest_oo.py similarity index 100% rename from examples/simpletest_oo.py rename to doc/examples/simpletest_oo.py diff --git a/examples/st99_d00.dbf b/doc/examples/st99_d00.dbf similarity index 100% rename from examples/st99_d00.dbf rename to doc/examples/st99_d00.dbf diff --git a/examples/st99_d00.shp b/doc/examples/st99_d00.shp similarity index 100% rename from examples/st99_d00.shp rename to doc/examples/st99_d00.shp diff --git a/examples/st99_d00.shx b/doc/examples/st99_d00.shx similarity index 100% rename from examples/st99_d00.shx rename to doc/examples/st99_d00.shx diff --git a/examples/streamplot_demo.py b/doc/examples/streamplot_demo.py similarity index 100% rename from examples/streamplot_demo.py rename to doc/examples/streamplot_demo.py diff --git a/examples/test.py b/doc/examples/test.py similarity index 100% rename from examples/test.py rename to doc/examples/test.py diff --git a/examples/test_rotpole.py b/doc/examples/test_rotpole.py similarity index 100% rename from examples/test_rotpole.py rename to doc/examples/test_rotpole.py diff --git a/examples/testarcgis.py b/doc/examples/testarcgis.py similarity index 100% rename from examples/testarcgis.py rename to doc/examples/testarcgis.py diff --git a/examples/testgdal.py b/doc/examples/testgdal.py similarity index 100% rename from examples/testgdal.py rename to doc/examples/testgdal.py diff --git a/examples/testwmsimage.py b/doc/examples/testwmsimage.py similarity index 100% rename from examples/testwmsimage.py rename to doc/examples/testwmsimage.py diff --git a/examples/us_25m.dem b/doc/examples/us_25m.dem similarity index 100% rename from examples/us_25m.dem rename to doc/examples/us_25m.dem diff --git a/examples/utmtest.py b/doc/examples/utmtest.py similarity index 100% rename from examples/utmtest.py rename to doc/examples/utmtest.py diff --git a/examples/warpimage.py b/doc/examples/warpimage.py similarity index 100% rename from examples/warpimage.py rename to doc/examples/warpimage.py diff --git a/examples/wiki_example.py b/doc/examples/wiki_example.py similarity index 100% rename from examples/wiki_example.py rename to doc/examples/wiki_example.py diff --git a/examples/wm201_Arctic_JJA_1990-2008_moyenneDesMoyennes.nc b/doc/examples/wm201_Arctic_JJA_1990-2008_moyenneDesMoyennes.nc similarity index 100% rename from examples/wm201_Arctic_JJA_1990-2008_moyenneDesMoyennes.nc rename to doc/examples/wm201_Arctic_JJA_1990-2008_moyenneDesMoyennes.nc From 0238d9f5b0c69da3587407e6b4c51e0b5f3ad594 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 11:47:24 +0200 Subject: [PATCH 157/188] Move FAQ inside doc folder --- FAQ => doc/FAQ.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename FAQ => doc/FAQ.txt (100%) diff --git a/FAQ b/doc/FAQ.txt similarity index 100% rename from FAQ rename to doc/FAQ.txt From 0e821be1cd59b6617e5ffd40353618e9d26213bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 11:57:12 +0200 Subject: [PATCH 158/188] Fix references to examples after moving them to doc folder --- README.md | 2 +- doc/source/users/examples.rst | 6 +++--- doc/source/users/figures/hurrtracks.py | 2 +- doc/source/users/figures/plotprecip.py | 2 +- src/mpl_toolkits/basemap/__init__.py | 4 ++-- src/mpl_toolkits/basemap/cm.py | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index e193074a3..36b1a02d1 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ is provided under the terms of the [LGPL-2.1-only] license as given in See https://matplotlib.org/basemap/. -See scripts in `examples` directory for example usage. +See scripts in the `doc/examples` directory for example usage. Read the FAQ and/or email the matplotlib-users mailing list if you have problems or questions. diff --git a/doc/source/users/examples.rst b/doc/source/users/examples.rst index 9d0daca31..e2de641c0 100644 --- a/doc/source/users/examples.rst +++ b/doc/source/users/examples.rst @@ -3,9 +3,9 @@ Plotting data on a map (Example Gallery) ======================================== -Following are a series of examples that illustrate how to use -Basemap instance methods to plot your data on a map. More examples -are included in the examples directory of the basemap source distribution. +Following are a series of examples that illustrate how to use Basemap +instance methods to plot your data on a map. More examples are included +in the doc/examples directory of the basemap source distribution. There are a number of Basemap instance methods for plotting data: * :func:`~mpl_toolkits.basemap.Basemap.contour`: draw contour lines. diff --git a/doc/source/users/figures/hurrtracks.py b/doc/source/users/figures/hurrtracks.py index 1d1674c83..9f95289b8 100644 --- a/doc/source/users/figures/hurrtracks.py +++ b/doc/source/users/figures/hurrtracks.py @@ -12,7 +12,7 @@ projection='lcc',lat_1=20.,lat_2=40.,lon_0=-60., resolution ='l',area_thresh=1000.) # read shapefile. -shp_path = os.path.join(*6 * [".."] + ["examples", "huralll020"]) +shp_path = os.path.join(*3 * [".."] + ["examples", "huralll020"]) shp_info = m.readshapefile(shp_path,'hurrtracks',drawbounds=False) # find names of storms that reached Cat 4. names = [] diff --git a/doc/source/users/figures/plotprecip.py b/doc/source/users/figures/plotprecip.py index 95fd7ef67..7e13cdb87 100644 --- a/doc/source/users/figures/plotprecip.py +++ b/doc/source/users/figures/plotprecip.py @@ -8,7 +8,7 @@ # plot rainfall from NWS using special precipitation # colormap used by the NWS, and included in basemap. -ncpath = os.path.join(*6 * [".."] + ["examples", "nws_precip_conus_20061222.nc"]) +ncpath = os.path.join(*3 * [".."] + ["examples", "nws_precip_conus_20061222.nc"]) nc = NetCDFFile(ncpath) # data from http://water.weather.gov/precip/ prcpvar = nc.variables['amountofprecip'] diff --git a/src/mpl_toolkits/basemap/__init__.py b/src/mpl_toolkits/basemap/__init__.py index 82a8258d6..f0360b10c 100644 --- a/src/mpl_toolkits/basemap/__init__.py +++ b/src/mpl_toolkits/basemap/__init__.py @@ -3570,7 +3570,7 @@ def contour(self,x,y,data,*args,**kwargs): "region to be consistent with your data, or (if your", "data is on a global lat/lon grid) use the shiftdata", "method to adjust the data to be consistent with the", - "map projection region (see examples/shiftdata.py)"])) + "map projection region (see doc/examples/shiftdata.py)"])) # mask for points more than one grid length outside projection limb. xx = ma.masked_where(x > 1.e20, x) yy = ma.masked_where(y > 1.e20, y) @@ -3667,7 +3667,7 @@ def contourf(self,x,y,data,*args,**kwargs): "region to be consistent with your data, or (if your", "data is on a global lat/lon grid) use the shiftgrid", "function to adjust the data to be consistent with the", - "map projection region (see examples/contour_demo.py)"])) + "map projection region (see doc/examples/contour_demo.py)"])) # mask for points more than one grid length outside projection limb. xx = ma.masked_where(x > 1.e20, x) yy = ma.masked_where(y > 1.e20, y) diff --git a/src/mpl_toolkits/basemap/cm.py b/src/mpl_toolkits/basemap/cm.py index 0114205c6..1b0b64798 100644 --- a/src/mpl_toolkits/basemap/cm.py +++ b/src/mpl_toolkits/basemap/cm.py @@ -11,7 +11,7 @@ * A sea surface temperature anomaly colormap: sstanom. * A stepped-sequential scheme: StepSeq. -Run `examples/show_colormaps.py` to see what these colormaps look like. +Run `doc/examples/show_colormaps.py` to see what these colormaps look like. """ from matplotlib import rcParams From 405e457fac1a0163d21e5740f313a17a06096d94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 11:59:59 +0200 Subject: [PATCH 159/188] Update .gitignore --- .gitignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 72b064754..07be6fb61 100644 --- a/.gitignore +++ b/.gitignore @@ -2,8 +2,8 @@ build dist *.egg-info -*.pyc -*.pyd +*.py[cod] +*.dll *.so htmlcov From ec1060e38a02a2609a22fc48b1f0b0d7929b04af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 12:00:12 +0200 Subject: [PATCH 160/188] Fix wrong references to doc files in .gitignore --- .gitignore | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 07be6fb61..aafbb3a83 100644 --- a/.gitignore +++ b/.gitignore @@ -33,7 +33,7 @@ Thumbs.db # Things specific to this project. *.pickle +doc/build doc/examples/*.png -doc/users/installing.rst -doc/_static/matplotlibrc -doc/_templates/gallery.html +doc/source/_static/matplotlibrc +doc/source/_templates/gallery.html From e39291b99308ffa0b173632394e5d782e3197cd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 12:03:09 +0200 Subject: [PATCH 161/188] Rename packages folder with data packages into data folder --- {packages => data}/basemap_data/COPYING | 0 {packages => data}/basemap_data/COPYING.LESSER | 0 {packages => data}/basemap_data/LICENSE.epsg | 0 {packages => data}/basemap_data/LICENSE.mit | 0 {packages => data}/basemap_data/README.md | 8 ++++---- {packages => data}/basemap_data/setup.py | 0 .../src/mpl_toolkits/basemap_data/UScounties.dbf | Bin .../src/mpl_toolkits/basemap_data/UScounties.prj | 0 .../src/mpl_toolkits/basemap_data/UScounties.shp | Bin .../src/mpl_toolkits/basemap_data/UScounties.shx | Bin .../src/mpl_toolkits/basemap_data/bmng.jpg | Bin .../src/mpl_toolkits/basemap_data/countries_c.dat | Bin .../src/mpl_toolkits/basemap_data/countries_i.dat | Bin .../src/mpl_toolkits/basemap_data/countries_l.dat | Bin .../mpl_toolkits/basemap_data/countriesmeta_c.dat | 0 .../mpl_toolkits/basemap_data/countriesmeta_i.dat | 0 .../mpl_toolkits/basemap_data/countriesmeta_l.dat | 0 .../basemap_data/src/mpl_toolkits/basemap_data/epsg | 0 .../src/mpl_toolkits/basemap_data/etopo1.jpg | Bin .../src/mpl_toolkits/basemap_data/gshhs_c.dat | Bin .../src/mpl_toolkits/basemap_data/gshhs_i.dat | Bin .../src/mpl_toolkits/basemap_data/gshhs_l.dat | Bin .../src/mpl_toolkits/basemap_data/gshhsmeta_c.dat | 0 .../src/mpl_toolkits/basemap_data/gshhsmeta_i.dat | 0 .../src/mpl_toolkits/basemap_data/gshhsmeta_l.dat | 0 .../mpl_toolkits/basemap_data/lsmask_1.25min_c.bin | Bin .../mpl_toolkits/basemap_data/lsmask_1.25min_f.bin | Bin .../mpl_toolkits/basemap_data/lsmask_1.25min_h.bin | Bin .../mpl_toolkits/basemap_data/lsmask_1.25min_i.bin | Bin .../mpl_toolkits/basemap_data/lsmask_1.25min_l.bin | Bin .../mpl_toolkits/basemap_data/lsmask_10min_c.bin | Bin .../mpl_toolkits/basemap_data/lsmask_10min_f.bin | Bin .../mpl_toolkits/basemap_data/lsmask_10min_h.bin | Bin .../mpl_toolkits/basemap_data/lsmask_10min_i.bin | Bin .../mpl_toolkits/basemap_data/lsmask_10min_l.bin | Bin .../mpl_toolkits/basemap_data/lsmask_2.5min_c.bin | Bin .../mpl_toolkits/basemap_data/lsmask_2.5min_f.bin | Bin .../mpl_toolkits/basemap_data/lsmask_2.5min_h.bin | Bin .../mpl_toolkits/basemap_data/lsmask_2.5min_i.bin | Bin .../mpl_toolkits/basemap_data/lsmask_2.5min_l.bin | Bin .../src/mpl_toolkits/basemap_data/lsmask_5min_c.bin | Bin .../src/mpl_toolkits/basemap_data/lsmask_5min_f.bin | Bin .../src/mpl_toolkits/basemap_data/lsmask_5min_h.bin | Bin .../src/mpl_toolkits/basemap_data/lsmask_5min_i.bin | Bin .../src/mpl_toolkits/basemap_data/lsmask_5min_l.bin | Bin .../src/mpl_toolkits/basemap_data/rivers_c.dat | Bin .../src/mpl_toolkits/basemap_data/rivers_i.dat | Bin .../src/mpl_toolkits/basemap_data/rivers_l.dat | Bin .../src/mpl_toolkits/basemap_data/riversmeta_c.dat | 0 .../src/mpl_toolkits/basemap_data/riversmeta_i.dat | 0 .../src/mpl_toolkits/basemap_data/riversmeta_l.dat | 0 .../src/mpl_toolkits/basemap_data/shadedrelief.jpg | Bin .../src/mpl_toolkits/basemap_data/states_c.dat | Bin .../src/mpl_toolkits/basemap_data/states_i.dat | Bin .../src/mpl_toolkits/basemap_data/states_l.dat | Bin .../src/mpl_toolkits/basemap_data/statesmeta_c.dat | 0 .../src/mpl_toolkits/basemap_data/statesmeta_i.dat | 0 .../src/mpl_toolkits/basemap_data/statesmeta_l.dat | 0 {packages => data}/basemap_data/utils/README | 0 {packages => data}/basemap_data/utils/dumpbounds.sh | 0 .../basemap_data/utils/readboundaries.py | 0 .../basemap_data/utils/readboundaries_shp.py | 0 .../basemap_data/utils/update_landmasks.py | 0 {packages => data}/basemap_data_hires/COPYING | 0 .../basemap_data_hires/COPYING.LESSER | 0 {packages => data}/basemap_data_hires/README.md | 4 ++-- {packages => data}/basemap_data_hires/setup.py | 0 .../src/mpl_toolkits/basemap_data/countries_f.dat | Bin .../src/mpl_toolkits/basemap_data/countries_h.dat | Bin .../mpl_toolkits/basemap_data/countriesmeta_f.dat | 0 .../mpl_toolkits/basemap_data/countriesmeta_h.dat | 0 .../src/mpl_toolkits/basemap_data/gshhs_f.dat | Bin .../src/mpl_toolkits/basemap_data/gshhs_h.dat | Bin .../src/mpl_toolkits/basemap_data/gshhsmeta_f.dat | 0 .../src/mpl_toolkits/basemap_data/gshhsmeta_h.dat | 0 .../src/mpl_toolkits/basemap_data/rivers_f.dat | Bin .../src/mpl_toolkits/basemap_data/rivers_h.dat | Bin .../src/mpl_toolkits/basemap_data/riversmeta_f.dat | 0 .../src/mpl_toolkits/basemap_data/riversmeta_h.dat | 0 .../src/mpl_toolkits/basemap_data/states_f.dat | Bin .../src/mpl_toolkits/basemap_data/states_h.dat | Bin .../src/mpl_toolkits/basemap_data/statesmeta_f.dat | 0 .../src/mpl_toolkits/basemap_data/statesmeta_h.dat | 0 83 files changed, 6 insertions(+), 6 deletions(-) rename {packages => data}/basemap_data/COPYING (100%) rename {packages => data}/basemap_data/COPYING.LESSER (100%) rename {packages => data}/basemap_data/LICENSE.epsg (100%) rename {packages => data}/basemap_data/LICENSE.mit (100%) rename {packages => data}/basemap_data/README.md (77%) rename {packages => data}/basemap_data/setup.py (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/UScounties.dbf (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/UScounties.prj (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/UScounties.shp (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/UScounties.shx (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/bmng.jpg (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/countries_c.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/countries_i.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/countries_l.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/countriesmeta_c.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/countriesmeta_i.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/countriesmeta_l.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/epsg (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/etopo1.jpg (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/gshhs_c.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/gshhs_i.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/gshhs_l.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/gshhsmeta_c.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/gshhsmeta_i.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/gshhsmeta_l.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_c.bin (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_f.bin (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_h.bin (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_i.bin (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_l.bin (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_c.bin (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_f.bin (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_h.bin (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_i.bin (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_l.bin (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_c.bin (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_f.bin (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_h.bin (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_i.bin (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_l.bin (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_c.bin (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_f.bin (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_h.bin (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_i.bin (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_l.bin (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/rivers_c.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/rivers_i.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/rivers_l.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/riversmeta_c.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/riversmeta_i.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/riversmeta_l.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/shadedrelief.jpg (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/states_c.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/states_i.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/states_l.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/statesmeta_c.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/statesmeta_i.dat (100%) rename {packages => data}/basemap_data/src/mpl_toolkits/basemap_data/statesmeta_l.dat (100%) rename {packages => data}/basemap_data/utils/README (100%) rename {packages => data}/basemap_data/utils/dumpbounds.sh (100%) rename {packages => data}/basemap_data/utils/readboundaries.py (100%) rename {packages => data}/basemap_data/utils/readboundaries_shp.py (100%) rename {packages => data}/basemap_data/utils/update_landmasks.py (100%) rename {packages => data}/basemap_data_hires/COPYING (100%) rename {packages => data}/basemap_data_hires/COPYING.LESSER (100%) rename {packages => data}/basemap_data_hires/README.md (83%) rename {packages => data}/basemap_data_hires/setup.py (100%) rename {packages => data}/basemap_data_hires/src/mpl_toolkits/basemap_data/countries_f.dat (100%) rename {packages => data}/basemap_data_hires/src/mpl_toolkits/basemap_data/countries_h.dat (100%) rename {packages => data}/basemap_data_hires/src/mpl_toolkits/basemap_data/countriesmeta_f.dat (100%) rename {packages => data}/basemap_data_hires/src/mpl_toolkits/basemap_data/countriesmeta_h.dat (100%) rename {packages => data}/basemap_data_hires/src/mpl_toolkits/basemap_data/gshhs_f.dat (100%) rename {packages => data}/basemap_data_hires/src/mpl_toolkits/basemap_data/gshhs_h.dat (100%) rename {packages => data}/basemap_data_hires/src/mpl_toolkits/basemap_data/gshhsmeta_f.dat (100%) rename {packages => data}/basemap_data_hires/src/mpl_toolkits/basemap_data/gshhsmeta_h.dat (100%) rename {packages => data}/basemap_data_hires/src/mpl_toolkits/basemap_data/rivers_f.dat (100%) rename {packages => data}/basemap_data_hires/src/mpl_toolkits/basemap_data/rivers_h.dat (100%) rename {packages => data}/basemap_data_hires/src/mpl_toolkits/basemap_data/riversmeta_f.dat (100%) rename {packages => data}/basemap_data_hires/src/mpl_toolkits/basemap_data/riversmeta_h.dat (100%) rename {packages => data}/basemap_data_hires/src/mpl_toolkits/basemap_data/states_f.dat (100%) rename {packages => data}/basemap_data_hires/src/mpl_toolkits/basemap_data/states_h.dat (100%) rename {packages => data}/basemap_data_hires/src/mpl_toolkits/basemap_data/statesmeta_f.dat (100%) rename {packages => data}/basemap_data_hires/src/mpl_toolkits/basemap_data/statesmeta_h.dat (100%) diff --git a/packages/basemap_data/COPYING b/data/basemap_data/COPYING similarity index 100% rename from packages/basemap_data/COPYING rename to data/basemap_data/COPYING diff --git a/packages/basemap_data/COPYING.LESSER b/data/basemap_data/COPYING.LESSER similarity index 100% rename from packages/basemap_data/COPYING.LESSER rename to data/basemap_data/COPYING.LESSER diff --git a/packages/basemap_data/LICENSE.epsg b/data/basemap_data/LICENSE.epsg similarity index 100% rename from packages/basemap_data/LICENSE.epsg rename to data/basemap_data/LICENSE.epsg diff --git a/packages/basemap_data/LICENSE.mit b/data/basemap_data/LICENSE.mit similarity index 100% rename from packages/basemap_data/LICENSE.mit rename to data/basemap_data/LICENSE.mit diff --git a/packages/basemap_data/README.md b/data/basemap_data/README.md similarity index 77% rename from packages/basemap_data/README.md rename to data/basemap_data/README.md index e7efd2002..3881079e1 100644 --- a/packages/basemap_data/README.md +++ b/data/basemap_data/README.md @@ -43,10 +43,10 @@ https://spdx.org/licenses/LGPL-3.0-or-later.html https://spdx.org/licenses/MIT.html [`COPYING`]: -https://github.com/matplotlib/basemap/blob/v1.3.2/packages/basemap_data/COPYING +https://github.com/matplotlib/basemap/blob/v2.0.0/data/basemap_data/COPYING [`COPYING.LESSER`]: -https://github.com/matplotlib/basemap/blob/v1.3.2/packages/basemap_data/COPYING.LESSER +https://github.com/matplotlib/basemap/blob/v2.0.0/data/basemap_data/COPYING.LESSER [`LICENSE.epsg`]: -https://github.com/matplotlib/basemap/blob/v1.3.2/packages/basemap_data/LICENSE.epsg +https://github.com/matplotlib/basemap/blob/v2.0.0/data/basemap_data/LICENSE.epsg [`LICENSE.mit`]: -https://github.com/matplotlib/basemap/blob/v1.3.2/packages/basemap_data/LICENSE.mit +https://github.com/matplotlib/basemap/blob/v2.0.0/data/basemap_data/LICENSE.mit diff --git a/packages/basemap_data/setup.py b/data/basemap_data/setup.py similarity index 100% rename from packages/basemap_data/setup.py rename to data/basemap_data/setup.py diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/UScounties.dbf b/data/basemap_data/src/mpl_toolkits/basemap_data/UScounties.dbf similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/UScounties.dbf rename to data/basemap_data/src/mpl_toolkits/basemap_data/UScounties.dbf diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/UScounties.prj b/data/basemap_data/src/mpl_toolkits/basemap_data/UScounties.prj similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/UScounties.prj rename to data/basemap_data/src/mpl_toolkits/basemap_data/UScounties.prj diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/UScounties.shp b/data/basemap_data/src/mpl_toolkits/basemap_data/UScounties.shp similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/UScounties.shp rename to data/basemap_data/src/mpl_toolkits/basemap_data/UScounties.shp diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/UScounties.shx b/data/basemap_data/src/mpl_toolkits/basemap_data/UScounties.shx similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/UScounties.shx rename to data/basemap_data/src/mpl_toolkits/basemap_data/UScounties.shx diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/bmng.jpg b/data/basemap_data/src/mpl_toolkits/basemap_data/bmng.jpg similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/bmng.jpg rename to data/basemap_data/src/mpl_toolkits/basemap_data/bmng.jpg diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/countries_c.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/countries_c.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/countries_c.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/countries_c.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/countries_i.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/countries_i.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/countries_i.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/countries_i.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/countries_l.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/countries_l.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/countries_l.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/countries_l.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/countriesmeta_c.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/countriesmeta_c.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/countriesmeta_c.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/countriesmeta_c.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/countriesmeta_i.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/countriesmeta_i.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/countriesmeta_i.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/countriesmeta_i.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/countriesmeta_l.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/countriesmeta_l.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/countriesmeta_l.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/countriesmeta_l.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/epsg b/data/basemap_data/src/mpl_toolkits/basemap_data/epsg similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/epsg rename to data/basemap_data/src/mpl_toolkits/basemap_data/epsg diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/etopo1.jpg b/data/basemap_data/src/mpl_toolkits/basemap_data/etopo1.jpg similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/etopo1.jpg rename to data/basemap_data/src/mpl_toolkits/basemap_data/etopo1.jpg diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/gshhs_c.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/gshhs_c.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/gshhs_c.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/gshhs_c.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/gshhs_i.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/gshhs_i.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/gshhs_i.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/gshhs_i.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/gshhs_l.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/gshhs_l.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/gshhs_l.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/gshhs_l.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/gshhsmeta_c.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/gshhsmeta_c.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/gshhsmeta_c.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/gshhsmeta_c.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/gshhsmeta_i.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/gshhsmeta_i.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/gshhsmeta_i.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/gshhsmeta_i.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/gshhsmeta_l.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/gshhsmeta_l.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/gshhsmeta_l.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/gshhsmeta_l.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_c.bin b/data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_c.bin similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_c.bin rename to data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_c.bin diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_f.bin b/data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_f.bin similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_f.bin rename to data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_f.bin diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_h.bin b/data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_h.bin similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_h.bin rename to data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_h.bin diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_i.bin b/data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_i.bin similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_i.bin rename to data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_i.bin diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_l.bin b/data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_l.bin similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_l.bin rename to data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_1.25min_l.bin diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_c.bin b/data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_c.bin similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_c.bin rename to data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_c.bin diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_f.bin b/data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_f.bin similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_f.bin rename to data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_f.bin diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_h.bin b/data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_h.bin similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_h.bin rename to data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_h.bin diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_i.bin b/data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_i.bin similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_i.bin rename to data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_i.bin diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_l.bin b/data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_l.bin similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_l.bin rename to data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_10min_l.bin diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_c.bin b/data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_c.bin similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_c.bin rename to data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_c.bin diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_f.bin b/data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_f.bin similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_f.bin rename to data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_f.bin diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_h.bin b/data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_h.bin similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_h.bin rename to data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_h.bin diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_i.bin b/data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_i.bin similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_i.bin rename to data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_i.bin diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_l.bin b/data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_l.bin similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_l.bin rename to data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_2.5min_l.bin diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_c.bin b/data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_c.bin similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_c.bin rename to data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_c.bin diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_f.bin b/data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_f.bin similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_f.bin rename to data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_f.bin diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_h.bin b/data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_h.bin similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_h.bin rename to data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_h.bin diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_i.bin b/data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_i.bin similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_i.bin rename to data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_i.bin diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_l.bin b/data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_l.bin similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_l.bin rename to data/basemap_data/src/mpl_toolkits/basemap_data/lsmask_5min_l.bin diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/rivers_c.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/rivers_c.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/rivers_c.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/rivers_c.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/rivers_i.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/rivers_i.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/rivers_i.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/rivers_i.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/rivers_l.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/rivers_l.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/rivers_l.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/rivers_l.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/riversmeta_c.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/riversmeta_c.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/riversmeta_c.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/riversmeta_c.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/riversmeta_i.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/riversmeta_i.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/riversmeta_i.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/riversmeta_i.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/riversmeta_l.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/riversmeta_l.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/riversmeta_l.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/riversmeta_l.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/shadedrelief.jpg b/data/basemap_data/src/mpl_toolkits/basemap_data/shadedrelief.jpg similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/shadedrelief.jpg rename to data/basemap_data/src/mpl_toolkits/basemap_data/shadedrelief.jpg diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/states_c.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/states_c.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/states_c.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/states_c.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/states_i.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/states_i.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/states_i.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/states_i.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/states_l.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/states_l.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/states_l.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/states_l.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/statesmeta_c.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/statesmeta_c.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/statesmeta_c.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/statesmeta_c.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/statesmeta_i.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/statesmeta_i.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/statesmeta_i.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/statesmeta_i.dat diff --git a/packages/basemap_data/src/mpl_toolkits/basemap_data/statesmeta_l.dat b/data/basemap_data/src/mpl_toolkits/basemap_data/statesmeta_l.dat similarity index 100% rename from packages/basemap_data/src/mpl_toolkits/basemap_data/statesmeta_l.dat rename to data/basemap_data/src/mpl_toolkits/basemap_data/statesmeta_l.dat diff --git a/packages/basemap_data/utils/README b/data/basemap_data/utils/README similarity index 100% rename from packages/basemap_data/utils/README rename to data/basemap_data/utils/README diff --git a/packages/basemap_data/utils/dumpbounds.sh b/data/basemap_data/utils/dumpbounds.sh similarity index 100% rename from packages/basemap_data/utils/dumpbounds.sh rename to data/basemap_data/utils/dumpbounds.sh diff --git a/packages/basemap_data/utils/readboundaries.py b/data/basemap_data/utils/readboundaries.py similarity index 100% rename from packages/basemap_data/utils/readboundaries.py rename to data/basemap_data/utils/readboundaries.py diff --git a/packages/basemap_data/utils/readboundaries_shp.py b/data/basemap_data/utils/readboundaries_shp.py similarity index 100% rename from packages/basemap_data/utils/readboundaries_shp.py rename to data/basemap_data/utils/readboundaries_shp.py diff --git a/packages/basemap_data/utils/update_landmasks.py b/data/basemap_data/utils/update_landmasks.py similarity index 100% rename from packages/basemap_data/utils/update_landmasks.py rename to data/basemap_data/utils/update_landmasks.py diff --git a/packages/basemap_data_hires/COPYING b/data/basemap_data_hires/COPYING similarity index 100% rename from packages/basemap_data_hires/COPYING rename to data/basemap_data_hires/COPYING diff --git a/packages/basemap_data_hires/COPYING.LESSER b/data/basemap_data_hires/COPYING.LESSER similarity index 100% rename from packages/basemap_data_hires/COPYING.LESSER rename to data/basemap_data_hires/COPYING.LESSER diff --git a/packages/basemap_data_hires/README.md b/data/basemap_data_hires/README.md similarity index 83% rename from packages/basemap_data_hires/README.md rename to data/basemap_data_hires/README.md index 6edbca740..c4cba18a6 100644 --- a/packages/basemap_data_hires/README.md +++ b/data/basemap_data_hires/README.md @@ -36,6 +36,6 @@ https://www.generic-mapping-tools.org/ [LGPLv3+]: https://spdx.org/licenses/LGPL-3.0-or-later.html [`COPYING`]: -https://github.com/matplotlib/basemap/blob/v1.3.2/packages/basemap_data_hires/COPYING +https://github.com/matplotlib/basemap/blob/v2.0.0/data/basemap_data_hires/COPYING [`COPYING.LESSER`]: -https://github.com/matplotlib/basemap/blob/v1.3.2/packages/basemap_data_hires/COPYING.LESSER +https://github.com/matplotlib/basemap/blob/v2.0.0/data/basemap_data_hires/COPYING.LESSER diff --git a/packages/basemap_data_hires/setup.py b/data/basemap_data_hires/setup.py similarity index 100% rename from packages/basemap_data_hires/setup.py rename to data/basemap_data_hires/setup.py diff --git a/packages/basemap_data_hires/src/mpl_toolkits/basemap_data/countries_f.dat b/data/basemap_data_hires/src/mpl_toolkits/basemap_data/countries_f.dat similarity index 100% rename from packages/basemap_data_hires/src/mpl_toolkits/basemap_data/countries_f.dat rename to data/basemap_data_hires/src/mpl_toolkits/basemap_data/countries_f.dat diff --git a/packages/basemap_data_hires/src/mpl_toolkits/basemap_data/countries_h.dat b/data/basemap_data_hires/src/mpl_toolkits/basemap_data/countries_h.dat similarity index 100% rename from packages/basemap_data_hires/src/mpl_toolkits/basemap_data/countries_h.dat rename to data/basemap_data_hires/src/mpl_toolkits/basemap_data/countries_h.dat diff --git a/packages/basemap_data_hires/src/mpl_toolkits/basemap_data/countriesmeta_f.dat b/data/basemap_data_hires/src/mpl_toolkits/basemap_data/countriesmeta_f.dat similarity index 100% rename from packages/basemap_data_hires/src/mpl_toolkits/basemap_data/countriesmeta_f.dat rename to data/basemap_data_hires/src/mpl_toolkits/basemap_data/countriesmeta_f.dat diff --git a/packages/basemap_data_hires/src/mpl_toolkits/basemap_data/countriesmeta_h.dat b/data/basemap_data_hires/src/mpl_toolkits/basemap_data/countriesmeta_h.dat similarity index 100% rename from packages/basemap_data_hires/src/mpl_toolkits/basemap_data/countriesmeta_h.dat rename to data/basemap_data_hires/src/mpl_toolkits/basemap_data/countriesmeta_h.dat diff --git a/packages/basemap_data_hires/src/mpl_toolkits/basemap_data/gshhs_f.dat b/data/basemap_data_hires/src/mpl_toolkits/basemap_data/gshhs_f.dat similarity index 100% rename from packages/basemap_data_hires/src/mpl_toolkits/basemap_data/gshhs_f.dat rename to data/basemap_data_hires/src/mpl_toolkits/basemap_data/gshhs_f.dat diff --git a/packages/basemap_data_hires/src/mpl_toolkits/basemap_data/gshhs_h.dat b/data/basemap_data_hires/src/mpl_toolkits/basemap_data/gshhs_h.dat similarity index 100% rename from packages/basemap_data_hires/src/mpl_toolkits/basemap_data/gshhs_h.dat rename to data/basemap_data_hires/src/mpl_toolkits/basemap_data/gshhs_h.dat diff --git a/packages/basemap_data_hires/src/mpl_toolkits/basemap_data/gshhsmeta_f.dat b/data/basemap_data_hires/src/mpl_toolkits/basemap_data/gshhsmeta_f.dat similarity index 100% rename from packages/basemap_data_hires/src/mpl_toolkits/basemap_data/gshhsmeta_f.dat rename to data/basemap_data_hires/src/mpl_toolkits/basemap_data/gshhsmeta_f.dat diff --git a/packages/basemap_data_hires/src/mpl_toolkits/basemap_data/gshhsmeta_h.dat b/data/basemap_data_hires/src/mpl_toolkits/basemap_data/gshhsmeta_h.dat similarity index 100% rename from packages/basemap_data_hires/src/mpl_toolkits/basemap_data/gshhsmeta_h.dat rename to data/basemap_data_hires/src/mpl_toolkits/basemap_data/gshhsmeta_h.dat diff --git a/packages/basemap_data_hires/src/mpl_toolkits/basemap_data/rivers_f.dat b/data/basemap_data_hires/src/mpl_toolkits/basemap_data/rivers_f.dat similarity index 100% rename from packages/basemap_data_hires/src/mpl_toolkits/basemap_data/rivers_f.dat rename to data/basemap_data_hires/src/mpl_toolkits/basemap_data/rivers_f.dat diff --git a/packages/basemap_data_hires/src/mpl_toolkits/basemap_data/rivers_h.dat b/data/basemap_data_hires/src/mpl_toolkits/basemap_data/rivers_h.dat similarity index 100% rename from packages/basemap_data_hires/src/mpl_toolkits/basemap_data/rivers_h.dat rename to data/basemap_data_hires/src/mpl_toolkits/basemap_data/rivers_h.dat diff --git a/packages/basemap_data_hires/src/mpl_toolkits/basemap_data/riversmeta_f.dat b/data/basemap_data_hires/src/mpl_toolkits/basemap_data/riversmeta_f.dat similarity index 100% rename from packages/basemap_data_hires/src/mpl_toolkits/basemap_data/riversmeta_f.dat rename to data/basemap_data_hires/src/mpl_toolkits/basemap_data/riversmeta_f.dat diff --git a/packages/basemap_data_hires/src/mpl_toolkits/basemap_data/riversmeta_h.dat b/data/basemap_data_hires/src/mpl_toolkits/basemap_data/riversmeta_h.dat similarity index 100% rename from packages/basemap_data_hires/src/mpl_toolkits/basemap_data/riversmeta_h.dat rename to data/basemap_data_hires/src/mpl_toolkits/basemap_data/riversmeta_h.dat diff --git a/packages/basemap_data_hires/src/mpl_toolkits/basemap_data/states_f.dat b/data/basemap_data_hires/src/mpl_toolkits/basemap_data/states_f.dat similarity index 100% rename from packages/basemap_data_hires/src/mpl_toolkits/basemap_data/states_f.dat rename to data/basemap_data_hires/src/mpl_toolkits/basemap_data/states_f.dat diff --git a/packages/basemap_data_hires/src/mpl_toolkits/basemap_data/states_h.dat b/data/basemap_data_hires/src/mpl_toolkits/basemap_data/states_h.dat similarity index 100% rename from packages/basemap_data_hires/src/mpl_toolkits/basemap_data/states_h.dat rename to data/basemap_data_hires/src/mpl_toolkits/basemap_data/states_h.dat diff --git a/packages/basemap_data_hires/src/mpl_toolkits/basemap_data/statesmeta_f.dat b/data/basemap_data_hires/src/mpl_toolkits/basemap_data/statesmeta_f.dat similarity index 100% rename from packages/basemap_data_hires/src/mpl_toolkits/basemap_data/statesmeta_f.dat rename to data/basemap_data_hires/src/mpl_toolkits/basemap_data/statesmeta_f.dat diff --git a/packages/basemap_data_hires/src/mpl_toolkits/basemap_data/statesmeta_h.dat b/data/basemap_data_hires/src/mpl_toolkits/basemap_data/statesmeta_h.dat similarity index 100% rename from packages/basemap_data_hires/src/mpl_toolkits/basemap_data/statesmeta_h.dat rename to data/basemap_data_hires/src/mpl_toolkits/basemap_data/statesmeta_h.dat From 27541963400e74ac098031078587f4aeb435c083 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 12:10:37 +0200 Subject: [PATCH 162/188] Fix and delegate installation instructions to documentation --- README.md | 43 +++++-------------------------- doc/source/users/installation.rst | 16 +++++------- 2 files changed, 12 insertions(+), 47 deletions(-) diff --git a/README.md b/README.md index 36b1a02d1..a657ae80d 100644 --- a/README.md +++ b/README.md @@ -11,43 +11,9 @@ on PyPI and can be installed with [`pip`]: python -m pip install basemap ``` -Otherwise, you will need to install `basemap` from its source hosted -on GitHub as indicated in the following steps: - -1. Install pre-requisite Python modules: - - [cython](https://github.com/cython/cython) - - [numpy](https://github.com/numpy/numpy) - -2. Download the `basemap` source code: - ```sh - git clone --depth 1 https://github.com/matplotlib/basemap.git - ``` - -3. Build the [GEOS](https://github.com/libgeos/geos) library. You may - use the helper provided in `utils`, (please note that you need - [`CMake`](https://cmake.org/) and a working C compiler in advance): - ```sh - export GEOS_DIR= - python -c "import utils; utils.GeosLibrary('3.6.5').build(installdir='${GEOS_DIR}')" - ``` - or you can link directly to the system library if it is already - installed. `GEOS_DIR` must point to the GEOS installation prefix; - e.g. if `libgeos_c.so` is located in `/usr/lib` and `geos_c.h` is - located in `/usr/include`, then you must set `GEOS_DIR` to `/usr`. - -4. Build and install the `basemap` binary wheel: - ```sh - python -m pip install . - ``` - On Linux, if your Python was installed through a package management - system, make sure that you have the Python header `Python.h` required - to build Cython extensions (e.g. on Debian-like systems, you should - have the package `python-dev` installed). - -5. Check that the package was installed correctly by executing: - ```sh - python -c "from mpl_toolkits.basemap import Basemap" - ``` +For specific details on how to install `basemap` through `conda` or +from source, please refer to the [`basemap` installation instructions] +in the documentation. ## Requirements @@ -118,6 +84,9 @@ https://pypi.org/project/basemap-data-hires [`OWSLib`]: https://pypi.org/project/OWSLib +[`basemap` installation instructions]: +https://matplotlib.org/basemap/stable/users/installation.html + [MIT]: https://spdx.org/licenses/MIT.html [LGPL-2.1-only]: diff --git a/doc/source/users/installation.rst b/doc/source/users/installation.rst index f9bd57c4e..b62b50559 100644 --- a/doc/source/users/installation.rst +++ b/doc/source/users/installation.rst @@ -4,16 +4,15 @@ Installation Installing from PyPI -------------------- -Precompiled binary wheels for Windows and GNU/Linux are available in -PyPI (architectures x86 and x64, Python 2.7 and 3.5+) and can be -installed with `pip`_: +Precompiled binary wheels for Windows, GNU/Linux and MacOS are available +on PyPI and can be installed with `pip`_: .. code-block:: sh python -m pip install basemap -Installing ``basemap`` will also install ``basemap-data``, containing the -minimal data assets required by ``basemap``. If you also need the +Installing ``basemap`` will also install ``basemap-data``, containing +the minimal data assets required by ``basemap``. If you also need the high-resolution data assets, you can install them with `pip`_ too: .. code-block:: sh @@ -24,8 +23,7 @@ Installing from conda-forge --------------------------- For Miniforge users, ``basemap`` packages are available through the -``conda-forge`` channel for Windows and GNU/Linux (x64) as well as -for MacOS (x64 and arm64): +``conda-forge`` channel: .. code-block:: sh @@ -49,13 +47,11 @@ on GitHub as indicated in the following steps: - `cython`_ - `numpy`_ -2. Download the ``basemap`` source code and move to the - ``packages/basemap`` folder: +2. Download the ``basemap`` source code: .. code-block:: sh git clone --depth 1 https://github.com/matplotlib/basemap.git - cd basemap/packages/basemap 3. Build the `GEOS`_ library. You may use the helper provided in the ``utils`` folder (please note that you need `CMake`_ and a working From c21c3eeb051e82e795dd651f083640e404e9a1c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 12:11:42 +0200 Subject: [PATCH 163/188] Exclude data folder explicitly in MANIFEST.in --- MANIFEST.in | 1 + 1 file changed, 1 insertion(+) diff --git a/MANIFEST.in b/MANIFEST.in index cc9ee7bbe..d60a05246 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -6,6 +6,7 @@ global-exclude *.py[cod] global-exclude *.dll global-exclude *.so +recursive-exclude data * recursive-include doc * recursive-exclude doc/build * recursive-include test * From 47fef531ae7da65cf1c4ea1e40cc097357e19085 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 12:15:27 +0200 Subject: [PATCH 164/188] Fix folder paths in CI workflow after project restructuring --- .github/workflows/build.yml | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b0bfd71d5..cce448f98 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,15 +2,11 @@ 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: @@ -30,7 +26,7 @@ jobs: - name: Build data sdist and wheel run: | - cd packages/${{ matrix.package }} + cd data/${{ matrix.package }} python -m pip install build wheel python -m build @@ -38,8 +34,8 @@ jobs: uses: actions/upload-artifact@v4 with: path: | - packages/${{ matrix.package }}/dist/*.tar.gz - packages/${{ matrix.package }}/dist/*.whl + data/${{ matrix.package }}/dist/*.tar.gz + data/${{ matrix.package }}/dist/*.whl name: dist-${{ matrix.package }} build_sdist: @@ -55,14 +51,13 @@ jobs: - name: Build basemap sdist run: | - cd packages/basemap python -m pip install build python -m build --sdist - name: Upload basemap sdist uses: actions/upload-artifact@v4 with: - path: packages/basemap/dist/*.tar.gz + path: dist/*.tar.gz name: dist-basemap-sdist build_wheels: @@ -134,7 +129,7 @@ jobs: 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" + CIBW_TEST_COMMAND: "python -m pytest {project}" CIBW_ENVIRONMENT: >- GEOS_VERSION="3.6.5" GEOS_DIR="$(pwd)/extern" @@ -227,25 +222,23 @@ jobs: - name: Install docs requirements run: | - cd packages/basemap python -m pip install -r dep/requirements-doc.txt - name: Run sphinx run: | - cd packages/basemap python -m sphinx doc/source public - name: Upload docs artifacts uses: actions/upload-artifact@v4 with: name: docs - path: packages/basemap/public + path: public - name: Upload github-pages artifact uses: actions/upload-pages-artifact@v3 with: name: github-pages - path: packages/basemap/public + path: public pages: name: Deploy docs From 344614741fbae8a8b52d981e8d9ce1a2ed157b35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 12:19:21 +0200 Subject: [PATCH 165/188] Update README --- README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a657ae80d..a79c9fe6f 100644 --- a/README.md +++ b/README.md @@ -20,8 +20,9 @@ in the documentation. This package depends on [`basemap-data`] with the basic [`basemap`] data assets supporting the essential functionality. -This package depends optionally on [`basemap-data-hires`] with the -high-resolution data assets, which can be installed with [`pip`]: +This package depends optionally on [`basemap-data-hires`] with +the high-resolution data assets, which can be installed manually +with [`pip`]: ```sh python -m pip install basemap-data-hires ``` @@ -68,7 +69,7 @@ situations, what is the inside of a coastline polygon can be ambiguous, and the outside may be filled instead of the inside. A workaround is to change the map projection region slightly or mask the land areas with the `Basemap.drawlsmask` method instead of filling the coastline -polygons (this is illustrated in the `ortho_demo.py` example). +polygons (this is illustrated in the [`ortho_demo.py`] example). [`pip`]: @@ -86,6 +87,8 @@ https://pypi.org/project/OWSLib [`basemap` installation instructions]: https://matplotlib.org/basemap/stable/users/installation.html +[`ortho_demo.py`]: +https://github.com/matplotlib/basemap/blob/v2.0.0/doc/examples/ortho_demo.py [MIT]: https://spdx.org/licenses/MIT.html From 890e5b54ddb1a296bfdd721f3755a0a43b6acda4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 12:28:47 +0200 Subject: [PATCH 166/188] Fix run_before_all.py CI script after project restructuring --- .github/workflows/run_before_all.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_before_all.py b/.github/workflows/run_before_all.py index 575a26763..b6957b0a0 100644 --- a/.github/workflows/run_before_all.py +++ b/.github/workflows/run_before_all.py @@ -6,7 +6,7 @@ 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")) +sys.path.insert(0, os.path.join(ROOT)) import utils # noqa: E402 # pylint: disable=imports From 20ce27a79cc7224a50d6a35291fb41883bf0405c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 12:39:12 +0200 Subject: [PATCH 167/188] Fix CIBW_TEST_COMMAND to make pytest receive only the test folder --- .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 cce448f98..250d4e9bf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -129,7 +129,7 @@ jobs: 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}" + CIBW_TEST_COMMAND: "python -m pytest {project}/test" CIBW_ENVIRONMENT: >- GEOS_VERSION="3.6.5" GEOS_DIR="$(pwd)/extern" From a753ab41ea8a964884e0df907dcf2475ae7bb756 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 13:06:34 +0200 Subject: [PATCH 168/188] Exclude doc/examples from basemap sdist --- MANIFEST.in | 1 + 1 file changed, 1 insertion(+) diff --git a/MANIFEST.in b/MANIFEST.in index d60a05246..12940fcf3 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -9,5 +9,6 @@ global-exclude *.so recursive-exclude data * recursive-include doc * recursive-exclude doc/build * +recursive-exclude doc/examples * recursive-include test * recursive-include utils *.py From 76f46026c4137ba9d53f705750832931585aa62b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 13:08:30 +0200 Subject: [PATCH 169/188] Update MANIFEST.in to include more files in basemap sdist --- MANIFEST.in | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/MANIFEST.in b/MANIFEST.in index 12940fcf3..4bd7236e5 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,7 @@ +include CHANGELOG.md +include LICENSE +include LICENSE.geos +include README.md include .pylintrc include pyproject.toml include dep/requirements*.txt From e8f4a6e8bb1ea9e39e4f55500a6a96994349d1ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 13:10:12 +0200 Subject: [PATCH 170/188] Ensure data packages are installed first in CI docs job --- .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 250d4e9bf..8a50d62a5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -208,6 +208,9 @@ jobs: # Get Python version. IMPL=cp$(python -c "import sys; print('{0}{1}'.format(*sys.version_info[:2]))") + # Install data packages. + python -m pip install ./data_packages/*.whl + # Install basemap wheel matching current Python version. WHEEL=$(find ./wheels -name "*-${IMPL}-${IMPL}*.whl" | head -1) if [ -n "${WHEEL}" ]; then @@ -217,9 +220,6 @@ jobs: exit 1 fi - # Install basemap data packages. - python -m pip install ./data_packages/*.whl - - name: Install docs requirements run: | python -m pip install -r dep/requirements-doc.txt From 3d1000de69ad31864b279a078f220fe8c40a3434 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 13:13:43 +0200 Subject: [PATCH 171/188] Use CIBW_BEFORE_TEST to install data packages from their folders --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8a50d62a5..e40eb73a3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -128,6 +128,7 @@ jobs: CIBW_BUILD_VERBOSITY: 1 CIBW_SKIP: "*-musllinux_*" CIBW_BEFORE_ALL: "python {project}/.github/workflows/run_before_all.py" + CIBW_BEFORE_TEST: "python -m pip install {project}/data/basemap_data {project}/data/basemap_data_hires" CIBW_TEST_EXTRAS: "test" CIBW_TEST_COMMAND: "python -m pytest {project}/test" CIBW_ENVIRONMENT: >- From 2b187c17784a788df9204448ba3ba5c89fab6392 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 13:33:19 +0200 Subject: [PATCH 172/188] Fix race condition in plothighsandlows example Based on the cadence in which the remote files are updated, it is safer to plot the dataset from yesterday than the dataset from today, because sometimes the file for today is still not present in the remote. --- doc/examples/plothighsandlows.py | 7 ++++--- doc/source/users/figures/plothighsandlows.py | 17 ++++++++++------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/doc/examples/plothighsandlows.py b/doc/examples/plothighsandlows.py index f5fa73345..42f65a3e8 100644 --- a/doc/examples/plothighsandlows.py +++ b/doc/examples/plothighsandlows.py @@ -26,9 +26,9 @@ def extrema(mat, mode="wrap", window=10): def main(): """Main function.""" - # Plot 00 UTC today. + # Plot 00 UTC yesterday. url = "http://nomads.ncep.noaa.gov/dods/gfs_0p50/gfs%Y%m%d/gfs_0p50_00z" - date = dt.datetime.now() + date = dt.datetime.now() - dt.timedelta(days=1) # Open OPeNDAP dataset. data = netCDF4.Dataset(date.strftime(url)) @@ -100,7 +100,8 @@ def main(): xyplotted.append((x, y)) # Set plot title and show. - plt.title("Mean Sea-Level Pressure (with Highs and Lows) %s" % date) + datestr = date.strftime("%Y%m%d00") + plt.title("Mean Sea-Level Pressure (with Highs and Lows) %s" % datestr) plt.show() diff --git a/doc/source/users/figures/plothighsandlows.py b/doc/source/users/figures/plothighsandlows.py index 3a7c3f963..d9e70bb40 100644 --- a/doc/source/users/figures/plothighsandlows.py +++ b/doc/source/users/figures/plothighsandlows.py @@ -2,13 +2,14 @@ plot H's and L's on a sea-level pressure map (uses scipy.ndimage.filters and netcdf4-python) """ +import datetime as dt import numpy as np import matplotlib.pyplot as plt -from datetime import datetime from mpl_toolkits.basemap import Basemap, addcyclic from scipy.ndimage.filters import minimum_filter, maximum_filter from netCDF4 import Dataset + def extrema(mat,mode='wrap',window=10): """find the indices of local extrema (min and max) in the input array.""" @@ -19,13 +20,13 @@ def extrema(mat,mode='wrap',window=10): # Return the indices of the maxima, minima return np.nonzero(mat == mn), np.nonzero(mat == mx) -# plot 00 UTC today. -date = datetime.now().strftime('%Y%m%d')+'00' -# open OpenDAP dataset. -data=Dataset("https://nomads.ncep.noaa.gov/dods/gfs_0p50/gfs%s/gfs_0p50_%sz"%\ - (date[0:8],date[8:10])) +# Plot 00 UTC yesterday. +url = "http://nomads.ncep.noaa.gov/dods/gfs_0p50/gfs%Y%m%d/gfs_0p50_00z" +date = dt.datetime.now() - dt.timedelta(days=1) +# open OpenDAP dataset. +data = Dataset(date.strftime(url)) # read lats,lons. lats = data.variables['lat'][:] @@ -85,5 +86,7 @@ def extrema(mat,mode='wrap',window=10): ha='center',va='top',color='r', bbox = dict(boxstyle="square",ec='None',fc=(1,1,1,0.5))) xyplotted.append((x,y)) -plt.title('Mean Sea-Level Pressure (with Highs and Lows) %s' % date) + +datestr = date.strftime("%Y%m%d00") +plt.title('Mean Sea-Level Pressure (with Highs and Lows) %s' % datestr) plt.show() From f64ab2a9ab5643245f1ead241c27ff8756cbeea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 13:44:04 +0200 Subject: [PATCH 173/188] Update CHANGELOG --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c20fa473c..704c820ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,9 +22,13 @@ https://semver.org/spec/v2.0.0.html ### Changed - **BREAKING CHANGE**: Set Python minimum supported version to 3.9. +- **BREAKING CHANGE**: Migrate project structure: + - The repository root is repurposed again for the `basemap` project. + - The auxiliary data packages are moved inside the `data` folder. + - The requirements files are moved to its own `dep` folder. + - The `examples` folder is moved inside the `doc` folder. - **BREAKING CHANGE**: Migrate `basemap` libraries to use implicit namespace packages (PR [#576] by @ksunden). -- **BREAKING CHANGE**: Move requirements files to its own `dep` folder. - Migrate workflows to use `cibuildwheel` (PRs [#614], [#618], [#622] and [#623] by @cvanelteren and PR [#621], solves GitHub artifact actions v1 sunset). From e65ba098dad19030ec15c97768ae179372ecbebb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 13:44:39 +0200 Subject: [PATCH 174/188] Set data packages version to 2.0.0 --- data/basemap_data/setup.py | 2 +- data/basemap_data_hires/setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/basemap_data/setup.py b/data/basemap_data/setup.py index 64e2eddeb..e11aa9d9a 100644 --- a/data/basemap_data/setup.py +++ b/data/basemap_data/setup.py @@ -73,7 +73,7 @@ def get_content(name, splitlines=False): "name": "basemap_data", "version": - "2.0.0.dev0", + "2.0.0", "description": "Data assets for matplotlib basemap", "long_description": diff --git a/data/basemap_data_hires/setup.py b/data/basemap_data_hires/setup.py index 4b4c22c4d..71eafb31e 100644 --- a/data/basemap_data_hires/setup.py +++ b/data/basemap_data_hires/setup.py @@ -51,7 +51,7 @@ def get_content(name, splitlines=False): "name": "basemap_data_hires", "version": - "2.0.0.dev0", + "2.0.0", "description": "High-resolution data assets for matplotlib basemap", "long_description": From 741bdbe7aeb879e8bdd5661784630b86fdb0dc57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 13:45:34 +0200 Subject: [PATCH 175/188] Bump minimum dependency to data packages to 2.0 --- CHANGELOG.md | 1 + dep/requirements.txt | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 704c820ef..bd98ada53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ https://semver.org/spec/v2.0.0.html and [#623] by @cvanelteren and PR [#621], solves GitHub artifact actions v1 sunset). - Update library dependencies: + - Upgrade lower limit for `basemap_data` to 2.0. - Upgrade upper limit for `basemap_data` to 3.0. - Upgrade lower limit for `packaging` to 20.5. - Upgrade upper limit for `packaging` to 26.0. diff --git a/dep/requirements.txt b/dep/requirements.txt index f6a88fc10..00759f0d2 100644 --- a/dep/requirements.txt +++ b/dep/requirements.txt @@ -1,4 +1,4 @@ -basemap_data >= 1.3.2, < 3.0 +basemap_data >= 2.0, < 3.0 packaging >= 20.5, < 26.0 numpy >= 2.0, < 2.4 From b6e9f3009e0d4bc83bec8b3eb6cf6f786b8db7ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 13:48:55 +0200 Subject: [PATCH 176/188] Reduce CI workflow needs to their minimum --- .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 e40eb73a3..15274e98f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -62,7 +62,7 @@ jobs: build_wheels: name: Build wheels - needs: [build_data, build_sdist] + needs: [build_sdist] strategy: matrix: os: [ubuntu-22.04, windows-2022, macos-13, macos-14] @@ -259,7 +259,7 @@ jobs: upload: name: Upload packages - needs: [build_data, build_sdist, build_wheels, check] + needs: [check] runs-on: ubuntu-22.04 environment: PyPI if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') From af825c2376a4755c76a67b637e2591629e1a5df9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 14:16:08 +0200 Subject: [PATCH 177/188] Speed up docs job by running Sphinx with parallelisation --- .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 15274e98f..6c1eacf5b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -227,7 +227,7 @@ jobs: - name: Run sphinx run: | - python -m sphinx doc/source public + python -m sphinx -j auto doc/source public - name: Upload docs artifacts uses: actions/upload-artifact@v4 From b2865586085a28cf7f26881414ce1097bb48bd68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 14:21:31 +0200 Subject: [PATCH 178/188] Make CI be triggered for any file change --- .github/workflows/build.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6c1eacf5b..e99b14397 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,11 +1,9 @@ on: push: paths: - - ".github/workflows/**" - "**" pull_request: paths: - - ".github/workflows/**" - "**" workflow_dispatch: From 936f58de18ea4c32af2b5cbbfca8ad59db092205 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 14:37:01 +0200 Subject: [PATCH 179/188] Add reference to issue #616 in CHANGELOG --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bd98ada53..7e4d8de13 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,7 +22,7 @@ https://semver.org/spec/v2.0.0.html ### Changed - **BREAKING CHANGE**: Set Python minimum supported version to 3.9. -- **BREAKING CHANGE**: Migrate project structure: +- **BREAKING CHANGE**: Migrate project structure (solves issue [#616]): - The repository root is repurposed again for the `basemap` project. - The auxiliary data packages are moved inside the `data` folder. - The requirements files are moved to its own `dep` folder. @@ -1190,6 +1190,8 @@ https://github.com/matplotlib/basemap/pull/620 https://github.com/matplotlib/basemap/pull/619 [#618]: https://github.com/matplotlib/basemap/pull/618 +[#616]: +https://github.com/matplotlib/basemap/issues/616 [#615]: https://github.com/matplotlib/basemap/pull/615 [#614]: From 963df4d010763ea02c19c98457bb86e90ad6ef60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 15:05:13 +0200 Subject: [PATCH 180/188] Set basemap version to 2.0.0 --- src/_geoslib.pyx | 2 +- src/mpl_toolkits/basemap/__init__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/_geoslib.pyx b/src/_geoslib.pyx index 127e8c8cf..bc050cc45 100644 --- a/src/_geoslib.pyx +++ b/src/_geoslib.pyx @@ -2,7 +2,7 @@ import sys import numpy cimport numpy as cnp -__version__ = "2.0.0.dev0" +__version__ = "2.0.0" # Need some Python C-API functions for strings. diff --git a/src/mpl_toolkits/basemap/__init__.py b/src/mpl_toolkits/basemap/__init__.py index f0360b10c..45a925434 100644 --- a/src/mpl_toolkits/basemap/__init__.py +++ b/src/mpl_toolkits/basemap/__init__.py @@ -48,7 +48,7 @@ from . proj import Proj -__version__ = "2.0.0.dev0" +__version__ = "2.0.0" # basemap data files now installed in lib/matplotlib/toolkits/basemap/data # check to see if environment variable BASEMAPDATA set to a directory, From 1e9cc09a66af0260d4025415058b1765ec78f698 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 15:08:32 +0200 Subject: [PATCH 181/188] Prepare CHANGELOG for release --- CHANGELOG.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e4d8de13..170d0b84b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,7 @@ https://keepachangelog.com/en/1.0.0/ https://semver.org/spec/v2.0.0.html -## [Unreleased] +## [2.0.0] - 2025-06-13 ### Added - Python 3.13 support (PR [#619], solves issue [#608]). @@ -1364,7 +1364,9 @@ https://github.com/matplotlib/basemap/issues/228 https://github.com/matplotlib/basemap/issues/179 [Unreleased]: -https://github.com/matplotlib/basemap/compare/v1.4.1...develop +https://github.com/matplotlib/basemap/compare/v2.0.0...develop +[2.0.0]: +https://github.com/matplotlib/basemap/compare/v1.4.1...v2.0.0 [1.4.1]: https://github.com/matplotlib/basemap/compare/v1.4.0...v1.4.1 [1.4.0]: From 5a180c9d27f9ed0f334ee36e24da83ff957c2baf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 15:11:28 +0200 Subject: [PATCH 182/188] Fix minor typos in README files --- data/basemap_data/README.md | 2 +- data/basemap_data_hires/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/basemap_data/README.md b/data/basemap_data/README.md index 3881079e1..886740705 100644 --- a/data/basemap_data/README.md +++ b/data/basemap_data/README.md @@ -8,7 +8,7 @@ required by [`basemap`] to work. ## Installation -The package is available in PyPI and can be installed with [`pip`]: +The package is available on PyPI and can be installed with [`pip`]: ```python python -m pip install basemap-data ``` diff --git a/data/basemap_data_hires/README.md b/data/basemap_data_hires/README.md index c4cba18a6..d86f2c4ce 100644 --- a/data/basemap_data_hires/README.md +++ b/data/basemap_data_hires/README.md @@ -8,7 +8,7 @@ data assets. ## Installation -The package is available in PyPI and can be installed with [`pip`]: +The package is available on PyPI and can be installed with [`pip`]: ```python python -m pip install basemap-data-hires ``` From fbd080ff51eefdf973221e1794b7dba1dc44565b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 15:23:43 +0200 Subject: [PATCH 183/188] Make the maintainers metadata more general --- data/basemap_data/setup.py | 4 ++-- data/basemap_data_hires/setup.py | 4 ++-- setup.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/data/basemap_data/setup.py b/data/basemap_data/setup.py index e11aa9d9a..3eb803d2b 100644 --- a/data/basemap_data/setup.py +++ b/data/basemap_data/setup.py @@ -85,9 +85,9 @@ def get_content(name, splitlines=False): "author_email": "jeffrey.s.whitaker@noaa.gov", "maintainer": - "Víctor Molina García", + "The Matplotlib development team", "maintainer_email": - "molinav@users.noreply.github.com", + "matplotlib-users@python.org", "license": "GNU Lesser General Public License v3 or later (LGPLv3+)", "license_files": [ diff --git a/data/basemap_data_hires/setup.py b/data/basemap_data_hires/setup.py index 71eafb31e..5d3b0c228 100644 --- a/data/basemap_data_hires/setup.py +++ b/data/basemap_data_hires/setup.py @@ -63,9 +63,9 @@ def get_content(name, splitlines=False): "author_email": "jeffrey.s.whitaker@noaa.gov", "maintainer": - "Víctor Molina García", + "The Matplotlib development team", "maintainer_email": - "molinav@users.noreply.github.com", + "matplotlib-users@python.org", "license": "GNU Lesser General Public License v3 or later (LGPLv3+)", "license_files": [ diff --git a/setup.py b/setup.py index b20393c86..070b49501 100644 --- a/setup.py +++ b/setup.py @@ -174,9 +174,9 @@ def run(self): "author_email": "jeffrey.s.whitaker@noaa.gov", "maintainer": - "Víctor Molina García", + "The Matplotlib development team", "maintainer_email": - "molinav@users.noreply.github.com", + "matplotlib-users@python.org", "license": "MIT", "license_files": [ From 49538b10f61487325183471448612183f437a00d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 15:29:56 +0200 Subject: [PATCH 184/188] Ensure license attributes are valid SPDX identifiers --- data/basemap_data/setup.py | 2 +- data/basemap_data_hires/setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/basemap_data/setup.py b/data/basemap_data/setup.py index 3eb803d2b..3be030472 100644 --- a/data/basemap_data/setup.py +++ b/data/basemap_data/setup.py @@ -89,7 +89,7 @@ def get_content(name, splitlines=False): "maintainer_email": "matplotlib-users@python.org", "license": - "GNU Lesser General Public License v3 or later (LGPLv3+)", + "LGPL-3.0-or-later", "license_files": [ "COPYING", "COPYING.LESSER", diff --git a/data/basemap_data_hires/setup.py b/data/basemap_data_hires/setup.py index 5d3b0c228..592ed3ed5 100644 --- a/data/basemap_data_hires/setup.py +++ b/data/basemap_data_hires/setup.py @@ -67,7 +67,7 @@ def get_content(name, splitlines=False): "maintainer_email": "matplotlib-users@python.org", "license": - "GNU Lesser General Public License v3 or later (LGPLv3+)", + "LGPL-3.0-or-later", "license_files": [ "COPYING", "COPYING.LESSER", From 5586c2df72e78de3dad4e0ff48ce355607307c79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 15:36:26 +0200 Subject: [PATCH 185/188] Add a couple of missing references in README --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a79c9fe6f..72f43ca3d 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ on PyPI and can be installed with [`pip`]: python -m pip install basemap ``` -For specific details on how to install `basemap` through `conda` or +For specific details on how to install [`basemap`] through [`conda`] or from source, please refer to the [`basemap` installation instructions] in the documentation. @@ -74,6 +74,9 @@ polygons (this is illustrated in the [`ortho_demo.py`] example). [`pip`]: https://pip.pypa.io/ +[`conda`]: +https://github.com/conda/conda + [`matplotlib`]: https://matplotlib.org/ [`basemap`]: From 68f16cc127a0fccac5be6308fc1774fa417abcaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 15:40:07 +0200 Subject: [PATCH 186/188] Update license references in README also with SPDX identifiers --- data/basemap_data/README.md | 6 +++--- data/basemap_data_hires/README.md | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/data/basemap_data/README.md b/data/basemap_data/README.md index 886740705..5f67c2b43 100644 --- a/data/basemap_data/README.md +++ b/data/basemap_data/README.md @@ -17,8 +17,8 @@ python -m pip install basemap-data The land-sea mask, coastline, lake, river and political boundary data are extracted from the [GSHHG] datasets (version 2.3.6) using [GMT] -(5.x series) and are included under the terms of the [LGPLv3+] license -(see [`COPYING`] and [`COPYING.LESSER`]). +(5.x series) and are included under the terms of the [LGPL-3.0-or-later] +license (see [`COPYING`] and [`COPYING.LESSER`]). The other files are included under the terms of the [MIT] license. See [`LICENSE.epsg`] for the EPSG file (taken from the PROJ.4 package) and @@ -37,7 +37,7 @@ https://www.soest.hawaii.edu/pwessel/gshhg [GMT]: https://www.generic-mapping-tools.org/ -[LGPLv3+]: +[LGPL-3.0-or-later]: https://spdx.org/licenses/LGPL-3.0-or-later.html [MIT]: https://spdx.org/licenses/MIT.html diff --git a/data/basemap_data_hires/README.md b/data/basemap_data_hires/README.md index d86f2c4ce..c1bba63d3 100644 --- a/data/basemap_data_hires/README.md +++ b/data/basemap_data_hires/README.md @@ -17,8 +17,8 @@ python -m pip install basemap-data-hires The land-sea mask, coastline, lake, river and political boundary data are extracted from the [GSHHG] datasets (version 2.3.6) using [GMT] -(5.x series) and are included under the terms of the [LGPLv3+] license -(see [`COPYING`] and [`COPYING.LESSER`]). +(5.x series) and are included under the terms of the [LGPL-3.0-or-later] +license (see [`COPYING`] and [`COPYING.LESSER`]). [`matplotlib`]: @@ -33,7 +33,7 @@ https://www.soest.hawaii.edu/pwessel/gshhg [GMT]: https://www.generic-mapping-tools.org/ -[LGPLv3+]: +[LGPL-3.0-or-later]: https://spdx.org/licenses/LGPL-3.0-or-later.html [`COPYING`]: https://github.com/matplotlib/basemap/blob/v2.0.0/data/basemap_data_hires/COPYING From 50a3c0e6d39e8a0647d9f6aca68fec47168651dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 15:42:51 +0200 Subject: [PATCH 187/188] Reformat CHANGELOG --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 170d0b84b..62bf9a58d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,9 +29,9 @@ https://semver.org/spec/v2.0.0.html - The `examples` folder is moved inside the `doc` folder. - **BREAKING CHANGE**: Migrate `basemap` libraries to use implicit namespace packages (PR [#576] by @ksunden). -- Migrate workflows to use `cibuildwheel` (PRs [#614], [#618], [#622] - and [#623] by @cvanelteren and PR [#621], solves GitHub artifact - actions v1 sunset). +- Migrate GitHub CI workflows to use `cibuildwheel` (PRs [#614], [#618], + [#622] and [#623] by @cvanelteren and PR [#621], solves GitHub + artifact actions v1 sunset issue). - Update library dependencies: - Upgrade lower limit for `basemap_data` to 2.0. - Upgrade upper limit for `basemap_data` to 3.0. From 9e22bf4460525d6b4950d5baaa17e151b851528f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Molina=20Garc=C3=ADa?= Date: Fri, 13 Jun 2025 16:58:23 +0200 Subject: [PATCH 188/188] Start next development cycle 2.1.0.dev0 --- CHANGELOG.md | 2 ++ src/_geoslib.pyx | 2 +- src/mpl_toolkits/basemap/__init__.py | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 62bf9a58d..a3599f28b 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] + ## [2.0.0] - 2025-06-13 ### Added diff --git a/src/_geoslib.pyx b/src/_geoslib.pyx index bc050cc45..2aab76867 100644 --- a/src/_geoslib.pyx +++ b/src/_geoslib.pyx @@ -2,7 +2,7 @@ import sys import numpy cimport numpy as cnp -__version__ = "2.0.0" +__version__ = "2.1.0.dev0" # Need some Python C-API functions for strings. diff --git a/src/mpl_toolkits/basemap/__init__.py b/src/mpl_toolkits/basemap/__init__.py index 45a925434..46458b95b 100644 --- a/src/mpl_toolkits/basemap/__init__.py +++ b/src/mpl_toolkits/basemap/__init__.py @@ -48,7 +48,7 @@ from . proj import Proj -__version__ = "2.0.0" +__version__ = "2.1.0.dev0" # basemap data files now installed in lib/matplotlib/toolkits/basemap/data # check to see if environment variable BASEMAPDATA set to a directory,