Skip to content

Commit 12068d2

Browse files
authored
CLN: Split dtype inference tests (#33690)
* CLN: Split dtype inference tests * Lint * Include comments
1 parent 6b2dd37 commit 12068d2

File tree

1 file changed

+75
-91
lines changed

1 file changed

+75
-91
lines changed

pandas/tests/dtypes/test_inference.py

+75-91
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)