* Support Python >= 3.9.8 changes. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:numeric/python-numpy?expand=0&rev=99
60 lines
2.0 KiB
Diff
60 lines
2.0 KiB
Diff
From 8871c7285fc097fd1bf713aa184cba7e2804f625 Mon Sep 17 00:00:00 2001
|
|
From: Bas van Beek <b.f.van.beek@vu.nl>
|
|
Date: Wed, 10 Nov 2021 15:36:00 +0100
|
|
Subject: [PATCH] MAINT: Do not forward `__(deep)copy__` calls of
|
|
`_GenericAlias` to the wrapped type
|
|
|
|
Adapt to the python 3.9.8 changes made in bpo-45167.
|
|
---
|
|
numpy/typing/_generic_alias.py | 2 ++
|
|
numpy/typing/tests/test_generic_alias.py | 16 ++++++++++++++++
|
|
2 files changed, 18 insertions(+)
|
|
|
|
diff --git a/numpy/typing/_generic_alias.py b/numpy/typing/_generic_alias.py
|
|
index 932f12dd05d..1eb2c8c05f0 100644
|
|
--- a/numpy/typing/_generic_alias.py
|
|
+++ b/numpy/typing/_generic_alias.py
|
|
@@ -185,6 +185,8 @@ def __eq__(self, value: object) -> bool:
|
|
"__mro_entries__",
|
|
"__reduce__",
|
|
"__reduce_ex__",
|
|
+ "__copy__",
|
|
+ "__deepcopy__",
|
|
})
|
|
|
|
def __getattribute__(self, name: str) -> Any:
|
|
diff --git a/numpy/typing/tests/test_generic_alias.py b/numpy/typing/tests/test_generic_alias.py
|
|
index 3021d985934..39343420bdc 100644
|
|
--- a/numpy/typing/tests/test_generic_alias.py
|
|
+++ b/numpy/typing/tests/test_generic_alias.py
|
|
@@ -1,6 +1,7 @@
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
+import copy
|
|
import types
|
|
import pickle
|
|
import weakref
|
|
@@ -80,6 +81,21 @@ def test_pass(self, name: str, func: FuncType) -> None:
|
|
value_ref = func(NDArray_ref)
|
|
assert value == value_ref
|
|
|
|
+ @pytest.mark.parametrize("name,func", [
|
|
+ ("__copy__", lambda n: n == copy.copy(n)),
|
|
+ ("__deepcopy__", lambda n: n == copy.deepcopy(n)),
|
|
+ ])
|
|
+ def test_copy(self, name: str, func: FuncType) -> None:
|
|
+ value = func(NDArray)
|
|
+
|
|
+ # xref bpo-45167
|
|
+ GE_398 = (
|
|
+ sys.version_info[:2] == (3, 9) and sys.version_info >= (3, 9, 8)
|
|
+ )
|
|
+ if GE_398 or sys.version_info >= (3, 10, 1):
|
|
+ value_ref = func(NDArray_ref)
|
|
+ assert value == value_ref
|
|
+
|
|
def test_weakref(self) -> None:
|
|
"""Test ``__weakref__``."""
|
|
value = weakref.ref(NDArray)()
|