Package: src:python-aioemonitor Version: 1.0.5-2 Severity: serious Tags: ftbfs forky sid User: [email protected] Usertags: aiohttp-3.14
Dear maintainer: During a rebuild of all packages in unstable, this package failed to build. Below you will find the last part of the build log (probably the most relevant part, but not necessarily). If required, the full build log is available here: https://people.debian.org/~sanvila/build-logs/202606/ About the archive rebuild: The build was made on virtual machines from AWS, using sbuild and a reduced chroot with only build-essential packages. If you cannot reproduce the bug please contact me privately, as I am willing to provide ssh access to a virtual machine where the bug is fully reproducible. If this is really a bug in one of the build-depends, please use reassign and add an affects on src:python-aioemonitor, so that this is still visible in the BTS web page for this package. Thanks. -------------------------------------------------------------------------------- [...] debian/rules clean make: pyversions: No such file or directory py3versions: no X-Python3-Version in control file, using supported versions dh clean --buildsystem=pybuild --with python3 dh_auto_clean -O--buildsystem=pybuild dh_autoreconf_clean -O--buildsystem=pybuild dh_clean -O--buildsystem=pybuild debian/rules binary make: pyversions: No such file or directory py3versions: no X-Python3-Version in control file, using supported versions dh binary --buildsystem=pybuild --with python3 dh_update_autotools_config -O--buildsystem=pybuild dh_autoreconf -O--buildsystem=pybuild dh_auto_configure -O--buildsystem=pybuild dh_auto_build -O--buildsystem=pybuild I: pybuild plugin_pyproject:142: Building wheel for python3.14 with "build" module I: pybuild base:385: python3.14 -m build --skip-dependency-check --no-isolation --wheel --outdir /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14 * Building wheel... /usr/lib/python3/dist-packages/setuptools/_distutils/dist.py:289: UserWarning: Unknown distribution option: 'test_suite' warnings.warn(msg) /usr/lib/python3/dist-packages/setuptools/_distutils/dist.py:289: UserWarning: Unknown distribution option: 'tests_require' warnings.warn(msg) /usr/lib/python3/dist-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: Apache Software License See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! self._finalize_license_expression() running bdist_wheel /usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py:135: SetuptoolsDeprecationWarning: bdist_wheel.universal is deprecated !! ******************************************************************************** With Python 2.7 end-of-life, support for building universal wheels (i.e., wheels that support both Python 2 and Python 3) is being obviated. Please discontinue using this option, or if you still need it, file an issue with pypa/setuptools describing your use case. This deprecation is overdue, please update your project and remove deprecated calls to avoid build errors in the future. ******************************************************************************** !! self.finalize_options() running build running build_py creating build/lib/aioemonitor copying aioemonitor/monitor.py -> build/lib/aioemonitor copying aioemonitor/__init__.py -> build/lib/aioemonitor running egg_info creating aioemonitor.egg-info writing aioemonitor.egg-info/PKG-INFO writing dependency_links to aioemonitor.egg-info/dependency_links.txt writing entry points to aioemonitor.egg-info/entry_points.txt writing requirements to aioemonitor.egg-info/requires.txt writing top-level names to aioemonitor.egg-info/top_level.txt writing manifest file 'aioemonitor.egg-info/SOURCES.txt' reading manifest file 'aioemonitor.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no files found matching '*' under directory 'tests' warning: no previously-included files matching '__pycache__' found under directory '*' warning: no previously-included files matching '*.py[co]' found under directory '*' warning: no files found matching '*.jpg' under directory 'docs' warning: no files found matching '*.png' under directory 'docs' warning: no files found matching '*.gif' under directory 'docs' warning: no directories found matching 'aioemonitor/data' adding license file 'LICENSE' writing manifest file 'aioemonitor.egg-info/SOURCES.txt' installing to build/bdist.linux-x86_64/wheel running install running install_lib creating build/bdist.linux-x86_64/wheel creating build/bdist.linux-x86_64/wheel/aioemonitor copying build/lib/aioemonitor/monitor.py -> build/bdist.linux-x86_64/wheel/./aioemonitor copying build/lib/aioemonitor/__init__.py -> build/bdist.linux-x86_64/wheel/./aioemonitor running install_egg_info Copying aioemonitor.egg-info to build/bdist.linux-x86_64/wheel/./aioemonitor-1.0.5.egg-info running install_scripts creating build/bdist.linux-x86_64/wheel/aioemonitor-1.0.5.dist-info/WHEEL creating '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14/.tmp-2lk0b5xg/aioemonitor-1.0.5-py2.py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it adding 'aioemonitor/__init__.py' adding 'aioemonitor/monitor.py' adding 'aioemonitor-1.0.5.dist-info/licenses/LICENSE' adding 'aioemonitor-1.0.5.dist-info/METADATA' adding 'aioemonitor-1.0.5.dist-info/WHEEL' adding 'aioemonitor-1.0.5.dist-info/entry_points.txt' adding 'aioemonitor-1.0.5.dist-info/top_level.txt' adding 'aioemonitor-1.0.5.dist-info/RECORD' removing build/bdist.linux-x86_64/wheel Successfully built aioemonitor-1.0.5-py2.py3-none-any.whl I: pybuild plugin_pyproject:168: Unpacking wheel built for python3.14 with "installer" module I: pybuild plugin_pyproject:142: Building wheel for python3.13 with "build" module I: pybuild base:385: python3.13 -m build --skip-dependency-check --no-isolation --wheel --outdir /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13 * Building wheel... /usr/lib/python3/dist-packages/setuptools/_distutils/dist.py:289: UserWarning: Unknown distribution option: 'test_suite' warnings.warn(msg) /usr/lib/python3/dist-packages/setuptools/_distutils/dist.py:289: UserWarning: Unknown distribution option: 'tests_require' warnings.warn(msg) /usr/lib/python3/dist-packages/setuptools/dist.py:759: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: Apache Software License See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! self._finalize_license_expression() running bdist_wheel /usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py:135: SetuptoolsDeprecationWarning: bdist_wheel.universal is deprecated !! ******************************************************************************** With Python 2.7 end-of-life, support for building universal wheels (i.e., wheels that support both Python 2 and Python 3) is being obviated. Please discontinue using this option, or if you still need it, file an issue with pypa/setuptools describing your use case. This deprecation is overdue, please update your project and remove deprecated calls to avoid build errors in the future. ******************************************************************************** !! self.finalize_options() running build running build_py running egg_info writing aioemonitor.egg-info/PKG-INFO writing dependency_links to aioemonitor.egg-info/dependency_links.txt writing entry points to aioemonitor.egg-info/entry_points.txt writing requirements to aioemonitor.egg-info/requires.txt writing top-level names to aioemonitor.egg-info/top_level.txt reading manifest file 'aioemonitor.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no files found matching '*' under directory 'tests' warning: no previously-included files matching '__pycache__' found under directory '*' warning: no previously-included files matching '*.py[co]' found under directory '*' warning: no files found matching '*.jpg' under directory 'docs' warning: no files found matching '*.png' under directory 'docs' warning: no files found matching '*.gif' under directory 'docs' warning: no directories found matching 'aioemonitor/data' adding license file 'LICENSE' writing manifest file 'aioemonitor.egg-info/SOURCES.txt' installing to build/bdist.linux-x86_64/wheel running install running install_lib creating build/bdist.linux-x86_64/wheel creating build/bdist.linux-x86_64/wheel/aioemonitor copying build/lib/aioemonitor/monitor.py -> build/bdist.linux-x86_64/wheel/./aioemonitor copying build/lib/aioemonitor/__init__.py -> build/bdist.linux-x86_64/wheel/./aioemonitor running install_egg_info Copying aioemonitor.egg-info to build/bdist.linux-x86_64/wheel/./aioemonitor-1.0.5.egg-info running install_scripts creating build/bdist.linux-x86_64/wheel/aioemonitor-1.0.5.dist-info/WHEEL creating '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/.tmp-fjfrfggz/aioemonitor-1.0.5-py2.py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it adding 'aioemonitor/__init__.py' adding 'aioemonitor/monitor.py' adding 'aioemonitor-1.0.5.dist-info/licenses/LICENSE' adding 'aioemonitor-1.0.5.dist-info/METADATA' adding 'aioemonitor-1.0.5.dist-info/WHEEL' adding 'aioemonitor-1.0.5.dist-info/entry_points.txt' adding 'aioemonitor-1.0.5.dist-info/top_level.txt' adding 'aioemonitor-1.0.5.dist-info/RECORD' removing build/bdist.linux-x86_64/wheel Successfully built aioemonitor-1.0.5-py2.py3-none-any.whl I: pybuild plugin_pyproject:168: Unpacking wheel built for python3.13 with "installer" module dh_auto_test -O--buildsystem=pybuild I: pybuild base:385: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14/build; python3.14 -m pytest -v /<<PKGBUILDDIR>>/aioemonitor/tests ============================= test session starts ============================== platform linux -- Python 3.14.5, pytest-9.0.3, pluggy-1.6.0 -- /usr/bin/python3.14 cachedir: .pytest_cache rootdir: /<<PKGBUILDDIR>> configfile: setup.cfg plugins: asyncio-1.4.0, cov-5.0.0, typeguard-4.4.4 asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function collecting ... collected 1 item ../../../aioemonitor/tests/test_monitor.py::test_async_get_status FAILED [100%] =================================== FAILURES =================================== ____________________________ test_async_get_status _____________________________ @pytest.mark.asyncio async def test_async_get_status(): session = ClientSession() emonitor = Emonitor("1.2.3.4", session) with aioresponses() as m: m.get(f"http://1.2.3.4{STATUS_ENDPOINT}", body=load_fixture("status.xml")) > status = await emonitor.async_get_status() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../../../aioemonitor/tests/test_monitor.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../../../aioemonitor/monitor.py:66: in async_get_status text = await self._get(STATUS_ENDPOINT) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../../../aioemonitor/monitor.py:55: in _get response = await self._websession.request( <string>:3: in _request ??? /usr/lib/python3.14/unittest/mock.py:2344: in _execute_mock_call result = await effect(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3/dist-packages/aioresponses/core.py:512: in _request_mock response = await self.match(method, url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3/dist-packages/aioresponses/core.py:456: in match response_or_exc = await matcher.build_response( /usr/lib/python3/dist-packages/aioresponses/core.py:202: in build_response resp = self._build_response( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <aioresponses.core.RequestMatch object at 0x7f0e61020d70> url = URL('http://1.2.3.4/status.xml'), method = 'get', request_headers = {} status = 200 body = b'\n<?xml version="1.0" encoding="UTF-8"?>\n\n<emonitor>\n <hardware>\n <serial_number>1234</serial_number>\n <TLA_n...\n <avg_power>0</avg_power>\n <inst_power>0</inst_power>\n </channel>\n\n\n\n</channels>\n</emonitor>\n\n\n\n\n\n' content_type = 'application/json', payload = None, headers = None response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK' def _build_response(self, url: 'Union[URL, str]', method: str = hdrs.METH_GET, request_headers: Optional[Dict] = None, status: int = 200, body: Union[str, bytes] = '', content_type: str = 'application/json', payload: Optional[Dict] = None, headers: Optional[Dict] = None, response_class: Optional[Type[ClientResponse]] = None, reason: Optional[str] = None) -> ClientResponse: if response_class is None: response_class = ClientResponse if payload is not None: body = json.dumps(payload) if not isinstance(body, bytes): body = str.encode(body) if request_headers is None: request_headers = {} loop = Mock() loop.get_debug = Mock() loop.get_debug.return_value = True kwargs = {} # type: Dict[str, Any] kwargs['request_info'] = RequestInfo( url=url, method=method, headers=CIMultiDictProxy(CIMultiDict(**request_headers)), ) kwargs['writer'] = None kwargs['continue100'] = None kwargs['timer'] = TimerNoop() kwargs['traces'] = [] kwargs['loop'] = loop kwargs['session'] = None # We need to initialize headers manually _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type}) if headers: _headers.update(headers) raw_headers = self._build_raw_headers(_headers) > resp = response_class(method, url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer' /usr/lib/python3/dist-packages/aioresponses/core.py:171: TypeError =============================== warnings summary =============================== ../../../../../../usr/lib/python3/dist-packages/_pytest/config/__init__.py:1434 /usr/lib/python3/dist-packages/_pytest/config/__init__.py:1434: PytestConfigWarning: Unknown config option: collect_ignore self._warn_or_fail_if_strict(f"Unknown config option: {key}\n") -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED ../../../aioemonitor/tests/test_monitor.py::test_async_get_status - Ty... ========================= 1 failed, 1 warning in 0.13s ========================= Unclosed client session client_session: <aiohttp.client.ClientSession object at 0x7f0e6110ba10> E: pybuild pybuild:485: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14/build; python3.14 -m pytest -v /<<PKGBUILDDIR>>/aioemonitor/tests I: pybuild base:385: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build; python3.13 -m pytest -v /<<PKGBUILDDIR>>/aioemonitor/tests ============================= test session starts ============================== platform linux -- Python 3.13.12, pytest-9.0.3, pluggy-1.6.0 -- /usr/bin/python3.13 cachedir: .pytest_cache rootdir: /<<PKGBUILDDIR>> configfile: setup.cfg plugins: asyncio-1.4.0, cov-5.0.0, typeguard-4.4.4 asyncio: mode=Mode.STRICT, debug=False, asyncio_default_fixture_loop_scope=None, asyncio_default_test_loop_scope=function collecting ... collected 1 item ../../../aioemonitor/tests/test_monitor.py::test_async_get_status FAILED [100%] =================================== FAILURES =================================== ____________________________ test_async_get_status _____________________________ @pytest.mark.asyncio async def test_async_get_status(): session = ClientSession() emonitor = Emonitor("1.2.3.4", session) with aioresponses() as m: m.get(f"http://1.2.3.4{STATUS_ENDPOINT}", body=load_fixture("status.xml")) > status = await emonitor.async_get_status() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../../../aioemonitor/tests/test_monitor.py:26: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../../../aioemonitor/monitor.py:66: in async_get_status text = await self._get(STATUS_ENDPOINT) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../../../aioemonitor/monitor.py:55: in _get response = await self._websession.request( <string>:3: in _request ??? /usr/lib/python3.13/unittest/mock.py:2332: in _execute_mock_call result = await effect(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3/dist-packages/aioresponses/core.py:512: in _request_mock response = await self.match(method, url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /usr/lib/python3/dist-packages/aioresponses/core.py:456: in match response_or_exc = await matcher.build_response( /usr/lib/python3/dist-packages/aioresponses/core.py:202: in build_response resp = self._build_response( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <aioresponses.core.RequestMatch object at 0x7f7cd19a8980> url = URL('http://1.2.3.4/status.xml'), method = 'get', request_headers = {} status = 200 body = b'\n<?xml version="1.0" encoding="UTF-8"?>\n\n<emonitor>\n <hardware>\n <serial_number>1234</serial_number>\n <TLA_n...\n <avg_power>0</avg_power>\n <inst_power>0</inst_power>\n </channel>\n\n\n\n</channels>\n</emonitor>\n\n\n\n\n\n' content_type = 'application/json', payload = None, headers = None response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK' def _build_response(self, url: 'Union[URL, str]', method: str = hdrs.METH_GET, request_headers: Optional[Dict] = None, status: int = 200, body: Union[str, bytes] = '', content_type: str = 'application/json', payload: Optional[Dict] = None, headers: Optional[Dict] = None, response_class: Optional[Type[ClientResponse]] = None, reason: Optional[str] = None) -> ClientResponse: if response_class is None: response_class = ClientResponse if payload is not None: body = json.dumps(payload) if not isinstance(body, bytes): body = str.encode(body) if request_headers is None: request_headers = {} loop = Mock() loop.get_debug = Mock() loop.get_debug.return_value = True kwargs = {} # type: Dict[str, Any] kwargs['request_info'] = RequestInfo( url=url, method=method, headers=CIMultiDictProxy(CIMultiDict(**request_headers)), ) kwargs['writer'] = None kwargs['continue100'] = None kwargs['timer'] = TimerNoop() kwargs['traces'] = [] kwargs['loop'] = loop kwargs['session'] = None # We need to initialize headers manually _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type}) if headers: _headers.update(headers) raw_headers = self._build_raw_headers(_headers) > resp = response_class(method, url, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer' /usr/lib/python3/dist-packages/aioresponses/core.py:171: TypeError =============================== warnings summary =============================== ../../../../../../usr/lib/python3/dist-packages/_pytest/config/__init__.py:1434 /usr/lib/python3/dist-packages/_pytest/config/__init__.py:1434: PytestConfigWarning: Unknown config option: collect_ignore self._warn_or_fail_if_strict(f"Unknown config option: {key}\n") -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED ../../../aioemonitor/tests/test_monitor.py::test_async_get_status - Ty... ========================= 1 failed, 1 warning in 0.13s ========================= Unclosed client session client_session: <aiohttp.client.ClientSession object at 0x7f7cd1c938c0> E: pybuild pybuild:485: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build; python3.13 -m pytest -v /<<PKGBUILDDIR>>/aioemonitor/tests dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.14 3.13" --parallel=2 returned exit code 13 make: *** [debian/rules:9: binary] Error 25 dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2 --------------------------------------------------------------------------------

