From 1bacc917adda1f5487c459fac8c0cb527e57a7c5 Mon Sep 17 00:00:00 2001 From: AlexWaygood Date: Thu, 6 Apr 2023 20:42:39 +0100 Subject: [PATCH] gh-103193: Speedup and inline `inspect._is_type` --- Lib/inspect.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/Lib/inspect.py b/Lib/inspect.py index a317f0ca74884f..4242b40c2a08df 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -1791,13 +1791,6 @@ def _check_class(klass, attr): return entry.__dict__[attr] return _sentinel -def _is_type(obj): - try: - _static_getmro(obj) - except TypeError: - return False - return True - def _shadowed_dict(klass): for entry in _static_getmro(klass): dunder_dict = _get_dunder_dict_of_class(entry) @@ -1821,8 +1814,10 @@ def getattr_static(obj, attr, default=_sentinel): documentation for details. """ instance_result = _sentinel - if not _is_type(obj): - klass = type(obj) + + objtype = type(obj) + if type not in _static_getmro(objtype): + klass = objtype dict_attr = _shadowed_dict(klass) if (dict_attr is _sentinel or type(dict_attr) is types.MemberDescriptorType):