def test_linessplit(self): text = blue('the sum of the squares of the sideways') result = [blue('the')+blue(' ')+blue('sum'), blue('of')+blue(' ')+blue('the'), blue('squares'), blue('of')+blue(' ')+blue('the'), blue('sideway'), blue('s') ] self.assertEqual(linesplit(text, 7), result)
def formatted_argspec(argspec, columns, config): # Pretty directly taken from bpython.cli is_bound_method = argspec[2] func = argspec[0] args = argspec[1][0] kwargs = argspec[1][3] _args = argspec[1][1] #*args _kwargs = argspec[1][2] #**kwargs is_bound_method = argspec[2] in_arg = argspec[3] if py3: kwonly = argspec[1][4] kwonly_defaults = argspec[1][5] or dict() arg_color = func_for_letter(config.color_scheme['name']) func_color = func_for_letter(config.color_scheme['name'].swapcase()) punctuation_color = func_for_letter(config.color_scheme['punctuation']) token_color = func_for_letter(config.color_scheme['token']) bolds = {token_color: lambda x: bold(token_color(x)), arg_color: lambda x: bold(arg_color(x))} s = func_color(func) + arg_color(': (') if is_bound_method and isinstance(in_arg, int): #TODO what values could this have? in_arg += 1 for i, arg in enumerate(args): kw = None if kwargs and i >= len(args) - len(kwargs): kw = str(kwargs[i - (len(args) - len(kwargs))]) color = token_color if in_arg in (i, arg) else arg_color if i == in_arg or arg == in_arg: color = bolds[color] if not py3: s += color(inspect.strseq(arg, str)) else: s += color(arg) if kw is not None: s += punctuation_color('=') s += token_color(kw) if i != len(args) - 1: s += punctuation_color(', ') if _args: if args: s += punctuation_color(', ') s += token_color('*%s' % (_args,)) if py3 and kwonly: if not _args: if args: s += punctuation_color(', ') s += punctuation_color('*') marker = object() for arg in kwonly: s += punctuation_color(', ') color = token_color if in_arg: color = bolds[color] s += color(arg) default = kwonly_defaults.get(arg, marker) if default is not marker: s += punctuation_color('=') s += token_color(repr(default)) if _kwargs: if args or _args or (py3 and kwonly): s += punctuation_color(', ') s += token_color('**%s' % (_kwargs,)) s += punctuation_color(')') return linesplit(s, columns)