Applies documentation-related attributes to the wrapper function from a class based view.
(wrapper: Callable, view_class: type[TBaseView])
| 39 | |
| 40 | |
| 41 | def _apply_view_docs(wrapper: Callable, view_class: type[TBaseView]) -> None: |
| 42 | """Applies documentation-related attributes to the wrapper function from a class based view.""" |
| 43 | call_method = getattr(view_class, '__call__') |
| 44 | call_sig = inspect.signature(call_method) |
| 45 | |
| 46 | params = [] |
| 47 | has_request_param = any(name == 'request' for name in call_sig.parameters.keys()) |
| 48 | |
| 49 | for name, param in call_sig.parameters.items(): |
| 50 | if name == 'self': |
| 51 | # Only replace 'self' with 'request: Request' if there's no existing 'request' parameter |
| 52 | if not has_request_param: |
| 53 | param = inspect.Parameter( |
| 54 | 'request', |
| 55 | inspect.Parameter.POSITIONAL_OR_KEYWORD, |
| 56 | annotation=Request, |
| 57 | ) |
| 58 | else: |
| 59 | # Skip 'self' parameter if there's already a 'request' parameter |
| 60 | continue |
| 61 | params.append(param) |
| 62 | |
| 63 | wrapper.__doc__ = view_class.__doc__ # use the view class docstring |
| 64 | wrapper.__name__ = view_class.__dict__.get('__name__', view_class.__name__) |
| 65 | wrapper.__signature__ = inspect.Signature( |
| 66 | parameters=params, |
| 67 | return_annotation=call_sig.return_annotation, |
| 68 | ) |
| 69 | |
| 70 | |
| 71 | @dataclass |
no test coverage detected
searching dependent graphs…