%PDF- %PDF-
Direktori : /lib/python3.6/site-packages/compose/cli/ |
Current File : //lib/python3.6/site-packages/compose/cli/formatter.py |
from __future__ import absolute_import from __future__ import unicode_literals import logging import os import six import texttable from compose.cli import colors def get_tty_width(): tty_size = os.popen('stty size 2> /dev/null', 'r').read().split() if len(tty_size) != 2: return 0 _, width = tty_size return int(width) class Formatter(object): """Format tabular data for printing.""" def table(self, headers, rows): table = texttable.Texttable(max_width=get_tty_width()) table.set_cols_dtype(['t' for h in headers]) table.add_rows([headers] + rows) table.set_deco(table.HEADER) table.set_chars(['-', '|', '+', '-']) return table.draw() class ConsoleWarningFormatter(logging.Formatter): """A logging.Formatter which prints WARNING and ERROR messages with a prefix of the log level colored appropriate for the log level. """ def get_level_message(self, record): separator = ': ' if record.levelno == logging.WARNING: return colors.yellow(record.levelname) + separator if record.levelno == logging.ERROR: return colors.red(record.levelname) + separator return '' def format(self, record): if isinstance(record.msg, six.binary_type): record.msg = record.msg.decode('utf-8') message = super(ConsoleWarningFormatter, self).format(record) return '{0}{1}'.format(self.get_level_message(record), message)