|
46 | 46 | def _load_obj(obj_name):
|
47 | 47 | for maxsplit in range(1, obj_name.count('.') + 1):
|
48 | 48 | # TODO when py3 only replace by: module, *func_parts = ...
|
49 |
| - func_name_split = obj_name.rsplit('.', maxsplit=maxsplit) |
| 49 | + func_name_split = obj_name.rsplit('.', maxsplit) |
50 | 50 | module = func_name_split[0]
|
51 | 51 | func_parts = func_name_split[1:]
|
52 | 52 | try:
|
@@ -186,12 +186,11 @@ def signature_parameters(self):
|
186 | 186 | # accessor classes have a signature, but don't want to show this
|
187 | 187 | return tuple()
|
188 | 188 | try:
|
189 |
| - signature = inspect.signature(self.method_obj) |
| 189 | + params = self.method_obj.__code__.co_varnames |
190 | 190 | except (TypeError, ValueError):
|
191 | 191 | # Some objects, mainly in C extensions do not support introspection
|
192 | 192 | # of the signature
|
193 | 193 | return tuple()
|
194 |
| - params = tuple(signature.parameters.keys()) |
195 | 194 | if params and params[0] in ('self', 'cls'):
|
196 | 195 | return params[1:]
|
197 | 196 | return params
|
@@ -264,8 +263,7 @@ def examples_errors(self):
|
264 | 263 | error_msgs = ''
|
265 | 264 | for test in finder.find(self.raw_doc, self.method_name, globs=context):
|
266 | 265 | f = StringIO()
|
267 |
| - with contextlib.redirect_stdout(f): |
268 |
| - runner.run(test) |
| 266 | + runner.run(test, out=f) |
269 | 267 | error_msgs += f.getvalue()
|
270 | 268 | return error_msgs
|
271 | 269 |
|
|
0 commit comments