作者:马先生2502911467 | 来源:互联网 | 2023-09-25 17:23
Related to https://github.com/marshmallow-code/marshmallow/issues/315.
Looks like the fixes in #744 and #750 are somehow wrong.
It works in the general case where
is a collection. But it might not be the case if it is not. For instance, if it contains an envelope that is removed in a
decorator.
For instance, run the
1
| test_decorated_processors |
test with a slight modification: add
to the last
.
1 2 3 4 5
| py
(pass_original=True)
def decrement_value(self, item, **kwargs):
item['value'] -= 1
return item |
It fails because this piece of code expects
to be a
(
1
| [{'value': 4}, {'value': 4}] |
), but it is a
(
1
| {'data': [{'value': '4'}, {'value': '6'}] |
):
1 2 3 4 5 6 7 8
| py
if pass_original:
data = [
processor(item, original_data=original)
for item, original in zip(data, original_data)
]
else:
data = [processor(item) for item in data] |
only grabs a single element (
), which is wrong.
I don't see any solution to this. I'm afraid the idea in #315 works in the typical case but can't work in all cases.
该提问来源于开源项目:marshmallow-code/marshmallow
Thanks! Will follow up over there.