summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2022-10-18 17:45:07 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2022-10-18 17:45:30 +0000
commitbde3b5a9868760190f1cbda3eb4e133d3db9409d (patch)
treeca63644e4f19c084cc0968122f4917d06fe7ff9f
parentReleasing debian version 2.2.1-1. (diff)
downloadcli-helpers-bde3b5a9868760190f1cbda3eb4e133d3db9409d.tar.xz
cli-helpers-bde3b5a9868760190f1cbda3eb4e133d3db9409d.zip
Merging upstream version 2.3.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
-rw-r--r--AUTHORS1
-rw-r--r--CHANGELOG7
-rw-r--r--cli_helpers/__init__.py2
-rw-r--r--cli_helpers/tabular_output/tabulate_adapter.py22
-rw-r--r--docs/source/quickstart.rst14
-rw-r--r--requirements-dev.txt2
-rw-r--r--tests/tabular_output/test_output_formatter.py41
7 files changed, 77 insertions, 12 deletions
diff --git a/AUTHORS b/AUTHORS
index 4bad3dd..40f2b90 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -24,6 +24,7 @@ This project receives help from these awesome contributors:
- Waldir Pimenta
- Mel Dafert
- Andrii Kohut
+- Roland Walker
Thanks
------
diff --git a/CHANGELOG b/CHANGELOG
index 8563af2..3435b46 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,13 @@
Changelog
=========
+Version 2.3.0
+-------------
+
+(released on 2022-10-12)
+
+* don't escape newlines, etc. in ascii tables, and add ascii_escaped table format
+
Version 2.2.1
-------------
diff --git a/cli_helpers/__init__.py b/cli_helpers/__init__.py
index b19ee4b..55e4709 100644
--- a/cli_helpers/__init__.py
+++ b/cli_helpers/__init__.py
@@ -1 +1 @@
-__version__ = "2.2.1"
+__version__ = "2.3.0"
diff --git a/cli_helpers/tabular_output/tabulate_adapter.py b/cli_helpers/tabular_output/tabulate_adapter.py
index a7eabc0..2c557f8 100644
--- a/cli_helpers/tabular_output/tabulate_adapter.py
+++ b/cli_helpers/tabular_output/tabulate_adapter.py
@@ -52,9 +52,25 @@ tabulate._table_formats["ascii"] = tabulate.TableFormat(
with_header_hide=None,
)
+tabulate._table_formats["ascii_escaped"] = tabulate.TableFormat(
+ lineabove=tabulate.Line("+", "-", "+", "+"),
+ linebelowheader=tabulate.Line("+", "-", "+", "+"),
+ linebetweenrows=None,
+ linebelow=tabulate.Line("+", "-", "+", "+"),
+ headerrow=tabulate.DataRow("|", "|", "|"),
+ datarow=tabulate.DataRow("|", "|", "|"),
+ padding=1,
+ with_header_hide=None,
+)
+
# "minimal" is the same as "plain", but without headers
tabulate._table_formats["minimal"] = tabulate._table_formats["plain"]
+tabulate.multiline_formats["psql_unicode"] = "psql_unicode"
+tabulate.multiline_formats["double"] = "double"
+tabulate.multiline_formats["ascii"] = "ascii"
+tabulate.multiline_formats["minimal"] = "minimal"
+
supported_markup_formats = (
"mediawiki",
"html",
@@ -66,6 +82,7 @@ supported_markup_formats = (
)
supported_table_formats = (
"ascii",
+ "ascii_escaped",
"plain",
"simple",
"minimal",
@@ -82,7 +99,10 @@ supported_table_formats = (
supported_formats = supported_markup_formats + supported_table_formats
-default_kwargs = {"ascii": {"numalign": "left"}}
+default_kwargs = {
+ "ascii": {"numalign": "left"},
+ "ascii_escaped": {"numalign": "left"},
+}
headless_formats = ("minimal",)
diff --git a/docs/source/quickstart.rst b/docs/source/quickstart.rst
index 319655d..b304de2 100644
--- a/docs/source/quickstart.rst
+++ b/docs/source/quickstart.rst
@@ -15,7 +15,7 @@ CLI Helpers provides a simple way to display your tabular data (columns/rows) in
>>> data = [[1, 'Asgard', True], [2, 'Camelot', False], [3, 'El Dorado', True]]
>>> headers = ['id', 'city', 'visited']
- >>> print(tabular_output.format_output(data, headers, format_name='simple'))
+ >>> print("\n".join(tabular_output.format_output(iter(data), headers, format_name='simple')))
id city visited
---- --------- ---------
@@ -57,7 +57,7 @@ same data from our first example and put it in the ``fancy_grid`` format::
>>> data = [[1, 'Asgard', True], [2, 'Camelot', False], [3, 'El Dorado', True]]
>>> headers = ['id', 'city', 'visited']
- >>> print(formatter.format_output(data, headers, format_name='fancy_grid'))
+ >>> print("\n".join(formatter.format_output(iter(data), headers, format_name='fancy_grid')))
╒══════╤═══════════╤═══════════╕
│ id │ city │ visited │
╞══════╪═══════════╪═══════════╡
@@ -70,7 +70,7 @@ same data from our first example and put it in the ``fancy_grid`` format::
That was easy! How about CLI Helper's vertical table layout?
- >>> print(formatter.format_output(data, headers, format_name='vertical'))
+ >>> print("\n".join(formatter.format_output(iter(data), headers, format_name='vertical')))
***************************[ 1. row ]***************************
id | 1
city | Asgard
@@ -93,7 +93,7 @@ object, you can specify a default formatter so you don't have to pass the
format name each time you want to format your data::
>>> formatter = TabularOutputFormatter(format_name='plain')
- >>> print(formatter.format_output(data, headers))
+ >>> print("\n".join(formatter.format_output(iter(data), headers)))
id city visited
1 Asgard True
2 Camelot False
@@ -115,13 +115,13 @@ formats, we could::
>>> data = [[1, 1.5], [2, 19.605], [3, 100.0]]
>>> headers = ['id', 'rating']
- >>> print(format_output(data, headers, format_name='simple', disable_numparse=True))
+ >>> print("\n".join(format_output(iter(data), headers, format_name='simple', disable_numparse=True)))
id rating
---- --------
1 1.5
2 19.605
3 100.0
- >>> print(format_output(data, headers, format_name='simple', disable_numparse=False))
+ >>> print("\n".join(format_output(iter(data), headers, format_name='simple', disable_numparse=False)))
id rating
---- --------
1 1.5
@@ -140,7 +140,7 @@ far-fetched example to prove the point::
>>> step = 3
>>> data = [range(n, n + step) for n in range(0, 9, step)]
>>> headers = 'abc'
- >>> print(format_output(data, headers, format_name='simple'))
+ >>> print("\n".join(format_output(iter(data), headers, format_name='simple')))
a b c
--- --- ---
0 1 2
diff --git a/requirements-dev.txt b/requirements-dev.txt
index 7846a4d..de1e52f 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -1,5 +1,5 @@
autopep8==1.3.3
-codecov==2.0.9
+codecov==2.0.16
coverage==4.3.4
black>=20.8b1
Pygments>=2.4.0
diff --git a/tests/tabular_output/test_output_formatter.py b/tests/tabular_output/test_output_formatter.py
index b307c1c..8e1fa92 100644
--- a/tests/tabular_output/test_output_formatter.py
+++ b/tests/tabular_output/test_output_formatter.py
@@ -23,6 +23,41 @@ def test_tabular_output_formatter():
]
expected = dedent(
"""\
+ +-------+---------+
+ | text | numeric |
+ +-------+---------+
+ | abc | 1 |
+ | defg | 11.1 |
+ | hi | 1.1 |
+ | Pablo | 0 |
+ | ß | |
+ +-------+---------+"""
+ )
+
+ print(expected)
+ print(
+ "\n".join(
+ TabularOutputFormatter().format_output(
+ iter(data), headers, format_name="ascii"
+ )
+ )
+ )
+ assert expected == "\n".join(
+ TabularOutputFormatter().format_output(iter(data), headers, format_name="ascii")
+ )
+
+
+def test_tabular_output_escaped():
+ """Test the ascii_escaped output format."""
+ headers = ["text", "numeric"]
+ data = [
+ ["abc", Decimal(1)],
+ ["defg", Decimal("11.1")],
+ ["hi", Decimal("1.1")],
+ ["Pablo\rß\n", 0],
+ ]
+ expected = dedent(
+ """\
+------------+---------+
| text | numeric |
+------------+---------+
@@ -37,12 +72,14 @@ def test_tabular_output_formatter():
print(
"\n".join(
TabularOutputFormatter().format_output(
- iter(data), headers, format_name="ascii"
+ iter(data), headers, format_name="ascii_escaped"
)
)
)
assert expected == "\n".join(
- TabularOutputFormatter().format_output(iter(data), headers, format_name="ascii")
+ TabularOutputFormatter().format_output(
+ iter(data), headers, format_name="ascii_escaped"
+ )
)