gh-103193: Micro-optimise helper functions for `inspect.getattr_static` (#103195)

This commit is contained in:
Alex Waygood 2023-04-05 08:27:01 +01:00 committed by GitHub
parent 119f67de08
commit 264c00a1c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 4 deletions

View File

@ -1772,9 +1772,9 @@ def trace(context=1):
# ------------------------------------------------ static version of getattr
_sentinel = object()
_static_getmro = type.__dict__['__mro__'].__get__
_get_dunder_dict_of_class = type.__dict__["__dict__"].__get__
def _static_getmro(klass):
return type.__dict__['__mro__'].__get__(klass)
def _check_instance(obj, attr):
instance_dict = {}
@ -1802,10 +1802,9 @@ def _is_type(obj):
return True
def _shadowed_dict(klass):
dict_attr = type.__dict__["__dict__"]
for entry in _static_getmro(klass):
try:
class_dict = dict_attr.__get__(entry)["__dict__"]
class_dict = _get_dunder_dict_of_class(entry)["__dict__"]
except KeyError:
pass
else:

View File

@ -0,0 +1,2 @@
Improve performance of :func:`inspect.getattr_static`. Patch by Alex
Waygood.