Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32.1k
Closed
Description
Bug report
Right now bothlist
anddict
have incorrrect text signatures of__getitem__
.
What is affected?
>>>help(list.__getitem__)Helponmethod_descriptor:__getitem__(...)x.__getitem__(y)<==>x[y]>>>help(dict.__getitem__)Helponmethod_descriptor:__getitem__(...)x.__getitem__(y)<==>x[y]
In constrast with__setitem__
and__delitem__
:
>>>help(list.__setitem__)Helponwrapper_descriptor:__setitem__(self,key,value,/)Setself[key]tovalue.>>>help(dict.__setitem__)Helponwrapper_descriptor:__setitem__(self,key,value,/)Setself[key]tovalue.>>>help(dict.__delitem__)Helponwrapper_descriptor:__delitem__(self,key,/)Deleteself[key].
It also affects.__text_signature__
:
>>>list.__getitem__.__text_signature__>>>dict.__getitem__.__text_signature__>>>list.__setitem__.__text_signature__'($self, key, value, /)'>>>dict.__setitem__.__text_signature__'($self, key, value, /)'
Andinspect.signature
:
>>>inspect.signature(dict.__getitem__)Traceback (mostrecentcalllast):File"<stdin>",line1,in<module>File"/Users/sobolev/.pyenv/versions/3.8.9/lib/python3.8/inspect.py",line3105,insignaturereturnSignature.from_callable(obj,follow_wrapped=follow_wrapped)File"/Users/sobolev/.pyenv/versions/3.8.9/lib/python3.8/inspect.py",line2854,infrom_callablereturn_signature_from_callable(obj,sigcls=cls,File"/Users/sobolev/.pyenv/versions/3.8.9/lib/python3.8/inspect.py",line2308,in_signature_from_callablereturn_signature_from_builtin(sigcls,obj,File"/Users/sobolev/.pyenv/versions/3.8.9/lib/python3.8/inspect.py",line2119,in_signature_from_builtinraiseValueError("no signature found for builtin {!r}".format(func))ValueError:nosignaturefoundforbuiltin<method'__getitem__'of'dict'objects>>>>inspect.signature(dict.__setitem__)<Signature (self,key,value,/)>
I think that this can be fixed quite easily!
My plan is to modify these two descriptions:
Line 2827 ine860e52
{"__getitem__", (PyCFunction)list_subscript,METH_O|METH_COEXIST,"x.__getitem__(y) <==> x[y]"}, Line 3594 ine860e52
PyDoc_STRVAR(getitem__doc__,"x.__getitem__(y) <==> x[y]");
With something liketypeobject.c
has:"__getitem__($self, key, /)\n--\n\nReturn self[key]."
Usingclinic
here seems impossible / overly-complex.
Should I send a PR for this? 🙂