Skip to content

Commit

Permalink
gh-103193: Micro-optimise helper functions for `inspect.getattr_stati…
Browse files Browse the repository at this point in the history
…c` (#103195)
  • Loading branch information
AlexWaygood authored Apr 5, 2023
1 parent 119f67d commit 264c00a
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 4 deletions.
7 changes: 3 additions & 4 deletions Lib/inspect.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {}
Expand Down Expand Up @@ -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:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Improve performance of :func:`inspect.getattr_static`. Patch by Alex
Waygood.

0 comments on commit 264c00a

Please sign in to comment.