https://github.com/python/cpython/commit/af2afd7c224389856e118d3f544c9621a016599f commit: af2afd7c224389856e118d3f544c9621a016599f branch: main author: Victorien <65306057+vii...@users.noreply.github.com> committer: JelleZijlstra <jelle.zijls...@gmail.com> 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 -- python-checkins@python.org To unsubscribe send an email to python-checkins-le...@python.org https://mail.python.org/mailman3/lists/python-checkins.python.org/ Member address: arch...@mail-archive.com