Repository navigation
__text_signature__ parser doesn't handle globals in extension module #82062
Copy link
Copy link
Closed
Labels
3.13only security fixesonly security fixesstdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directory
Description
Activity
Starting from the custom2 example at https://docs.python.org/3/extending/newtypes_tutorial.html#adding-data-and-methods-to-the-basic-example, change the methods table to
static PyMethodDef Custom_methods[] = { {"foo", (PyCFunction) Custom_foo, METH_VARARGS, "foo(x=ONE)\n--\n\nFoos this." }, {NULL} /* Sentinel */ };and add a global ONE to the module dict:
PyModule_AddObject(m, "ONE", PyLong_FromLong(1));
Building and running e.g. pydoc on this module results in
Traceback (most recent call last): File ".../lib/python3.7/inspect.py", line 2003, in wrap_value value = eval(s, module_dict) File "<string>", line 1, in <module> NameError: name 'ONE' is not defined During handling of the above exception, another exception occurred: Traceback (most recent call last): File ".../lib/python3.7/inspect.py", line 2006, in wrap_value value = eval(s, sys_module_dict) File "<string>", line 1, in <module> NameError: name 'ONE' is not defined During handling of the above exception, another exception occurred: Traceback (most recent call last): File ".../lib/python3.7/runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) <elided> File ".../lib/python3.7/inspect.py", line 2008, in wrap_value raise RuntimeError() RuntimeErrorI think the fix is fairly simple; one needs to replace
module_name = getattr(obj, '__module__', None)
in inspect.py::_signature_fromstr by
module_name = (getattr(obj, '__module__', None) or getattr(getattr(obj, '__objclass__'), '__module__', None))
(This is a less general but simpler solution than https://bugs.python.org/issue23967.)
- addedextension-modulesC modules in the Modules dirC modules in the Modules dir
on Aug 18, 2019 - added a commit that references this issue
on May 2, 2024 - addedstdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directory3.13only security fixesonly security fixesand removedextension-modulesC modules in the Modules dirC modules in the Modules dir
on May 2, 2024
Metadata
Metadata
Assignees
Labels
3.13only security fixesonly security fixesstdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directory
Projects
- StatusShow more project fieldsDone
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
Linked PRs