Skip to content

Commit ecf6392

Browse files
committed
fix #108
1 parent cad3efa commit ecf6392

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

dataframe_image/_pandas_accessor.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import io
12
from pathlib import Path
23
from typing import Literal
34

@@ -82,7 +83,11 @@ def export(
8283
from .converter.matplotlib_table import MatplotlibTableConverter
8384

8485
# get extension from filename without dot
85-
extension = Path(filename).suffix
86+
if isinstance(filename, io.IOBase):
87+
extension = "png"
88+
else:
89+
extension = Path(filename).suffix
90+
8691
if extension.startswith("."):
8792
extension = extension[1:]
8893
converter = MatplotlibTableConverter(

tests/test_df_image.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from io import BytesIO
12
import random
23
import string
34

@@ -34,6 +35,18 @@ def test_styled(document_name, converter, dpi):
3435
dpi=dpi,
3536
)
3637

38+
@pytest.mark.parametrize("converter", converters)
39+
def test_styled2(document_name, converter):
40+
col_headers = {
41+
"selector": ".col_heading, thead",
42+
"props": "color: white; background-color: #1d5632; font-size: 11px"
43+
}
44+
45+
df = pd.DataFrame(np.random.rand(6, 4))
46+
df_styled = df.style.set_table_styles([col_headers])
47+
dfi.export(df_styled, f"tests/test_output/{document_name}.png", table_conversion=converter)
48+
49+
3750

3851
@pytest.mark.parametrize("dpi", test_dpi_values)
3952
@pytest.mark.parametrize("converter", converters)
@@ -81,3 +94,8 @@ def test_long_column_headers(document_name, converter, dpi):
8194
dpi=dpi,
8295
max_rows=-1,
8396
)
97+
98+
99+
def test_save_using_bytesio():
100+
buf = BytesIO()
101+
df.dfi.export(buf, table_conversion='matplotlib')

0 commit comments

Comments
 (0)