77import pandas as pd
88
99from xarray .coding .times import infer_calendar_name
10+ from xarray .core import duck_array_ops
1011from xarray .core .common import (
1112 _contains_datetime_like_objects ,
1213 is_np_datetime_like ,
@@ -50,7 +51,7 @@ def _access_through_cftimeindex(values, name):
5051 from xarray .coding .cftimeindex import CFTimeIndex
5152
5253 if not isinstance (values , CFTimeIndex ):
53- values_as_cftimeindex = CFTimeIndex (values .ravel ())
54+ values_as_cftimeindex = CFTimeIndex (duck_array_ops .ravel (values ))
5455 else :
5556 values_as_cftimeindex = values
5657 if name == "season" :
@@ -69,7 +70,7 @@ def _access_through_series(values, name):
6970 """Coerce an array of datetime-like values to a pandas Series and
7071 access requested datetime component
7172 """
72- values_as_series = pd .Series (values .ravel (), copy = False )
73+ values_as_series = pd .Series (duck_array_ops .ravel (values ), copy = False )
7374 if name == "season" :
7475 months = values_as_series .dt .month .values
7576 field_values = _season_from_months (months )
@@ -148,10 +149,10 @@ def _round_through_series_or_index(values, name, freq):
148149 from xarray .coding .cftimeindex import CFTimeIndex
149150
150151 if is_np_datetime_like (values .dtype ):
151- values_as_series = pd .Series (values .ravel (), copy = False )
152+ values_as_series = pd .Series (duck_array_ops .ravel (values ), copy = False )
152153 method = getattr (values_as_series .dt , name )
153154 else :
154- values_as_cftimeindex = CFTimeIndex (values .ravel ())
155+ values_as_cftimeindex = CFTimeIndex (duck_array_ops .ravel (values ))
155156 method = getattr (values_as_cftimeindex , name )
156157
157158 field_values = method (freq = freq ).values
@@ -195,7 +196,7 @@ def _strftime_through_cftimeindex(values, date_format: str):
195196 """
196197 from xarray .coding .cftimeindex import CFTimeIndex
197198
198- values_as_cftimeindex = CFTimeIndex (values .ravel ())
199+ values_as_cftimeindex = CFTimeIndex (duck_array_ops .ravel (values ))
199200
200201 field_values = values_as_cftimeindex .strftime (date_format )
201202 return field_values .values .reshape (values .shape )
@@ -205,7 +206,7 @@ def _strftime_through_series(values, date_format: str):
205206 """Coerce an array of datetime-like values to a pandas Series and
206207 apply string formatting
207208 """
208- values_as_series = pd .Series (values .ravel (), copy = False )
209+ values_as_series = pd .Series (duck_array_ops .ravel (values ), copy = False )
209210 strs = values_as_series .dt .strftime (date_format )
210211 return strs .values .reshape (values .shape )
211212
0 commit comments