[From nobody Sat Oct  3 12:35:12 2026
Received: (at submit) by bugs.debian.org; 28 Sep 2026 21:01:15 +0000
X-Spam-Checker-Version: SpamAssassin 4.0.1-bugs.debian.org_2005_01_02
 (2024-03-25) on buxtehude.debian.org
X-Spam-Level: 
X-Spam-Status: No, score=-118.2 required=4.0 tests=ALL_TRUSTED,BAYES_00,
 BODY_INCLUDES_PACKAGE,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,
 DKIM_VALID_AU,FOURLA,FROMDEVELOPER,HAS_PACKAGE,SPF_HELO_NONE,SPF_PASS,
 USER_IN_DKIM_WELCOMELIST autolearn=ham autolearn_force=no
 version=4.0.1-bugs.debian.org_2005_01_02
X-Spam-Bayes: score:0.0000 Tokens: new, 63; hammy, 150; neutral, 95; spammy,
 0. spammytokens:
 hammytokens:0.000-+--Hx-spam-relays-external:sk:stravin,
 0.000-+--H*RT:sk:stravin, 0.000-+--Hx-spam-relays-external:311,
 0.000-+--H*RT:311, 0.000-+--H*RT:108
Return-path: &lt;marga@debian.org&gt;
Received: from stravinsky.debian.org ([2001:41b8:202:deb::311:108]:35794)
 by buxtehude.debian.org with esmtps
 (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)
 (Exim 4.96) (envelope-from &lt;marga@debian.org&gt;) id 1xBITL-008wxT-0O
 for submit@bugs.debian.org; Mon, 28 Sep 2026 21:01:15 +0000
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debian.org; 
 s=smtpauto.stravinsky;
 h=X-Debian-User:Content-Transfer-Encoding:Content-Type
 :Message-ID:Subject:To:From:Date:MIME-Version:Reply-To:Cc:Content-ID:
 Content-Description:In-Reply-To:References;
 bh=XhYIViioSkZPpuoWnxEVr1ofjGFu8EOklS96carpyL8=; b=VfjUHXREOjZCYdyy7vK2KJHCm2
 swVXLFUyIZjPorDxLfGvOD7tC6owxgHfr33MXFOMMP0XRms2evonmDyQIqCtsO53rSGss6g0diKCl
 bmhqgu00Zp4Z2z+090GFELwkWnAIsCkzyG6IEPC4lKMHYbWdrrGQciY/oLLg4jYAJwU2Y3oNkvIj1
 tziy3wdNTNA3OisLOfiC1go7bfPiMMPlvFBBsbsH+ct5mxF6Dfyp3vz+ib5g6wG/GakIVPNiJryyj
 D3J9Zk2cnrsn0cmV+uUFtCPijYIH9TITW6HpYlZCipM92KYUIMIXGpBVft8hzWULJ/fpaB34t2YNA
 TNUptniQ==;
Received: from authenticated-user by stravinsky.debian.org with esmtpsa
 (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)
 (Exim 4.96) (envelope-from &lt;marga@debian.org&gt;) id 1xBITH-007ttz-39
 for submit@bugs.debian.org; Mon, 28 Sep 2026 21:01:13 +0000
Authentication-Results: nefele.gnuservers.com.ar; dkim=none; dkim-atps=neutral
Received: from nefele.gnuservers.com.ar (localhost [127.0.0.1])
 by nefele.gnuservers.com.ar (Postfix) with ESMTPSA id 3816E1B3467A
 for &lt;submit@bugs.debian.org&gt;; Mon, 28 Sep 2026 21:01:09 +0000 (UTC)
MIME-Version: 1.0
Date: Mon, 28 Sep 2026 23:01:08 +0200
From: Margarita Manterola &lt;marga@debian.org&gt;
To: Submit &lt;submit@bugs.debian.org&gt;
Subject: satpy: FTBFS against python 3.15rc2 (cannot import calibrate_solar or
 calibrate_thermal)
Message-ID: &lt;714708681fe4eb988f95729277b598b6@debian.org&gt;
X-Sender: marga@debian.org
Content-Type: text/plain; charset=US-ASCII;
 format=flowed
Content-Transfer-Encoding: 7bit
X-Debian-User: marga
Delivered-To: submit@bugs.debian.org

Package: src:satpy
Version: 0.60.0-1
User: debian-python@lists.debian.org
Usertags: python3.15
Tags: ftbfs, forky, sid
Severity: serious

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 = 
&lt;satpy.tests.reader_tests.test_avhrr_l0_hrpt.TestHRPTGetCalibratedReflectances 
object at 0x7f0b0cd7d590&gt;
hrpt_fh = &lt;HRPTFile: 
'/tmp/pytest-of-sbuild/pytest-0/test_calibrated_reflectances_v0/20250609094500_noaa19.hmf'&gt;

     def test_calibrated_reflectances_values(self, hrpt_fh):
         &quot;&quot;&quot;Test the calibrated reflectance values.&quot;&quot;&quot;
&gt;       result = hrpt_fh.get_dataset(make_dataid(name=&quot;1&quot;, 
&gt; calibration=&quot;reflectance&quot;), {})
                  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

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

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=&lt;1&gt;, modifiers=())
         self       = &lt;HRPTFile: 
'/tmp/pytest-of-sbuild/pytest-0/test_calibrated_reflectances_v0/20250609094500_noaa19.hmf'&gt;
satpy/readers/hrpt.py:179: in _get_channel_data
     data = self.calibrate_solar_channel(data, key)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         data       = dask.array&lt;array, shape=(10, 2048), dtype=&gt;u2, 
chunksize=(10, 2048), chunktype=numpy.ndarray&gt;
         key        = DataID(name='1', calibration=&lt;1&gt;, modifiers=())
         self       = &lt;HRPTFile: 
'/tmp/pytest-of-sbuild/pytest-0/test_calibrated_reflectances_v0/20250609094500_noaa19.hmf'&gt;
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _ _ _

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

     def calibrate_solar_channel(self, data, key):
         &quot;&quot;&quot;Calibrate a solar channel.&quot;&quot;&quot;
&gt;       from pygac.calibration import calibrate_solar
E       ImportError: cannot import name 'calibrate_solar' from 
'pygac.calibration' (unknown location)

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

satpy/readers/hrpt.py:222: ImportError
______________ TestHRPTGetCalibratedBT.test_calibrated_bt_values 
_______________

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

     def test_calibrated_bt_values(self, hrpt_fh):
         &quot;&quot;&quot;Test the calibrated reflectance values.&quot;&quot;&quot;
&gt;       result = hrpt_fh.get_dataset(make_dataid(name=&quot;4&quot;, 
&gt; calibration=&quot;brightness_temperature&quot;), {})
                  
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

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

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=&lt;2&gt;, modifiers=())
         self       = &lt;HRPTFile: 
'/tmp/pytest-of-sbuild/pytest-0/test_calibrated_bt_values0/20250609094500_noaa19.hmf'&gt;
satpy/readers/hrpt.py:182: in _get_channel_data
     data = self.calibrate_thermal_channel(data, key)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         data       = dask.array&lt;array, shape=(10, 2048), dtype=&gt;u2, 
chunksize=(10, 2048), chunktype=numpy.ndarray&gt;
         key        = DataID(name='4', calibration=&lt;2&gt;, modifiers=())
         self       = &lt;HRPTFile: 
'/tmp/pytest-of-sbuild/pytest-0/test_calibrated_bt_values0/20250609094500_noaa19.hmf'&gt;
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _ _ _

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

     def calibrate_thermal_channel(self, data, key):
         &quot;&quot;&quot;Calibrate a thermal channel.&quot;&quot;&quot;
&gt;       from pygac.calibration import calibrate_thermal
E       ImportError: cannot import name 'calibrate_thermal' from 
'pygac.calibration' (unknown location)

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

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.

-- 
Regards,
Marga
]