python-tabulate icon indicating copy to clipboard operation
python-tabulate copied to clipboard

When using maxcolwidths in a column that contains None values, tabulate crashes with "NoneType takes no arguments"

Open gschizas opened this issue 1 year ago • 7 comments

Sample script:

from tabulate import tabulate
table = [["spam", 41.9999], ["eggs", "451.0"], ["sausages", None]]
print(tabulate(table, headers='keys', tablefmt='plain'))
print(tabulate(table, headers='keys', tablefmt='plain', maxcolwidths=40))

The last line leads to this exception:

Traceback (most recent call last):
  File "test.py", line 7, in <module>
    print(tabulate(table, headers='keys', tablefmt='plain', maxcolwidths=40))
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "tabulate/__init__.py", line 2061, in tabulate
    list_of_lists = _wrap_text_to_colwidths(
                    ^^^^^^^^^^^^^^^^^^^^^^^^
  File "tabulate/__init__.py", line 1516, in _wrap_text_to_colwidths
    str(cell) if _isnumber(cell) else _type(cell, numparse)(cell)
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: NoneType takes no arguments

(from version 0.90, in the latest commit only the line numbers change)

This is a simple fix, line 1516 (for v0.9.0) should have another guard, like so:

'' if cell is None else str(cell) if _isnumber(cell) else _type(cell, numparse)(cell)

I'll do a PR soon.

gschizas avatar Feb 27 '24 11:02 gschizas

Thanks for fixing this! I have the same issue :smile:

fradeve avatar Mar 15 '24 14:03 fradeve

I am still having this issue

tywallis avatar May 06 '24 20:05 tywallis

I am still having this issue

Well, it hasn't been merged or published, what did you expect? 😄

gschizas avatar May 09 '24 09:05 gschizas

Thanks good sir

RaSan147 avatar May 21 '24 22:05 RaSan147