Skip to content

inspect.getmembers is not fully tested #116789

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

Open
sobolevn opened this issue Mar 14, 2024 · 0 comments
Open

inspect.getmembers is not fully tested #116789

sobolevn opened this issue Mar 14, 2024 · 0 comments
Assignees
Labels
tests Tests in the Lib/test dir type-bug An unexpected behavior, bug, or error

Comments

@sobolevn
Copy link
Member

sobolevn commented Mar 14, 2024

Bug report

Right now test_inspect checks getmembers with mostly classes and methods.
It does not test: function, traceback, code, frame, generator, coroutine, and builtin objects.
We should also test how predicate works for these objects.

However, they are listed in the docs:

+===========+===================+===========================+
| class | __doc__ | documentation string |
+-----------+-------------------+---------------------------+
| | __name__ | name with which this |
| | | class was defined |
+-----------+-------------------+---------------------------+
| | __qualname__ | qualified name |
+-----------+-------------------+---------------------------+
| | __module__ | name of module in which |
| | | this class was defined |
+-----------+-------------------+---------------------------+
| method | __doc__ | documentation string |
+-----------+-------------------+---------------------------+
| | __name__ | name with which this |
| | | method was defined |
+-----------+-------------------+---------------------------+
| | __qualname__ | qualified name |
+-----------+-------------------+---------------------------+
| | __func__ | function object |
| | | containing implementation |
| | | of method |
+-----------+-------------------+---------------------------+
| | __self__ | instance to which this |
| | | method is bound, or |
| | | ``None`` |
+-----------+-------------------+---------------------------+
| | __module__ | name of module in which |
| | | this method was defined |
+-----------+-------------------+---------------------------+
| function | __doc__ | documentation string |
+-----------+-------------------+---------------------------+
| | __name__ | name with which this |
| | | function was defined |
+-----------+-------------------+---------------------------+
| | __qualname__ | qualified name |
+-----------+-------------------+---------------------------+
| | __code__ | code object containing |
| | | compiled function |
| | | :term:`bytecode` |
+-----------+-------------------+---------------------------+
| | __defaults__ | tuple of any default |
| | | values for positional or |
| | | keyword parameters |
+-----------+-------------------+---------------------------+
| | __kwdefaults__ | mapping of any default |
| | | values for keyword-only |
| | | parameters |
+-----------+-------------------+---------------------------+
| | __globals__ | global namespace in which |
| | | this function was defined |
+-----------+-------------------+---------------------------+
| | __builtins__ | builtins namespace |
+-----------+-------------------+---------------------------+
| | __annotations__ | mapping of parameters |
| | | names to annotations; |
| | | ``"return"`` key is |
| | | reserved for return |
| | | annotations. |
+-----------+-------------------+---------------------------+
| | __module__ | name of module in which |
| | | this function was defined |
+-----------+-------------------+---------------------------+
| traceback | tb_frame | frame object at this |
| | | level |
+-----------+-------------------+---------------------------+
| | tb_lasti | index of last attempted |
| | | instruction in bytecode |
+-----------+-------------------+---------------------------+
| | tb_lineno | current line number in |
| | | Python source code |
+-----------+-------------------+---------------------------+
| | tb_next | next inner traceback |
| | | object (called by this |
| | | level) |
+-----------+-------------------+---------------------------+
| frame | f_back | next outer frame object |
| | | (this frame's caller) |
+-----------+-------------------+---------------------------+
| | f_builtins | builtins namespace seen |
| | | by this frame |
+-----------+-------------------+---------------------------+
| | f_code | code object being |
| | | executed in this frame |
+-----------+-------------------+---------------------------+
| | f_globals | global namespace seen by |
| | | this frame |
+-----------+-------------------+---------------------------+
| | f_lasti | index of last attempted |
| | | instruction in bytecode |
+-----------+-------------------+---------------------------+
| | f_lineno | current line number in |
| | | Python source code |
+-----------+-------------------+---------------------------+
| | f_locals | local namespace seen by |
| | | this frame |
+-----------+-------------------+---------------------------+
| | f_trace | tracing function for this |
| | | frame, or ``None`` |
+-----------+-------------------+---------------------------+
| code | co_argcount | number of arguments (not |
| | | including keyword only |
| | | arguments, \* or \*\* |
| | | args) |
+-----------+-------------------+---------------------------+
| | co_code | string of raw compiled |
| | | bytecode |
+-----------+-------------------+---------------------------+
| | co_cellvars | tuple of names of cell |
| | | variables (referenced by |
| | | containing scopes) |
+-----------+-------------------+---------------------------+
| | co_consts | tuple of constants used |
| | | in the bytecode |
+-----------+-------------------+---------------------------+
| | co_filename | name of file in which |
| | | this code object was |
| | | created |
+-----------+-------------------+---------------------------+
| | co_firstlineno | number of first line in |
| | | Python source code |
+-----------+-------------------+---------------------------+
| | co_flags | bitmap of ``CO_*`` flags, |
| | | read more :ref:`here |
| | | <inspect-module-co-flags>`|
+-----------+-------------------+---------------------------+
| | co_lnotab | encoded mapping of line |
| | | numbers to bytecode |
| | | indices |
+-----------+-------------------+---------------------------+
| | co_freevars | tuple of names of free |
| | | variables (referenced via |
| | | a function's closure) |
+-----------+-------------------+---------------------------+
| | co_posonlyargcount| number of positional only |
| | | arguments |
+-----------+-------------------+---------------------------+
| | co_kwonlyargcount | number of keyword only |
| | | arguments (not including |
| | | \*\* arg) |
+-----------+-------------------+---------------------------+
| | co_name | name with which this code |
| | | object was defined |
+-----------+-------------------+---------------------------+
| | co_qualname | fully qualified name with |
| | | which this code object |
| | | was defined |
+-----------+-------------------+---------------------------+
| | co_names | tuple of names other |
| | | than arguments and |
| | | function locals |
+-----------+-------------------+---------------------------+
| | co_nlocals | number of local variables |
+-----------+-------------------+---------------------------+
| | co_stacksize | virtual machine stack |
| | | space required |
+-----------+-------------------+---------------------------+
| | co_varnames | tuple of names of |
| | | arguments and local |
| | | variables |
+-----------+-------------------+---------------------------+
| generator | __name__ | name |
+-----------+-------------------+---------------------------+
| | __qualname__ | qualified name |
+-----------+-------------------+---------------------------+
| | gi_frame | frame |
+-----------+-------------------+---------------------------+
| | gi_running | is the generator running? |
+-----------+-------------------+---------------------------+
| | gi_code | code |
+-----------+-------------------+---------------------------+
| | gi_yieldfrom | object being iterated by |
| | | ``yield from``, or |
| | | ``None`` |
+-----------+-------------------+---------------------------+
| coroutine | __name__ | name |
+-----------+-------------------+---------------------------+
| | __qualname__ | qualified name |
+-----------+-------------------+---------------------------+
| | cr_await | object being awaited on, |
| | | or ``None`` |
+-----------+-------------------+---------------------------+
| | cr_frame | frame |
+-----------+-------------------+---------------------------+
| | cr_running | is the coroutine running? |
+-----------+-------------------+---------------------------+
| | cr_code | code |
+-----------+-------------------+---------------------------+
| | cr_origin | where coroutine was |
| | | created, or ``None``. See |
| | | |coroutine-origin-link| |
+-----------+-------------------+---------------------------+
| builtin | __doc__ | documentation string |
+-----------+-------------------+---------------------------+
| | __name__ | original name of this |
| | | function or method |
+-----------+-------------------+---------------------------+
| | __qualname__ | qualified name |
+-----------+-------------------+---------------------------+
| | __self__ | instance to which a |
| | | method is bound, or |
| | | ``None`` |
+-----------+-------------------+---------------------------+

I will send a PR with new tests.

Linked PRs

@sobolevn sobolevn added type-bug An unexpected behavior, bug, or error tests Tests in the Lib/test dir labels Mar 14, 2024
@sobolevn sobolevn self-assigned this Mar 14, 2024
sobolevn added a commit to sobolevn/cpython that referenced this issue Mar 14, 2024
sobolevn added a commit to sobolevn/cpython that referenced this issue Mar 14, 2024
sobolevn added a commit to sobolevn/cpython that referenced this issue Mar 14, 2024
miss-islington pushed a commit to miss-islington/cpython that referenced this issue Aug 18, 2024
miss-islington pushed a commit to miss-islington/cpython that referenced this issue Aug 18, 2024
sobolevn added a commit that referenced this issue Aug 18, 2024
…#123130)

gh-116789: Add more tests for `inspect.getmembers` (GH-116802)
(cherry picked from commit c15bfa9)

Co-authored-by: sobolevn <[email protected]>
jeremyhylton pushed a commit to jeremyhylton/cpython that referenced this issue Aug 19, 2024
vstinner pushed a commit that referenced this issue Aug 26, 2024
…#123129)

gh-116789: Add more tests for `inspect.getmembers` (GH-116802)
(cherry picked from commit c15bfa9)

Co-authored-by: sobolevn <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
tests Tests in the Lib/test dir type-bug An unexpected behavior, bug, or error
Projects
None yet
Development

No branches or pull requests

1 participant