예제 #1
0
    def mapply(self, fn, args, kwargs):
        try:
            memo = typeguard._CallMemo(fn, args=args, kwargs=kwargs)
            typeguard.check_argument_types(memo)
        except TypeError as exc:
            raise XMLRPCInvalidParamTypes(exc)

        return super().mapply(fn, args, kwargs)
예제 #2
0
파일: views.py 프로젝트: craig5/warehouse
    def mapply(self, fn, args, kwargs):
        try:
            memo = typeguard._CallMemo(fn, args=args, kwargs=kwargs)
            typeguard.check_argument_types(memo)
        except TypeError as exc:
            print(exc)
            raise XMLRPCInvalidParamTypes(exc)

        return super().mapply(fn, args, kwargs)
예제 #3
0
파일: polypie.py 프로젝트: un-def/polypie
def _call_func(func_key, args=None, kwargs=None):
    args = args or ()
    kwargs = kwargs or {}
    for func in _registry[func_key].values():
        try:
            check_argument_types(_CallMemo(func, args=args, kwargs=kwargs))
        except TypeError:
            continue
        return func(*args, **kwargs)
    raise PolypieException("Matсhing signature for function '{func}' with "
                           "args={args} and kwargs={kwargs} not found".format(
                               func=func_key, args=args, kwargs=kwargs))
예제 #4
0
파일: polypie.py 프로젝트: un-def/polypie
def _call_func(func_key, args=None, kwargs=None):
    args = args or ()
    kwargs = kwargs or {}
    for func in _registry[func_key].values():
        try:
            check_argument_types(_CallMemo(func, args=args, kwargs=kwargs))
        except TypeError:
            continue
        return func(*args, **kwargs)
    raise PolypieException(
        "Matсhing signature for function '{func}' with "
        "args={args} and kwargs={kwargs} not found".format(
            func=func_key, args=args, kwargs=kwargs)
    )
예제 #5
0
파일: _testing.py 프로젝트: Zac-HD/deal
 def _check_result(self, result: typing.Any) -> None:
     if not self.check_types:
         return
     hints = typing.get_type_hints(self.func)
     if 'return' not in hints:
         return
     memo = typeguard._CallMemo(
         func=self.func,
         args=self.args,
         kwargs=self.kwargs,
     )
     typeguard.check_argument_types(memo=memo)
     typeguard.check_type(
         argname='the return value',
         value=result,
         expected_type=hints['return'],
         memo=memo,
     )
예제 #6
0
    def taskwrapper(*args, **kwargs):
        _repr_function(target=target, args=args, kwargs=kwargs)

        # Warning for explicit parameters
        if args:
            short = [str(a)[:20] for a in args]
            _LOGGER.warning("Use explicit parameters, instead of %s", short)

        # Warning on parameter types
        call_memo = _CallMemo(target, args=args, kwargs=kwargs)
        try:
            check_argument_types(call_memo)
        except TypeError as err:
            _LOGGER.warning(err)

        if validator:
            validator(kwargs)

        try:
            value = target(*args, **kwargs)
        except Exception as err:
            _LOGGER.error(
                "Error while running task `%s` - %s: %s", name, type(err).__name__, err
            )
            raise

        if isgeneratorfunction(target) or (
            isinstance(value, list) and not isinstance(value, ATable)
        ):
            value = ATable(value)

        try:
            check_return_type(value, call_memo)
        except TypeError as err:
            _LOGGER.error(err)

        return value