[Git][debian-gis-team/python-geotiepoints][master] 7 commits: New upstream version 1.8.0

Antonio Valentino (@antonio.valentino) gitlab at salsa.debian.org
Wed Sep 17 23:43:00 BST 2025



Antonio Valentino pushed to branch master at Debian GIS Project / python-geotiepoints


Commits:
b6abfb9b by Antonio Valentino at 2025-09-17T22:19:21+00:00
New upstream version 1.8.0
- - - - -
546de691 by Antonio Valentino at 2025-09-17T22:19:37+00:00
Update upstream source from tag 'upstream/1.8.0'

Update to upstream version '1.8.0'
with Debian dir 4718730f63272e2f9065e188c6e1a3259e71479b
- - - - -
99a181ef by Antonio Valentino at 2025-09-17T22:20:57+00:00
New upstream release

- - - - -
7e78d83e by Antonio Valentino at 2025-09-17T22:23:18+00:00
Update dates in d/copyright

- - - - -
e2eab407 by Antonio Valentino at 2025-09-17T22:32:24+00:00
Drop 0002-Compatibility-with-numpy-2.patch

- - - - -
1a10e372 by Antonio Valentino at 2025-09-17T22:40:22+00:00
New 0002-Fix-compatibility-with-cython-3.1.patch

- - - - -
eeb604ca by Antonio Valentino at 2025-09-17T22:40:22+00:00
Set distribution to unstable

- - - - -


18 changed files:

- .github/workflows/ci.yaml
- .github/workflows/deploy.yaml
- .gitignore
- + .readthedocs.yml
- CHANGELOG.md
- debian/changelog
- debian/copyright
- − debian/patches/0002-Compatibility-with-numpy-2.patch
- + debian/patches/0002-Fix-compatibility-with-cython-3.1.patch
- debian/patches/series
- doc/source/conf.py
- doc/source/index.rst
- geotiepoints/_modis_interpolator.pyx
- geotiepoints/version.py
- pyproject.toml
- + rtd_requirements.txt
- setup.cfg
- setup.py


Changes:

=====================================
.github/workflows/ci.yaml
=====================================
@@ -10,10 +10,10 @@ jobs:
       fail-fast: false
       matrix:
         os: ["windows-latest", "ubuntu-latest", "macos-latest"]
-        python-version: ["3.10", "3.11", "3.12"]
+        python-version: ["3.11", "3.12", "3.13"]
         experimental: [false]
         include:
-          - python-version: "3.12"
+          - python-version: "3.13"
             os: "ubuntu-latest"
             experimental: true
 
@@ -25,16 +25,18 @@ jobs:
 
     steps:
       - name: Checkout source
-        uses: actions/checkout at v4
+        uses: actions/checkout at v5
 
       - name: Setup Conda Environment
         uses: conda-incubator/setup-miniconda at v3
         with:
           miniforge-version: latest
-          channel-priority: strict
-          python-version: ${{ matrix.python-version }}
+          python-version: "${{ matrix.python-version }}"
           activate-environment: test-environment
           environment-file: continuous_integration/environment.yaml
+          channels: conda-forge
+          conda-remove-defaults: true
+          channel-priority: strict
 
       - name: Install unstable dependencies
         if: matrix.experimental == true
@@ -71,17 +73,11 @@ jobs:
         run: |
           pytest --cov=geotiepoints geotiepoints/tests --cov-report=xml --cov-report=
 
-      # FIXME: These fail
-#      - name: Test website
-#        shell: bash -l {0}
-#        run: |
-#          cd doc && mkdir doctest && sphinx-build -E -n -b doctest ./source ./doctest && cd ..
-
       - name: Upload unittest coverage to Codecov
-        uses: codecov/codecov-action at v4
+        uses: codecov/codecov-action at v5
         with:
           flags: unittests
-          file: ./coverage.xml
+          files: ./coverage.xml
           env_vars: OS,PYTHON_VERSION,UNSTABLE
 
       - name: Coveralls Parallel


=====================================
.github/workflows/deploy.yaml
=====================================
@@ -1,6 +1,5 @@
 name: Deploy sdist and wheels
 
-
 on:
   push:
   pull_request:
@@ -13,7 +12,7 @@ jobs:
     runs-on: ubuntu-latest
     steps:
       - name: Checkout source
-        uses: actions/checkout at v4
+        uses: actions/checkout at v5
 
       - name: Create sdist
         shell: bash -l {0}
@@ -28,46 +27,41 @@ jobs:
           path: dist/*.tar.gz
 
   build_wheels:
-    name: "Build wheels on ${{ matrix.os }} ${{ matrix.cibw_archs }}"
+    name: "Build wheels on ${{ matrix.os }} ${{ matrix.arch }}"
     runs-on: ${{ matrix.os }}
     strategy:
       fail-fast: false
       matrix:
         include:
-          - os: windows-2019
-            cibw_archs: "AMD64 ARM64"
-            artifact_name: "win"
-          - os: macos-latest
-            cibw_archs: "x86_64 arm64"
-            artifact_name: "mac"
-          - os: "ubuntu-20.04"
-            cibw_archs: "aarch64"
-            artifact_name: "ubuntu-aarch"
-          - os: "ubuntu-20.04"
-            cibw_archs: "x86_64"
-            artifact_name: "ubuntu-x86_64"
+          - os: windows-2022
+            arch: "AMD64"
+          - os: windows-11-arm
+            arch: "ARM64"
+          - os: macos-13
+            arch: "x86_64"
+          - os: macos-14
+            arch: "arm64"
+          - os: "ubuntu-24.04-arm"
+            arch: "aarch64"
+          - os: "ubuntu-24.04"
+            arch: "x86_64"
 
     steps:
-      - uses: actions/checkout at v4
+      - uses: actions/checkout at v5
       - run: |
           git fetch --prune --unshallow
 
-      - name: Set up QEMU
-        if: runner.os == 'Linux'
-        uses: docker/setup-qemu-action at v3
-        with:
-          platforms: all
-
       - name: Build wheels
-        uses: pypa/cibuildwheel at v2.21.1
+        uses: pypa/cibuildwheel at v3.1.4
         env:
-          CIBW_SKIP: "cp36-* cp37-* cp38-* pp* *-manylinux_i686 *-musllinux_i686 *-musllinux_aarch64 *-win32"
-          CIBW_ARCHS: "${{ matrix.cibw_archs }}"
-          CIBW_TEST_SKIP: "*_arm64 *_universal2:arm64"
+          CIBW_SKIP: "cp39-* cp310-* *-manylinux_i686 *-musllinux_i686 *-musllinux_aarch64 *-win32"
+          CIBW_ARCHS: "${{ matrix.arch }}"
+          CIBW_TEST_SKIP: "*_arm64"
+          CIBW_ENABLE: cpython-freethreading
 
       - uses: actions/upload-artifact at v4
         with:
-          name: wheels-${{ matrix.artifact_name }}
+          name: wheels-${{ matrix.os }}-${{ matrix.arch }}
           path: ./wheelhouse/*.whl
 
   upload_to_pypi:
@@ -75,40 +69,26 @@ jobs:
     runs-on: ubuntu-latest
     steps:
       - name: Download sdist artifact
-        uses: actions/download-artifact at v4
+        uses: actions/download-artifact at v5
         with:
           name: sdist
           path: dist
-      - name: Download wheels artifact - win
-        uses: actions/download-artifact at v4
-        with:
-          name: wheels-win
-          path: dist
-      - name: Download wheels artifact - mac
-        uses: actions/download-artifact at v4
-        with:
-          name: wheels-mac
-          path: dist
-      - name: Download wheels artifact - ubuntu aarch
-        uses: actions/download-artifact at v4
-        with:
-          name: wheels-ubuntu-aarch
-          path: dist
-      - name: Download wheels artifact - ubuntu x86_64
-        uses: actions/download-artifact at v4
+      - name: Download wheels artifact
+        uses: actions/download-artifact at v5
         with:
-          name: wheels-ubuntu-x86_64
+          pattern: wheels-*
+          merge-multiple: true
           path: dist
       - name: Publish package to Test PyPI
         if: github.event.action != 'published' && github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v')
-        uses: pypa/gh-action-pypi-publish at v1.10.2
+        uses: pypa/gh-action-pypi-publish at v1.13.0
         with:
           user: __token__
           password: ${{ secrets.test_pypi_password }}
           repository_url: https://test.pypi.org/legacy/
       - name: Publish package to PyPI
         if: github.event.action == 'published'
-        uses: pypa/gh-action-pypi-publish at v1.10.2
+        uses: pypa/gh-action-pypi-publish at v1.13.0
         with:
           user: __token__
           password: ${{ secrets.pypi_password }}


=====================================
.gitignore
=====================================
@@ -34,4 +34,4 @@ geotiepoints/*.c
 .idea
 
 # vscode
-.vscode
\ No newline at end of file
+.vscode


=====================================
.readthedocs.yml
=====================================
@@ -0,0 +1,19 @@
+version: 2
+
+build:
+  os: "ubuntu-20.04"
+  tools:
+    python: "3.11"
+  jobs:
+    post_checkout:
+      - git fetch --tags
+    pre_install:
+      - git update-index --assume-unchanged rtd_requirements.txt doc/source/conf.py
+sphinx:
+  configuration: doc/source/conf.py
+  fail_on_warning: true
+python:
+  install:
+    - requirements: rtd_requirements.txt
+    - method: pip
+      path: .


=====================================
CHANGELOG.md
=====================================
@@ -1,3 +1,24 @@
+## Version 1.8.0 (2025/09/10)
+
+### Issues Closed
+
+* [Issue 37](https://github.com/pytroll/python-geotiepoints/issues/37) - Issues with interpolation on a Sentinel Tie Point Grid. 
+
+In this release 1 issue was closed.
+
+### Pull Requests Merged
+
+#### Bugs fixed
+
+* [PR 103](https://github.com/pytroll/python-geotiepoints/pull/103) - Fix gcc compiler warnings in MODIS interpolator
+
+#### Features added
+
+* [PR 102](https://github.com/pytroll/python-geotiepoints/pull/102) - Add free-threading compatibility and drop Python 3.10 support
+
+In this release 2 pull requests were closed.
+
+
 ## Version 1.7.5 (2024/10/12)
 
 ### Issues Closed


=====================================
debian/changelog
=====================================
@@ -1,10 +1,17 @@
-python-geotiepoints (1.7.5-2) UNRELEASED; urgency=medium
+python-geotiepoints (1.8.0-1) unstable; urgency=medium
 
-  * Team upload.
+  [ Bas Couwenberg ]
   * Bump Standards-Version to 4.7.2, no changes.
   * Update lintian overrides.
 
- -- Bas Couwenberg <sebastic at debian.org>  Thu, 20 Mar 2025 06:25:58 +0100
+  [ Antonio Valentino ]
+  * New upstream release.
+  * Update dates in d/copyright.
+  * debian/patches:
+    - Drop 0002-Compatibility-with-numpy-2.patch, applied upstream.
+    - New 0002-Fix-compatibility-with-cython-3.1.patch.
+
+ -- Antonio Valentino <antonio.valentino at tiscali.it>  Wed, 17 Sep 2025 22:25:04 +0000
 
 python-geotiepoints (1.7.5-1) unstable; urgency=medium
 


=====================================
debian/copyright
=====================================
@@ -38,7 +38,7 @@ License: public-domain
  For more information, please refer to <http://unlicense.org/>
 
 Files: debian/*
-Copyright: 2018-2024, Antonio Valentino <antonio.valentino at tiscali.it>
+Copyright: 2018-2025, Antonio Valentino <antonio.valentino at tiscali.it>
 License: GPL-3+
 
 License: GPL-3+


=====================================
debian/patches/0002-Compatibility-with-numpy-2.patch deleted
=====================================
@@ -1,72 +0,0 @@
-From: Antonio Valentino <antonio.valentino at tiscali.it>
-Date: Sat, 20 Apr 2024 07:03:50 +0000
-Subject: Compatibility with numpy < 2
-
-Forwarded: not-needed
----
- geotiepoints/tests/test_interpolator.py | 17 +++++++++++++----
- pyproject.toml                          |  2 +-
- 2 files changed, 14 insertions(+), 5 deletions(-)
-
-diff --git a/geotiepoints/tests/test_interpolator.py b/geotiepoints/tests/test_interpolator.py
-index 567e686..55bd646 100644
---- a/geotiepoints/tests/test_interpolator.py
-+++ b/geotiepoints/tests/test_interpolator.py
-@@ -50,6 +50,15 @@ TIES_EXP1 = np.array([[-2.00000000e+00, -4.00000000e-01, 3.60000000e+00,
-                        2.02000000e+01]])
- 
- 
-+if np.__version__[0] < "2":
-+    CUBIC_LEGACY = "cubic"
-+    import scipy
-+    if scipy.__version__.split(".")[:2] >= ["1", "13"]:
-+        CUBIC_LEGACY = "cubic_legacy"
-+else:
-+    CUBIC_LEGACY = "cubic_legacy"
-+
-+
- class TestInterpolator(unittest.TestCase):
-     """Test the interpolator."""
- 
-@@ -349,12 +358,12 @@ class TestSingleGridInterpolator:
-         fine_x = np.arange(16)
-         fine_y = np.arange(32)
- 
--        res = grid_interpolator.interpolate((fine_y, fine_x), method="cubic_legacy")
-+        res = grid_interpolator.interpolate((fine_y, fine_x), method=CUBIC_LEGACY)
-         np.testing.assert_allclose(res, self.expected, atol=2e-9)
- 
-     def test_interpolate_slices(self, grid_interpolator):
-         """Test that interpolation from slices is working."""
--        res = grid_interpolator.interpolate_slices((slice(0, 32), slice(0, 16)), method="cubic_legacy")
-+        res = grid_interpolator.interpolate_slices((slice(0, 32), slice(0, 16)), method=CUBIC_LEGACY)
-         np.testing.assert_allclose(res, self.expected, atol=2e-9)
- 
-     @pytest.mark.parametrize("chunks, expected_chunks", [(10, (10, 10)),
-@@ -369,7 +378,7 @@ class TestSingleGridInterpolator:
-         with mock.patch.object(grid_interpolator,
-                                "interpolate_numpy",
-                                wraps=grid_interpolator.interpolate_numpy) as interpolate:
--            res = grid_interpolator.interpolate((fine_y, fine_x), method="cubic_legacy", chunks=chunks)
-+            res = grid_interpolator.interpolate((fine_y, fine_x), method=CUBIC_LEGACY, chunks=chunks)
-             assert not interpolate.called
- 
-             assert isinstance(res, da.Array)
-@@ -395,5 +404,5 @@ class TestSingleGridInterpolator:
-         fine_x = np.arange(16)
-         fine_y = np.arange(32)
- 
--        res = grid_interpolator.interpolate((fine_y, fine_x), method="cubic_legacy")
-+        res = grid_interpolator.interpolate((fine_y, fine_x), method=CUBIC_LEGACY)
-         assert res.dtype == data.dtype
-diff --git a/pyproject.toml b/pyproject.toml
-index 57e52e0..04eafb3 100644
---- a/pyproject.toml
-+++ b/pyproject.toml
-@@ -1,5 +1,5 @@
- [build-system]
--requires = ["setuptools", "wheel", "numpy>=2.0.0rc1,<3", "Cython>=3", "versioneer"]
-+requires = ["setuptools", "wheel", "numpy", "Cython>=3", "versioneer"]
- build-backend = "setuptools.build_meta"
- 
- [tool.coverage.run]


=====================================
debian/patches/0002-Fix-compatibility-with-cython-3.1.patch
=====================================
@@ -0,0 +1,22 @@
+From: Antonio Valentino <antonio.valentino at tiscali.it>
+Date: Wed, 17 Sep 2025 22:38:29 +0000
+Subject: Fix compatibility with cython < 3.1
+
+Forwarded: not-needed
+---
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index cd265fe..b3bc1f0 100644
+--- a/setup.py
++++ b/setup.py
+@@ -67,7 +67,7 @@ except ValueError:
+ 
+ cython_directives = {
+     "language_level": "3",
+-    "freethreading_compatible": True,
++    # "freethreading_compatible": True,
+ }
+ define_macros = [("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")]
+ if cython_coverage:


=====================================
debian/patches/series
=====================================
@@ -1,2 +1,2 @@
 0001-Skip-tests-using-external-data.patch
-0002-Compatibility-with-numpy-2.patch
+0002-Fix-compatibility-with-cython-3.1.patch


=====================================
doc/source/conf.py
=====================================
@@ -154,8 +154,7 @@ html_theme = 'default'
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
 # so a file named "default.css" will overwrite the builtin "default.css".
-#html_static_path = ['.static']
-html_static_path = ['sphinx_static']
+#html_static_path = []
 
 # If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
 # using the given strftime format.


=====================================
doc/source/index.rst
=====================================
@@ -11,7 +11,7 @@ package should be generic enough to be used for any kind of data.
 
 The source code of the module can be found on the github_ page.
 
-.. _github: http://github.com/adybbroe/python-geotiepoints
+.. _github: http://github.com/pytroll/python-geotiepoints
 
 .. contents::
 
@@ -24,7 +24,7 @@ You can install the latest version of python-geotiepoints with pip::
 
 Alternatively, you can download the source code from github_::
 
-   git clone git://github.com/adybbroe/python-geotiepoints.git
+   git clone git://github.com/pytroll/python-geotiepoints.git
 
 and then run::
 


=====================================
geotiepoints/_modis_interpolator.pyx
=====================================
@@ -214,12 +214,12 @@ cdef class MODISInterpolator:
     ) noexcept nogil:
         cdef unsigned int scan_idx
         cdef int i
-        cdef int fine_idx
-        cdef int half_scan_length = self._fine_pixels_per_coarse_pixel // 2
+        cdef unsigned int fine_idx
+        cdef unsigned int half_scan_length = self._fine_pixels_per_coarse_pixel // 2
         cdef unsigned int fine_pixels_per_scan = self._coarse_scan_length * self._fine_pixels_per_coarse_pixel
         for fine_idx in range(fine_pixels_per_scan):
             if fine_idx < half_scan_length:
-                y_view[fine_idx] = -half_scan_length + 0.5 + fine_idx
+                y_view[fine_idx] = 0.5 + fine_idx - half_scan_length
             elif fine_idx >= fine_pixels_per_scan - half_scan_length:
                 y_view[fine_idx] = (self._fine_pixels_per_coarse_pixel + 0.5) + (half_scan_length - (fine_pixels_per_scan - fine_idx))
             else:


=====================================
geotiepoints/version.py
=====================================
@@ -26,9 +26,9 @@ def get_keywords():
     # setup.py/versioneer.py will grep for the variable names, so they must
     # each be defined on a line of their own. _version.py will just call
     # get_keywords().
-    git_refnames = " (HEAD -> main, tag: v1.7.5)"
-    git_full = "44f8e87bba78e29b5c8dda325984e069cbd2092a"
-    git_date = "2024-10-12 10:07:53 +0200"
+    git_refnames = " (HEAD -> main, tag: v1.8.0)"
+    git_full = "9efadb3ae47d06abc11bceb4f633fb27bc14bfbb"
+    git_date = "2025-09-10 13:34:22 -0500"
     keywords = {"refnames": git_refnames, "full": git_full, "date": git_date}
     return keywords
 


=====================================
pyproject.toml
=====================================
@@ -1,8 +1,15 @@
 [build-system]
-requires = ["setuptools", "wheel", "numpy>=2.0.0rc1,<3", "Cython>=3", "versioneer"]
+requires = ["setuptools", "wheel", "numpy>=2.0.0,<3", "Cython>=3.1.2", "versioneer[toml]"]
 build-backend = "setuptools.build_meta"
 
 [tool.coverage.run]
 relative_files = true
 plugins = ["Cython.Coverage"]
 omit = ["geotiepoints/version.py"]
+
+[tool.versioneer]
+VCS = "git"
+style = "pep440"
+versionfile_source = "geotiepoints/version.py"
+versionfile_build = "geotiepoints/version.py"
+tag_prefix = "v"


=====================================
rtd_requirements.txt
=====================================
@@ -0,0 +1,8 @@
+xarray
+dask[array]
+pyresample
+pyproj
+sphinx
+sphinxcontrib-apidoc
+pytest
+


=====================================
setup.cfg
=====================================
@@ -1,14 +1,3 @@
-[bdist_rpm]
-requires=numpy cython scipy
-release=1
-
 [flake8]
 max-line-length = 120
 ignore = D107
-
-[versioneer]
-VCS = git
-style = pep440
-versionfile_source = geotiepoints/version.py
-versionfile_build = geotiepoints/version.py
-tag_prefix = v


=====================================
setup.py
=====================================
@@ -23,7 +23,7 @@ from Cython.Build import build_ext
 from Cython.Distutils import Extension
 
 requirements = ['numpy', 'scipy', 'pandas']
-test_requires = ['pytest', 'pytest-cov', 'h5py', 'xarray', 'dask', 'pyproj', "pyresample"]
+test_requires = ['pytest', 'pytest-cov', 'h5py', 'xarray', 'dask[array]', 'pyproj', "pyresample"]
 
 if sys.platform.startswith("win"):
     extra_compile_args = []
@@ -67,6 +67,7 @@ except ValueError:
 
 cython_directives = {
     "language_level": "3",
+    "freethreading_compatible": True,
 }
 define_macros = [("NPY_NO_DEPRECATED_API", "NPY_1_7_API_VERSION")]
 if cython_coverage:
@@ -96,19 +97,25 @@ if __name__ == "__main__":
           long_description_content_type='text/markdown',
           author='Adam Dybbroe, Martin Raspaud',
           author_email='martin.raspaud at smhi.se',
-          classifiers=["Development Status :: 5 - Production/Stable",
-                       "Intended Audience :: Science/Research",
-                       "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
-                       "Operating System :: OS Independent",
-                       "Programming Language :: Python",
-                       "Programming Language :: Cython",
-                       "Topic :: Scientific/Engineering"],
+          classifiers=[
+              "Development Status :: 5 - Production/Stable",
+              "Intended Audience :: Science/Research",
+              "Operating System :: OS Independent",
+              "Programming Language :: Python",
+              "Programming Language :: Cython",
+              "Topic :: Scientific/Engineering",
+              "Programming Language :: Python :: Free Threading :: 1 - Unstable",
+          ],
+          license="GPL-3.0-or-later",
+          license_files=["LICENSE.txt"],
           url="https://github.com/pytroll/python-geotiepoints",
           packages=find_packages(),
-          python_requires='>=3.10',
+          python_requires='>=3.11',
           cmdclass=cmdclass,
           install_requires=requirements,
           ext_modules=EXTENSIONS,
-          tests_require=test_requires,
+          extras_require={
+              "tests": test_requires,
+          },
           zip_safe=False
           )



View it on GitLab: https://salsa.debian.org/debian-gis-team/python-geotiepoints/-/compare/8f84bafc9bfdbe798fb167746a8053e423887518...eeb604ca13b8992c5b579d8f94fcc007fc16939a

-- 
View it on GitLab: https://salsa.debian.org/debian-gis-team/python-geotiepoints/-/compare/8f84bafc9bfdbe798fb167746a8053e423887518...eeb604ca13b8992c5b579d8f94fcc007fc16939a
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20250917/6a8e1b52/attachment-0001.htm>


More information about the Pkg-grass-devel mailing list