You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ariatosca.apache.org by em...@apache.org on 2017/07/10 12:23:04 UTC

incubator-ariatosca git commit: ARIA-103 Remove dependency on Clint

Repository: incubator-ariatosca
Updated Branches:
  refs/heads/ARIA-103-remove-clint-dependency [created] d81d734da


ARIA-103 Remove dependency on Clint

We no longer require this third-party library, instead the utils/console
module uses the existing cli/color module.

This commit also fixes the cli/color module to properly support Unicode,
and also properly deinitialize Colorama in Windows.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/d81d734d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/d81d734d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/d81d734d

Branch: refs/heads/ARIA-103-remove-clint-dependency
Commit: d81d734da451d8ffa82c61830947589e378b76e5
Parents: a93a5df
Author: Tal Liron <ta...@gmail.com>
Authored: Mon Jul 10 12:28:23 2017 +0300
Committer: Tal Liron <ta...@gmail.com>
Committed: Mon Jul 10 15:22:49 2017 +0300

----------------------------------------------------------------------
 aria/cli/color.py     | 21 ++++++++++++------
 aria/utils/console.py | 53 +++++++++++++++++++++++++++++++---------------
 requirements.in       |  1 -
 requirements.txt      |  4 +---
 4 files changed, 52 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/d81d734d/aria/cli/color.py
----------------------------------------------------------------------
diff --git a/aria/cli/color.py b/aria/cli/color.py
index 03381ba..80c5604 100644
--- a/aria/cli/color.py
+++ b/aria/cli/color.py
@@ -18,11 +18,20 @@ Terminal colorization utilities.
 """
 
 from StringIO import StringIO
+import atexit
 import re
 
 import colorama
 
+from ..utils.formatting import safe_str
+
+
+def _restore_terminal():
+    colorama.deinit()
+
+
 colorama.init()
+atexit.register(_restore_terminal)
 
 
 class StringStylizer(object):
@@ -33,20 +42,20 @@ class StringStylizer(object):
     def __repr__(self):
         if self._color_spec:
             return '{schema}{str}{reset}'.format(
-                schema=self._color_spec, str=str(self._str), reset=Colors.Style.RESET_ALL)
+                schema=self._color_spec, str=safe_str(self._str), reset=Colors.Style.RESET_ALL)
         return self._str
 
     def __add__(self, other):
-        return str(self) + other
+        return safe_str(self) + other
 
     def __radd__(self, other):
-        return other + str(self)
+        return other + safe_str(self)
 
     def color(self, color_spec):
         self._color_spec = color_spec
 
     def replace(self, old, new, **kwargs):
-        self._str = self._str.replace(str(old), str(new), **kwargs)
+        self._str = self._str.replace(safe_str(old), safe_str(new), **kwargs)
 
     def format(self, *args, **kwargs):
         self._str = self._str.format(*args, **kwargs)
@@ -79,8 +88,8 @@ class Colors(object):
 class ColorSpec(object):
     def __init__(self, fore=None, back=None, style=None):
         """
-        It is possible to provide fore, back and style arguments. each could be either
-        the color is lower case letter, or the actual color from Colorama.
+        It is possible to provide fore, back and style arguments. Each could be either the color as
+        a lowercase letter, or the full color name for Colorama.
         """
         self._kwargs = dict(fore=fore, back=back, style=style)
         self._str = StringIO()

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/d81d734d/aria/utils/console.py
----------------------------------------------------------------------
diff --git a/aria/utils/console.py b/aria/utils/console.py
index 642cbb1..2f6f622 100644
--- a/aria/utils/console.py
+++ b/aria/utils/console.py
@@ -17,52 +17,71 @@
 Abstraction API above terminal color libraries.
 """
 
-from clint.textui.core import STDOUT
-from clint.textui import puts as _puts
-from clint.textui.colored import ColoredString as _ColoredString
-from clint.textui import indent  # pylint: disable=unused-import
+import os
+import sys
+
+from contextlib import contextmanager
 
 from .formatting import safe_str
+from ..cli import color
+
+
+_indent_string = ''
 
 
-class ColoredString(_ColoredString):
-    def __init__(self, color, str_, always_color=False, bold=False):
-        super(ColoredString, self).__init__(color, safe_str(str_), always_color, bold)
+def puts(string='', newline=True, stream=sys.stdout):
+    stream.write(_indent_string)
+    stream.write(safe_str(string))
+    if newline:
+        stream.write(os.linesep)
 
 
-def puts(string='', newline=True, stream=STDOUT):
-    _puts(safe_str(string), newline, stream)
+@contextmanager
+def indent(size=4):
+    global _indent_string
+    original_indent_string = _indent_string
+    try:
+        _indent_string += ' ' * size
+        yield
+    finally:
+        _indent_string = original_indent_string
 
 
 class Colored(object):
     @staticmethod
     def black(string, always=False, bold=False):
-        return ColoredString('BLACK', string, always_color=always, bold=bold)
+        return Colored._color(string, color.Colors.Fore.BLACK, bold)
 
     @staticmethod
     def red(string, always=False, bold=False):
-        return ColoredString('RED', string, always_color=always, bold=bold)
+        return Colored._color(string, color.Colors.Fore.RED, bold)
 
     @staticmethod
     def green(string, always=False, bold=False):
-        return ColoredString('GREEN', string, always_color=always, bold=bold)
+        return Colored._color(string, color.Colors.Fore.GREEN, bold)
 
     @staticmethod
     def yellow(string, always=False, bold=False):
-        return ColoredString('YELLOW', string, always_color=always, bold=bold)
+        return Colored._color(string, color.Colors.Fore.YELLOW, bold)
 
     @staticmethod
     def blue(string, always=False, bold=False):
-        return ColoredString('BLUE', string, always_color=always, bold=bold)
+        return Colored._color(string, color.Colors.Fore.BLUE, bold)
 
     @staticmethod
     def magenta(string, always=False, bold=False):
-        return ColoredString('MAGENTA', string, always_color=always, bold=bold)
+        return Colored._color(string, color.Colors.Fore.MAGENTA, bold)
 
     @staticmethod
     def cyan(string, always=False, bold=False):
-        return ColoredString('CYAN', string, always_color=always, bold=bold)
+        return Colored._color(string, color.Colors.Fore.CYAN, bold)
 
     @staticmethod
     def white(string, always=False, bold=False):
-        return ColoredString('WHITE', string, always_color=always, bold=bold)
+        return Colored._color(string, color.Colors.Fore.WHITE, bold)
+
+    @staticmethod
+    def _color(string, fore, bold):
+        return color.StringStylizer(string, color.ColorSpec(
+            fore=fore,
+            style=color.Colors.Style.BRIGHT if bold else color.Colors.Style.NORMAL))

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/d81d734d/requirements.in
----------------------------------------------------------------------
diff --git a/requirements.in b/requirements.in
index 723ed51..a864335 100644
--- a/requirements.in
+++ b/requirements.in
@@ -22,7 +22,6 @@ ruamel.yaml>=0.11.12, <0.12.0  # version 0.12.0 dropped support of python 2.6
 Jinja2>=2.8, <2.9
 shortuuid>=0.5, <0.6
 CacheControl[filecache]>=0.11.0, <0.13
-clint>=0.5.0, <0.6
 SQLAlchemy>=1.1.0, <1.2  # version 1.2 dropped support of python 2.6
 wagon==0.6.0
 bottle>=0.12.0, <0.13

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/d81d734d/requirements.txt
----------------------------------------------------------------------
diff --git a/requirements.txt b/requirements.txt
index 7ee1008..ea97922 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,17 +2,15 @@
 # This file is autogenerated by pip-compile
 # To update, run:
 #
-#    pip-compile --output-file requirements.txt requirements.in
+#    pip-compile --output-file ./requirements.txt ./requirements.in
 #
 appdirs==1.4.3            # via setuptools
-args==0.1.0               # via clint
 backports.shutil_get_terminal_size==1.0.0
 blinker==1.4
 bottle==0.12.13
 cachecontrol[filecache]==0.12.1
 click==6.7
 click_didyoumean==0.0.3
-clint==0.5.1
 colorama==0.3.9
 decorator==4.0.11         # via networkx
 importlib==1.0.4 ; python_version < "2.7"