Skip to content

Commit 1abc02f

Browse files
authored
Merge branch 'master' into issue-240
2 parents 7cfd559 + 409dc7a commit 1abc02f

File tree

5 files changed

+25
-5
lines changed

5 files changed

+25
-5
lines changed

CONTRIBUTING.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ You need to install some dependencies to develop on flask-restx:
5050
5151
$ pip install -e .[dev]
5252
53-
An Invoke ``tasks.py`` is provided to simplify the common tasks:
53+
An [Invoke](http://www.pyinvoke.org/) ``tasks.py`` is provided to simplify the common tasks:
5454

5555
.. code-block:: console
5656

flask_restx/fields.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -864,7 +864,12 @@ def output(self, key, obj, ordered=False):
864864
# we are using pop() so that we don't
865865
# loop over the whole object every time dropping the
866866
# complexity to O(n)
867-
(objkey, val) = self._flat.pop()
867+
if ordered:
868+
# Get first element if respecting order
869+
(objkey, val) = self._flat.pop(0)
870+
else:
871+
# Previous default retained
872+
(objkey, val) = self._flat.pop()
868873
if (
869874
objkey not in self._cache
870875
and objkey not in self.exclude

flask_restx/marshalling.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def marshal(data, fields, envelope=None, skip_none=False, mask=None, ordered=Fal
7676
if keys:
7777
field.exclude |= set(keys)
7878
keys = []
79-
value = field.output(dkey, data)
79+
value = field.output(dkey, data, ordered=ordered)
8080
if is_wildcard:
8181

8282
def _append(k, v):

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "flask-restx",
3-
"version": "0.4.1.dev",
3+
"version": "0.4.1-dev",
44
"description": "Fully featured framework for fast, easy and documented API development with Flask",
55
"repository": "python-restx/flask-restx",
66
"keywords": [
@@ -10,7 +10,7 @@
1010
"author": "python-restx authors",
1111
"license": "BSD-3-Clause",
1212
"dependencies": {
13-
"swagger-ui-dist": "^3.4.0",
13+
"swagger-ui-dist": "^3.48.0",
1414
"typeface-droid-sans": "0.0.40"
1515
}
1616
}

tests/test_marshalling.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,21 @@ def test_marshal_nested(self):
221221

222222
assert output == expected
223223

224+
def test_marshal_ordered(self):
225+
model = OrderedDict(
226+
[("foo", fields.Raw), ("baz", fields.Raw), ("bar", fields.Raw)]
227+
)
228+
marshal_fields = {
229+
"foo": 1,
230+
"baz": 2,
231+
"bar": 3
232+
}
233+
expected_ordered = OrderedDict([("foo", 1), ("baz", 2), ("bar", 3)])
234+
ordered_output = marshal(marshal_fields, model, ordered=True)
235+
assert ordered_output == expected_ordered
236+
unordered_output = marshal(marshal_fields, model)
237+
assert not isinstance(unordered_output, OrderedDict)
238+
224239
def test_marshal_nested_ordered(self):
225240
model = OrderedDict(
226241
[("foo", fields.Raw), ("fee", fields.Nested({"fye": fields.String,}))]

0 commit comments

Comments
 (0)