Пример #1
0
def dispatch(obj: B,
             tpes: typing.List[A],
             prefix: str,
             default: Callable[[A], R] = None) -> Callable[[A], R]:
    @singledispatch
    def main(o: A, *a: Any, **kw: Any) -> R:
        if default is None:
            msg = 'no dispatcher defined for {} on {} {}'
            raise TypeError(msg.format(o, obj.__class__.__name__, prefix))
        else:
            return default(o, *a, **kw)

    for tpe in tpes:
        fun = getattr(obj, '{}{}'.format(prefix, snake_case(tpe.__name__)))
        main.register(tpe)(fun)
    return main
Пример #2
0
def _infer_implicits(name: str) -> Tuple[str, str]:
    snake = snake_case(name)
    return 'amino.instances.{}'.format(snake), '{}Instances'.format(name)
Пример #3
0
def infer_implicits_module(name: str) -> str:
    snake = snake_case(name)
    return 'amino.instances.{}'.format(snake)