@@ -102,8 +102,10 @@ def object_numpy_array(request):
102102 datetime .datetime (2003 , 7 , 12 , 8 , 34 , 22 ),
103103 datetime .datetime .now (),
104104 np .datetime64 (datetime .datetime .utcnow ()),
105+ pd .Timestamp (datetime .datetime .now ()),
105106 eastern .localize (datetime .datetime (2003 , 7 , 12 , 8 , 34 , 22 )),
106107 eastern .localize (datetime .datetime .now ()),
108+ pd .Timestamp (datetime .datetime .now (), tzinfo = eastern ),
107109 ],
108110)
109111def datetime_value (request ):
@@ -112,6 +114,7 @@ def datetime_value(request):
112114
113115@pytest .fixture (
114116 params = [
117+ list , # plain list of datetime values
115118 lambda a : pd .DatetimeIndex (a ), # Pandas DatetimeIndex
116119 lambda a : pd .Series (pd .DatetimeIndex (a )), # Pandas Datetime Series
117120 lambda a : pd .DatetimeIndex (a ).values , # Numpy datetime64 array
@@ -162,13 +165,31 @@ def test_datetime(datetime_value, engine, pretty):
162165
163166
164167def test_datetime_arrays (datetime_array , engine , pretty ):
168+ if engine == "legacy" :
169+ pytest .skip ("legacy encoder doesn't strip timezone from datetimes arrays" )
170+
165171 value = build_test_dict (datetime_array )
166172 result = pio .to_json_plotly (value , engine = engine )
167173
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 ()]
170191 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 ()]
172193 else : # numpy datetime64 array
173194 dt_values = datetime_array .tolist ()
174195
0 commit comments