(name, value)
| 90 | |
| 91 | |
| 92 | def _repr(name, value): |
| 93 | if type(value) is requests.Response: |
| 94 | return _requests_response_repr(name, value) |
| 95 | if type(value) in (requests.PreparedRequest, requests.Request): |
| 96 | return _requests_request_repr(name, value) |
| 97 | if isinstance(value, requests.exceptions.RequestException): |
| 98 | return _requests_exception_repr(name, value) |
| 99 | if isinstance(value, dict): |
| 100 | return f'{name} = <{type(value).__module__}.{type(value).__name__}>\n ' + \ |
| 101 | '\n '.join(_repr(f'{name}[{k!r}]', v).replace('\n', '\n ') for k, v in value.items()) |
| 102 | if isinstance(value, (list, tuple, collections.deque)) and not all(isinstance(v, (int, str)) for v in value): |
| 103 | return f'{name} = <{type(value).__module__}.{type(value).__name__}>\n ' + \ |
| 104 | '\n '.join(_repr(f'{name}[{i}]', v).replace('\n', '\n ') for i, v in enumerate(value)) |
| 105 | if dataclasses.is_dataclass(value) and not isinstance(value, type): |
| 106 | return f'{name} = <{type(value).__module__}.{type(value).__name__}>\n ' + \ |
| 107 | '\n '.join(_repr(f'{name}.{f.name}', f.name) + ' = ' + _repr(f'{name}.{f.name}', getattr(value, f.name)).replace('\n', '\n ') for f in dataclasses.fields(value)) |
| 108 | valueRepr = f'{name} = {value!r}' |
| 109 | if '\n' in valueRepr: |
| 110 | return ''.join(['\\\n ', valueRepr.replace('\n', '\n ')]) |
| 111 | return valueRepr |
| 112 | |
| 113 | |
| 114 | @contextlib.contextmanager |
no test coverage detected