@@ -102,8 +102,10 @@ def object_numpy_array(request):
102
102
datetime .datetime (2003 , 7 , 12 , 8 , 34 , 22 ),
103
103
datetime .datetime .now (),
104
104
np .datetime64 (datetime .datetime .utcnow ()),
105
+ pd .Timestamp (datetime .datetime .now ()),
105
106
eastern .localize (datetime .datetime (2003 , 7 , 12 , 8 , 34 , 22 )),
106
107
eastern .localize (datetime .datetime .now ()),
108
+ pd .Timestamp (datetime .datetime .now (), tzinfo = eastern ),
107
109
],
108
110
)
109
111
def datetime_value (request ):
@@ -112,6 +114,7 @@ def datetime_value(request):
112
114
113
115
@pytest .fixture (
114
116
params = [
117
+ list , # plain list of datetime values
115
118
lambda a : pd .DatetimeIndex (a ), # Pandas DatetimeIndex
116
119
lambda a : pd .Series (pd .DatetimeIndex (a )), # Pandas Datetime Series
117
120
lambda a : pd .DatetimeIndex (a ).values , # Numpy datetime64 array
@@ -162,13 +165,31 @@ def test_datetime(datetime_value, engine, pretty):
162
165
163
166
164
167
def test_datetime_arrays (datetime_array , engine , pretty ):
168
+ if engine == "legacy" :
169
+ pytest .skip ("legacy encoder doesn't strip timezone from datetimes arrays" )
170
+
165
171
value = build_test_dict (datetime_array )
166
172
result = pio .to_json_plotly (value , engine = engine )
167
173
168
- if isinstance (datetime_array , pd .Series ):
169
- dt_values = [d .isoformat () for d in datetime_array .dt .to_pydatetime ().tolist ()]
174
+ def to_str (v ):
175
+ try :
176
+ v = v .replace (tzinfo = None )
177
+ except (TypeError , AttributeError ):
178
+ pass
179
+
180
+ try :
181
+ v = v .isoformat (sep = "T" )
182
+ except (TypeError , AttributeError ):
183
+ pass
184
+
185
+ return str (v )
186
+
187
+ if isinstance (datetime_array , list ):
188
+ dt_values = [to_str (d ) for d in datetime_array ]
189
+ elif isinstance (datetime_array , pd .Series ):
190
+ dt_values = [to_str (d ) for d in datetime_array .dt .to_pydatetime ().tolist ()]
170
191
elif isinstance (datetime_array , pd .DatetimeIndex ):
171
- dt_values = [d . isoformat ( ) for d in datetime_array .to_pydatetime ().tolist ()]
192
+ dt_values = [to_str ( d ) for d in datetime_array .to_pydatetime ().tolist ()]
172
193
else : # numpy datetime64 array
173
194
dt_values = datetime_array .tolist ()
174
195
0 commit comments