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)))
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'), ':'))
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