diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2021-09-06 04:12:52 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2021-09-06 04:12:52 +0000 |
commit | f42dcf1d6578df945fb52fb24703e88de54ad45b (patch) | |
tree | efd58347c05908c103cfdf8a2b3321c158a7e360 /cli_helpers/tabular_output/preprocessors.py | |
parent | Adding upstream version 2.1.0. (diff) | |
download | cli-helpers-f42dcf1d6578df945fb52fb24703e88de54ad45b.tar.xz cli-helpers-f42dcf1d6578df945fb52fb24703e88de54ad45b.zip |
Adding upstream version 2.2.0.upstream/2.2.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'cli_helpers/tabular_output/preprocessors.py')
-rw-r--r-- | cli_helpers/tabular_output/preprocessors.py | 111 |
1 files changed, 82 insertions, 29 deletions
diff --git a/cli_helpers/tabular_output/preprocessors.py b/cli_helpers/tabular_output/preprocessors.py index d6d09e0..5d91126 100644 --- a/cli_helpers/tabular_output/preprocessors.py +++ b/cli_helpers/tabular_output/preprocessors.py @@ -7,7 +7,9 @@ from cli_helpers import utils from cli_helpers.compat import text_type, int_types, float_types, HAS_PYGMENTS -def truncate_string(data, headers, max_field_width=None, skip_multiline_string=True, **_): +def truncate_string( + data, headers, max_field_width=None, skip_multiline_string=True, **_ +): """Truncate very long strings. Only needed for tabular representation, because trying to tabulate very long data is problematic in terms of performance, and does not make any @@ -19,8 +21,19 @@ def truncate_string(data, headers, max_field_width=None, skip_multiline_string=T :return: The processed data and headers. :rtype: tuple """ - return (([utils.truncate_string(v, max_field_width, skip_multiline_string) for v in row] for row in data), - [utils.truncate_string(h, max_field_width, skip_multiline_string) for h in headers]) + return ( + ( + [ + utils.truncate_string(v, max_field_width, skip_multiline_string) + for v in row + ] + for row in data + ), + [ + utils.truncate_string(h, max_field_width, skip_multiline_string) + for h in headers + ], + ) def convert_to_string(data, headers, **_): @@ -35,13 +48,20 @@ def convert_to_string(data, headers, **_): :rtype: tuple """ - return (([utils.to_string(v) for v in row] for row in data), - [utils.to_string(h) for h in headers]) + return ( + ([utils.to_string(v) for v in row] for row in data), + [utils.to_string(h) for h in headers], + ) -def override_missing_value(data, headers, style=None, - missing_value_token="Token.Output.Null", - missing_value='', **_): +def override_missing_value( + data, + headers, + style=None, + missing_value_token="Token.Output.Null", + missing_value="", + **_ +): """Override missing values in the *data* with *missing_value*. A missing value is any value that is :data:`None`. @@ -55,12 +75,15 @@ def override_missing_value(data, headers, style=None, :rtype: tuple """ + def fields(): for row in data: processed = [] for field in row: if field is None and style and HAS_PYGMENTS: - styled = utils.style_field(missing_value_token, missing_value, style) + styled = utils.style_field( + missing_value_token, missing_value, style + ) processed.append(styled) elif field is None: processed.append(missing_value) @@ -71,7 +94,7 @@ def override_missing_value(data, headers, style=None, return (fields(), headers) -def override_tab_value(data, headers, new_value=' ', **_): +def override_tab_value(data, headers, new_value=" ", **_): """Override tab values in the *data* with *new_value*. :param iterable data: An :term:`iterable` (e.g. list) of rows. @@ -81,9 +104,13 @@ def override_tab_value(data, headers, new_value=' ', **_): :rtype: tuple """ - return (([v.replace('\t', new_value) if isinstance(v, text_type) else v - for v in row] for row in data), - headers) + return ( + ( + [v.replace("\t", new_value) if isinstance(v, text_type) else v for v in row] + for row in data + ), + headers, + ) def escape_newlines(data, headers, **_): @@ -121,8 +148,10 @@ def bytes_to_string(data, headers, **_): :rtype: tuple """ - return (([utils.bytes_to_string(v) for v in row] for row in data), - [utils.bytes_to_string(h) for h in headers]) + return ( + ([utils.bytes_to_string(v) for v in row] for row in data), + [utils.bytes_to_string(h) for h in headers], + ) def align_decimals(data, headers, column_types=(), **_): @@ -204,17 +233,26 @@ def quote_whitespaces(data, headers, quotestyle="'", **_): for row in data: result = [] for i, v in enumerate(row): - quotation = quotestyle if quote[i] else '' - result.append('{quotestyle}{value}{quotestyle}'.format( - quotestyle=quotation, value=v)) + quotation = quotestyle if quote[i] else "" + result.append( + "{quotestyle}{value}{quotestyle}".format( + quotestyle=quotation, value=v + ) + ) yield result + return results(data), headers -def style_output(data, headers, style=None, - header_token='Token.Output.Header', - odd_row_token='Token.Output.OddRow', - even_row_token='Token.Output.EvenRow', **_): +def style_output( + data, + headers, + style=None, + 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) .. NOTE:: @@ -253,19 +291,32 @@ def style_output(data, headers, style=None, """ from cli_helpers.utils import filter_style_table - relevant_styles = filter_style_table(style, header_token, odd_row_token, even_row_token) + + relevant_styles = filter_style_table( + style, header_token, odd_row_token, even_row_token + ) if style and HAS_PYGMENTS: if relevant_styles.get(header_token): - headers = [utils.style_field(header_token, header, style) for header in headers] + headers = [ + utils.style_field(header_token, header, style) for header in headers + ] if relevant_styles.get(odd_row_token) or relevant_styles.get(even_row_token): - data = ([utils.style_field(odd_row_token if i % 2 else even_row_token, f, style) - for f in r] for i, r in enumerate(data, 1)) + data = ( + [ + utils.style_field( + odd_row_token if i % 2 else even_row_token, f, style + ) + for f in r + ] + for i, r in enumerate(data, 1) + ) return iter(data), headers -def format_numbers(data, headers, column_types=(), integer_format=None, - float_format=None, **_): +def format_numbers( + data, headers, column_types=(), integer_format=None, float_format=None, **_ +): """Format numbers according to a format specification. This uses Python's format specification to format numbers of the following @@ -296,5 +347,7 @@ def format_numbers(data, headers, column_types=(), integer_format=None, return format(field, float_format) return field - data = ([_format_number(v, column_types[i]) for i, v in enumerate(row)] for row in data) + data = ( + [_format_number(v, column_types[i]) for i, v in enumerate(row)] for row in data + ) return data, headers |