| | |
| | |
| | |
| | |
| | |
| |
|
| | import inspect |
| | from typing import Optional, List |
| |
|
| |
|
| | def simple_repr(obj, attrs: Optional[List[str]] = None, overrides={}): |
| | """ |
| | Return a simple representation string for `obj`. |
| | If `attrs` is not None, it should be a list of attributes to include. |
| | """ |
| | params = inspect.signature(obj.__class__).parameters |
| | attrs_repr = [] |
| | if attrs is None: |
| | attrs = params.keys() |
| | for attr in attrs: |
| | display = False |
| | if attr in overrides: |
| | value = overrides[attr] |
| | elif hasattr(obj, attr): |
| | value = getattr(obj, attr) |
| | else: |
| | continue |
| | if attr in params: |
| | param = params[attr] |
| | if param.default is inspect._empty or value != param.default: |
| | display = True |
| | else: |
| | display = True |
| |
|
| | if display: |
| | attrs_repr.append(f"{attr}={value}") |
| | return f"{obj.__class__.__name__}({','.join(attrs_repr)})" |
| |
|