https://github.com/python/cpython/commit/af2afd7c224389856e118d3f544c9621a016599f
commit: af2afd7c224389856e118d3f544c9621a016599f
branch: main
author: Victorien <[email protected]>
committer: JelleZijlstra <[email protected]>
date: 2025-03-27T21:56:09-07:00
summary:
gh-119180: Use equality when comparing against `annotationlib.Format` (#131755)
files:
M Lib/test/test_annotationlib.py
M Lib/test/test_typing.py
M Lib/typing.py
diff --git a/Lib/test/test_annotationlib.py b/Lib/test/test_annotationlib.py
index 20f74b4ed0aadb..495606b48ed2e8 100644
--- a/Lib/test/test_annotationlib.py
+++ b/Lib/test/test_annotationlib.py
@@ -517,7 +517,7 @@ def foo(a: int, b: str):
foo.__annotations__ = {"a": "foo", "b": "str"}
for format in Format:
- if format is Format.VALUE_WITH_FAKE_GLOBALS:
+ if format == Format.VALUE_WITH_FAKE_GLOBALS:
continue
with self.subTest(format=format):
self.assertEqual(
@@ -816,7 +816,7 @@ def __annotations__(self):
wa = WeirdAnnotations()
for format in Format:
- if format is Format.VALUE_WITH_FAKE_GLOBALS:
+ if format == Format.VALUE_WITH_FAKE_GLOBALS:
continue
with (
self.subTest(format=format),
diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py
index 402353404cb0fb..2c0297313cb4ab 100644
--- a/Lib/test/test_typing.py
+++ b/Lib/test/test_typing.py
@@ -7158,6 +7158,8 @@ class C:
self.assertEqual(get_type_hints(C, format=annotationlib.Format.STRING),
{'x': 'undefined'})
+ # Make sure using an int as format also works:
+ self.assertEqual(get_type_hints(C, format=4), {'x': 'undefined'})
def test_get_type_hints_format_function(self):
def func(x: undefined) -> undefined: ...
diff --git a/Lib/typing.py b/Lib/typing.py
index 96211553a21e39..e36da7e9f48b71 100644
--- a/Lib/typing.py
+++ b/Lib/typing.py
@@ -2315,7 +2315,7 @@ def get_type_hints(obj, globalns=None, localns=None,
include_extras=False,
hints = {}
for base in reversed(obj.__mro__):
ann = annotationlib.get_annotations(base, format=format)
- if format is annotationlib.Format.STRING:
+ if format == annotationlib.Format.STRING:
hints.update(ann)
continue
if globalns is None:
@@ -2339,7 +2339,7 @@ def get_type_hints(obj, globalns=None, localns=None,
include_extras=False,
value = _eval_type(value, base_globals, base_locals,
base.__type_params__,
format=format, owner=obj)
hints[name] = value
- if include_extras or format is annotationlib.Format.STRING:
+ if include_extras or format == annotationlib.Format.STRING:
return hints
else:
return {k: _strip_annotations(t) for k, t in hints.items()}
@@ -2353,7 +2353,7 @@ def get_type_hints(obj, globalns=None, localns=None,
include_extras=False,
and not hasattr(obj, '__annotate__')
):
raise TypeError(f"{obj!r} is not a module, class, or callable.")
- if format is annotationlib.Format.STRING:
+ if format == annotationlib.Format.STRING:
return hints
if globalns is None:
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]