|
9 | 9 | from __future__ import print_function |
10 | 10 |
|
11 | 11 | from _pyrepl import readline |
| 12 | +from _colorize import ANSIColors |
12 | 13 | import rlcompleter |
13 | 14 | import sys |
14 | 15 | import types |
15 | 16 | import os.path |
16 | 17 | from itertools import count |
17 | 18 |
|
18 | | -class Color: |
19 | | - black = '30' |
20 | | - darkred = '31' |
21 | | - darkgreen = '32' |
22 | | - brown = '33' |
23 | | - darkblue = '34' |
24 | | - purple = '35' |
25 | | - teal = '36' |
26 | | - lightgray = '37' |
27 | | - darkgray = '30;01' |
28 | | - red = '31;01' |
29 | | - green = '32;01' |
30 | | - yellow = '33;01' |
31 | | - blue = '34;01' |
32 | | - fuchsia = '35;01' |
33 | | - turquoise = '36;01' |
34 | | - white = '37;01' |
35 | | - |
36 | | - @classmethod |
37 | | - def set(cls, color, string): |
38 | | - try: |
39 | | - color = getattr(cls, color) |
40 | | - except AttributeError: |
41 | | - pass |
42 | | - return '\x1b[%sm%s\x1b[00m' % (color, string) |
43 | | - |
44 | 19 |
|
45 | 20 | class DefaultConfig: |
46 | 21 |
|
47 | 22 | consider_getitems = True |
48 | 23 | use_colors = 'auto' |
49 | 24 |
|
50 | 25 | color_by_type = { |
51 | | - types.BuiltinMethodType: Color.turquoise, |
52 | | - types.MethodType: Color.turquoise, |
53 | | - type((42).__add__): Color.turquoise, |
54 | | - type(int.__add__): Color.turquoise, |
55 | | - type(str.replace): Color.turquoise, |
56 | | - |
57 | | - types.FunctionType: Color.blue, |
58 | | - types.BuiltinFunctionType: Color.blue, |
59 | | - |
60 | | - type: Color.fuchsia, |
61 | | - |
62 | | - types.ModuleType: Color.teal, |
63 | | - type(None): Color.lightgray, |
64 | | - str: Color.green, |
65 | | - bytes: Color.green, |
66 | | - int: Color.yellow, |
67 | | - float: Color.yellow, |
68 | | - complex: Color.yellow, |
69 | | - bool: Color.yellow, |
| 26 | + types.BuiltinMethodType: ANSIColors.BOLD_TEAL, |
| 27 | + types.MethodType: ANSIColors.BOLD_TEAL, |
| 28 | + type((42).__add__): ANSIColors.BOLD_TEAL, |
| 29 | + type(int.__add__): ANSIColors.BOLD_TEAL, |
| 30 | + type(str.replace): ANSIColors.BOLD_TEAL, |
| 31 | + |
| 32 | + types.FunctionType: ANSIColors.BOLD_BLUE, |
| 33 | + types.BuiltinFunctionType: ANSIColors.BOLD_BLUE, |
| 34 | + |
| 35 | + type: ANSIColors.BOLD_MAGENTA, |
| 36 | + |
| 37 | + types.ModuleType: ANSIColors.TEAL, |
| 38 | + type(None): ANSIColors.GREY, |
| 39 | + str: ANSIColors.BOLD_GREEN, |
| 40 | + bytes: ANSIColors.BOLD_GREEN, |
| 41 | + int: ANSIColors.BOLD_YELLOW, |
| 42 | + float: ANSIColors.BOLD_YELLOW, |
| 43 | + complex: ANSIColors.BOLD_YELLOW, |
| 44 | + bool: ANSIColors.BOLD_YELLOW, |
70 | 45 | } |
71 | 46 | # Fallback to look up colors by `isinstance` when not matched |
72 | 47 | # via color_by_type. |
73 | 48 | color_by_baseclass = [ |
74 | | - ((BaseException,), Color.red), |
| 49 | + ((BaseException,), ANSIColors.BOLD_RED), |
75 | 50 | ] |
76 | 51 |
|
77 | 52 |
|
@@ -230,10 +205,11 @@ def color_for_obj(self, i, name, value): |
230 | 205 | color = _color |
231 | 206 | break |
232 | 207 | else: |
233 | | - color = '00' |
| 208 | + color = ANSIColors.RESET |
234 | 209 | # hack: prepend an (increasing) fake escape sequence, |
235 | 210 | # so that readline can sort the matches correctly. |
236 | | - return '\x1b[%03d;00m' % i + Color.set(color, name) |
| 211 | + N = f"\x1b[{i:03d};00m" |
| 212 | + return f"{N}{color}{name}{ANSIColors.RESET}" |
237 | 213 |
|
238 | 214 |
|
239 | 215 | def commonprefix(names, base=''): |
|
0 commit comments