@@ -896,8 +896,12 @@ def test_clines_validation(clines, styler):
896
896
[
897
897
("all;index" , "\n \\ cline{1-1}" ),
898
898
("all;data" , "\n \\ cline{1-2}" ),
899
+ ("all-invisible;index" , "\n \\ cline{1-1}" ),
900
+ ("all-invisible;data" , "\n \\ cline{1-2}" ),
899
901
("skip-last;index" , "" ),
900
902
("skip-last;data" , "" ),
903
+ ("skip-last-invisible;index" , "" ),
904
+ ("skip-last-invisible;data" , "" ),
901
905
(None , "" ),
902
906
],
903
907
)
@@ -984,6 +988,62 @@ def test_clines_index(clines, exp, env):
984
988
"""
985
989
),
986
990
),
991
+ (
992
+ "skip-last-invisible;index" ,
993
+ dedent (
994
+ """\
995
+ \\ multirow[c]{2}{*}{A} & X & 1 \\ \\
996
+ & Y & 2 \\ \\
997
+ \\ cline{1-2} \\ cline{2-2}
998
+ \\ multirow[c]{2}{*}{B} & X & 3 \\ \\
999
+ & Y & 4 \\ \\
1000
+ \\ cline{1-2} \\ cline{2-2}
1001
+ """
1002
+ ),
1003
+ ),
1004
+ (
1005
+ "skip-last-invisible;data" ,
1006
+ dedent (
1007
+ """\
1008
+ \\ multirow[c]{2}{*}{A} & X & 1 \\ \\
1009
+ & Y & 2 \\ \\
1010
+ \\ cline{1-3} \\ cline{2-3}
1011
+ \\ multirow[c]{2}{*}{B} & X & 3 \\ \\
1012
+ & Y & 4 \\ \\
1013
+ \\ cline{1-3} \\ cline{2-3}
1014
+ """
1015
+ ),
1016
+ ),
1017
+ (
1018
+ "all-invisible;index" ,
1019
+ dedent (
1020
+ """\
1021
+ \\ multirow[c]{2}{*}{A} & X & 1 \\ \\
1022
+ \\ cline{2-2}
1023
+ & Y & 2 \\ \\
1024
+ \\ cline{1-2} \\ cline{2-2} \\ cline{2-2}
1025
+ \\ multirow[c]{2}{*}{B} & X & 3 \\ \\
1026
+ \\ cline{2-2}
1027
+ & Y & 4 \\ \\
1028
+ \\ cline{1-2} \\ cline{2-2} \\ cline{2-2}
1029
+ """
1030
+ ),
1031
+ ),
1032
+ (
1033
+ "all-invisible;data" ,
1034
+ dedent (
1035
+ """\
1036
+ \\ multirow[c]{2}{*}{A} & X & 1 \\ \\
1037
+ \\ cline{2-3}
1038
+ & Y & 2 \\ \\
1039
+ \\ cline{1-3} \\ cline{2-3} \\ cline{2-3}
1040
+ \\ multirow[c]{2}{*}{B} & X & 3 \\ \\
1041
+ \\ cline{2-3}
1042
+ & Y & 4 \\ \\
1043
+ \\ cline{1-3} \\ cline{2-3} \\ cline{2-3}
1044
+ """
1045
+ ),
1046
+ ),
987
1047
],
988
1048
)
989
1049
@pytest .mark .parametrize ("env" , ["table" ])
@@ -998,6 +1058,59 @@ def test_clines_multiindex(clines, expected, env):
998
1058
assert expected in result
999
1059
1000
1060
1061
+ @pytest .mark .parametrize (
1062
+ "clines, expected" ,
1063
+ [
1064
+ (None , "1 \\ \\ \n 2 \\ \\ \n 3 \\ \\ \n 4 \\ \\ \n " ),
1065
+ ("all;data" , "1 \\ \\ \n 2 \\ \\ \n 3 \\ \\ \n 4 \\ \\ \n " ),
1066
+ ("all;index" , "1 \\ \\ \n 2 \\ \\ \n 3 \\ \\ \n 4 \\ \\ \n " ),
1067
+ ("skip-last;data" , "1 \\ \\ \n 2 \\ \\ \n 3 \\ \\ \n 4 \\ \\ \n " ),
1068
+ ("skip-last;index" , "1 \\ \\ \n 2 \\ \\ \n 3 \\ \\ \n 4 \\ \\ \n " ),
1069
+ ("all-invisible;index" , "1 \\ \\ \n 2 \\ \\ \n 3 \\ \\ \n 4 \\ \\ \n " ),
1070
+ ("skip-last-invisible;index" , "1 \\ \\ \n 2 \\ \\ \n 3 \\ \\ \n 4 \\ \\ \n " ),
1071
+ (
1072
+ "all-invisible;data" ,
1073
+ dedent (
1074
+ """\
1075
+ 1 \\ \\
1076
+ \\ cline{1-1}
1077
+ 2 \\ \\
1078
+ \\ cline{1-1} \\ cline{1-1}
1079
+ 3 \\ \\
1080
+ \\ cline{1-1}
1081
+ 4 \\ \\
1082
+ \\ cline{1-1} \\ cline{1-1}
1083
+ """
1084
+ ),
1085
+ ),
1086
+ (
1087
+ "skip-last-invisible;data" ,
1088
+ dedent (
1089
+ """\
1090
+ 1 \\ \\
1091
+ 2 \\ \\
1092
+ \\ cline{1-1}
1093
+ 3 \\ \\
1094
+ 4 \\ \\
1095
+ \\ cline{1-1}
1096
+ """
1097
+ ),
1098
+ ),
1099
+ ]
1100
+ )
1101
+ @pytest .mark .parametrize ("env" , ["table" ])
1102
+ def test_clines_hiddenindex (clines , expected , env ):
1103
+ # Make sure that \clines are correctly hidden or shown with all indixes hideen
1104
+ midx = MultiIndex .from_product ([["A" , "-" , "B" ], ["X" , "Y" ]])
1105
+ df = DataFrame ([[1 ], [2 ], [99 ], [99 ], [3 ], [4 ]], index = midx )
1106
+ styler = df .style
1107
+ styler .hide ([("-" , "X" ), ("-" , "Y" )])
1108
+ styler .hide (axis = 0 )
1109
+ result = styler .to_latex (clines = clines , environment = env )
1110
+ assert expected in result
1111
+
1112
+
1113
+
1001
1114
def test_col_format_len (styler ):
1002
1115
# gh 46037
1003
1116
result = styler .to_latex (environment = "longtable" , column_format = "lrr{10cm}" )
0 commit comments