From 950fab46ad3a1960aa289d2d1de55447b88e25d7 Mon Sep 17 00:00:00 2001 From: Jelle Zijlstra Date: Tue, 24 Sep 2024 14:02:18 -0700 Subject: [PATCH] dataclasses: Avoid using private class (#124465) typing.get_origin() does what we need here, without reaching into typing internals. This shouldn't change any behavior (so I am going to skip news), but it sets a good example for other users introspecting typing objects. --- Lib/dataclasses.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Lib/dataclasses.py b/Lib/dataclasses.py index ac7d40cf2cac2e..6255d8980974e0 100644 --- a/Lib/dataclasses.py +++ b/Lib/dataclasses.py @@ -690,11 +690,8 @@ def _frozen_get_del_attr(cls, fields, func_builder): def _is_classvar(a_type, typing): - # This test uses a typing internal class, but it's the best way to - # test if this is a ClassVar. return (a_type is typing.ClassVar - or (type(a_type) is typing._GenericAlias - and a_type.__origin__ is typing.ClassVar)) + or (typing.get_origin(a_type) is typing.ClassVar)) def _is_initvar(a_type, dataclasses):