diff options
author | Aurelien Campeas <aurelien.campeas@logilab.fr> | 2012-11-13 14:11:33 +0100 |
---|---|---|
committer | Aurelien Campeas <aurelien.campeas@logilab.fr> | 2012-11-13 14:11:33 +0100 |
commit | 550ba6db7a6c7b72dde28b533838fb3ab4cd19f8 (patch) | |
tree | 53b11d9ab6d28d3d11b646fa63d7b6bccb4023bf | |
parent | 9fc4653fc67300e02b0d0a0ecd2fb4fe647780ab (diff) | |
download | logilab-common-550ba6db7a6c7b72dde28b533838fb3ab4cd19f8.tar.gz |
[loggin ext] provide colored output under windows if colorama is available (closes #107436)
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | __pkginfo__.py | 6 | ||||
-rw-r--r-- | logging_ext.py | 15 |
3 files changed, 21 insertions, 3 deletions
@@ -1,6 +1,9 @@ ChangeLog for logilab.common ============================ +-- + * loggin_ext: on windows, use colorama to display colored logs, if available (closes #107436) + 2012-11-14 -- 0.58.3 * date: fix ustrftime() impl. for python3 (closes #82161, patch by Arfrever Frehtes Taifersar Arahesis) and encoding detection for python2 (closes diff --git a/__pkginfo__.py b/__pkginfo__.py index 5f47663..78b7757 100644 --- a/__pkginfo__.py +++ b/__pkginfo__.py @@ -18,6 +18,7 @@ """logilab.common packaging information""" __docformat__ = "restructuredtext en" import sys +import os distname = 'logilab-common' modname = 'common' @@ -40,8 +41,11 @@ from os.path import join scripts = [join('bin', 'pytest')] include_dirs = [join('test', 'data')] +install_requires = [] if sys.version_info < (2, 7): - install_requires = ['unittest2 >= 0.5.1'] + install_requires.append('unittest2 >= 0.5.1') +if os.name == 'nt': + install_requires.append('colorama') classifiers = ["Topic :: Utilities", "Programming Language :: Python", diff --git a/logging_ext.py b/logging_ext.py index 1b7a1e6..e4d2490 100644 --- a/logging_ext.py +++ b/logging_ext.py @@ -132,9 +132,20 @@ def get_threshold(debug=False, logthreshold=None): logthreshold)) return logthreshold -def get_formatter(logformat=LOG_FORMAT, logdateformat=LOG_DATE_FORMAT): +def _colorable_terminal(): isatty = hasattr(sys.__stdout__, 'isatty') and sys.__stdout__.isatty() - if isatty and sys.platform != 'win32': + if not isatty: + return False + if os.name == 'nt': + try: + from colorama import init as init_win32_colors + except ImportError: + return False + init_win32_colors() + return True + +def get_formatter(logformat=LOG_FORMAT, logdateformat=LOG_DATE_FORMAT): + if _colorable_terminal(): fmt = ColorFormatter(logformat, logdateformat) def col_fact(record): if 'XXX' in record.message: |