|
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