Source code for pyterrier_alpha.transformer_repr
"""Module providing a function that calculates a string representation function for transformers."""
import inspect
from typing import Any
[docs]
def transformer_repr(self: Any) -> str:
"""Return a string representation of a transformer instance.
.. versionadded:: 0.3.0
.. versionchanged:: 0.4.2
Prioritize fields with ``_name`` above ``name``
.. versionchanged:: 0.12.1
Ignore verbose
"""
cls = self.__class__
init = self.__init__
signature = inspect.signature(init)
mode = 'pos'
args = []
for p in signature.parameters.values():
if p.kind not in (inspect.Parameter.POSITIONAL_ONLY, inspect.Parameter.POSITIONAL_OR_KEYWORD):
mode = 'kwd'
try:
val = getattr(self, f'_{p.name}')
except AttributeError:
val = getattr(self, p.name)
if val != p.default and p.name != 'verbose':
args.append(f'{p.name}={val!r}' if mode == 'kwd' else repr(val))
else:
mode = 'kwd' # skip a parameter, force keyword mode
return cls.__name__ + '(' + ', '.join(args) + ')'