From f18c637c042eec4678a79729a0e67da99017c465 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 21 Jan 2022 20:32:51 +0100 Subject: Merging upstream version 2.2.1. Signed-off-by: Daniel Baumann --- AUTHORS | 1 + CHANGELOG | 7 +++++++ cli_helpers/__init__.py | 2 +- cli_helpers/compat.py | 14 ++++++++++++++ cli_helpers/tabular_output/preprocessors.py | 14 +++++++------- cli_helpers/tabular_output/tabulate_adapter.py | 6 +++--- cli_helpers/utils.py | 10 ++++------ tests/tabular_output/test_output_formatter.py | 12 ++++++++++-- tests/tabular_output/test_preprocessors.py | 6 +++--- 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]) -- cgit v1.2.3