colors.py 977 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from __future__ import absolute_import
  2. from __future__ import unicode_literals
  3. from ..const import IS_WINDOWS_PLATFORM
  4. NAMES = [
  5. 'grey',
  6. 'red',
  7. 'green',
  8. 'yellow',
  9. 'blue',
  10. 'magenta',
  11. 'cyan',
  12. 'white'
  13. ]
  14. def get_pairs():
  15. for i, name in enumerate(NAMES):
  16. yield(name, str(30 + i))
  17. yield('intense_' + name, str(30 + i) + ';1')
  18. def ansi(code):
  19. return '\033[{0}m'.format(code)
  20. def ansi_color(code, s):
  21. return '{0}{1}{2}'.format(ansi(code), s, ansi(0))
  22. def make_color_fn(code):
  23. return lambda s: ansi_color(code, s)
  24. if IS_WINDOWS_PLATFORM:
  25. import colorama
  26. colorama.init(strip=False)
  27. for (name, code) in get_pairs():
  28. globals()[name] = make_color_fn(code)
  29. def rainbow():
  30. cs = ['cyan', 'yellow', 'green', 'magenta', 'red', 'blue',
  31. 'intense_cyan', 'intense_yellow', 'intense_green',
  32. 'intense_magenta', 'intense_red', 'intense_blue']
  33. for c in cs:
  34. yield globals()[c]