This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author Antony.Lee
Recipients Antony.Lee
Date 2019-08-18.13:33:56
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1566135236.59.0.315734223996.issue37881@roundup.psfhosted.org>
In-reply-to
Content
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()
    RuntimeError

I 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.)
History
Date User Action Args
2019-08-18 13:33:56Antony.Leesetrecipients: + Antony.Lee
2019-08-18 13:33:56Antony.Leesetmessageid: <1566135236.59.0.315734223996.issue37881@roundup.psfhosted.org>
2019-08-18 13:33:56Antony.Leelinkissue37881 messages
2019-08-18 13:33:56Antony.Leecreate