diff options
author | Martin Matusiak <numerodix@gmail.com> | 2021-05-05 13:53:19 +1000 |
---|---|---|
committer | Martin Matusiak <numerodix@gmail.com> | 2021-05-05 13:53:19 +1000 |
commit | 4f7d6f5d7c2c6c682f5b1ab1e09a40c21f7562b8 (patch) | |
tree | 96bb46965f2f974559075ad75487569be8a2b947 | |
parent | a5fedffab77bdb669face91c756755e83c48159a (diff) | |
download | ansicolor-4f7d6f5d7c2c6c682f5b1ab1e09a40c21f7562b8.tar.gz |
reformat with black
-rw-r--r-- | README.rst | 8 | ||||
-rw-r--r-- | ansicolor/__init__.py | 49 | ||||
-rw-r--r-- | ansicolor/ansicolor.py | 188 | ||||
-rw-r--r-- | ansicolor/demos.py | 114 | ||||
-rw-r--r-- | dev-requirements.txt | 1 | ||||
-rw-r--r-- | setup.py | 26 | ||||
-rw-r--r-- | tests/test_colors.py | 245 | ||||
-rw-r--r-- | tests/test_imports.py | 1 |
8 files changed, 337 insertions, 295 deletions
@@ -117,3 +117,11 @@ Checking code style .. code:: bash $ flake8 ansicolor + + +Re-formatting code +^^^^^^^^^^^^^^^^^^ + +.. code:: bash + + $ black ansicolor tests diff --git a/ansicolor/__init__.py b/ansicolor/__init__.py index 5b384ed..c56a499 100644 --- a/ansicolor/__init__.py +++ b/ansicolor/__init__.py @@ -30,33 +30,28 @@ from ansicolor.ansicolor import Colors __all__ = [ - 'black', - 'blue', - 'cyan', - 'green', - 'magenta', - 'red', - 'white', - 'yellow', - - 'colorize', - 'colorize_v2', - 'get_code', - 'get_code_v2', - 'wrap_string', - - 'highlight_string', - 'get_highlighter', - - 'strip_escapes', - 'justify_formatted', - - 'colordiff', - 'set_term_title', - 'write_out', - 'write_err', - - 'Colors', + "black", + "blue", + "cyan", + "green", + "magenta", + "red", + "white", + "yellow", + "colorize", + "colorize_v2", + "get_code", + "get_code_v2", + "wrap_string", + "highlight_string", + "get_highlighter", + "strip_escapes", + "justify_formatted", + "colordiff", + "set_term_title", + "write_out", + "write_err", + "Colors", ] __major_version__ = "0.3" diff --git a/ansicolor/ansicolor.py b/ansicolor/ansicolor.py index 1ac7cec..75f34e6 100644 --- a/ansicolor/ansicolor.py +++ b/ansicolor/ansicolor.py @@ -8,33 +8,28 @@ import warnings __all__ = [ # noqa - 'black', - 'blue', - 'cyan', - 'green', - 'magenta', - 'red', - 'white', - 'yellow', - - 'colorize', - 'colorize_v2', - 'wrap_string', - 'get_code', - 'get_code_v2', - - 'highlight_string', - 'get_highlighter', - - 'strip_escapes', - 'justify_formatted', - - 'colordiff', - 'set_term_title', - 'write_out', - 'write_err', - - 'Colors', + "black", + "blue", + "cyan", + "green", + "magenta", + "red", + "white", + "yellow", + "colorize", + "colorize_v2", + "wrap_string", + "get_code", + "get_code_v2", + "highlight_string", + "get_highlighter", + "strip_escapes", + "justify_formatted", + "colordiff", + "set_term_title", + "write_out", + "write_err", + "Colors", ] @@ -43,7 +38,8 @@ _disabled = (not os.environ.get("TERM")) or (os.environ.get("TERM") == "dumb") class Colors(object): - '''Container class for colors''' + """Container class for colors""" + @classmethod def new(cls, colorname): try: @@ -78,14 +74,18 @@ Colors.new("White") def make_func(color): def f(s, bold=False, reverse=False): return colorize(s, color, bold=bold, reverse=reverse) - f.__doc__ = """ + + f.__doc__ = ( + """ Colorize string in %s :param string s: The string to colorize. :param bool bold: Whether to mark up in bold. :param bool reverse: Whether to mark up in reverse video. :rtype: string - """ % color.__name__.lower() + """ + % color.__name__.lower() + ) return f @@ -100,7 +100,7 @@ highlights = [ Colors.Cyan, Colors.Blue, Colors.Magenta, - Colors.Red + Colors.Red, ] highlight_map = {} @@ -119,6 +119,7 @@ def get_highlighter(colorid): return highlight_map[colorid % len(highlights)] + def get_code(color, bold=False, reverse=False): """ Returns the escape code for styling with the given color, @@ -134,19 +135,19 @@ def get_code(color, bold=False, reverse=False): if _disabled: return "" - fmt = '0;0' + fmt = "0;0" if bold and reverse: - fmt = '1;7' + fmt = "1;7" elif reverse: - fmt = '0;7' + fmt = "0;7" elif bold: - fmt = '0;1' - color = (color is not None) and ';3%s' % color.id or '' + fmt = "0;1" + color = (color is not None) and ";3%s" % color.id or "" + + return "\033[" + fmt + color + "m" - return '\033[' + fmt + color + 'm' -def get_code_v2(color, bold=False, reverse=False, underline=False, - blink=False): +def get_code_v2(color, bold=False, reverse=False, underline=False, blink=False): """ Returns the escape code for styling with the given color, in bold and/or reverse. @@ -162,22 +163,23 @@ def get_code_v2(color, bold=False, reverse=False, underline=False, if _disabled: return "" - fmt = '0' + fmt = "0" items = [] if bold: - items.append('1') + items.append("1") if underline: - items.append('4') + items.append("4") if blink: - items.append('5') + items.append("5") if reverse: - items.append('7') + items.append("7") if len(items) != 0: - fmt = ';'.join(items) + fmt = ";".join(items) - color = (color is not None) and ';3%s' % color.id or '' + color = (color is not None) and ";3%s" % color.id or "" + + return "\033[" + fmt + color + "m" - return '\033[' + fmt + color + 'm' def colorize(s, color, bold=False, reverse=False, start=None, end=None): """ @@ -200,14 +202,25 @@ def colorize(s, color, bold=False, reverse=False, start=None, end=None): between = s[start:end] after = s[end:] - return ("%s%s%s%s%s" % (before, - get_code(color, bold=bold, reverse=reverse), - between, - get_code(None), - after)) - -def colorize_v2(s, color, bold=False, reverse=False, underline=False, - blink=False, start=None, end=None): + return "%s%s%s%s%s" % ( + before, + get_code(color, bold=bold, reverse=reverse), + between, + get_code(None), + after, + ) + + +def colorize_v2( + s, + color, + bold=False, + reverse=False, + underline=False, + blink=False, + start=None, + end=None, +): """ Colorize a string with the color given. :param string s: The string to colorize. @@ -229,17 +242,15 @@ def colorize_v2(s, color, bold=False, reverse=False, underline=False, between = s[start:end] after = s[end:] - return ("%s%s%s%s%s" % (before, - get_code_v2( - color, - bold=bold, - underline=underline, - blink=blink, - reverse=reverse - ), - between, - get_code_v2(None), - after)) + return "%s%s%s%s%s" % ( + before, + get_code_v2( + color, bold=bold, underline=underline, blink=blink, reverse=reverse + ), + between, + get_code_v2(None), + after, + ) def wrap_string(s, pos, color, bold=False, reverse=False): @@ -263,12 +274,14 @@ def wrap_string(s, pos, color, bold=False, reverse=False): if _disabled: if pos == 0: pos = 1 - return s[:pos - 1] + "|" + s[pos:] + return s[: pos - 1] + "|" + s[pos:] - return "%s%s%s%s" % (get_code(color, bold=bold, reverse=reverse), - s[:pos], - get_code(None), - s[pos:]) + return "%s%s%s%s" % ( + get_code(color, bold=bold, reverse=reverse), + s[:pos], + get_code(None), + s[pos:], + ) def highlight_string(s, *spanlists, **kw): @@ -286,7 +299,7 @@ def highlight_string(s, *spanlists, **kw): The `color` parameter has been deprecated in favor of `colors`. """ - colors = kw.get('colors', []) + colors = kw.get("colors", []) # pair span with color and id of the list -> (span, color, list_id) tuples = [] @@ -345,13 +358,13 @@ def highlight_string(s, *spanlists, **kw): # allow bold/reverse/nocolor styling as parameters if color: - if kw.get('color'): - color = kw.get('color') + if kw.get("color"): + color = kw.get("color") warnings.warn("color is deprecated", DeprecationWarning, 2) - elif kw.get('nocolor'): + elif kw.get("nocolor"): color = None - bold = kw.get('bold') or bold - reverse = kw.get('reverse') or reverse + bold = kw.get("bold") or bold + reverse = kw.get("reverse") or reverse if layer == 2: bold = True @@ -367,7 +380,7 @@ def highlight_string(s, *spanlists, **kw): cursor = pos segments.append(s[cursor:]) - return ''.join(segments) + return "".join(segments) def colordiff(x, y, color_x=Colors.Cyan, color_y=Colors.Green, debug=False): @@ -392,9 +405,9 @@ def colordiff(x, y, color_x=Colors.Cyan, color_y=Colors.Green, debug=False): rather than the longest common subsequence, but this just causes the diff to show more changed characters, the result is still correct""" sm = difflib.SequenceMatcher(None, x, y) - seq = '' + seq = "" for match in sm.get_matching_blocks(): - seq += x[match.a:match.a + match.size] + seq += x[match.a : match.a + match.size] return seq def make_generator(it): @@ -433,31 +446,31 @@ def colordiff(x, y, color_x=Colors.Cyan, color_y=Colors.Green, debug=False): # character the same in all sets # -> unchanged if s == a == b: - log(' %s' % s) + log(" %s" % s) (sid, s) = it_seq() (aid, a) = it_x() (bid, b) = it_y() # character the same in orig and common # -> added in new elif s == a: - log('+%s' % b) + log("+%s" % b) y_spans.append((bid, bid + 1)) (bid, b) = it_y() # character the same in new and common # -> removed in orig elif s == b: - log('-%s' % a) + log("-%s" % a) x_spans.append((aid, aid + 1)) (aid, a) = it_x() # character not the same (eg. case change) # -> removed in orig and added in new elif a != b: if a: - log('-%s' % a) + log("-%s" % a) x_spans.append((aid, aid + 1)) (aid, a) = it_x() if b: - log('+%s' % b) + log("+%s" % b) y_spans.append((bid, bid + 1)) (bid, b) = it_y() @@ -489,7 +502,7 @@ def strip_escapes(s): :rtype: string """ - return re.sub('\033\[(?:(?:[0-9]*;)*)(?:[0-9]*m)', '', s) + return re.sub("\033\[(?:(?:[0-9]*;)*)(?:[0-9]*m)", "", s) # Output functions @@ -503,6 +516,7 @@ def set_term_title(s): if not _disabled: sys.stdout.write("\033]2;%s\007" % s) + def write_to(target, s): # assuming we have escapes in the string if not _disabled: @@ -511,6 +525,7 @@ def write_to(target, s): target.write(s) target.flush() + def write_out(s): """ Write a string to ``sys.stdout``, strip escapes if output is a pipe. @@ -520,6 +535,7 @@ def write_out(s): write_to(sys.stdout, s) + def write_err(s): """ Write a string to ``sys.stderr``, strip escapes if output is a pipe. diff --git a/ansicolor/demos.py b/ansicolor/demos.py index d724250..69bba6b 100644 --- a/ansicolor/demos.py +++ b/ansicolor/demos.py @@ -17,92 +17,129 @@ def demo_color(): lst = [] - lst.extend([[], ['>>> Without colors'], []]) + lst.extend([[], [">>> Without colors"], []]) line = [] line.append(colorize("Standard".ljust(width), None)) line.append(colorize("Bold".ljust(width), None, bold=True)) line.append(colorize("Reverse".ljust(width), None, reverse=True)) - line.append(colorize("Bold & Rev".ljust(width), None, bold=True, reverse=True)) # noqa + line.append( + colorize("Bold & Rev".ljust(width), None, bold=True, reverse=True) + ) # noqa lst.append(line) - lst.extend([[], ['>>> Using colors'], []]) + lst.extend([[], [">>> Using colors"], []]) for color in Colors.iter(): line = [] line.append(colorize(color.__name__.ljust(width), color)) line.append(colorize(color.__name__.ljust(width), color, bold=True)) # noqa line.append(colorize(color.__name__.ljust(width), color, reverse=True)) # noqa - line.append(colorize(color.__name__.ljust(width), color, bold=True, reverse=True)) # noqa + line.append( + colorize(color.__name__.ljust(width), color, bold=True, reverse=True) + ) # noqa lst.append(line) - lst.extend([[], ['>>> Using highlighting colors'], []]) + lst.extend([[], [">>> Using highlighting colors"], []]) for color in Colors.iter(): color = get_highlighter(color.id) line = [] line.append(colorize(color.__name__.ljust(width), color)) line.append(colorize(color.__name__.ljust(width), color, bold=True)) # noqa line.append(colorize(color.__name__.ljust(width), color, reverse=True)) # noqa - line.append(colorize(color.__name__.ljust(width), color, bold=True, reverse=True)) # noqa + line.append( + colorize(color.__name__.ljust(width), color, bold=True, reverse=True) + ) # noqa lst.append(line) for line in lst: for item in line: - write_out('%s ' % item) + write_out("%s " % item) write_out("\n") + def demo_color_v2(): width = 10 lst = [] - lst.extend([[], ['>>> Without colors'], []]) + lst.extend([[], [">>> Without colors"], []]) line = [] line.append(colorize_v2("Standard".ljust(width), None)) line.append(colorize_v2("Bold".ljust(width), None, bold=True)) line.append(colorize_v2("Underline".ljust(width), None, underline=True)) line.append(colorize_v2("Blink".ljust(width), None, blink=True)) line.append(colorize_v2("Reverse".ljust(width), None, reverse=True)) - line.append(colorize_v2("Bold & Rev".ljust(width), None, bold=True, underline=True, reverse=True)) # noqa + line.append( + colorize_v2( + "Bold & Rev".ljust(width), None, bold=True, underline=True, reverse=True + ) + ) # noqa lst.append(line) - lst.extend([[], ['>>> Using colors_v2'], []]) + lst.extend([[], [">>> Using colors_v2"], []]) for color in Colors.iter(): line = [] line.append(colorize_v2(color.__name__.ljust(width), color)) line.append(colorize_v2(color.__name__.ljust(width), color, bold=True)) # noqa - line.append(colorize_v2(color.__name__.ljust(width), color, underline=True)) # noqa + line.append( + colorize_v2(color.__name__.ljust(width), color, underline=True) + ) # noqa line.append(colorize_v2(color.__name__.ljust(width), color, blink=True)) # noqa - line.append(colorize_v2(color.__name__.ljust(width), color, reverse=True)) # noqa - line.append(colorize_v2(color.__name__.ljust(width), color, bold=True, underline=True, reverse=True)) # noqa + line.append( + colorize_v2(color.__name__.ljust(width), color, reverse=True) + ) # noqa + line.append( + colorize_v2( + color.__name__.ljust(width), + color, + bold=True, + underline=True, + reverse=True, + ) + ) # noqa lst.append(line) - lst.extend([[], ['>>> Using highlighting colors_v2'], []]) + lst.extend([[], [">>> Using highlighting colors_v2"], []]) for color in Colors.iter(): color = get_highlighter(color.id) line = [] line.append(colorize_v2(color.__name__.ljust(width), color)) line.append(colorize_v2(color.__name__.ljust(width), color, bold=True)) # noqa - line.append(colorize_v2(color.__name__.ljust(width), color, underline=True)) # noqa + line.append( + colorize_v2(color.__name__.ljust(width), color, underline=True) + ) # noqa line.append(colorize_v2(color.__name__.ljust(width), color, blink=True)) # noqa - line.append(colorize_v2(color.__name__.ljust(width), color, reverse=True)) # noqa - line.append(colorize_v2(color.__name__.ljust(width), color, bold=True, underline=True, reverse=True)) # noqa + line.append( + colorize_v2(color.__name__.ljust(width), color, reverse=True) + ) # noqa + line.append( + colorize_v2( + color.__name__.ljust(width), + color, + bold=True, + underline=True, + reverse=True, + ) + ) # noqa lst.append(line) for line in lst: for item in line: - write_out('%s ' % item) + write_out("%s " % item) write_out("\n") + def _demo_highlight(reverse=False): rxs = [ - '(b+).*\\1', - '(c+).*\\1', - '(d+).*\\1', - '(e+).*\\1', + "(b+).*\\1", + "(c+).*\\1", + "(d+).*\\1", + "(e+).*\\1", ] s = """\ aaabbbcccdddeeefffeeedddcccbbbaaa fffeeedddcccbbbaaabbbcccdddeeefff """ + def display(rxs, s): spanlists = [] colors = [] @@ -122,17 +159,19 @@ fffeeedddcccbbbaaabbbcccdddeeefff for (i, rx) in enumerate(rxs): color = get_highlighter(i) color = colorize(color.__name__.ljust(10), color) - write_out('Regex %s: %s %s\n' % (i, color, rx)) + write_out("Regex %s: %s %s\n" % (i, color, rx)) write_out(s) for i in range(0, len(rxs) + 1): - write_out('\n') + write_out("\n") display(rxs[:i], s) + def demo_highlight(): _demo_highlight() + def demo_highlight_reverse(): _demo_highlight(reverse=True) @@ -140,31 +179,30 @@ def demo_highlight_reverse(): def demo_diff(): def display_diff(s, t): (s_fmt, t_fmt) = colordiff(s, t) - write_out('>>> %s\n' % s_fmt) - write_out(' %s\n\n' % t_fmt) - - display_diff('first last', 'First Last') - display_diff('the the boss', 'the boss') - display_diff('the coder', 'the first coder') - display_diff('agcat', 'gac') - display_diff('XMJYAUZ', 'MZJAWXU') - display_diff('abcdfghjqz', 'abcdefgijkrxyz') + write_out(">>> %s\n" % s_fmt) + write_out(" %s\n\n" % t_fmt) + display_diff("first last", "First Last") + display_diff("the the boss", "the boss") + display_diff("the coder", "the first coder") + display_diff("agcat", "gac") + display_diff("XMJYAUZ", "MZJAWXU") + display_diff("abcdfghjqz", "abcdefgijkrxyz") -if __name__ == '__main__': +if __name__ == "__main__": try: action = sys.argv[1] except IndexError: print("Usage: %s [ --color | --highlight | --diff ]" % sys.argv[0]) sys.exit(1) - if action == '--color': + if action == "--color": demo_color() demo_color_v2() - elif action == '--highlight': + elif action == "--highlight": demo_highlight() - elif action == '--highlight-reverse': + elif action == "--highlight-reverse": demo_highlight_reverse() - elif action == '--diff': + elif action == "--diff": demo_diff() diff --git a/dev-requirements.txt b/dev-requirements.txt index 81c0d2b..6314841 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -1,3 +1,4 @@ +black cheesecake flake8 ipdb @@ -4,26 +4,24 @@ import ansicolor setup( - name='ansicolor', + name="ansicolor", version=ansicolor.__version__, description=( - 'A library to produce ansi color output ' - 'and colored highlighting and diffing' + "A library to produce ansi color output and colored highlighting and diffing" ), - author='Martin Matusiak', - author_email='numerodix@gmail.com', - url='https://github.com/numerodix/ansicolor', - + author="Martin Matusiak", + author_email="numerodix@gmail.com", + url="https://github.com/numerodix/ansicolor", packages=[ - 'ansicolor', + "ansicolor", ], classifiers=[ - 'License :: OSI Approved :: Apache Software License', - 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.8', - 'Programming Language :: Python :: 3.9', - 'Programming Language :: Python :: Implementation :: CPython', + "License :: OSI Approved :: Apache Software License", + "Programming Language :: Python :: 2.7", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: Implementation :: CPython", ], # don't install as zipped egg zip_safe=False, diff --git a/tests/test_colors.py b/tests/test_colors.py index ba43a5f..37c53e3 100644 --- a/tests/test_colors.py +++ b/tests/test_colors.py @@ -4,18 +4,18 @@ from ansicolor import Colors from ansicolor import blue from ansicolor import colordiff from ansicolor import colorize +from ansicolor import colorize_v2 from ansicolor import get_code +from ansicolor import get_code_v2 from ansicolor import get_highlighter +from ansicolor import highlight_string from ansicolor import justify_formatted from ansicolor import red +from ansicolor import set_term_title from ansicolor import strip_escapes from ansicolor import wrap_string -from ansicolor import get_code_v2 -from ansicolor import colorize_v2 -from ansicolor import highlight_string -from ansicolor import set_term_title -from ansicolor import write_out from ansicolor import write_err +from ansicolor import write_out import ansicolor @@ -33,72 +33,84 @@ def disabled_state(): def test_codes(): # reset code - assert '\033[0;0m' == get_code(None) + assert "\033[0;0m" == get_code(None) # plain color codes - assert '\033[0;0;30m' == get_code(Colors.Black) - assert '\033[0;0;31m' == get_code(Colors.Red) - assert '\033[0;0;32m' == get_code(Colors.Green) - assert '\033[0;0;33m' == get_code(Colors.Yellow) - assert '\033[0;0;34m' == get_code(Colors.Blue) - assert '\033[0;0;35m' == get_code(Colors.Magenta) - assert '\033[0;0;36m' == get_code(Colors.Cyan) - assert '\033[0;0;37m' == get_code(Colors.White) + assert "\033[0;0;30m" == get_code(Colors.Black) + assert "\033[0;0;31m" == get_code(Colors.Red) + assert "\033[0;0;32m" == get_code(Colors.Green) + assert "\033[0;0;33m" == get_code(Colors.Yellow) + assert "\033[0;0;34m" == get_code(Colors.Blue) + assert "\033[0;0;35m" == get_code(Colors.Magenta) + assert "\033[0;0;36m" == get_code(Colors.Cyan) + assert "\033[0;0;37m" == get_code(Colors.White) # bold color - assert '\033[0;1;31m' == get_code(Colors.Red, bold=True) + assert "\033[0;1;31m" == get_code(Colors.Red, bold=True) # reverse color - assert '\033[0;7;31m' == get_code(Colors.Red, reverse=True) + assert "\033[0;7;31m" == get_code(Colors.Red, reverse=True) # bold + reverse color - assert '\033[1;7;31m' == get_code(Colors.Red, bold=True, reverse=True) + assert "\033[1;7;31m" == get_code(Colors.Red, bold=True, reverse=True) + def test_codes_disabled(): with disabled_state(): - assert '' == get_code(Colors.Black) + assert "" == get_code(Colors.Black) + def test_codes_v2(): # reset code - assert '\033[0m' == get_code_v2(None) + assert "\033[0m" == get_code_v2(None) # plain color codes - assert '\033[0;30m' == get_code_v2(Colors.Black) - assert '\033[0;31m' == get_code_v2(Colors.Red) - assert '\033[0;32m' == get_code_v2(Colors.Green) - assert '\033[0;33m' == get_code_v2(Colors.Yellow) - assert '\033[0;34m' == get_code_v2(Colors.Blue) - assert '\033[0;35m' == get_code_v2(Colors.Magenta) - assert '\033[0;36m' == get_code_v2(Colors.Cyan) - assert '\033[0;37m' == get_code_v2(Colors.White) + assert "\033[0;30m" == get_code_v2(Colors.Black) + assert "\033[0;31m" == get_code_v2(Colors.Red) + assert "\033[0;32m" == get_code_v2(Colors.Green) + assert "\033[0;33m" == get_code_v2(Colors.Yellow) + assert "\033[0;34m" == get_code_v2(Colors.Blue) + assert "\033[0;35m" == get_code_v2(Colors.Magenta) + assert "\033[0;36m" == get_code_v2(Colors.Cyan) + assert "\033[0;37m" == get_code_v2(Colors.White) # bold, underline, blink, reverse color - assert '\033[1;31m' == get_code_v2(Colors.Red, bold=True) - assert '\033[4;31m' == get_code_v2(Colors.Red, underline=True) - assert '\033[5;31m' == get_code_v2(Colors.Red, blink=True) - assert '\033[7;31m' == get_code_v2(Colors.Red, reverse=True) + assert "\033[1;31m" == get_code_v2(Colors.Red, bold=True) + assert "\033[4;31m" == get_code_v2(Colors.Red, underline=True) + assert "\033[5;31m" == get_code_v2(Colors.Red, blink=True) + assert "\033[7;31m" == get_code_v2(Colors.Red, reverse=True) # mixed color - assert '\033[1;4;31m' == get_code_v2(Colors.Red, bold=True, underline=True) - assert '\033[1;5;31m' == get_code_v2(Colors.Red, bold=True, blink=True) - assert '\033[1;7;31m' == get_code_v2(Colors.Red, bold=True, reverse=True) + assert "\033[1;4;31m" == get_code_v2(Colors.Red, bold=True, underline=True) + assert "\033[1;5;31m" == get_code_v2(Colors.Red, bold=True, blink=True) + assert "\033[1;7;31m" == get_code_v2(Colors.Red, bold=True, reverse=True) - assert '\033[4;5;31m' == get_code_v2(Colors.Red, underline=True, blink=True) - assert '\033[4;7;31m' == get_code_v2(Colors.Red, underline=True, reverse=True) + assert "\033[4;5;31m" == get_code_v2(Colors.Red, underline=True, blink=True) + assert "\033[4;7;31m" == get_code_v2(Colors.Red, underline=True, reverse=True) - assert '\033[5;7;31m' == get_code_v2(Colors.Red, blink=True, reverse=True) + assert "\033[5;7;31m" == get_code_v2(Colors.Red, blink=True, reverse=True) + + assert "\033[1;4;5;31m" == get_code_v2( + Colors.Red, bold=True, underline=True, blink=True + ) + assert "\033[1;4;7;31m" == get_code_v2( + Colors.Red, bold=True, underline=True, reverse=True + ) + assert "\033[1;5;7;31m" == get_code_v2( + Colors.Red, bold=True, blink=True, reverse=True + ) + assert "\033[1;4;5;7;31m" == get_code_v2( + Colors.Red, bold=True, underline=True, blink=True, reverse=True + ) - assert '\033[1;4;5;31m' == get_code_v2(Colors.Red, bold=True, underline=True, blink=True) - assert '\033[1;4;7;31m' == get_code_v2(Colors.Red, bold=True, underline=True, reverse=True) - assert '\033[1;5;7;31m' == get_code_v2(Colors.Red, bold=True, blink=True, reverse=True) - assert '\033[1;4;5;7;31m' == get_code_v2(Colors.Red, bold=True, underline=True, blink=True, reverse=True) def test_codes_v2_disabled(): with disabled_state(): - assert '' == get_code_v2(Colors.Black) + assert "" == get_code_v2(Colors.Black) + def test_coloring(): - assert '\033[0;0;31m' + 'hi' + '\033[0;0m' == red('hi') + assert "\033[0;0;31m" + "hi" + "\033[0;0m" == red("hi") def test_get_hightlighter(): @@ -114,13 +126,10 @@ def test_highlight_string_one_layer(): ] assert ( - 'aaa' - + get_code(Colors.Green) - + 'bbb' - + get_code(None) - + 'aaa' + "aaa" + get_code(Colors.Green) + "bbb" + get_code(None) + "aaa" ) == highlight_string(text, *spanlists) + def test_highlight_string_one_color_chosen(): text = "aaabbbaaa" spanlists = [ @@ -128,13 +137,10 @@ def test_highlight_string_one_color_chosen(): ] assert ( - 'aaa' - + get_code(Colors.Cyan) - + 'bbb' - + get_code(None) - + 'aaa' + "aaa" + get_code(Colors.Cyan) + "bbb" + get_code(None) + "aaa" ) == highlight_string(text, *spanlists, color=Colors.Cyan) + def test_highlight_string_nocolor(): text = "aaabbbaaa" spanlists = [ @@ -142,13 +148,10 @@ def test_highlight_string_nocolor(): ] assert ( - 'aaa' - + get_code(None) - + 'bbb' - + get_code(None) - + 'aaa' + "aaa" + get_code(None) + "bbb" + get_code(None) + "aaa" ) == highlight_string(text, *spanlists, nocolor=True) + def test_highlight_string_four_layers_inside_out(): text = "aaabbbcccdddeeefffeeedddcccbbbaaa" spanlists = [ @@ -165,33 +168,29 @@ def test_highlight_string_four_layers_inside_out(): ] assert ( - 'aaa' + "aaa" + get_code(Colors.Green) - + 'bbb' + + "bbb" + get_code(Colors.Yellow, bold=True) - + 'ccc' + + "ccc" + get_code(Colors.Cyan, reverse=True) - + 'ddd' + + "ddd" + get_code(Colors.Blue, bold=True, reverse=True) - + 'eeefffeee' + + "eeefffeee" + get_code(Colors.Cyan, reverse=True) - + 'ddd' + + "ddd" + get_code(Colors.Yellow, bold=True) - + 'ccc' + + "ccc" + get_code(Colors.Green) - + 'bbb' + + "bbb" + get_code(None) - + 'aaa' + + "aaa" ) == highlight_string(text, *spanlists, colors=colors) + def test_highlight_string_four_layers_outside_in(): - text = 'fffeeedddcccbbbaaabbbcccdddeeefff' - spanlists = [ - [(12, 21)], - [(9, 24)], - [(6, 27)], - [(3, 30)] - ] + text = "fffeeedddcccbbbaaabbbcccdddeeefff" + spanlists = [[(12, 21)], [(9, 24)], [(6, 27)], [(3, 30)]] colors = [ Colors.Green, Colors.Yellow, @@ -200,65 +199,53 @@ def test_highlight_string_four_layers_outside_in(): ] assert ( - 'fff' + "fff" + get_code(Colors.Blue) - + 'eee' + + "eee" + get_code(Colors.Blue, bold=True) - + 'ddd' + + "ddd" + get_code(Colors.Blue, reverse=True) - + 'ccc' + + "ccc" + get_code(Colors.Blue, bold=True, reverse=True) - + 'bbbaaabbb' + + "bbbaaabbb" + get_code(Colors.Blue, reverse=True) - + 'ccc' + + "ccc" + get_code(Colors.Blue, bold=True) - + 'ddd' + + "ddd" + get_code(Colors.Blue) - + 'eee' + + "eee" + get_code(None) - + 'fff' + + "fff" ) == highlight_string(text, *spanlists, colors=colors) def test_colorize(): - assert ( - get_code(Colors.Red) - + "Hi there" - + get_code(None) - ) == colorize("Hi there", Colors.Red) + assert (get_code(Colors.Red) + "Hi there" + get_code(None)) == colorize( + "Hi there", Colors.Red + ) + def test_colorize_with_start_end(): - assert ( - "H" - + get_code(Colors.Red) - + "i ther" - + get_code(None) - + "e" - ) == colorize("Hi there", Colors.Red, start=1, end=7) + assert ("H" + get_code(Colors.Red) + "i ther" + get_code(None) + "e") == colorize( + "Hi there", Colors.Red, start=1, end=7 + ) + def test_colorize_v2(): - assert ( - get_code_v2(Colors.Red) - + "Hi there" - + get_code_v2(None) - ) == colorize_v2("Hi there", Colors.Red) + assert (get_code_v2(Colors.Red) + "Hi there" + get_code_v2(None)) == colorize_v2( + "Hi there", Colors.Red + ) assert ( - "H" - + get_code_v2(Colors.Red) - + "i ther" - + get_code_v2(None) - + "e" + "H" + get_code_v2(Colors.Red) + "i ther" + get_code_v2(None) + "e" ) == colorize_v2("Hi there", Colors.Red, start=1, end=7) def test_wrap_string(): - assert ( - get_code(Colors.Red) - + "Hi " - + get_code(None) - + "there" - ) == wrap_string("Hi there", 3, Colors.Red) + assert (get_code(Colors.Red) + "Hi " + get_code(None) + "there") == wrap_string( + "Hi there", 3, Colors.Red + ) + def test_wrap_string_disabled(): with disabled_state(): @@ -267,20 +254,20 @@ def test_wrap_string_disabled(): def test_strip_escapes(): - assert "Hi there" == strip_escapes( - colorize("Hi there", Colors.Red, start=3) - ) + assert "Hi there" == strip_escapes(colorize("Hi there", Colors.Red, start=3)) - assert strip_escapes( - colorize("Hi", None, bold=True) - + " there, " - + colorize("stranger", Colors.Green, bold=True) - ) == "Hi there, stranger" + assert ( + strip_escapes( + colorize("Hi", None, bold=True) + + " there, " + + colorize("stranger", Colors.Green, bold=True) + ) + == "Hi there, stranger" + ) def test_colordiff_different(): - x, y = colordiff("hi bob", "hi there", - color_x=Colors.Red, color_y=Colors.Blue) + x, y = colordiff("hi bob", "hi there", color_x=Colors.Red, color_y=Colors.Blue) def fx(s): return red(s, reverse=True) @@ -291,9 +278,9 @@ def test_colordiff_different(): assert x == "hi " + fx("b") + fx("o") + fx("b") assert y == "hi " + fy("t") + fy("h") + fy("e") + fy("r") + fy("e") + def test_colordiff_edited(): - x, y = colordiff("hi bobby", "hi bob", - color_x=Colors.Red, color_y=Colors.Blue) + x, y = colordiff("hi bobby", "hi bob", color_x=Colors.Red, color_y=Colors.Blue) def fx(s): return red(s, reverse=True) @@ -306,16 +293,14 @@ def test_justify_formatted(): def rjust(s, width): return s.rjust(width) - assert justify_formatted( - red("hi"), rjust, 10 - ) == " " + red("hi") + assert justify_formatted(red("hi"), rjust, 10) == " " + red("hi") def test_set_term_title(capsys): - set_term_title('ansicolor demo') + set_term_title("ansicolor demo") captured = capsys.readouterr() - assert '\033]2;ansicolor demo\007' == captured.out + assert "\033]2;ansicolor demo\007" == captured.out def test_write_out(capfd): @@ -326,7 +311,7 @@ def test_write_out(capfd): write_out(text) captured = capfd.readouterr() - assert 'Hi there' == captured.out + assert "Hi there" == captured.out def test_write_err(capfd): @@ -337,4 +322,4 @@ def test_write_err(capfd): write_err(text) captured = capfd.readouterr() - assert 'Hi there' == captured.err + assert "Hi there" == captured.err diff --git a/tests/test_imports.py b/tests/test_imports.py index ed5f654..4b07ce6 100644 --- a/tests/test_imports.py +++ b/tests/test_imports.py @@ -9,6 +9,7 @@ def test_importability(): from ansicolor import yellow # noqa from ansicolor import Colors # noqa + Colors.Black Colors.Blue Colors.Cyan |