commit:     e0428b5cd6592eb5d12fc4474a5f21fc37a138df
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed May 14 08:34:27 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed May 14 11:59:08 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e0428b5c

dev-python/anyio: Enable py3.14

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-python/anyio/anyio-4.8.0-r2.ebuild             |   2 +-
 ...anyio-4.8.0-r2.ebuild => anyio-4.8.0-r3.ebuild} |  20 +++-
 dev-python/anyio/files/anyio-4.8.0-py314.patch     | 124 +++++++++++++++++++++
 3 files changed, 143 insertions(+), 3 deletions(-)

diff --git a/dev-python/anyio/anyio-4.8.0-r2.ebuild 
b/dev-python/anyio/anyio-4.8.0-r2.ebuild
index 734795bd8e7c..714d8c17ab48 100644
--- a/dev-python/anyio/anyio-4.8.0-r2.ebuild
+++ b/dev-python/anyio/anyio-4.8.0-r2.ebuild
@@ -4,7 +4,7 @@
 EAPI=8
 
 DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( pypy3_11 python3_{11..13} )
+PYTHON_COMPAT=( pypy3_11 python3_{11..14} )
 
 inherit distutils-r1 pypi
 

diff --git a/dev-python/anyio/anyio-4.8.0-r2.ebuild 
b/dev-python/anyio/anyio-4.8.0-r3.ebuild
similarity index 75%
copy from dev-python/anyio/anyio-4.8.0-r2.ebuild
copy to dev-python/anyio/anyio-4.8.0-r3.ebuild
index 734795bd8e7c..6ebf7a291939 100644
--- a/dev-python/anyio/anyio-4.8.0-r2.ebuild
+++ b/dev-python/anyio/anyio-4.8.0-r3.ebuild
@@ -4,7 +4,7 @@
 EAPI=8
 
 DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( pypy3_11 python3_{11..13} )
+PYTHON_COMPAT=( pypy3_11 python3_{11..14} )
 
 inherit distutils-r1 pypi
 
@@ -16,7 +16,7 @@ HOMEPAGE="
 
 LICENSE="MIT"
 SLOT="0"
-KEYWORDS="~alpha amd64 arm arm64 hppa ~loong ~mips ppc ppc64 ~riscv ~s390 
sparc x86"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv 
~s390 ~sparc ~x86"
 
 RDEPEND="
        >=dev-python/idna-2.8[${PYTHON_USEDEP}]
@@ -52,12 +52,28 @@ distutils_enable_sphinx docs \
        dev-python/sphinxcontrib-jquery \
        dev-python/sphinx-autodoc-typehints
 
+PATCHES=(
+       # 
https://github.com/agronholm/anyio/commit/f051fd45a1d34bae8dd70dba726e711e7a49deee
+       # 
https://github.com/agronholm/anyio/commit/e0e2531de14c54eed895c92b4c8e87b44f47634b
+       # 
https://github.com/agronholm/anyio/commit/8bad9c05d966f6edfa58f26257015cb657d4e5ef
+       "${FILESDIR}/${P}-py314.patch"
+)
+
 python_test() {
        local EPYTEST_DESELECT=(
                # requires link-local IPv6 interface
                tests/test_sockets.py::TestTCPListener::test_bind_link_local
        )
 
+       case ${EPYTHON} in
+               pypy3.11)
+                       EPYTEST_DESELECT+=(
+                               # likely related to 
https://github.com/pypy/pypy/issues/5264
+                               tests/test_debugging.py::test_main_task_name
+                       )
+                       ;;
+       esac
+
        local filter=()
        if ! has_version ">=dev-python/trio-0.26.1[${PYTHON_USEDEP}]"; then
                filter+=( -k "not trio" )

diff --git a/dev-python/anyio/files/anyio-4.8.0-py314.patch 
b/dev-python/anyio/files/anyio-4.8.0-py314.patch
new file mode 100644
index 000000000000..9e1ad2fb151c
--- /dev/null
+++ b/dev-python/anyio/files/anyio-4.8.0-py314.patch
@@ -0,0 +1,124 @@
+From f051fd45a1d34bae8dd70dba726e711e7a49deee Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Alex=20Gr=C3=B6nholm?= <[email protected]>
+Date: Tue, 18 Mar 2025 14:38:12 +0200
+Subject: [PATCH] Fixed Path tests on Python 3.14.0a6
+
+---
+ src/anyio/_core/_fileio.py | 8 +++-----
+ 1 file changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/src/anyio/_core/_fileio.py b/src/anyio/_core/_fileio.py
+index a0d61984..17459b79 100644
+--- a/src/anyio/_core/_fileio.py
++++ b/src/anyio/_core/_fileio.py
+@@ -421,13 +421,11 @@ async def copy(
+             target: str | os.PathLike[str],
+             *,
+             follow_symlinks: bool = True,
+-            dirs_exist_ok: bool = False,
+             preserve_metadata: bool = False,
+         ) -> Path:
+             func = partial(
+                 self._path.copy,
+                 follow_symlinks=follow_symlinks,
+-                dirs_exist_ok=dirs_exist_ok,
+                 preserve_metadata=preserve_metadata,
+             )
+             return Path(await to_thread.run_sync(func, target))
+@@ -437,13 +435,11 @@ async def copy_into(
+             target_dir: str | os.PathLike[str],
+             *,
+             follow_symlinks: bool = True,
+-            dirs_exist_ok: bool = False,
+             preserve_metadata: bool = False,
+         ) -> Path:
+             func = partial(
+                 self._path.copy_into,
+                 follow_symlinks=follow_symlinks,
+-                dirs_exist_ok=dirs_exist_ok,
+                 preserve_metadata=preserve_metadata,
+             )
+             return Path(await to_thread.run_sync(func, target_dir))
+@@ -616,7 +612,9 @@ async def read_text(
+         def relative_to(
+             self, *other: str | PathLike[str], walk_up: bool = False
+         ) -> Path:
+-            return Path(self._path.relative_to(*other, walk_up=walk_up))
++            # relative_to() should work with any PathLike but it doesn't
++            others = [pathlib.Path(other) for other in other]
++            return Path(self._path.relative_to(*others, walk_up=walk_up))
+ 
+     else:
+ 
+From e0e2531de14c54eed895c92b4c8e87b44f47634b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Alex=20Gr=C3=B6nholm?= <[email protected]>
+Date: Tue, 15 Apr 2025 00:54:22 +0300
+Subject: [PATCH] Fixed Path.copy() and Path.copy_info failing on Python
+ 3.14.0a7
+
+---
+ docs/versionhistory.rst    | 1 +
+ src/anyio/_core/_fileio.py | 4 ++--
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/anyio/_core/_fileio.py b/src/anyio/_core/_fileio.py
+index 17459b79..2eae029e 100644
+--- a/src/anyio/_core/_fileio.py
++++ b/src/anyio/_core/_fileio.py
+@@ -428,7 +428,7 @@ async def copy(
+                 follow_symlinks=follow_symlinks,
+                 preserve_metadata=preserve_metadata,
+             )
+-            return Path(await to_thread.run_sync(func, target))
++            return Path(await to_thread.run_sync(func, pathlib.Path(target)))
+ 
+         async def copy_into(
+             self,
+@@ -442,7 +442,7 @@ async def copy_into(
+                 follow_symlinks=follow_symlinks,
+                 preserve_metadata=preserve_metadata,
+             )
+-            return Path(await to_thread.run_sync(func, target_dir))
++            return Path(await to_thread.run_sync(func, 
pathlib.Path(target_dir)))
+ 
+         async def move(self, target: str | os.PathLike[str]) -> Path:
+             # Upstream does not handle anyio.Path properly as a PathLike
+From 8bad9c05d966f6edfa58f26257015cb657d4e5ef Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Alex=20Gr=C3=B6nholm?= <[email protected]>
+Date: Sat, 15 Feb 2025 16:41:44 +0200
+Subject: [PATCH] Fixed test failures caused by Python 3.14.0a5
+
+---
+ docs/versionhistory.rst    |  1 +
+ src/anyio/_core/_fileio.py | 15 ++++++++++-----
+ tests/test_fileio.py       |  2 ++
+ 3 files changed, 13 insertions(+), 5 deletions(-)
+
+diff --git a/src/anyio/_core/_fileio.py b/src/anyio/_core/_fileio.py
+index 3728734c..350a873a 100644
+--- a/src/anyio/_core/_fileio.py
++++ b/src/anyio/_core/_fileio.py
+@@ -411,6 +412,10 @@ def match(self, path_pattern: str) -> bool:
+ 
+     if sys.version_info >= (3, 14):
+ 
++        @property
++        def info(self) -> Any:  # TODO: add return type annotation when 
Typeshed gets it
++            return self._path.info
++
+         async def copy(
+             self,
+             target: str | os.PathLike[str],
+diff --git a/tests/test_fileio.py b/tests/test_fileio.py
+index d7a769bd..28830e6e 100644
+--- a/tests/test_fileio.py
++++ b/tests/test_fileio.py
+@@ -106,6 +106,8 @@ async def test_properties(self) -> None:
+         stdlib_properties.discard("__enter__")
+         stdlib_properties.discard("__exit__")
+         stdlib_properties.discard("__firstlineno__")
++        stdlib_properties.discard("__open_rb__")
++        stdlib_properties.discard("__open_wb__")
+ 
+         async_path = Path(path)
+         anyio_properties = {

Reply via email to