##########################################################################
beautifultable
##########################################################################
.. inclusion-marker-badges-start
.. image:: https://badge.fury.io/py/beautifultable.svg
:target: https://badge.fury.io/py/beautifultable
.. image:: https://img.shields.io/pypi/pyversions/beautifultable.svg
:target: https://pypi.python.org/pypi/beautifultable/
.. image:: https://codecov.io/gh/pri22296/beautifultable/branch/master/graphs/badge.svg
:target: https://codecov.io/gh/pri22296/beautifultable/branch/master/
.. image:: https://api.codacy.com/project/badge/Grade/7a76eb35ad4e450eaf00339e98381511
:target: https://www.codacy.com/app/pri22296/beautifultable?utm_source=github.com&utm_medium=referral&utm_content=pri22296/beautifultable&utm_campaign=Badge_Grade
.. image:: https://github.com/pri22296/beautifultable/actions/workflows/build.yml/badge.svg?branch=master
:target: https://github.com/pri22296/beautifultable/actions/workflows/build.yml
.. image:: https://readthedocs.org/projects/beautifultable/badge/?version=latest
:alt: Documentation Status
:target: http://beautifultable.readthedocs.io/en/latest/?badge=latest
.. image:: https://img.shields.io/badge/Donate-PayPal-yellow.svg
:target: https://paypal.me/beautifultable
.. inclusion-marker-badges-end
.. inclusion-marker-introduction-start
Introduction
This Package provides BeautifulTable class for easily printing
tabular data in a visually appealing format to a terminal.
Features included but not limited to:
- Full customization of the look and feel of the table
- Build the Table as you wish, By adding rows, or by columns or even
mixing both these approaches.
- Full support for colors using ANSI sequences or any library of your
choice. It just works.
- Plenty of predefined styles for multiple use cases and option to
create custom ones.
- Support for Unicode characters.
- Supports streaming table when data is slow to retrieve.
.. inclusion-marker-introduction-end
.. inclusion-marker-links-start
Links
-
Documentation <http://beautifultable.readthedocs.io/en/latest/>
_
-
Source <https://github.com/pri22296/beautifultable>
_
-
API Reference <http://beautifultable.readthedocs.io/en/latest/source/beautifultable.html#module-beautifultable>
_
.. inclusion-marker-links-end
.. inclusion-marker-usage-start
Usage
Here is an example of how you can use beautifultable::
>>> from beautifultable import BeautifulTable
>>> table = BeautifulTable()
>>> table.rows.append(["Jacob", 1, "boy"])
>>> table.rows.append(["Isabella", 1, "girl"])
>>> table.rows.append(["Ethan", 2, "boy"])
>>> table.rows.append(["Sophia", 2, "girl"])
>>> table.rows.append(["Michael", 3, "boy"])
>>> table.rows.header = ["S1", "S2", "S3", "S4", "S5"]
>>> table.columns.header = ["name", "rank", "gender"]
>>> print(table)
+----+----------+------+--------+
| | name | rank | gender |
+----+----------+------+--------+
| S1 | Jacob | 1 | boy |
+----+----------+------+--------+
| S2 | Isabella | 1 | girl |
+----+----------+------+--------+
| S3 | Ethan | 2 | boy |
+----+----------+------+--------+
| S4 | Sophia | 2 | girl |
+----+----------+------+--------+
| S5 | Michael | 3 | boy |
+----+----------+------+--------+
You can learn more about beautifultable at this Tutorial <http://beautifultable.readthedocs.io/en/latest/quickstart.html>
_
.. inclusion-marker-usage-end
.. inclusion-marker-install-start
Installation
::
python3 -m pip install beautifultable
.. inclusion-marker-install-end
.. inclusion-marker-changelog-start
Changelog
===========
Development
==========
v1.1.0
- Drop support for Python 3.4, 3.5 and 3.6
- Add official support for python 3.9 and 3.10
- Added
asdict
and aslist
method on the row object. (Thanks to @Agent-Hellboy <https://github.com/Agent-Hellboy>
_) - Added
from_csv
and to_csv
methods to export/import a csv file. (Thanks to @Agent-Hellboy <https://github.com/Agent-Hellboy>
_) - Added
from_df
and to_df
methods to export/import a dataframe. (Thanks to @Agent-Hellboy <https://github.com/Agent-Hellboy>
_)
==========
v1.0.1
- Fixed an issue where appending a column with a header to an empty table left the table instance in
an inconsistent state.
==========
v1.0.0
- Added two new views
rows
and columns
to the BeautifulTable
class. Most of the existing
methods have been deprecated. Methods of the form {}_row
and {}_column
have been moved to
views rows.{}
and columns.{}
(ex. append_row
is now rows.append
). Calling older
deprecated methods will now raise a FutureWarning
. Special methods such as __len__
, __iter__
,
etc. have also been moved to the respective views. For details, refer the
API documentation and the Updated Tutorial - The existing styling attributes have also been deprecated. A new
border
property can be accessed
to control all styling attributes affecting the border. Rest of the attributes can be accessed from
it's respective view. - Added support for row headers. As a result rows can now be accessed by their keys similar
to columns
- Added two new methods
to_csv
and from_csv
to directly export/import to a
csv file. (Thanks to @dinko-pehar <https://github.com/dinko-pehar>
_) - Added
BeautifulTable.rows.filter
method to generate a new table with only certain rows - Added a new
shape
attribute to the BeautifulTable
class which returns a tuple of form (nrow, ncol) - Added new attribute
BeautifulTable.columns.header.alignment
which can be used to have
a seperate header alignment. The default behaviour is to inherit BeautifulTable.columns.alignment
- Updated
BeautifulTable.rows.sort
(earlier BeautifulTable.sort
) method to now
also accept any callables as a key. - Updated behaviour of
BeautifulTable.columns.width
(earlier BeautifulTable.column_widths
).
It no longer overrides user specified widths by default. You can reset it to default
by setting it to "auto" - Deprecated attribute
serialno
and serialno_header
. User can now easily implement
this functionality by using row headers if required - Deprecated methods
get_table_width()
, copy()
and get_string()
. - Deprecated constructor arguments and class attributes named
sign_mode
, numeric_precision
,
max_width
and renamed to sign
, precision
and maxwidth
respectively - Fixed an issue where table was malformed if
blessings
module was used to generate colored strings. - Fixed issues with the existing implementation of
__iter__
, __copy__
and __deepcopy__
which
should now work more reliably. - Fixed an issue where default padding could not be set to 0. (Thanks to
@furlongm <https://github.com/furlongm>
_) - Fixed several memory leak issues by ensuring that all internal objects hold only a weak reference
to the table instance.
- Dropped support for Python 2
==========
v0.8.0
- Dropped support for Python 3.3
- Added support for streaming tables using a generator for cases where data retrieval is slow
- Alignment, padding, width can now be set for all columns using a simplified syntax like
table.column_alignments = beautifultable.ALIGN_LEFT
==========
v0.7.0
- Added 4 new styles, STYLE_BOX, STYLE_BOX_DOUBLED, STYLE_BOX_ROUNDED,
STYLE_GRID.
- Renamed STYLE_RESTRUCTURED_TEXT to STYLE_RST
- wcwidth is now an optional dependency
- Updated the algorithm for calculating width of columns(better division of space among columns)
- Added support for Paragraphs(using
\n
character) - Added finer control for intersection characters using 12 new
attributes
intersect_{top|header|row|bottom}_{left|mid|right}
- Added the ability to also accept bytestrings instead of unicode
- Deprecated attribute
intersection_char
- Deprecated methods
get_top_border()
, get_bottom_border()
, get_header_separator()
,
get_row_separator()
, auto_calculate_width()
- Fixed an issue with WEP_ELLIPSIS and WEP_STRIP when using multibyte characters
- Fixed an issue where table would not be in proper form if
column_width
is too low
==========
v0.6.0
- Added support for handling Multi byte strings
- Added support for colored strings using ANSI escape sequences
- Added constraint where all strings must be unicode
- Fixed an issue where sometimes width was calculated as higher than intended
==========
v0.5.3
- Added support for handing color codes using ANSI escape sequences(experimental)
- Fixed collections ABCs deprecation warning
==========
v0.5.2
- Added new style STYLE_NONE
- Fixed issue regarding improper conversion of non-string floats
==========
v0.5.1
- Added
detect_numerics
boolean for toggling automatic numeric conversion
==========
v0.5.0
- Added new property
serialno_header
- Deprecated methods with misspelled "seperator" in their name.
- Fixed an issue where table was corrupted when
column_count
was too high
==========
v0.4.0
- Added predefined styles for easier customization
- Added reverse argument to
sort()
method - Fixed enum34 dependency for python versions prior to 3.4
==========
v0.3.0
- Added property
serialno
for auto printing serial number - Fixed an issue with
sign_mode
related to str conversion - Fixed bugs related to python version prior to 3.3
- Fixed exception on WEP_ELLIPSIS and token length less than 3
- Fixed printing issues with empty table
==========
v0.2.0
==========
v0.1.3
==========
v0.1.2
- Added new property
default_padding
- Added new method
update_row
- Fixed an issue in
auto_calculate_width()
==========
v0.1.1
.. inclusion-marker-changelog-end
.. inclusion-marker-contribution-start
Contribute
If you have any suggestions or bug reports, Please create a Issue. Pull
Requests are always welcome.
.. inclusion-marker-contribution-end
.. inclusion-marker-license-start
License
This project is licensed under the MIT License - see the LICENSE.txt <https://github.com/pri22296/beautifultable/blob/master/LICENSE.txt>
_ file for details.
.. inclusion-marker-license-end
.. inclusion-marker-donation-start
Donation
Love beautifultable? Consider supporting the development :)
.. image:: https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif
:target: https://paypal.me/beautifultable
.. inclusion-marker-donation-end