|
1 | 1 | import re |
2 | 2 |
|
3 | 3 | from apispec import BasePlugin |
| 4 | +from copy import deepcopy |
4 | 5 |
|
5 | 6 | from apispec.ext.marshmallow import ( |
6 | 7 | MarshmallowPlugin as _MarshmallowPlugin, |
@@ -101,11 +102,11 @@ def spec_for_interaction(cls, interaction): |
101 | 102 | "parameters": [], |
102 | 103 | } |
103 | 104 | # Allow custom responses from the class, overridden by the method |
104 | | - d[method]["responses"].update(getattr(interaction, "responses", {})) |
105 | | - d[method]["responses"].update(getattr(prop, "responses", {})) |
| 105 | + d[method]["responses"].update(deepcopy(getattr(interaction, "responses", {}))) |
| 106 | + d[method]["responses"].update(deepcopy(getattr(prop, "responses", {}))) |
106 | 107 | # Allow custom parameters from the class & method |
107 | | - d[method]["parameters"].extend(getattr(interaction, "parameters", {})) |
108 | | - d[method]["parameters"].extend(getattr(prop, "parameters", {})) |
| 108 | + d[method]["parameters"].extend(deepcopy(getattr(interaction, "parameters", {}))) |
| 109 | + d[method]["parameters"].extend(deepcopy(getattr(prop, "parameters", {}))) |
109 | 110 | return d |
110 | 111 |
|
111 | 112 | @classmethod |
@@ -148,10 +149,6 @@ def spec_for_property(cls, prop): |
148 | 149 | }, |
149 | 150 | ) |
150 | 151 |
|
151 | | - # Enable custom responses from all methods |
152 | | - for method in d.keys(): |
153 | | - d[method]["responses"].update(prop.responses) |
154 | | - |
155 | 152 | return d |
156 | 153 |
|
157 | 154 | def spec_for_action(self, action): |
@@ -245,8 +242,6 @@ def spec_for_action(self, action): |
245 | 242 | }, |
246 | 243 | }, |
247 | 244 | ) |
248 | | - # Enable custom responses from POST |
249 | | - d["post"]["responses"].update(action.responses) |
250 | 245 | return d |
251 | 246 |
|
252 | 247 | @classmethod |
|
0 commit comments