@@ -29,17 +29,23 @@ def test_numpy_labels():
29
29
fig = px .scatter (
30
30
x = [1 , 2 , 3 ], y = [2 , 3 , 4 ], labels = {"x" : "time" }
31
31
) # other labels will be kw arguments
32
- assert fig .data [0 ]["hovertemplate" ] == "time=%{x}<br>y=%{y}"
32
+ assert fig .data [0 ]["hovertemplate" ] == "time=%{x}<br>y=%{y}<extra></extra> "
33
33
34
34
35
35
def test_with_index ():
36
36
tips = px .data .tips ()
37
37
fig = px .scatter (tips , x = tips .index , y = "total_bill" )
38
- assert fig .data [0 ]["hovertemplate" ] == "index=%{x}<br>total_bill=%{y}"
38
+ assert (
39
+ fig .data [0 ]["hovertemplate" ] == "index=%{x}<br>total_bill=%{y}<extra></extra>"
40
+ )
39
41
fig = px .scatter (tips , x = tips .index , y = tips .total_bill )
40
- assert fig .data [0 ]["hovertemplate" ] == "index=%{x}<br>total_bill=%{y}"
42
+ assert (
43
+ fig .data [0 ]["hovertemplate" ] == "index=%{x}<br>total_bill=%{y}<extra></extra>"
44
+ )
41
45
fig = px .scatter (tips , x = tips .index , y = tips .total_bill , labels = {"index" : "number" })
42
- assert fig .data [0 ]["hovertemplate" ] == "number=%{x}<br>total_bill=%{y}"
46
+ assert (
47
+ fig .data [0 ]["hovertemplate" ] == "number=%{x}<br>total_bill=%{y}<extra></extra>"
48
+ )
43
49
# We do not allow "x=index"
44
50
with pytest .raises (ValueError ) as err_msg :
45
51
fig = px .scatter (tips , x = "index" , y = "total_bill" )
@@ -49,28 +55,34 @@ def test_with_index():
49
55
tips = px .data .tips ()
50
56
tips .index .name = "item"
51
57
fig = px .scatter (tips , x = tips .index , y = "total_bill" )
52
- assert fig .data [0 ]["hovertemplate" ] == "item=%{x}<br>total_bill=%{y}"
58
+ assert fig .data [0 ]["hovertemplate" ] == "item=%{x}<br>total_bill=%{y}<extra></extra> "
53
59
54
60
55
61
def test_pandas_series ():
56
62
tips = px .data .tips ()
57
63
before_tip = tips .total_bill - tips .tip
58
64
fig = px .bar (tips , x = "day" , y = before_tip )
59
- assert fig .data [0 ].hovertemplate == "day=%{x}<br>y=%{y}"
65
+ assert fig .data [0 ].hovertemplate == "day=%{x}<br>y=%{y}<extra></extra> "
60
66
fig = px .bar (tips , x = "day" , y = before_tip , labels = {"y" : "bill" })
61
- assert fig .data [0 ].hovertemplate == "day=%{x}<br>bill=%{y}"
67
+ assert fig .data [0 ].hovertemplate == "day=%{x}<br>bill=%{y}<extra></extra> "
62
68
# lock down that we can pass df.col to facet_*
63
69
fig = px .bar (tips , x = "day" , y = "tip" , facet_row = tips .day , facet_col = tips .day )
64
- assert fig .data [0 ].hovertemplate == "day=%{x}<br>tip=%{y}"
70
+ assert fig .data [0 ].hovertemplate == "day=%{x}<br>tip=%{y}<extra></extra> "
65
71
66
72
67
73
def test_several_dataframes ():
68
74
df = pd .DataFrame (dict (x = [0 , 1 ], y = [1 , 10 ], z = [0.1 , 0.8 ]))
69
75
df2 = pd .DataFrame (dict (time = [23 , 26 ], money = [100 , 200 ]))
70
76
fig = px .scatter (df , x = "z" , y = df2 .money , size = "x" )
71
- assert fig .data [0 ].hovertemplate == "z=%{x}<br>y=%{y}<br>x=%{marker.size}"
77
+ assert (
78
+ fig .data [0 ].hovertemplate
79
+ == "z=%{x}<br>y=%{y}<br>x=%{marker.size}<extra></extra>"
80
+ )
72
81
fig = px .scatter (df2 , x = df .z , y = df2 .money , size = df .z )
73
- assert fig .data [0 ].hovertemplate == "x=%{x}<br>money=%{y}<br>size=%{marker.size}"
82
+ assert (
83
+ fig .data [0 ].hovertemplate
84
+ == "x=%{x}<br>money=%{y}<br>size=%{marker.size}<extra></extra>"
85
+ )
74
86
# Name conflict
75
87
with pytest .raises (NameError ) as err_msg :
76
88
fig = px .scatter (df , x = "z" , y = df2 .money , size = "y" )
@@ -85,15 +97,18 @@ def test_several_dataframes():
85
97
fig = px .scatter (x = df .y , y = df2 .y )
86
98
assert np .all (fig .data [0 ].x == np .array ([3 , 4 ]))
87
99
assert np .all (fig .data [0 ].y == np .array ([23 , 24 ]))
88
- assert fig .data [0 ].hovertemplate == "x=%{x}<br>y=%{y}"
100
+ assert fig .data [0 ].hovertemplate == "x=%{x}<br>y=%{y}<extra></extra> "
89
101
90
102
df = pd .DataFrame (dict (x = [0 , 1 ], y = [3 , 4 ]))
91
103
df2 = pd .DataFrame (dict (x = [3 , 5 ], y = [23 , 24 ]))
92
104
df3 = pd .DataFrame (dict (y = [0.1 , 0.2 ]))
93
105
fig = px .scatter (x = df .y , y = df2 .y , size = df3 .y )
94
106
assert np .all (fig .data [0 ].x == np .array ([3 , 4 ]))
95
107
assert np .all (fig .data [0 ].y == np .array ([23 , 24 ]))
96
- assert fig .data [0 ].hovertemplate == "x=%{x}<br>y=%{y}<br>size=%{marker.size}"
108
+ assert (
109
+ fig .data [0 ].hovertemplate
110
+ == "x=%{x}<br>y=%{y}<br>size=%{marker.size}<extra></extra>"
111
+ )
97
112
98
113
df = pd .DataFrame (dict (x = [0 , 1 ], y = [3 , 4 ]))
99
114
df2 = pd .DataFrame (dict (x = [3 , 5 ], y = [23 , 24 ]))
@@ -102,7 +117,8 @@ def test_several_dataframes():
102
117
assert np .all (fig .data [0 ].x == np .array ([3 , 4 ]))
103
118
assert np .all (fig .data [0 ].y == np .array ([23 , 24 ]))
104
119
assert (
105
- fig .data [0 ].hovertemplate == "x=%{x}<br>y=%{y}<br>hover_data_0=%{customdata[0]}"
120
+ fig .data [0 ].hovertemplate
121
+ == "x=%{x}<br>y=%{y}<br>hover_data_0=%{customdata[0]}<extra></extra>"
106
122
)
107
123
108
124
@@ -111,7 +127,7 @@ def test_name_heuristics():
111
127
fig = px .scatter (df , x = df .y , y = df .x , size = df .y )
112
128
assert np .all (fig .data [0 ].x == np .array ([3 , 4 ]))
113
129
assert np .all (fig .data [0 ].y == np .array ([0 , 1 ]))
114
- assert fig .data [0 ].hovertemplate == "y=%{marker.size}<br>x=%{y}"
130
+ assert fig .data [0 ].hovertemplate == "y=%{marker.size}<br>x=%{y}<extra></extra> "
115
131
116
132
117
133
def test_repeated_name ():
@@ -133,7 +149,7 @@ def test_arrayattrable_numpy():
133
149
)
134
150
assert (
135
151
fig .data [0 ]["hovertemplate" ]
136
- == "total_bill=%{x}<br>tip=%{y}<br>hover_data_0=%{customdata[0]}"
152
+ == "total_bill=%{x}<br>tip=%{y}<br>hover_data_0=%{customdata[0]}<extra></extra> "
137
153
)
138
154
tips = px .data .tips ()
139
155
fig = px .scatter (
@@ -145,7 +161,7 @@ def test_arrayattrable_numpy():
145
161
)
146
162
assert (
147
163
fig .data [0 ]["hovertemplate" ]
148
- == "total_bill=%{x}<br>tip=%{y}<br>suppl=%{customdata[0]}"
164
+ == "total_bill=%{x}<br>tip=%{y}<br>suppl=%{customdata[0]}<extra></extra> "
149
165
)
150
166
151
167
@@ -275,7 +291,7 @@ def test_int_col_names():
275
291
276
292
def test_data_frame_from_dict ():
277
293
fig = px .scatter ({"time" : [0 , 1 ], "money" : [1 , 2 ]}, x = "time" , y = "money" )
278
- assert fig .data [0 ].hovertemplate == "time=%{x}<br>money=%{y}"
294
+ assert fig .data [0 ].hovertemplate == "time=%{x}<br>money=%{y}<extra></extra> "
279
295
assert np .all (fig .data [0 ].x == [0 , 1 ])
280
296
281
297
@@ -306,4 +322,4 @@ def test_pass_df_columns():
306
322
def test_size_column ():
307
323
df = px .data .tips ()
308
324
fig = px .scatter (df , x = df ["size" ], y = df .tip )
309
- assert fig .data [0 ].hovertemplate == "size=%{x}<br>tip=%{y}"
325
+ assert fig .data [0 ].hovertemplate == "size=%{x}<br>tip=%{y}<extra></extra> "
0 commit comments