diff --git a/.github/workflows/cibuildwheel.yml b/.github/workflows/cibuildwheel.yml index 916a02e8c..8a002c1c1 100644 --- a/.github/workflows/cibuildwheel.yml +++ b/.github/workflows/cibuildwheel.yml @@ -74,12 +74,12 @@ jobs: shell: bash # On PRs we run only oldest and newest Python versions to reduce CI load. # Skips pypy and musllinux everywhere. - # We are building 310, 311 and 314 for now. + # We are building 311 and 315 for now. # (3.11 is the oldest version for which we support abi3 wheels) # These needs to rotate every new Python release. run: | set -x - echo "CIBW_BUILD=cp310-* cp311-* cp314-* cp314t-*" >> $GITHUB_ENV + echo "CIBW_BUILD=cp311-* cp315-* cp315t-*" >> $GITHUB_ENV set +x if: ${{ github.event_name }} == "pull_request" @@ -198,8 +198,8 @@ jobs: needs: [build_bdist, build_sdist, build_wheels_winmac, build_wheels_windows_arm] name: "Publish to PyPI" runs-on: ubuntu-22.04 - # upload to PyPI for every tag starting with 'v' - if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v') + # upload to PyPI when github release made. + if: github.event_name == 'release' && github.event.action == 'published' steps: - uses: actions/download-artifact@v8 with: diff --git a/.github/workflows/miniconda.yml b/.github/workflows/miniconda.yml index c35d81c16..b9c7a0668 100644 --- a/.github/workflows/miniconda.yml +++ b/.github/workflows/miniconda.yml @@ -13,11 +13,11 @@ jobs: strategy: matrix: python-version: [ - ["python", "3.10"], ["python", "3.11"], ["python", "3.12"], ["python", "3.13"], ["python", "3.14"], + ["python", "3.15"], ["python-freethreading", "3.14" ], ] os: [windows-latest, ubuntu-latest, macos-latest] diff --git a/Changelog b/Changelog index 1fda87c1a..3791d22fc 100644 --- a/Changelog +++ b/Changelog @@ -1,7 +1,7 @@ - version 1.7.4.1 (tag v1.7.4.1rel) - ================================= + version 1.7.5 (tag v1.7.5rel) + ============================= + * remove python 3.10 support (it reaches EOL October 31, 2026). * Reject fractional scalar indices instead of silently truncating reads or writes (issue #1350). - * Keep a numpy pin for Windows ARM64 on Python 3.10 so lockers can resolve that environment (issue #1491). * Preserve surviving dimensions and decoded types for empty orthogonal selections, including empty integer indices and all-false masks (PR #1499). * Convert non-native-endian numeric attributes to native byte order before writing (issue #1502). diff --git a/README.md b/README.md index c5acc70c2..35a5f0142 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ ## News For details on the latest updates, see the [Changelog](https://github.com/Unidata/netcdf4-python/blob/master/Changelog). +10/17/2026: Version [1.7.5](https://pypi.python.org/pypi/netCDF4/1.7.5) released. See Changelog for details. + 1/5/2026: Version [1.7.4](https://pypi.python.org/pypi/netCDF4/1.7.4) released. Compression plugins now included in wheels, windows/arm64 and free-threaded python wheels provided. Automatic conversion of character arrays <--> string arrays works for Unicode (not just ascii) strings. WARNING: netcdf-c is not thread-safe and netcdf4-python does have internal locking so expect segfaults if you diff --git a/pyproject.toml b/pyproject.toml index a3266d86d..4983136bc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,7 +15,7 @@ description = "Provides an object-oriented python interface to the netCDF versio authors = [ {name = "Jeff Whitaker", email = "whitaker.jeffrey@gmail.com"}, ] -requires-python = ">=3.10" +requires-python = ">=3.11" keywords = [ "numpy", "netcdf", "data", "science", "network", "oceanography", "meteorology", "climate", @@ -25,11 +25,11 @@ license-files = ["LICENSE"] classifiers = [ "Development Status :: 3 - Alpha", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", "Intended Audience :: Science/Research", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Archiving :: Compression", @@ -39,11 +39,7 @@ dependencies = [ "cftime", "certifi", "packaging", - "numpy>=2.3.0; platform_system == 'Windows' and platform_machine == 'ARM64' and python_version >= '3.11'", - # Windows ARM64 + Python 3.10 has no numpy>=2.3.0 wheel. Keep the older - # pin there so lockers (e.g. uv lock --python 3.10) can still resolve - # that environment. See issue #1491. - "numpy>=1.21.2; platform_system != 'Windows' or platform_machine != 'ARM64' or python_version < '3.11'", + "numpy>=1.23.2", ] dynamic = ["version"] diff --git a/src/netCDF4/_netCDF4.pyx b/src/netCDF4/_netCDF4.pyx index 123732190..fec74fdcc 100644 --- a/src/netCDF4/_netCDF4.pyx +++ b/src/netCDF4/_netCDF4.pyx @@ -1,4 +1,4 @@ -"""Version 1.7.4.1 +"""Version 1.7.5 ------------- # Introduction @@ -1283,7 +1283,7 @@ import sys import functools from typing import Union -__version__ = "1.7.4.1" +__version__ = "1.7.5" # Initialize numpy import posixpath