1
0
Fork 0

Merging upstream version 2.2.1.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-07 00:49:55 +01:00
parent 4db980c3c4
commit 04b7f07412
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
9 changed files with 50 additions and 22 deletions

View file

@ -23,6 +23,7 @@ This project receives help from these awesome contributors:
- Michał Górny
- Waldir Pimenta
- Mel Dafert
- Andrii Kohut
Thanks
------

View file

@ -1,6 +1,13 @@
Changelog
=========
Version 2.2.1
-------------
(released on 2022-01-17)
* Fix pygments tokens passed as strings
Version 2.2.0
-------------

View file

@ -1 +1 @@
__version__ = "2.2.0"
__version__ = "2.2.1"

View file

@ -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)

View file

@ -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)

View file

@ -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)

View file

@ -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}

View file

@ -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)

View file

@ -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])