New submission from Dutcho <dut...@ziggo.nl>:

The standard library documentation on module inspect starts with an overview of 
types and attributes. This overview (in all Python versions) states:
    code.co_names: tuple of names of local variables
    code.co_varnames: tuple of names of arguments and local variables
That suggests the argument names are set(code.co_varnames) - 
set(code.co_names), which is incorrect.

I think the attribute description should be:
    code.co_names: tuple of names of used global and built-in variables

>>> def f(x): a = 1; print(f, a)
>>> assert f.__code__.co_varnames == ('x', 'a')  # argument and local, in that 
>>> order
>>> assert set(f.__code__.co_names) == set(('f', 'print'))  # global and 
>>> built-in (don't care order), not local

----------
assignee: docs@python
components: Documentation
messages: 404068
nosy: Dutcho, docs@python
priority: normal
severity: normal
status: open
title: stdlib inspect documentation on code.co_names is incorrect
versions: Python 3.10, Python 3.11, Python 3.6, Python 3.7, Python 3.8, Python 
3.9

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue45492>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to