Skip to content

Commit 993ac2f

Browse files
committed
no support
1 parent 34293d7 commit 993ac2f

File tree

1 file changed

+42
-5
lines changed

1 file changed

+42
-5
lines changed

src/test_typing_extensions.py

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,6 @@
103103
runtime_checkable,
104104
)
105105

106-
if sys.version_info >= (3, 14):
107-
from test.support import EqualToForwardRef
108-
else:
109-
EqualToForwardRef = typing.ForwardRef
110-
111106
NoneType = type(None)
112107
T = TypeVar("T")
113108
KT = TypeVar("KT")
@@ -444,6 +439,48 @@ def assertNotIsSubclass(self, cls, class_or_tuple, msg=None):
444439
raise self.failureException(message)
445440

446441

442+
class EqualToForwardRef:
443+
"""Helper to ease use of annotationlib.ForwardRef in tests.
444+
445+
This checks only attributes that can be set using the constructor.
446+
447+
"""
448+
449+
def __init__(
450+
self,
451+
arg,
452+
*,
453+
module=None,
454+
owner=None,
455+
is_class=False,
456+
):
457+
self.__forward_arg__ = arg
458+
self.__forward_is_class__ = is_class
459+
self.__forward_module__ = module
460+
self.__owner__ = owner
461+
462+
def __eq__(self, other):
463+
if not isinstance(other, (EqualToForwardRef, typing.ForwardRef)):
464+
return NotImplemented
465+
if sys.version_info >= (3, 14) and self.__owner__ != other.__owner__:
466+
return False
467+
return (
468+
self.__forward_arg__ == other.__forward_arg__
469+
and self.__forward_module__ == other.__forward_module__
470+
and self.__forward_is_class__ == other.__forward_is_class__
471+
)
472+
473+
def __repr__(self):
474+
extra = []
475+
if self.__forward_module__ is not None:
476+
extra.append(f", module={self.__forward_module__!r}")
477+
if self.__forward_is_class__:
478+
extra.append(", is_class=True")
479+
if sys.version_info >= (3, 14) and self.__owner__ is not None:
480+
extra.append(f", owner={self.__owner__!r}")
481+
return f"EqualToForwardRef({self.__forward_arg__!r}{''.join(extra)})"
482+
483+
447484
class Employee:
448485
pass
449486

0 commit comments

Comments
 (0)