Format tabular data in various ways with explicitly defined columns that can each have their own expected types, formatting and highlighting.
- Specify columns with data types / widths, formatting functions, null-value indicators and processing exception indicators.
- Auto-sizing columns when presented with a full table of data.
- Ability to format individual rows for output before all data has been gathered.
- Quick switching of output formats between tabular text, JSON, YAML & delimited fields.
- Value highlighting rules: by ranges, trends, min/max and others.
# pip install vegetable first
from vegetable import Table
t = Table()
t.column("Supplier")
t.column("Cost", type=float)
t.row(["Convenience store", 12.99])
t.row(["Wholesaler", "10.29"])
t.row(["Internet store", 11.56])
t.row(["Dodgy pub geezer", 5.00])
print(t)
$ git clone https://github.com/mousefad/python-vegetable vegetable $ cd vegetable $ python -m venv . $ . bin/activate $ pip install --upgrade pip $ pip install . $ export PYTHONPATH="$PYTHONPATH:$PWD"
To run examples/network_traffic you may also need to pip install click.
Values can be added to a Table() instace directly row-by-row with row(). When __str__() is invoked, the whole table will be formatted and returned. An advantage of this approach is that column widths will be automatically re-sized if needed (for columns where expand=True was used on column creation).
The output format can also be easily switched:
t = Table()
t.column("Name")
t.column("Hobby")
t.row(["'Bob'", "Just having a whale of a time."])
t.row(["Stang, "Monsterism."])
print(t, end="\n\n")
t.formatter = YamlFormat()
print(t)
In applications where we want to print data as it is gathered, we can get string values for the table headers, separators and rows with header_str(), separator_str() mast_head() and row_str(...) functions:
t = Table()
t.column("Item Desc")
t.column("Qty", type=int)
print(t.mast_head())
for desc, num in gather_data():
print(t.row_str([desc, num]))
- Better unit test coverage
- Multi-column sorting