summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AUTHORS1
-rw-r--r--CHANGELOG7
-rw-r--r--cli_helpers/__init__.py2
-rw-r--r--cli_helpers/compat.py14
-rw-r--r--cli_helpers/tabular_output/preprocessors.py14
-rw-r--r--cli_helpers/tabular_output/tabulate_adapter.py6
-rw-r--r--cli_helpers/utils.py10
-rw-r--r--tests/tabular_output/test_output_formatter.py12
-rw-r--r--tests/tabular_output/test_preprocessors.py6
9 files changed, 50 insertions, 22 deletions
diff --git a/AUTHORS b/AUTHORS
index 25ce900..4bad3dd 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -23,6 +23,7 @@ This project receives help from these awesome contributors:
- Michał Górny
- Waldir Pimenta
- Mel Dafert
+- Andrii Kohut
Thanks
------
diff --git a/CHANGELOG b/CHANGELOG
index 1c0002e..8563af2 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,13 @@
Changelog
=========
+Version 2.2.1
+-------------
+
+(released on 2022-01-17)
+
+* Fix pygments tokens passed as strings
+
Version 2.2.0
-------------
diff --git a/cli_helpers/__init__.py b/cli_helpers/__init__.py
index 8a124bf..b19ee4b 100644
--- a/cli_helpers/__init__.py
+++ b/cli_helpers/__init__.py
@@ -1 +1 @@
-__version__ = "2.2.0"
+__version__ = "2.2.1"
diff --git a/cli_helpers/compat.py b/cli_helpers/compat.py
index c938851..422403c 100644
--- a/cli_helpers/compat.py
+++ b/cli_helpers/compat.py
@@ -2,6 +2,7 @@
"""OS and Python compatibility support."""
from decimal import Decimal
+from types import SimpleNamespace
import sys
PY2 = sys.version_info[0] == 2
@@ -34,9 +35,22 @@ else:
HAS_PYGMENTS = True
try:
+ from pygments.token import Token
from pygments.formatters.terminal256 import Terminal256Formatter
except ImportError:
HAS_PYGMENTS = False
Terminal256Formatter = None
+ Token = SimpleNamespace()
+ Token.Output = SimpleNamespace()
+ Token.Output.Header = None
+ Token.Output.OddRow = None
+ Token.Output.EvenRow = None
+ Token.Output.Null = None
+ Token.Output.TableSeparator = None
+ Token.Results = SimpleNamespace()
+ Token.Results.Header = None
+ Token.Results.OddRow = None
+ Token.Results.EvenRow = None
+
float_types = (float, Decimal)
diff --git a/cli_helpers/tabular_output/preprocessors.py b/cli_helpers/tabular_output/preprocessors.py
index 5d91126..8342d67 100644
--- a/cli_helpers/tabular_output/preprocessors.py
+++ b/cli_helpers/tabular_output/preprocessors.py
@@ -4,7 +4,7 @@
import string
from cli_helpers import utils
-from cli_helpers.compat import text_type, int_types, float_types, HAS_PYGMENTS
+from cli_helpers.compat import text_type, int_types, float_types, HAS_PYGMENTS, Token
def truncate_string(
@@ -58,9 +58,9 @@ def override_missing_value(
data,
headers,
style=None,
- missing_value_token="Token.Output.Null",
+ missing_value_token=Token.Output.Null,
missing_value="",
- **_
+ **_,
):
"""Override missing values in the *data* with *missing_value*.
@@ -248,10 +248,10 @@ def style_output(
data,
headers,
style=None,
- header_token="Token.Output.Header",
- odd_row_token="Token.Output.OddRow",
- even_row_token="Token.Output.EvenRow",
- **_
+ header_token=Token.Output.Header,
+ odd_row_token=Token.Output.OddRow,
+ even_row_token=Token.Output.EvenRow,
+ **_,
):
"""Style the *data* and *headers* (e.g. bold, italic, and colors)
diff --git a/cli_helpers/tabular_output/tabulate_adapter.py b/cli_helpers/tabular_output/tabulate_adapter.py
index 92e6f1d..a7eabc0 100644
--- a/cli_helpers/tabular_output/tabulate_adapter.py
+++ b/cli_helpers/tabular_output/tabulate_adapter.py
@@ -4,7 +4,7 @@
from __future__ import unicode_literals
from cli_helpers.utils import filter_dict_by_key
-from cli_helpers.compat import Terminal256Formatter, StringIO
+from cli_helpers.compat import Terminal256Formatter, Token, StringIO
from .preprocessors import (
convert_to_string,
truncate_string,
@@ -105,8 +105,8 @@ def style_output_table(format_name=""):
data,
headers,
style=None,
- table_separator_token="Token.Output.TableSeparator",
- **_
+ table_separator_token=Token.Output.TableSeparator,
+ **_,
):
"""Style the *table* a(e.g. bold, italic, and colors)
diff --git a/cli_helpers/utils.py b/cli_helpers/utils.py
index 3f09cb5..053bdea 100644
--- a/cli_helpers/utils.py
+++ b/cli_helpers/utils.py
@@ -104,13 +104,11 @@ def filter_style_table(style: "StyleMeta", *relevant_styles: str) -> Dict:
"""
get a dictionary of styles for given tokens. Typical usage:
- filter_style_table(style, 'Token.Output.EvenRow', 'Token.Output.OddRow') == {
- 'Token.Output.EvenRow': "",
- 'Token.Output.OddRow': "",
+ filter_style_table(style, Token.Output.EvenRow, Token.Output.OddRow) == {
+ Token.Output.EvenRow: "",
+ Token.Output.OddRow: "",
}
"""
- _styles_iter = (
- (str(key), val) for key, val in getattr(style, "styles", {}).items()
- )
+ _styles_iter = ((key, val) for key, val in getattr(style, "styles", {}).items())
_relevant_styles_iter = filter(lambda tpl: tpl[0] in relevant_styles, _styles_iter)
return {key: val for key, val in _relevant_styles_iter}
diff --git a/tests/tabular_output/test_output_formatter.py b/tests/tabular_output/test_output_formatter.py
index d064427..b307c1c 100644
--- a/tests/tabular_output/test_output_formatter.py
+++ b/tests/tabular_output/test_output_formatter.py
@@ -214,13 +214,21 @@ def test_enforce_iterable():
assert False, "{0} doesn't return iterable".format(format_name)
-def test_all_text_type():
+@pytest.mark.parametrize(
+ "extra_kwargs",
+ [
+ {},
+ {"style": "default"},
+ {"style": "colorful"},
+ ],
+)
+def test_all_text_type(extra_kwargs):
"""Test the TabularOutputFormatter class."""
data = [[1, "", None, Decimal(2)]]
headers = ["col1", "col2", "col3", "col4"]
output_formatter = TabularOutputFormatter()
for format_name in output_formatter.supported_formats:
for row in output_formatter.format_output(
- iter(data), headers, format_name=format_name
+ iter(data), headers, format_name=format_name, **extra_kwargs
):
assert isinstance(row, text_type), "not unicode for {}".format(format_name)
diff --git a/tests/tabular_output/test_preprocessors.py b/tests/tabular_output/test_preprocessors.py
index efc1b54..e428bfa 100644
--- a/tests/tabular_output/test_preprocessors.py
+++ b/tests/tabular_output/test_preprocessors.py
@@ -250,9 +250,9 @@ def test_style_output_custom_tokens():
data,
headers,
style=CliStyle,
- header_token="Token.Results.Headers",
- odd_row_token="Token.Results.OddRows",
- even_row_token="Token.Results.EvenRows",
+ header_token=Token.Results.Headers,
+ odd_row_token=Token.Results.OddRows,
+ even_row_token=Token.Results.EvenRows,
)
assert (expected_data, expected_headers) == (list(output[0]), output[1])