Skip to content

Commit 5e8f11e

Browse files
committed
Add some actual test cases
1 parent 29df19a commit 5e8f11e

File tree

6 files changed

+196
-29
lines changed

6 files changed

+196
-29
lines changed

iris.csv

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
SepalLength,SepalWidth,PetalLength,PetalWidth,Name
2+
5.1,3.5,1.4,0.2,Iris-setosa
3+
4.9,3,1.4,0.2,Iris-setosa
4+
4.7,3.2,1.3,0.2,Iris-setosa
5+
4.6,3.1,1.5,0.2,Iris-setosa
6+
5,3.6,1.4,0.2,Iris-setosa
7+
5.4,3.9,1.7,0.4,Iris-setosa
8+
4.6,3.4,1.4,0.3,Iris-setosa
9+
5,,1.5,0.2,Iris-setosa
10+
4.4,2.9,1.4,0.2,Iris-setosa
11+
4.9,3.1,1.5,0.1,Iris-setosa
12+
5.4,3.7,1.5,0.2,Iris-setosa
13+
4.8,3.4,1.6,0.2,Iris-setosa
14+
4.8,3,4.2,0.1,Iris-setosa
15+
4.3,3,1.1,5.3,Iris-setosa
16+
5.8,4,1.2,0.2,Iris-setosa
17+
5.7,4.4,1.5,0.4,Iris-setosa
18+
5.4,3.9,1.3,0.4,Iris-setosa
19+
5.1,3.5,1.4,0.3,Iris-setosa
20+
5.7,3.8,1.7,0.3,Iris-setosa
21+
5.1,3.8,1.5,0.3,Iris-setosa
22+
5.4,3.4,1.7,0.2,Iris-setosa
23+
5.1,3.7,1.5,0.4,Iris-setosa
24+
4.6,3.6,1,0.2,Iris-setosa
25+
5.1,3.3,1.7,0.5,Iris-setosa
26+
4.8,3.4,1.9,0.2,Iris-setosa
27+
5,3,1.6,0.2,Iris-setosa
28+
5,3.4,1.6,0.4,Iris-setosa
29+
5.2,3.5,1.5,0.2,Iris-setosa
30+
5.2,3.4,1.4,0.2,Iris-setosa
31+
4.7,3.2,1.6,0.2,Iris-setosa
32+
4.8,3.1,1.6,0.2,Iris-setosa
33+
5.4,3.4,1.5,0.4,Iris-setosa
34+
5.2,4.1,1.5,0.1,Iris-setosa
35+
5.5,4.2,1.4,0.2,Iris-setosa
36+
4.9,3.1,1.5,0.1,Iris-setosa
37+
5,3.2,1.2,0.2,Iris-setosa
38+
5.5,3.5,1.3,0.2,Iris-setosa
39+
4.9,3.1,1.5,0.1,Iris-setosa
40+
4.4,3,1.3,0.2,Iris-setosa
41+
5.1,3.4,1.5,0.2,Iris-setosa
42+
5,3.5,1.3,0.3,Iris-setosa
43+
4.5,2.3,1.3,0.3,Iris-setosa
44+
4.4,3.2,1.3,0.2,Iris-setosa
45+
5,3.5,1.6,0.6,Iris-setosa
46+
5.1,3.8,1.9,0.4,Iris-setosa
47+
4.8,3,1.4,0.3,Iris-setosa
48+
5.1,3.8,1.6,0.2,Iris-setosa
49+
4.6,3.2,1.4,0.2,Iris-setosa
50+
5.3,3.7,1.5,0.2,Iris-setosa
51+
5,3.3,1.4,0.2,Iris-setosa
52+
7,3.2,4.7,1.4,Iris-versicolor
53+
6.4,3.2,4.5,1.5,Iris-versicolor
54+
6.9,3.1,4.9,1.5,Iris-versicolor
55+
5.5,2.3,4,1.3,Iris-versicolor
56+
6.5,2.8,4.6,1.5,Iris-versicolor
57+
5.7,2.8,4.5,1.3,Iris-versicolor
58+
6.3,3.3,4.7,1.6,Iris-versicolor
59+
4.9,2.4,3.3,1,Iris-versicolor
60+
6.6,2.9,4.6,1.3,Iris-versicolor
61+
5.2,2.7,3.9,1.4,Iris-versicolor
62+
5,2,3.5,1,Iris-versicolor
63+
5.9,3,4.2,1.5,Iris-versicolor
64+
6,2.2,4,1,Iris-versicolor
65+
6.1,2.9,4.7,1.4,Iris-versicolor
66+
5.6,2.9,3.6,1.3,Iris-versicolor
67+
6.7,3.1,4.4,1.4,Iris-versicolor
68+
5.6,3,4.5,1.5,Iris-versicolor
69+
5.8,2.7,4.1,1,Iris-versicolor
70+
6.2,2.2,4.5,1.5,Iris-versicolor
71+
5.6,2.5,3.9,1.1,Iris-versicolor
72+
5.9,3.2,4.8,1.8,Iris-versicolor
73+
6.1,2.8,4,1.3,Iris-versicolor
74+
6.3,2.5,4.9,1.5,Iris-versicolor
75+
6.1,2.8,4.7,1.2,Iris-versicolor
76+
6.4,2.9,4.3,1.3,Iris-versicolor
77+
6.6,3,4.4,1.4,Iris-versicolor
78+
6.8,2.8,4.8,1.4,Iris-versicolor
79+
6.7,3,5,1.7,Iris-versicolor
80+
6,2.9,4.5,1.5,Iris-versicolor
81+
5.7,2.6,3.5,1,Iris-versicolor
82+
5.5,2.4,3.8,1.1,Iris-versicolor
83+
5.5,2.4,3.7,1,Iris-versicolor
84+
5.8,2.7,3.9,1.2,Iris-versicolor
85+
6,2.7,5.1,1.6,Iris-versicolor
86+
5.4,3,4.5,1.5,Iris-versicolor
87+
6,3.4,4.5,1.6,Iris-versicolor
88+
6.7,3.1,4.7,1.5,Iris-versicolor
89+
6.3,2.3,4.4,1.3,Iris-versicolor
90+
5.6,3,4.1,1.3,Iris-versicolor
91+
5.5,2.5,4,1.3,Iris-versicolor
92+
5.5,2.6,4.4,1.2,Iris-versicolor
93+
6.1,3,4.6,1.4,Iris-versicolor
94+
5.8,2.6,4,1.2,Iris-versicolor
95+
5,2.3,3.3,1,Iris-versicolor
96+
5.6,2.7,4.2,1.3,Iris-versicolor
97+
5.7,3,4.2,1.2,Iris-versicolor
98+
5.7,2.9,4.2,1.3,Iris-versicolor
99+
6.2,2.9,4.3,1.3,Iris-versicolor
100+
5.1,2.5,3,1.1,Iris-versicolor
101+
5.7,2.8,4.1,1.3,Iris-versicolor
102+
6.3,3.3,6,2.5,Iris-virginica
103+
5.8,2.7,5.1,1.9,Iris-virginica
104+
7.1,3,5.9,2.1,Iris-virginica
105+
6.3,2.9,5.6,1.8,Iris-virginica
106+
6.5,3,5.8,2.2,Iris-virginica
107+
7.6,3,6.6,2.1,Iris-virginica
108+
4.9,2.5,4.5,1.7,Iris-virginica
109+
7.3,2.9,6.3,1.8,Iris-virginica
110+
6.7,2.5,5.8,1.8,Iris-virginica
111+
7.2,3.6,6.1,2.5,Iris-virginica
112+
6.5,3.2,5.1,2,Iris-virginica
113+
6.4,2.7,5.3,1.9,Iris-virginica
114+
6.8,3,5.5,2.1,Iris-virginica
115+
5.7,2.5,5,2,Iris-virginica
116+
5.8,2.8,5.1,2.4,Iris-virginica
117+
6.4,3.2,5.3,2.3,Iris-virginica
118+
6.5,3,5.5,1.8,Iris-virginica
119+
7.7,3.8,6.7,2.2,Iris-virginica
120+
7.7,2.6,6.9,2.3,Iris-virginica
121+
6,2.2,5,1.5,Iris-virginica
122+
6.9,3.2,5.7,2.3,Iris-virginica
123+
5.6,2.8,4.9,2,Iris-virginica
124+
7.7,2.8,6.7,2,Iris-virginica
125+
6.3,2.7,4.9,1.8,Iris-virginica
126+
6.7,3.3,5.7,2.1,Iris-virginica
127+
7.2,3.2,6,1.8,Iris-virginica
128+
6.2,2.8,4.8,1.8,Iris-virginica
129+
6.1,3,4.9,1.8,Iris-virginica
130+
6.4,2.8,5.6,2.1,Iris-virginica
131+
7.2,3,5.8,1.6,Iris-virginica
132+
7.4,2.8,6.1,1.9,Iris-virginica
133+
7.9,3.8,6.4,2,Iris-virginica
134+
6.4,2.8,5.6,2.2,Iris-virginica
135+
6.3,2.8,5.1,1.5,Iris-virginica
136+
6.1,2.6,5.6,1.4,Iris-virginica
137+
7.7,3,6.1,2.3,Iris-virginica
138+
6.3,3.4,5.6,2.4,Iris-virginica
139+
6.4,3.1,5.5,1.8,Iris-virginica
140+
6,3,4.8,1.8,Iris-virginica
141+
6.9,3.1,5.4,2.1,Iris-virginica
142+
6.7,3.1,5.6,2.4,Iris-virginica
143+
6.9,3.1,5.1,2.3,Iris-virginica
144+
5.8,2.7,5.1,1.9,Iris-virginica
145+
6.8,3.2,5.9,2.3,Iris-virginica
146+
6.7,3.3,5.7,2.5,Iris-virginica
147+
6.7,3,5.2,2.3,Iris-virginica
148+
6.3,2.5,5,1.9,Iris-virginica
149+
6.5,3,5.2,2,Iris-virginica
150+
6.2,3.4,5.4,2.3,Iris-virginica
151+
5.9,3,5.1,1.8,Iris-virginica

pandas_format/html.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import markupsafe
55

6-
from .core import Styler
6+
from .core import Styler, env
77

88
def _inline(key, value):
99
if value is None:
@@ -86,16 +86,16 @@ def format_value(self, value, row, col):
8686
else:
8787
return value
8888

89-
def index_style(self, i, level=None, first=False):
89+
def index_style(self, rownum, end, level=None, first=False):
9090
inline = {}
9191
if self.col_space is not None:
9292
inline["style"] = "min-width: {};".format(self.col_space)
9393

9494
if level is not None and self.sparsify:
95-
current = self.indices[i][level]
96-
if first or self.indices[i-1][level] != current:
95+
current = self.indices[rownum][level]
96+
if first or self.indices[rownum-1][level] != current:
9797
inline["rowspan"] = 1
98-
for index in self.indices[i+1:]:
98+
for index in self.indices[rownum+1:end]:
9999
if index[level] == current:
100100
inline["rowspan"] += 1
101101
else:

pandas_format/templates/html.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
{% if index %}
77
{% for name in df.index.names %}
88
{% if index_names %}
9-
<th>{{ name | format_value }}</th>
9+
<th>{{ name }}</th>
1010
{% else %}
1111
<th></th>
1212
{% endif %}

pandas_format/templates/html_macro.tpl

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,18 @@
1212
{% endmacro %}
1313

1414
{% macro display_rows(rows, start) %}
15-
{% set dindex = rows.index.tolist() %}
15+
{% set end = start + rows | length %}
1616
{% for tuple in rows.itertuples() %}
17+
{% set rownum = start + loop.index0 %}
1718
{% set outerloop = loop %}
1819
<tr{{ styler.row_style(outerloop.index0 + start) | inline }}>
1920
{% if index %}
2021
{% if levels == 1 %}
21-
{% set d = styler.index_style(start + outerloop.index0) %}
22+
{% set d = styler.index_style(rownum, end) %}
2223
{{ row_header(tuple[0], d) }}
2324
{% else %}
2425
{% for i in tuple[0] %}
25-
{% set d = styler.index_style(start + outerloop.index0, loop.index0, outerloop.first) %}
26+
{% set d = styler.index_style(rownum, end, loop.index0, outerloop.first) %}
2627
{% if "rowspan" in d %}
2728
{{ row_header(i, d) }}
2829
{% endif %}
@@ -31,18 +32,18 @@
3132
{% endif %}
3233
{% if not split_cols %}
3334
{% for value in tuple[1:] %}
34-
{% set d = styler.value_style(outerloop.index0 + start, loop.index0) %}
35-
<td{{ d | inline }}>{{ value | format_value(outerloop.index0 + start, loop.index0) }}</td>
35+
{% set d = styler.value_style(rownum, loop.index0) %}
36+
<td{{ d | inline }}>{{ value | format_value(rownum, loop.index0) }}</td>
3637
{% endfor %}
3738
{% else %}
3839
{% for value in tuple[1:head_col + 1] %}
39-
{% set d = styler.value_style(outerloop.index0 + start, loop.index0) %}
40-
<td{{ d | inline }}>{{ value | format_value(outerloop.index0 + start, loop.index0) }}</td>
40+
{% set d = styler.value_style(rownum, loop.index0) %}
41+
<td{{ d | inline }}>{{ value | format_value(rownum, loop.index0) }}</td>
4142
{% endfor %}
4243
<td> &hellip; </td>
4344
{% for value in tuple[-tail_col:] %}
44-
{% set d = styler.value_style(outerloop.index0 + start, df.columns | length - loop.revindex) %}
45-
<td{{ d | inline }}>{{ value | format_value(outerloop.index0 + start, df.columns | length - loop.revindex) }} </td>
45+
{% set d = styler.value_style(rownum, df.columns | length - loop.revindex) %}
46+
<td{{ d | inline }}>{{ value | format_value(rownum, df.columns | length - loop.revindex) }} </td>
4647
{% endfor %}
4748
{% endif %}
4849
</tr>

test.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import pandas as pd
2+
import numpy as np
3+
import pandas_format as pf
4+
5+
np.random.seed(0)
6+
7+
df = pd.read_csv("iris.csv")
8+
mi = pd.MultiIndex.from_tuples([(a, b, c) for a in range(5)
9+
for b in range(5) for c in range(5)])
10+
mi_df = pd.DataFrame(np.random.rand(125, 5), index=mi)
11+
12+
named = mi_df.reindex(mi.rename(["test", "really long test", 5]))
13+
14+
runs = [dict(df=df, max_rows=11, formatters={"Name":str.upper}),
15+
dict(df=df, max_rows=20, max_cols=4, show_dimensions=True),
16+
dict(df=mi_df, max_rows=20, max_cols=4),
17+
dict(df=named, classes="sdfsdf"),
18+
dict(df=mi_df, sparsify=True, justify="right", index=False, col_space=20),
19+
dict(df=df, float_format=lambda x: "{0:.2f}".format(x), na_rep="NAAAAA", classes=["a", "b"]),
20+
]
21+
22+
23+
for key, value in enumerate(runs):
24+
with open("correct/{}.html".format(key), "w") as fout:
25+
pf.to_html(buf=fout, **value)
26+
with open("correct/{}.txt".format(key), "w") as fout:
27+
if "classes" in value:
28+
del value["classes"]
29+
pf.to_string(buf=fout, **value)

test_html.py

Lines changed: 0 additions & 14 deletions
This file was deleted.

0 commit comments

Comments
 (0)