Example #1
0
def _write_TypeVar(tpv, lines, inc=0):
    args = [tpv.__name__]
    if not tpv.__bound__ is None:
        args.append('bound='+type_util.type_str(tpv.__bound__))
    if tpv.__covariant__:
        args.append('covariant=True')
    if tpv.__contravariant__:
        args.append('contravariant=True')
    lines.append("%s%s = TypeVar('%s')"%(inc*indent, tpv.__name__, ', '.join(args)))
Example #2
0
def annotated_signature(func,
                        argspec=None,
                        slf_or_clsm=False,
                        assumed_globals=None):
    # inspect.formatargspec would only work in Python 3 with annotations
    if argspec is None:
        argspec = util.getargspecs(func)
    _types = type_util.get_types(func)
    sig_lst = []
    tp_lst = typelogger._prepare_arg_types_list(_types[0], argspec,
                                                slf_or_clsm, sig_lst)
    for i in range(len(sig_lst)):
        sig_lst[i] += ': ' + type_util.type_str(tp_lst[i], assumed_globals,
                                                True, _implicit_globals)
    if slf_or_clsm:
        sig_lst.insert(0, argspec.args[0])
    res_tp = type_util.type_str(_types[1], assumed_globals, True,
                                _implicit_globals)
    res = ''.join(('(', ', '.join(sig_lst), ') -> ', res_tp))
    return ''.join(('def ', func.__name__, res.replace('NoneType',
                                                       'None'), ':'))
Example #3
0
def _typestring(_types, argspecs, slf_or_clsm=False, assumed_globals=None):
    if _types[0] is Any:
        argstr = '...'
    else:
        args = type_util._preprocess_typecheck(_types[0], argspecs, slf_or_clsm)
        argstr = typelogger._prepare_arg_types_str(args, argspecs, slf_or_clsm,
                assumed_globals=assumed_globals, update_assumed_globals=True,
                implicit_globals=_implicit_globals)
    retstr = type_util.type_str(_types[1], assumed_globals, True, _implicit_globals)
    res = (argstr+' -> '+retstr)
    res = res.replace('NoneType', 'None')
    return res