@@ -782,108 +782,91 @@ def test_datetime(self):
782782 index = Index (dates )
783783 assert index .inferred_type == "datetime64"
784784
785- def test_infer_dtype_datetime (self ):
786-
787- arr = np .array ([Timestamp ("2011-01-01" ), Timestamp ("2011-01-02" )])
788- assert lib .infer_dtype (arr , skipna = True ) == "datetime"
789-
785+ def test_infer_dtype_datetime64 (self ):
790786 arr = np .array (
791787 [np .datetime64 ("2011-01-01" ), np .datetime64 ("2011-01-01" )], dtype = object
792788 )
793789 assert lib .infer_dtype (arr , skipna = True ) == "datetime64"
794790
795- arr = np .array ([datetime (2011 , 1 , 1 ), datetime (2012 , 2 , 1 )])
796- assert lib .infer_dtype (arr , skipna = True ) == "datetime"
797-
791+ @pytest .mark .parametrize ("na_value" , [pd .NaT , np .nan ])
792+ def test_infer_dtype_datetime64_with_na (self , na_value ):
798793 # starts with nan
799- for n in [pd .NaT , np .nan ]:
800- arr = np .array ([n , pd .Timestamp ("2011-01-02" )])
801- assert lib .infer_dtype (arr , skipna = True ) == "datetime"
802-
803- arr = np .array ([n , np .datetime64 ("2011-01-02" )])
804- assert lib .infer_dtype (arr , skipna = True ) == "datetime64"
805-
806- arr = np .array ([n , datetime (2011 , 1 , 1 )])
807- assert lib .infer_dtype (arr , skipna = True ) == "datetime"
808-
809- arr = np .array ([n , pd .Timestamp ("2011-01-02" ), n ])
810- assert lib .infer_dtype (arr , skipna = True ) == "datetime"
811-
812- arr = np .array ([n , np .datetime64 ("2011-01-02" ), n ])
813- assert lib .infer_dtype (arr , skipna = True ) == "datetime64"
814-
815- arr = np .array ([n , datetime (2011 , 1 , 1 ), n ])
816- assert lib .infer_dtype (arr , skipna = True ) == "datetime"
794+ arr = np .array ([na_value , np .datetime64 ("2011-01-02" )])
795+ assert lib .infer_dtype (arr , skipna = True ) == "datetime64"
817796
818- # different type of nat
819- arr = np .array (
820- [np .timedelta64 ("nat" ), np .datetime64 ("2011-01-02" )], dtype = object
821- )
822- assert lib .infer_dtype (arr , skipna = False ) == "mixed"
797+ arr = np .array ([na_value , np .datetime64 ("2011-01-02" ), na_value ])
798+ assert lib .infer_dtype (arr , skipna = True ) == "datetime64"
823799
824- arr = np .array (
825- [np .datetime64 ("2011-01-02" ), np .timedelta64 ("nat" )], dtype = object
826- )
800+ @pytest .mark .parametrize (
801+ "arr" ,
802+ [
803+ np .array (
804+ [np .timedelta64 ("nat" ), np .datetime64 ("2011-01-02" )], dtype = object
805+ ),
806+ np .array (
807+ [np .datetime64 ("2011-01-02" ), np .timedelta64 ("nat" )], dtype = object
808+ ),
809+ np .array ([np .datetime64 ("2011-01-01" ), pd .Timestamp ("2011-01-02" )]),
810+ np .array ([pd .Timestamp ("2011-01-02" ), np .datetime64 ("2011-01-01" )]),
811+ np .array ([np .nan , pd .Timestamp ("2011-01-02" ), 1.1 ]),
812+ np .array ([np .nan , "2011-01-01" , pd .Timestamp ("2011-01-02" )]),
813+ np .array ([np .datetime64 ("nat" ), np .timedelta64 (1 , "D" )], dtype = object ),
814+ np .array ([np .timedelta64 (1 , "D" ), np .datetime64 ("nat" )], dtype = object ),
815+ ],
816+ )
817+ def test_infer_datetimelike_dtype_mixed (self , arr ):
827818 assert lib .infer_dtype (arr , skipna = False ) == "mixed"
828819
829- # mixed datetime
830- arr = np .array ([datetime (2011 , 1 , 1 ), pd .Timestamp ("2011-01-02" )])
831- assert lib .infer_dtype (arr , skipna = True ) == "datetime"
832-
833- # should be datetime?
834- arr = np .array ([np .datetime64 ("2011-01-01" ), pd .Timestamp ("2011-01-02" )])
835- assert lib .infer_dtype (arr , skipna = True ) == "mixed"
836-
837- arr = np .array ([pd .Timestamp ("2011-01-02" ), np .datetime64 ("2011-01-01" )])
838- assert lib .infer_dtype (arr , skipna = True ) == "mixed"
839-
820+ def test_infer_dtype_mixed_integer (self ):
840821 arr = np .array ([np .nan , pd .Timestamp ("2011-01-02" ), 1 ])
841822 assert lib .infer_dtype (arr , skipna = True ) == "mixed-integer"
842823
843- arr = np .array ([np .nan , pd .Timestamp ("2011-01-02" ), 1.1 ])
844- assert lib .infer_dtype (arr , skipna = True ) == "mixed"
824+ @pytest .mark .parametrize (
825+ "arr" ,
826+ [
827+ np .array ([Timestamp ("2011-01-01" ), Timestamp ("2011-01-02" )]),
828+ np .array ([datetime (2011 , 1 , 1 ), datetime (2012 , 2 , 1 )]),
829+ np .array ([datetime (2011 , 1 , 1 ), pd .Timestamp ("2011-01-02" )]),
830+ ],
831+ )
832+ def test_infer_dtype_datetime (self , arr ):
833+ assert lib .infer_dtype (arr , skipna = True ) == "datetime"
845834
846- arr = np .array ([np .nan , "2011-01-01" , pd .Timestamp ("2011-01-02" )])
847- assert lib .infer_dtype (arr , skipna = True ) == "mixed"
835+ @pytest .mark .parametrize ("na_value" , [pd .NaT , np .nan ])
836+ @pytest .mark .parametrize (
837+ "time_stamp" , [pd .Timestamp ("2011-01-01" ), datetime (2011 , 1 , 1 )]
838+ )
839+ def test_infer_dtype_datetime_with_na (self , na_value , time_stamp ):
840+ # starts with nan
841+ arr = np .array ([na_value , time_stamp ])
842+ assert lib .infer_dtype (arr , skipna = True ) == "datetime"
848843
849- def test_infer_dtype_timedelta (self ):
844+ arr = np .array ([na_value , time_stamp , na_value ])
845+ assert lib .infer_dtype (arr , skipna = True ) == "datetime"
850846
851- arr = np .array ([pd .Timedelta ("1 days" ), pd .Timedelta ("2 days" )])
847+ @pytest .mark .parametrize (
848+ "arr" ,
849+ [
850+ np .array ([pd .Timedelta ("1 days" ), pd .Timedelta ("2 days" )]),
851+ np .array ([np .timedelta64 (1 , "D" ), np .timedelta64 (2 , "D" )], dtype = object ),
852+ np .array ([timedelta (1 ), timedelta (2 )]),
853+ ],
854+ )
855+ def test_infer_dtype_timedelta (self , arr ):
852856 assert lib .infer_dtype (arr , skipna = True ) == "timedelta"
853857
854- arr = np .array ([np .timedelta64 (1 , "D" ), np .timedelta64 (2 , "D" )], dtype = object )
858+ @pytest .mark .parametrize ("na_value" , [pd .NaT , np .nan ])
859+ @pytest .mark .parametrize (
860+ "delta" , [Timedelta ("1 days" ), np .timedelta64 (1 , "D" ), timedelta (1 )]
861+ )
862+ def test_infer_dtype_timedelta_with_na (self , na_value , delta ):
863+ # starts with nan
864+ arr = np .array ([na_value , delta ])
855865 assert lib .infer_dtype (arr , skipna = True ) == "timedelta"
856866
857- arr = np .array ([timedelta ( 1 ), timedelta ( 2 ) ])
867+ arr = np .array ([na_value , delta , na_value ])
858868 assert lib .infer_dtype (arr , skipna = True ) == "timedelta"
859869
860- # starts with nan
861- for n in [pd .NaT , np .nan ]:
862- arr = np .array ([n , Timedelta ("1 days" )])
863- assert lib .infer_dtype (arr , skipna = True ) == "timedelta"
864-
865- arr = np .array ([n , np .timedelta64 (1 , "D" )])
866- assert lib .infer_dtype (arr , skipna = True ) == "timedelta"
867-
868- arr = np .array ([n , timedelta (1 )])
869- assert lib .infer_dtype (arr , skipna = True ) == "timedelta"
870-
871- arr = np .array ([n , pd .Timedelta ("1 days" ), n ])
872- assert lib .infer_dtype (arr , skipna = True ) == "timedelta"
873-
874- arr = np .array ([n , np .timedelta64 (1 , "D" ), n ])
875- assert lib .infer_dtype (arr , skipna = True ) == "timedelta"
876-
877- arr = np .array ([n , timedelta (1 ), n ])
878- assert lib .infer_dtype (arr , skipna = True ) == "timedelta"
879-
880- # different type of nat
881- arr = np .array ([np .datetime64 ("nat" ), np .timedelta64 (1 , "D" )], dtype = object )
882- assert lib .infer_dtype (arr , skipna = False ) == "mixed"
883-
884- arr = np .array ([np .timedelta64 (1 , "D" ), np .datetime64 ("nat" )], dtype = object )
885- assert lib .infer_dtype (arr , skipna = False ) == "mixed"
886-
887870 def test_infer_dtype_period (self ):
888871 # GH 13664
889872 arr = np .array ([pd .Period ("2011-01" , freq = "D" ), pd .Period ("2011-02" , freq = "D" )])
@@ -892,25 +875,26 @@ def test_infer_dtype_period(self):
892875 arr = np .array ([pd .Period ("2011-01" , freq = "D" ), pd .Period ("2011-02" , freq = "M" )])
893876 assert lib .infer_dtype (arr , skipna = True ) == "period"
894877
895- # starts with nan
896- for n in [pd .NaT , np .nan ]:
897- arr = np .array ([n , pd .Period ("2011-01" , freq = "D" )])
898- assert lib .infer_dtype (arr , skipna = True ) == "period"
899-
900- arr = np .array ([n , pd .Period ("2011-01" , freq = "D" ), n ])
901- assert lib .infer_dtype (arr , skipna = True ) == "period"
902-
903- # different type of nat
878+ def test_infer_dtype_period_mixed (self ):
904879 arr = np .array (
905- [np . datetime64 ( "nat" ), pd .Period ("2011-01" , freq = "M" )], dtype = object
880+ [pd .Period ("2011-01" , freq = "M" ), np . datetime64 ( "nat " )], dtype = object
906881 )
907882 assert lib .infer_dtype (arr , skipna = False ) == "mixed"
908883
909884 arr = np .array (
910- [pd .Period ("2011-01" , freq = "M" ), np . datetime64 ( "nat " )], dtype = object
885+ [np . datetime64 ( "nat" ), pd .Period ("2011-01" , freq = "M" )], dtype = object
911886 )
912887 assert lib .infer_dtype (arr , skipna = False ) == "mixed"
913888
889+ @pytest .mark .parametrize ("na_value" , [pd .NaT , np .nan ])
890+ def test_infer_dtype_period_with_na (self , na_value ):
891+ # starts with nan
892+ arr = np .array ([na_value , pd .Period ("2011-01" , freq = "D" )])
893+ assert lib .infer_dtype (arr , skipna = True ) == "period"
894+
895+ arr = np .array ([na_value , pd .Period ("2011-01" , freq = "D" ), na_value ])
896+ assert lib .infer_dtype (arr , skipna = True ) == "period"
897+
914898 @pytest .mark .parametrize (
915899 "data" ,
916900 [
0 commit comments