summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/library/inspect.rst18
-rw-r--r--Doc/whatsnew/3.11.rst7
2 files changed, 25 insertions, 0 deletions
diff --git a/Doc/library/inspect.rst b/Doc/library/inspect.rst
index 1074f97..711f510 100644
--- a/Doc/library/inspect.rst
+++ b/Doc/library/inspect.rst
@@ -275,6 +275,24 @@ attributes:
listed in the metaclass' custom :meth:`__dir__`.
+.. function:: getmembers_static(object[, predicate])
+
+ Return all the members of an object in a list of ``(name, value)``
+ pairs sorted by name without triggering dynamic lookup via the descriptor
+ protocol, __getattr__ or __getattribute__. Optionally, only return members
+ that satisfy a given predicate.
+
+ .. note::
+
+ :func:`getmembers_static` may not be able to retrieve all members
+ that getmembers can fetch (like dynamically created attributes)
+ and may find members that getmembers can't (like descriptors
+ that raise AttributeError). It can also return descriptor objects
+ instead of instance members in some cases.
+
+ .. versionadded:: 3.11
+
+
.. function:: getmodulename(path)
Return the name of the module named by the file *path*, without including the
diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst
index 6853c04..345b2df 100644
--- a/Doc/whatsnew/3.11.rst
+++ b/Doc/whatsnew/3.11.rst
@@ -207,6 +207,13 @@ fractions
(Contributed by Mark Dickinson in :issue:`44547`.)
+inspect
+-------
+* Add :func:`inspect.getmembers_static`: return all members without
+ triggering dynamic lookup via the descriptor protocol. (Contributed by
+ Weipeng Hong in :issue:`30533`.)
+
+
math
----
* Add :func:`math.exp2`: return 2 raised to the power of x.