Skip to content

Commit a1006a0

Browse files
committed
reqparse.RequestParser.add_argument() now does accept reqparse.Argument object
1 parent 43585b6 commit a1006a0

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

flask_restful/reqparse.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,12 +194,14 @@ def __init__(self, argument_class=Argument, namespace_class=Namespace):
194194
self.argument_class = argument_class
195195
self.namespace_class = namespace_class
196196

197-
def add_argument(self, *args, **kwargs):
197+
def add_argument(self, name, *args, **kwargs):
198198
"""Adds an argument to be parsed. See :class:`Argument`'s constructor
199199
for documentation on the available options.
200200
"""
201-
202-
self.args.append(self.argument_class(*args, **kwargs))
201+
if isinstance(name, self.argument_class):
202+
self.args.append(name)
203+
else:
204+
self.args.append(self.argument_class(name, *args, **kwargs))
203205
return self
204206

205207
def parse_args(self, req=None):

tests/test_reqparse.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -588,5 +588,13 @@ def test_type_filestorage(self):
588588
self.assertEquals(args['foo'].filename, 'baz.txt')
589589
self.assertEquals(args['foo'].read(), fdata)
590590

591+
def test_passing_arguments_object(self):
592+
req = Request.from_values("/bubble?foo=bar")
593+
parser = RequestParser()
594+
parser.add_argument(Argument("foo", type=str))
595+
596+
args = parser.parse_args(req)
597+
self.assertEquals(args['foo'], u"bar")
598+
591599
if __name__ == '__main__':
592600
unittest.main()

0 commit comments

Comments
 (0)