@@ -1955,19 +1955,11 @@ def test_constructor_datetimes_with_nulls(self, arr):
19551955
19561956 @pytest .mark .parametrize ("order" , ["K" , "A" , "C" , "F" ])
19571957 @pytest .mark .parametrize (
1958- "dtype" ,
1959- [
1960- "datetime64[M]" ,
1961- "datetime64[D]" ,
1962- "datetime64[h]" ,
1963- "datetime64[m]" ,
1964- "datetime64[s]" ,
1965- "datetime64[ms]" ,
1966- "datetime64[us]" ,
1967- "datetime64[ns]" ,
1968- ],
1958+ "unit" ,
1959+ ["M" , "D" , "h" , "m" , "s" , "ms" , "us" , "ns" ],
19691960 )
1970- def test_constructor_datetimes_non_ns (self , order , dtype ):
1961+ def test_constructor_datetimes_non_ns (self , order , unit ):
1962+ dtype = f"datetime64[{ unit } ]"
19711963 na = np .array (
19721964 [
19731965 ["2015-01-01" , "2015-01-02" , "2015-01-03" ],
@@ -1977,13 +1969,16 @@ def test_constructor_datetimes_non_ns(self, order, dtype):
19771969 order = order ,
19781970 )
19791971 df = DataFrame (na )
1980- expected = DataFrame (
1981- [
1982- ["2015-01-01" , "2015-01-02" , "2015-01-03" ],
1983- ["2017-01-01" , "2017-01-02" , "2017-02-03" ],
1984- ]
1985- )
1986- expected = expected .astype (dtype = dtype )
1972+ expected = DataFrame (na .astype ("M8[ns]" ))
1973+ if unit in ["M" , "D" , "h" , "m" ]:
1974+ with pytest .raises (TypeError , match = "Cannot cast" ):
1975+ expected .astype (dtype )
1976+
1977+ # instead the constructor casts to the closest supported reso, i.e. "s"
1978+ expected = expected .astype ("datetime64[s]" )
1979+ else :
1980+ expected = expected .astype (dtype = dtype )
1981+
19871982 tm .assert_frame_equal (df , expected )
19881983
19891984 @pytest .mark .parametrize ("order" , ["K" , "A" , "C" , "F" ])
0 commit comments