#1149264 satpy: FTBFS against python 3.15rc2 (cannot import calibrate_solar or calibrate_thermal)

Package:
src:satpy
Source:
src:satpy
Submitter:
Margarita Manterola
Date:
2026-10-03 11:35:04 UTC
Severity:
normal
Tags:
#1149264#5
Date:
2026-09-28 21:01:08 UTC
From:
To:
Hi!

While rebuilding the python related packages against the Python 3.15rc2
version we found that satpy fails to build from source:
https://debusine.debian.net/debian/r-python-python3.15/artifact/4857690/

 From the log, these are some of the encountered errors:

=================================== FAILURES
===================================
____ 
TestHRPTGetCalibratedReflectances.test_calibrated_reflectances_values
_____

self =
<satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTGetCalibratedReflectances
object at 0x7f0b0cd7d590>
hrpt_fh = <HRPTFile:
'/tmp/pytest-of-sbuild/pytest-0/test_calibrated_reflectances_v0/20250609094500_noaa19.hmf'>

     def test_calibrated_reflectances_values(self, hrpt_fh):
         """Test the calibrated reflectance values."""

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

hrpt_fh    = <HRPTFile:
'/tmp/pytest-of-sbuild/pytest-0/test_calibrated_reflectances_v0/20250609094500_noaa19.hmf'>
self       =
<satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTGetCalibratedReflectances
object at 0x7f0b0cd7d590>

satpy/tests/reader_tests/test_avhrr_l0_hrpt.py:110:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
satpy/readers/hrpt.py:168: in get_dataset
     data = self._get_channel_data(key)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
         attrs      = {'platform_name': 'NOAA 19'}
         info       = {}
         key        = DataID(name='1', calibration=<1>, modifiers=())
         self       = <HRPTFile:
'/tmp/pytest-of-sbuild/pytest-0/test_calibrated_reflectances_v0/20250609094500_noaa19.hmf'>
satpy/readers/hrpt.py:179: in _get_channel_data
     data = self.calibrate_solar_channel(data, key)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         data       = dask.array<array, shape=(10, 2048), dtype=>u2,
chunksize=(10, 2048), chunktype=numpy.ndarray>
         key        = DataID(name='1', calibration=<1>, modifiers=())
         self       = <HRPTFile:
'/tmp/pytest-of-sbuild/pytest-0/test_calibrated_reflectances_v0/20250609094500_noaa19.hmf'>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _

self = <HRPTFile:
'/tmp/pytest-of-sbuild/pytest-0/test_calibrated_reflectances_v0/20250609094500_noaa19.hmf'>
data = dask.array<array, shape=(10, 2048), dtype=>u2, chunksize=(10,
2048), chunktype=numpy.ndarray>
key = DataID(name='1', calibration=<1>, modifiers=())

     def calibrate_solar_channel(self, data, key):
         """Calibrate a solar channel."""

data       = dask.array<array, shape=(10, 2048), dtype=>u2,
chunksize=(10, 2048), chunktype=numpy.ndarray>
key        = DataID(name='1', calibration=<1>, modifiers=())
self       = <HRPTFile:
'/tmp/pytest-of-sbuild/pytest-0/test_calibrated_reflectances_v0/20250609094500_noaa19.hmf'>

satpy/readers/hrpt.py:222: ImportError

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

hrpt_fh    = <HRPTFile:
'/tmp/pytest-of-sbuild/pytest-0/test_calibrated_bt_values0/20250609094500_noaa19.hmf'>
self       =
<satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTGetCalibratedBT
object at 0x7f0b0cd7d6d0>

satpy/tests/reader_tests/test_avhrr_l0_hrpt.py:119:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _
satpy/readers/hrpt.py:168: in get_dataset
     data = self._get_channel_data(key)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
         attrs      = {'platform_name': 'NOAA 19'}
         info       = {}
         key        = DataID(name='4', calibration=<2>, modifiers=())
         self       = <HRPTFile:
'/tmp/pytest-of-sbuild/pytest-0/test_calibrated_bt_values0/20250609094500_noaa19.hmf'>
satpy/readers/hrpt.py:182: in _get_channel_data
     data = self.calibrate_thermal_channel(data, key)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         data       = dask.array<array, shape=(10, 2048), dtype=>u2,
chunksize=(10, 2048), chunktype=numpy.ndarray>
         key        = DataID(name='4', calibration=<2>, modifiers=())
         self       = <HRPTFile:
'/tmp/pytest-of-sbuild/pytest-0/test_calibrated_bt_values0/20250609094500_noaa19.hmf'>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _

self = <HRPTFile:
'/tmp/pytest-of-sbuild/pytest-0/test_calibrated_bt_values0/20250609094500_noaa19.hmf'>
data = dask.array<array, shape=(10, 2048), dtype=>u2, chunksize=(10,
2048), chunktype=numpy.ndarray>
key = DataID(name='4', calibration=<2>, modifiers=())

     def calibrate_thermal_channel(self, data, key):
         """Calibrate a thermal channel."""

data       = dask.array<array, shape=(10, 2048), dtype=>u2,
chunksize=(10, 2048), chunktype=numpy.ndarray>
key        = DataID(name='4', calibration=<2>, modifiers=())
self       = <HRPTFile:
'/tmp/pytest-of-sbuild/pytest-0/test_calibrated_bt_values0/20250609094500_noaa19.hmf'>

satpy/readers/hrpt.py:208: ImportError

While we ran into this error during the rebuild against Python 3.15, the
reproducible builds infrastructure is also running into this issue:
https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/satpy.html

Thus, this is not a new problem and it should be solved right away.
Setting the severity to Serious.

#1149264#10
Date:
2026-10-03 11:34:19 UTC
From:
To:
We believe that the bug you reported is fixed in the latest version of
satpy, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 1149264@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Antonio Valentino <antonio.valentino@tiscali.it> (supplier of updated satpy package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)
Format: 1.8
Date: Sat, 03 Oct 2026 10:49:54 +0000
Source: satpy
Architecture: source
Version: 0.60.0-2
Distribution: unstable
Urgency: medium
Maintainer: Debian GIS Project <pkg-grass-devel@lists.alioth.debian.org>
Changed-By: Antonio Valentino <antonio.valentino@tiscali.it>
Closes: 1149264
Changes:
 satpy (0.60.0-2) unstable; urgency=medium
 .
   [ Bas Couwenberg ]
   * Bump Standards-Version to 4.7.4, no changes.
   * Update lintian overrides.
 .
   [ Antonio Valentino ]
   * debian/patches:
     - New 0009-numpy-2.4-compat.patch (Closes: #1149264).
Checksums-Sha1:
 8edbbf5fe482e64a73c5d44d48e92d3cc1a1ebe8 3424 satpy_0.60.0-2.dsc
 d13f9220c545c81d85f58288b07ad278397bd5cc 4831508 satpy_0.60.0-2.debian.tar.xz
 2551ff5dc5c17970c869ae4886941ea47c204f16 19066 satpy_0.60.0-2_amd64.buildinfo
Checksums-Sha256:
 e36bbb8da7e10dcc265691297716b22cefad9166e6fb02f24c937946d6a0f0ca 3424 satpy_0.60.0-2.dsc
 37d4d5b7f7507f9b749afb74df1439618c0ab2c1eed6bdebe8cf1488e5b7ded9 4831508 satpy_0.60.0-2.debian.tar.xz
 aab709ea0943e8bdbf6ebab847cd19a6fd1b4d3571964b2da049ef3fb7c1c4cc 19066 satpy_0.60.0-2_amd64.buildinfo
Files:
 8778bca6feb520b5713bae5f3cc855b2 3424 python optional satpy_0.60.0-2.dsc
 32d6bc705d265b73b97c759d5a30f1c9 4831508 python optional satpy_0.60.0-2.debian.tar.xz
 a05ce3a41e52995343680a48a1af275b 19066 python optional satpy_0.60.0-2_amd64.buildinfo
-----BEGIN PGP SIGNATURE-----

iQJRBAEBCgA7FiEEO3DyCaX/1okDxHLF6/SKslePmBIFAmrA450dHGFudG9uaW8u
dmFsZW50aW5vQHRpc2NhbGkuaXQACgkQ6/SKslePmBJKsQ//Z3ZWzB+B6n014fpd
p6zZ9R5E1LesUdI5hKj6FrwO2kgXgiI8br+yk6zO0WApqvffkLO4sLqExPZZ+tr+
MdQHkllgFNMTa9UsUCgqLiGMhFy5cebeO0HPJJ/cwcguYutCu8KKdeA/GcxTJQnX
xsDD2i/hMm4jMtMdGxLxNslv5rChgE5/wXePBajGPFvqDasr5qjXRY8C7XuhBKE7
5EJn2TPVP2rbqOuRGpUm1qlUlnGQZBPCXqPD79KglWNvL9eFNAbx1fZ5CEbST/wi
NlA2XO0bRG3wZ8NoANfGhIW1rivdpuDgxEk+QCXs77I8EgXi7sKwgMNkl+P+VhbJ
3SnFlaE5d6jpUon26F2WNg7IhdUkv8wrurhXfraPNY7kFp+vS8gOHP0Ztg7yHnc2
Bgj7FH1xvP2LwPekIIellbr6ixupZ6IEJSglLOJ2PrawIR0ZN239URWr1S2w18ZE
u2H6n2I+nkttWRJaIhSK9NJkK/c/DNbBRAnsahe7CQ0MqeyU2tqL8MdpMAWMj9ox
qqXAm074hy/o+dZaMPLhR8RNKAcw4M8QZdMbMXJeoLPGBNSMki5sB8oZj1UBcinY
VNRCBjRQ84jCYXtweDKxBqQqDRCu8LicWQU3nfmbG7VBt1cuX5OyR1/NED+G/M27
lY5GRgNr4yD1VsIlmKROwU2H1Bo=
=yvxZ
-----END PGP SIGNATURE-----