Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[3.12] gh-101100: Fix most Sphinx nitpicks in inspect.rst (GH-112662) #112666

Merged
merged 1 commit into from
Dec 3, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions Doc/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,9 @@
('envvar', 'USER'),
('envvar', 'USERNAME'),
('envvar', 'USERPROFILE'),
# Deprecated function that was never documented:
('py:func', 'getargspec'),
('py:func', 'inspect.getargspec'),
]

# Temporary undocumented names.
Expand Down
15 changes: 9 additions & 6 deletions Doc/library/inspect.rst
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ attributes (see :ref:`import-mod-attrs` for module attributes):

:func:`getmembers` will only return class attributes defined in the
metaclass when the argument is a class and those attributes have been
listed in the metaclass' custom :meth:`__dir__`.
listed in the metaclass' custom :meth:`~object.__dir__`.


.. function:: getmembers_static(object[, predicate])
Expand Down Expand Up @@ -487,12 +487,13 @@ attributes (see :ref:`import-mod-attrs` for module attributes):
has a :meth:`~object.__get__` method but not a :meth:`~object.__set__`
method, but beyond that the set of attributes varies. A
:attr:`~definition.__name__` attribute is usually
sensible, and :attr:`__doc__` often is.
sensible, and :attr:`!__doc__` often is.

Methods implemented via descriptors that also pass one of the other tests
return ``False`` from the :func:`ismethoddescriptor` test, simply because the
other tests promise more -- you can, e.g., count on having the
:attr:`__func__` attribute (etc) when an object passes :func:`ismethod`.
:ref:`__func__ <instance-methods>` attribute (etc) when an object passes
:func:`ismethod`.


.. function:: isdatadescriptor(object)
Expand All @@ -503,7 +504,7 @@ attributes (see :ref:`import-mod-attrs` for module attributes):
Examples are properties (defined in Python), getsets, and members. The
latter two are defined in C and there are more specific tests available for
those types, which is robust across Python implementations. Typically, data
descriptors will also have :attr:`~definition.__name__` and :attr:`__doc__` attributes
descriptors will also have :attr:`~definition.__name__` and :attr:`!__doc__` attributes
(properties, getsets, and members have both of these attributes), but this is
not guaranteed.

Expand Down Expand Up @@ -1423,7 +1424,8 @@ Fetching attributes statically

Both :func:`getattr` and :func:`hasattr` can trigger code execution when
fetching or checking for the existence of attributes. Descriptors, like
properties, will be invoked and :meth:`__getattr__` and :meth:`__getattribute__`
properties, will be invoked and :meth:`~object.__getattr__` and
:meth:`~object.__getattribute__`
may be called.

For cases where you want passive introspection, like documentation tools, this
Expand All @@ -1433,7 +1435,8 @@ but avoids executing code when it fetches attributes.
.. function:: getattr_static(obj, attr, default=None)

Retrieve attributes without triggering dynamic lookup via the
descriptor protocol, :meth:`__getattr__` or :meth:`__getattribute__`.
descriptor protocol, :meth:`~object.__getattr__`
or :meth:`~object.__getattribute__`.

Note: this function may not be able to retrieve all attributes
that getattr can fetch (like dynamically created attributes)
Expand Down
2 changes: 2 additions & 0 deletions Doc/reference/datamodel.rst
Original file line number Diff line number Diff line change
Expand Up @@ -634,6 +634,8 @@ code object; see the description of internal types below. The
module.


.. _instance-methods:

Instance methods
^^^^^^^^^^^^^^^^

Expand Down
5 changes: 3 additions & 2 deletions Doc/whatsnew/2.6.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1677,8 +1677,9 @@ Some smaller changes made to the core Python language are:
(:issue:`1591665`)

* Instance method objects have new attributes for the object and function
comprising the method; the new synonym for :attr:`im_self` is
:attr:`__self__`, and :attr:`im_func` is also available as :attr:`__func__`.
comprising the method; the new synonym for :attr:`!im_self` is
:ref:`__self__ <instance-methods>`, and :attr:`!im_func` is also available as
:ref:`__func__ <instance-methods>`.
The old names are still supported in Python 2.6, but are gone in 3.0.

* An obscure change: when you use the :func:`locals` function inside a
Expand Down
3 changes: 2 additions & 1 deletion Doc/whatsnew/2.7.rst
Original file line number Diff line number Diff line change
Expand Up @@ -860,7 +860,8 @@ Some smaller changes made to the core Python language are:

* When using ``@classmethod`` and ``@staticmethod`` to wrap
methods as class or static methods, the wrapper object now
exposes the wrapped function as their :attr:`__func__` attribute.
exposes the wrapped function as their :ref:`__func__ <instance-methods>`
attribute.
(Contributed by Amaury Forgeot d'Arc, after a suggestion by
George Sakkis; :issue:`5982`.)

Expand Down
Loading