Files
Semyon Proshev 07fb8fca0a PY-4344 Fixed: Parameter unfilled: false negatives for named tuples
PY-22102 Fixed: NamedTuple class declaration for Python 3.6 not supported by PyCharm
PY-22249 Fixed: Add parameters tooltip to namedtuple constructor
PY-22740 Fixed: Unexpected argument for field names of class inherited from namedtuple

Update PyNamedTupleType to be callable and provide parameters when creating new namedtuple instance.
Update PyStdlibTypeProvider to provide special callable types when creating new namedtuple inheritor instance.
Update PyCallExpressionHelper to check type providers when resolving callee.
Update PyClassImpl to return PyNamedTupleType when class inherits typing.NamedTuple.

Parameter hints and PyArgumentListInspection work correctly with creating new namedtuple instances.
2017-06-09 21:29:11 +03:00

48 lines
1.5 KiB
Python

from collections import namedtuple
MyTup1 = namedtuple(<warning descr="Unexpected argument">bar=''</warning><warning descr="Parameter 'field_names' unfilled"><warning descr="Parameter 'typename' unfilled">)</warning></warning>
MyTup2 = namedtuple("MyTup2", "bar baz")
class MyTup3(namedtuple(<warning descr="Unexpected argument">bar=''</warning><warning descr="Parameter 'field_names' unfilled"><warning descr="Parameter 'typename' unfilled">)</warning></warning>):
pass
class MyTup4(namedtuple("MyTup4", "bar baz")):
pass
# empty
MyTup2(<warning descr="Parameter 'bar' unfilled"><warning descr="Parameter 'baz' unfilled">)</warning></warning>
# one
MyTup2(bar=''<warning descr="Parameter 'baz' unfilled">)</warning>
MyTup2(baz=''<warning descr="Parameter 'bar' unfilled">)</warning>
# two
MyTup2('', '')
MyTup2(bar='', baz='')
MyTup2(baz='', bar='')
# three
MyTup2(bar='', baz='', <warning descr="Unexpected argument">foo=''</warning>)
MyTup2('', '', <warning descr="Unexpected argument">''</warning>)
# empty
MyTup4(<warning descr="Parameter 'bar' unfilled"><warning descr="Parameter 'baz' unfilled">)</warning></warning>
# one
MyTup4(bar=''<warning descr="Parameter 'baz' unfilled">)</warning>
MyTup4(baz=''<warning descr="Parameter 'bar' unfilled">)</warning>
# two
MyTup4('', '')
MyTup4(bar='', baz='')
MyTup4(baz='', bar='')
# three
MyTup4(bar='', baz='', <warning descr="Unexpected argument">foo=''</warning>)
MyTup4('', '', <warning descr="Unexpected argument">''</warning>)