diff options
Diffstat (limited to 'jython-tosca-parser/src/main/resources/Lib/site-packages/pip/log.py')
-rw-r--r-- | jython-tosca-parser/src/main/resources/Lib/site-packages/pip/log.py | 283 |
1 files changed, 0 insertions, 283 deletions
diff --git a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/log.py b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/log.py deleted file mode 100644 index 5a5fd9c..0000000 --- a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/log.py +++ /dev/null @@ -1,283 +0,0 @@ -"""Logging -""" - -import sys -import os -import logging - -from pip._vendor import colorama, pkg_resources - - -def _color_wrap(*colors): - def wrapped(inp): - return "".join(list(colors) + [inp, colorama.Style.RESET_ALL]) - return wrapped - - -def should_color(consumer, environ, std=(sys.stdout, sys.stderr)): - real_consumer = ( - consumer if not isinstance(consumer, colorama.AnsiToWin32) - else consumer.wrapped - ) - - # If consumer isn't stdout or stderr we shouldn't colorize it - if real_consumer not in std: - return False - - # If consumer is a tty we should color it - if hasattr(real_consumer, "isatty") and real_consumer.isatty(): - return True - - # If we have an ASNI term we should color it - if environ.get("TERM") == "ANSI": - return True - - # If anything else we should not color it - return False - - -def should_warn(current_version, removal_version): - # Our Significant digits on versions is 2, so remove everything but the - # first two places. - current_version = ".".join(current_version.split(".")[:2]) - removal_version = ".".join(removal_version.split(".")[:2]) - - # Our warning threshold is one minor version before removal, so we - # decrement the minor version by one - major, minor = removal_version.split(".") - minor = str(int(minor) - 1) - warn_version = ".".join([major, minor]) - - # Test if our current_version should be a warn - return (pkg_resources.parse_version(current_version) - < pkg_resources.parse_version(warn_version)) - - -class Logger(object): - """ - Logging object for use in command-line script. Allows ranges of - levels, to avoid some redundancy of displayed information. - """ - VERBOSE_DEBUG = logging.DEBUG - 1 - DEBUG = logging.DEBUG - INFO = logging.INFO - NOTIFY = (logging.INFO + logging.WARN) / 2 - WARN = WARNING = logging.WARN - ERROR = logging.ERROR - FATAL = logging.FATAL - - LEVELS = [VERBOSE_DEBUG, DEBUG, INFO, NOTIFY, WARN, ERROR, FATAL] - - COLORS = { - WARN: _color_wrap(colorama.Fore.YELLOW), - ERROR: _color_wrap(colorama.Fore.RED), - FATAL: _color_wrap(colorama.Fore.RED), - } - - def __init__(self): - self.consumers = [] - self.indent = 0 - self.explicit_levels = False - self.in_progress = None - self.in_progress_hanging = False - - def add_consumers(self, *consumers): - if sys.platform.startswith("win"): - for level, consumer in consumers: - if hasattr(consumer, "write"): - self.consumers.append( - (level, colorama.AnsiToWin32(consumer)), - ) - else: - self.consumers.append((level, consumer)) - else: - self.consumers.extend(consumers) - - def debug(self, msg, *args, **kw): - self.log(self.DEBUG, msg, *args, **kw) - - def info(self, msg, *args, **kw): - self.log(self.INFO, msg, *args, **kw) - - def notify(self, msg, *args, **kw): - self.log(self.NOTIFY, msg, *args, **kw) - - def warn(self, msg, *args, **kw): - self.log(self.WARN, msg, *args, **kw) - - def error(self, msg, *args, **kw): - self.log(self.ERROR, msg, *args, **kw) - - def fatal(self, msg, *args, **kw): - self.log(self.FATAL, msg, *args, **kw) - - def deprecated(self, removal_version, msg, *args, **kwargs): - """ - Logs deprecation message which is log level WARN if the - ``removal_version`` is > 1 minor release away and log level ERROR - otherwise. - - removal_version should be the version that the deprecated feature is - expected to be removed in, so something that will not exist in - version 1.7, but will in 1.6 would have a removal_version of 1.7. - """ - from pip import __version__ - - if should_warn(__version__, removal_version): - self.warn(msg, *args, **kwargs) - else: - self.error(msg, *args, **kwargs) - - def log(self, level, msg, *args, **kw): - if args: - if kw: - raise TypeError( - "You may give positional or keyword arguments, not both") - args = args or kw - - # render - if args: - rendered = msg % args - else: - rendered = msg - rendered = ' ' * self.indent + rendered - if self.explicit_levels: - # FIXME: should this be a name, not a level number? - rendered = '%02i %s' % (level, rendered) - - for consumer_level, consumer in self.consumers: - if self.level_matches(level, consumer_level): - if (self.in_progress_hanging - and consumer in (sys.stdout, sys.stderr)): - self.in_progress_hanging = False - sys.stdout.write('\n') - sys.stdout.flush() - if hasattr(consumer, 'write'): - write_content = rendered + '\n' - if should_color(consumer, os.environ): - # We are printing to stdout or stderr and it supports - # colors so render our text colored - colorizer = self.COLORS.get(level, lambda x: x) - write_content = colorizer(write_content) - - consumer.write(write_content) - if hasattr(consumer, 'flush'): - consumer.flush() - else: - consumer(rendered) - - def _show_progress(self): - """Should we display download progress?""" - return (self.stdout_level_matches(self.NOTIFY) and sys.stdout.isatty()) - - def start_progress(self, msg): - assert not self.in_progress, ( - "Tried to start_progress(%r) while in_progress %r" - % (msg, self.in_progress)) - if self._show_progress(): - sys.stdout.write(' ' * self.indent + msg) - sys.stdout.flush() - self.in_progress_hanging = True - else: - self.in_progress_hanging = False - self.in_progress = msg - self.last_message = None - - def end_progress(self, msg='done.'): - assert self.in_progress, ( - "Tried to end_progress without start_progress") - if self._show_progress(): - if not self.in_progress_hanging: - # Some message has been printed out since start_progress - sys.stdout.write('...' + self.in_progress + msg + '\n') - sys.stdout.flush() - else: - # These erase any messages shown with show_progress - # (besides .'s) - logger.show_progress('') - logger.show_progress('') - sys.stdout.write(msg + '\n') - sys.stdout.flush() - self.in_progress = None - self.in_progress_hanging = False - - def show_progress(self, message=None): - """If we are in a progress scope, and no log messages have been - shown, write out another '.'""" - if self.in_progress_hanging: - if message is None: - sys.stdout.write('.') - sys.stdout.flush() - else: - if self.last_message: - padding = ' ' * max( - 0, - len(self.last_message) - len(message) - ) - else: - padding = '' - sys.stdout.write( - '\r%s%s%s%s' % - (' ' * self.indent, self.in_progress, message, padding) - ) - sys.stdout.flush() - self.last_message = message - - def stdout_level_matches(self, level): - """Returns true if a message at this level will go to stdout""" - return self.level_matches(level, self._stdout_level()) - - def _stdout_level(self): - """Returns the level that stdout runs at""" - for level, consumer in self.consumers: - if consumer is sys.stdout: - return level - return self.FATAL - - def level_matches(self, level, consumer_level): - """ - >>> l = Logger() - >>> l.level_matches(3, 4) - False - >>> l.level_matches(3, 2) - True - >>> l.level_matches(slice(None, 3), 3) - False - >>> l.level_matches(slice(None, 3), 2) - True - >>> l.level_matches(slice(1, 3), 1) - True - >>> l.level_matches(slice(2, 3), 1) - False - """ - if isinstance(level, slice): - start, stop = level.start, level.stop - if start is not None and start > consumer_level: - return False - if stop is not None or stop <= consumer_level: - return False - return True - else: - return level >= consumer_level - - @classmethod - def level_for_integer(cls, level): - levels = cls.LEVELS - if level < 0: - return levels[0] - if level >= len(levels): - return levels[-1] - return levels[level] - - def move_stdout_to_stderr(self): - to_remove = [] - to_add = [] - for consumer_level, consumer in self.consumers: - if consumer == sys.stdout: - to_remove.append((consumer_level, consumer)) - to_add.append((consumer_level, sys.stderr)) - for item in to_remove: - self.consumers.remove(item) - self.consumers.extend(to_add) - -logger = Logger() |