Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-aiohappyeyeballs for openSUSE:Factory checked in at 2025-02-11 21:20:29 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-aiohappyeyeballs (Old) and /work/SRC/openSUSE:Factory/.python-aiohappyeyeballs.new.19470 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-aiohappyeyeballs" Tue Feb 11 21:20:29 2025 rev:5 rq:1244663 version:2.4.6 Changes: -------- --- /work/SRC/openSUSE:Factory/python-aiohappyeyeballs/python-aiohappyeyeballs.changes 2024-12-06 14:25:33.702414239 +0100 +++ /work/SRC/openSUSE:Factory/.python-aiohappyeyeballs.new.19470/python-aiohappyeyeballs.changes 2025-02-11 21:20:47.900765945 +0100 @@ -1,0 +2,12 @@ +Sat Feb 8 16:21:08 UTC 2025 - Martin Hauke <mar...@gmx.de> + +- Update to version 2.4.6 + Bug Fixes + * Ensure all timers are cancelled when after staggered race + finishes. +- Update to version 2.4.5 + Bug Fixes + * Keep classifiers in project to avoid automatic enrichment. + * Move classifiers to prevent recalculation by Poetry. + +------------------------------------------------------------------- Old: ---- aiohappyeyeballs-2.4.4.tar.gz New: ---- aiohappyeyeballs-2.4.6.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-aiohappyeyeballs.spec ++++++ --- /var/tmp/diff_new_pack.H7LNv7/_old 2025-02-11 21:20:48.668797627 +0100 +++ /var/tmp/diff_new_pack.H7LNv7/_new 2025-02-11 21:20:48.668797627 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-aiohappyeyeballs # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2025 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ %{?sle15_python_module_pythons} Name: python-aiohappyeyeballs -Version: 2.4.4 +Version: 2.4.6 Release: 0 Summary: Happy Eyeballs for asyncio License: Python-2.0 ++++++ aiohappyeyeballs-2.4.4.tar.gz -> aiohappyeyeballs-2.4.6.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aiohappyeyeballs-2.4.4/PKG-INFO new/aiohappyeyeballs-2.4.6/PKG-INFO --- old/aiohappyeyeballs-2.4.4/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 +++ new/aiohappyeyeballs-2.4.6/PKG-INFO 1970-01-01 01:00:00.000000000 +0100 @@ -1,26 +1,23 @@ -Metadata-Version: 2.1 +Metadata-Version: 2.3 Name: aiohappyeyeballs -Version: 2.4.4 +Version: 2.4.6 Summary: Happy Eyeballs for asyncio -Home-page: https://github.com/aio-libs/aiohappyeyeballs License: PSF-2.0 Author: J. Nick Koston Author-email: n...@koston.org -Requires-Python: >=3.8 +Requires-Python: >=3.9 Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: Python Software Foundation License -Classifier: License :: Other/Proprietary License Classifier: Natural Language :: English Classifier: Operating System :: OS Independent +Classifier: Topic :: Software Development :: Libraries Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 -Classifier: Topic :: Software Development :: Libraries +Classifier: License :: OSI Approved :: Python Software Foundation License Project-URL: Bug Tracker, https://github.com/aio-libs/aiohappyeyeballs/issues Project-URL: Changelog, https://github.com/aio-libs/aiohappyeyeballs/blob/main/CHANGELOG.md Project-URL: Documentation, https://aiohappyeyeballs.readthedocs.io diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aiohappyeyeballs-2.4.4/pyproject.toml new/aiohappyeyeballs-2.4.6/pyproject.toml --- old/aiohappyeyeballs-2.4.4/pyproject.toml 2024-11-30 19:42:08.260468200 +0100 +++ new/aiohappyeyeballs-2.4.6/pyproject.toml 1970-01-01 01:00:00.000000000 +0100 @@ -1,19 +1,18 @@ -[tool.poetry] +[project] name = "aiohappyeyeballs" -version = "2.4.4" +version = "2.4.6" description = "Happy Eyeballs for asyncio" -authors = ["J. Nick Koston <n...@koston.org>"] -license = "PSF-2.0" +authors = [{ name = "J. Nick Koston", email = "n...@koston.org" }] readme = "README.md" -repository = "https://github.com/aio-libs/aiohappyeyeballs" -documentation = "https://aiohappyeyeballs.readthedocs.io" +requires-python = ">=3.9" +dynamic = ["dependencies", "optional-dependencies"] classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Natural Language :: English", "Operating System :: OS Independent", "Topic :: Software Development :: Libraries", - "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", @@ -21,22 +20,27 @@ "Programming Language :: Python :: 3.13", "License :: OSI Approved :: Python Software Foundation License" ] + +[project.urls] +"Repository" = "https://github.com/aio-libs/aiohappyeyeballs" +"Documentation" = "https://aiohappyeyeballs.readthedocs.io" +"Bug Tracker" = "https://github.com/aio-libs/aiohappyeyeballs/issues" +"Changelog" = "https://github.com/aio-libs/aiohappyeyeballs/blob/main/CHANGELOG.md" + +[tool.poetry] +license = "PSF-2.0" packages = [ { include = "aiohappyeyeballs", from = "src" }, { include = "tests", format = "sdist" }, ] -[tool.poetry.urls] -"Bug Tracker" = "https://github.com/aio-libs/aiohappyeyeballs/issues" -"Changelog" = "https://github.com/aio-libs/aiohappyeyeballs/blob/main/CHANGELOG.md" - [tool.poetry.dependencies] -python = ">=3.8" +python = ">=3.9" [tool.poetry.group.dev.dependencies] -pytest = "^7.0" -pytest-cov = "^3.0" -pytest-asyncio = "^0.23.2" +pytest = ">=7,<9" +pytest-cov = ">=3,<7" +pytest-asyncio = ">=0.23.2,<0.26.0" [tool.poetry.group.docs] optional = true @@ -49,10 +53,10 @@ [tool.poetry.group.test_build.dependencies] -twine = "^4.0.2" +twine = ">=4.0.2,<7.0.0" [tool.semantic_release] -version_toml = ["pyproject.toml:tool.poetry.version"] +version_toml = ["pyproject.toml:project.version"] version_variables = [ "src/aiohappyeyeballs/__init__.py:__version__", "docs/conf.py:release", @@ -78,6 +82,8 @@ [tool.pytest.ini_options] addopts = "-v -Wdefault --cov=aiohappyeyeballs --cov-report=term-missing:skip-covered" pythonpath = ["src"] +asyncio_mode = "auto" +asyncio_default_fixture_loop_scope = "function" [tool.coverage.run] branch = true @@ -155,5 +161,8 @@ ignore_errors = true [build-system] -requires = ["poetry-core>=1.0.0"] +requires = ["poetry-core>=2.0.0"] build-backend = "poetry.core.masonry.api" + +[tool.codespell] +skip = '*.lock' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aiohappyeyeballs-2.4.4/src/aiohappyeyeballs/__init__.py new/aiohappyeyeballs-2.4.6/src/aiohappyeyeballs/__init__.py --- old/aiohappyeyeballs-2.4.4/src/aiohappyeyeballs/__init__.py 2024-11-30 19:42:08.260468200 +0100 +++ new/aiohappyeyeballs-2.4.6/src/aiohappyeyeballs/__init__.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,4 +1,4 @@ -__version__ = "2.4.4" +__version__ = "2.4.6" from .impl import start_connection from .types import AddrInfoType diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aiohappyeyeballs-2.4.4/src/aiohappyeyeballs/_staggered.py new/aiohappyeyeballs-2.4.6/src/aiohappyeyeballs/_staggered.py --- old/aiohappyeyeballs-2.4.4/src/aiohappyeyeballs/_staggered.py 2024-11-30 19:42:06.704460600 +0100 +++ new/aiohappyeyeballs-2.4.6/src/aiohappyeyeballs/_staggered.py 1970-01-01 01:00:00.000000000 +0100 @@ -156,9 +156,9 @@ # so we have no winner and all coroutines failed. break - while tasks: + while tasks or start_next: done = await _wait_one( - [*tasks, start_next] if start_next else tasks, loop + (*tasks, start_next) if start_next else tasks, loop ) if done is start_next: # The current task has failed or the timer has expired diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aiohappyeyeballs-2.4.4/src/aiohappyeyeballs/impl.py new/aiohappyeyeballs-2.4.6/src/aiohappyeyeballs/impl.py --- old/aiohappyeyeballs-2.4.4/src/aiohappyeyeballs/impl.py 2024-11-30 19:42:06.704460600 +0100 +++ new/aiohappyeyeballs-2.4.6/src/aiohappyeyeballs/impl.py 1970-01-01 01:00:00.000000000 +0100 @@ -5,22 +5,11 @@ import functools import itertools import socket -import sys from typing import List, Optional, Sequence, Union from . import _staggered from .types import AddrInfoType -if sys.version_info < (3, 8, 2): # noqa: UP036 - # asyncio.staggered is broken in Python 3.8.0 and 3.8.1 - # so it must be patched: - # https://github.com/aio-libs/aiohttp/issues/8556 - # https://bugs.python.org/issue39129 - # https://github.com/python/cpython/pull/17693 - import asyncio.futures - - asyncio.futures.TimeoutError = asyncio.TimeoutError # type: ignore[attr-defined] - async def start_connection( addr_infos: Sequence[AddrInfoType], @@ -162,7 +151,7 @@ msg = ( f"error while attempting to bind on " f"address {laddr!r}: " - f"{exc.strerror.lower()}" + f"{(exc.strerror or '').lower()}" ) exc = OSError(exc.errno, msg) my_exceptions.append(exc) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aiohappyeyeballs-2.4.4/tests/conftest.py new/aiohappyeyeballs-2.4.6/tests/conftest.py --- old/aiohappyeyeballs-2.4.4/tests/conftest.py 2024-11-30 19:42:06.704460600 +0100 +++ new/aiohappyeyeballs-2.4.6/tests/conftest.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,14 +1,17 @@ """Configuration for the tests.""" import asyncio +import reprlib import threading +from asyncio.events import AbstractEventLoop, TimerHandle +from contextlib import contextmanager from typing import Generator import pytest @pytest.fixture(autouse=True) -def verify_threads_ended(): +def verify_threads_ended() -> Generator[None, None, None]: """Verify that the threads are not running after the test.""" threads_before = frozenset(threading.enumerate()) yield @@ -16,6 +19,27 @@ assert not threads +def get_scheduled_timer_handles(loop: AbstractEventLoop) -> list[TimerHandle]: + """Return a list of scheduled TimerHandles.""" + handles: list[TimerHandle] = loop._scheduled # type: ignore[attr-defined] + return handles + + +@contextmanager +def long_repr_strings() -> Generator[None, None, None]: + """Increase reprlib maxstring and maxother to 300.""" + arepr = reprlib.aRepr + original_maxstring = arepr.maxstring + original_maxother = arepr.maxother + arepr.maxstring = 300 + arepr.maxother = 300 + try: + yield + finally: + arepr.maxstring = original_maxstring + arepr.maxother = original_maxother + + @pytest.fixture(autouse=True) def verify_no_lingering_tasks( event_loop: asyncio.AbstractEventLoop, @@ -30,3 +54,9 @@ task.cancel() if tasks: event_loop.run_until_complete(asyncio.wait(tasks)) + + for handle in get_scheduled_timer_handles(event_loop): + if not handle.cancelled(): + with long_repr_strings(): + pytest.fail(f"Lingering timer after test {handle!r}") + handle.cancel() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aiohappyeyeballs-2.4.4/tests/test_impl.py new/aiohappyeyeballs-2.4.6/tests/test_impl.py --- old/aiohappyeyeballs-2.4.4/tests/test_impl.py 2024-11-30 19:42:06.704460600 +0100 +++ new/aiohappyeyeballs-2.4.6/tests/test_impl.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,6 +1,5 @@ import asyncio import socket -import sys from types import ModuleType from typing import Tuple from unittest import mock @@ -1821,13 +1820,6 @@ @pytest.mark.asyncio -@pytest.mark.skipif(sys.version_info >= (3, 8, 2), reason="requires < python 3.8.2") -def test_python_38_compat() -> None: - """Verify python < 3.8.2 compatibility.""" - assert asyncio.futures.TimeoutError is asyncio.TimeoutError # type: ignore[attr-defined] - - -@pytest.mark.asyncio @pytest.mark.parametrize( "connect_side_effect", [