Skip to content

Commit

Permalink
Run more inspect.rst code snippets in CI (pythonGH-112654)
Browse files Browse the repository at this point in the history
(cherry picked from commit 4ed46d2)

Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
  • Loading branch information
AlexWaygood authored and miss-islington committed Dec 3, 2023
1 parent 05f5d41 commit 920f02a
Showing 1 changed file with 38 additions and 28 deletions.
66 changes: 38 additions & 28 deletions Doc/library/inspect.rst
Original file line number Diff line number Diff line change
Expand Up @@ -392,7 +392,11 @@ attributes (see :ref:`import-mod-attrs` for module attributes):
Return ``True`` if the object can be used in :keyword:`await` expression.

Can also be used to distinguish generator-based coroutines from regular
generators::
generators:

.. testcode::

import types

def gen():
yield
Expand All @@ -409,13 +413,15 @@ attributes (see :ref:`import-mod-attrs` for module attributes):
.. function:: isasyncgenfunction(object)

Return ``True`` if the object is an :term:`asynchronous generator` function,
for example::
for example:

>>> async def agen():
... yield 1
...
>>> inspect.isasyncgenfunction(agen)
True
.. doctest::

>>> async def agen():
... yield 1
...
>>> inspect.isasyncgenfunction(agen)
True

.. versionadded:: 3.6

Expand Down Expand Up @@ -968,18 +974,20 @@ function.
For variable-keyword arguments (``**kwargs``) the default is an
empty dict.

::
.. doctest::

>>> def foo(a, b='ham', *args): pass
>>> ba = inspect.signature(foo).bind('spam')
>>> ba.apply_defaults()
>>> ba.arguments
{'a': 'spam', 'b': 'ham', 'args': ()}
>>> def foo(a, b='ham', *args): pass
>>> ba = inspect.signature(foo).bind('spam')
>>> ba.apply_defaults()
>>> ba.arguments
{'a': 'spam', 'b': 'ham', 'args': ()}

.. versionadded:: 3.5

The :attr:`args` and :attr:`kwargs` properties can be used to invoke
functions::
functions:

.. testcode::

def test(a, *, b):
...
Expand Down Expand Up @@ -1098,20 +1106,22 @@ Classes and functions
``**`` arguments, if any) to their values from *args* and *kwds*. In case of
invoking *func* incorrectly, i.e. whenever ``func(*args, **kwds)`` would raise
an exception because of incompatible signature, an exception of the same type
and the same or similar message is raised. For example::

>>> from inspect import getcallargs
>>> def f(a, b=1, *pos, **named):
... pass
...
>>> getcallargs(f, 1, 2, 3) == {'a': 1, 'named': {}, 'b': 2, 'pos': (3,)}
True
>>> getcallargs(f, a=2, x=4) == {'a': 2, 'named': {'x': 4}, 'b': 1, 'pos': ()}
True
>>> getcallargs(f)
Traceback (most recent call last):
...
TypeError: f() missing 1 required positional argument: 'a'
and the same or similar message is raised. For example:

.. doctest::

>>> from inspect import getcallargs
>>> def f(a, b=1, *pos, **named):
... pass
...
>>> getcallargs(f, 1, 2, 3) == {'a': 1, 'named': {}, 'b': 2, 'pos': (3,)}
True
>>> getcallargs(f, a=2, x=4) == {'a': 2, 'named': {'x': 4}, 'b': 1, 'pos': ()}
True
>>> getcallargs(f)
Traceback (most recent call last):
...
TypeError: f() missing 1 required positional argument: 'a'

.. versionadded:: 3.2

Expand Down

0 comments on commit 920f02a

Please sign in to comment.