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 <[email protected]>
+
+- 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: [email protected]
-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 <[email protected]>"]
-license = "PSF-2.0"
+authors = [{ name = "J. Nick Koston", email = "[email protected]" }]
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
[email protected](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]
-
-
[email protected]
@pytest.mark.parametrize(
"connect_side_effect",
[