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",
     [

Reply via email to