34
34
is_interval_dtype ,
35
35
is_list_like ,
36
36
is_number ,
37
+ is_numeric_dtype ,
37
38
is_period_dtype ,
38
39
is_sequence ,
39
40
is_timedelta64_dtype ,
@@ -1064,7 +1065,6 @@ def assert_series_equal(
1064
1065
right ,
1065
1066
check_dtype = True ,
1066
1067
check_index_type = "equiv" ,
1067
- check_series_type = True ,
1068
1068
check_less_precise = False ,
1069
1069
check_names = True ,
1070
1070
check_exact = False ,
@@ -1085,8 +1085,6 @@ def assert_series_equal(
1085
1085
check_index_type : bool or {'equiv'}, default 'equiv'
1086
1086
Whether to check the Index class, dtype and inferred_type
1087
1087
are identical.
1088
- check_series_type : bool, default True
1089
- Whether to check the Series class is identical.
1090
1088
check_less_precise : bool or int, default False
1091
1089
Specify comparison precision. Only used when check_exact is False.
1092
1090
5 digits (False) or 3 digits (True) after decimal points are compared.
@@ -1118,11 +1116,10 @@ def assert_series_equal(
1118
1116
# instance validation
1119
1117
_check_isinstance (left , right , Series )
1120
1118
1121
- if check_series_type :
1122
- # ToDo: There are some tests using rhs is sparse
1123
- # lhs is dense. Should use assert_class_equal in future
1124
- assert isinstance (left , type (right ))
1125
- # assert_class_equal(left, right, obj=obj)
1119
+ # TODO: There are some tests using rhs is sparse
1120
+ # lhs is dense. Should use assert_class_equal in future
1121
+ assert isinstance (left , type (right ))
1122
+ # assert_class_equal(left, right, obj=obj)
1126
1123
1127
1124
# length comparison
1128
1125
if len (left ) != len (right ):
@@ -1147,47 +1144,40 @@ def assert_series_equal(
1147
1144
# is False. We'll still raise if only one is a `Categorical`,
1148
1145
# regardless of `check_categorical`
1149
1146
if (
1150
- is_categorical_dtype (left )
1151
- and is_categorical_dtype (right )
1147
+ is_categorical_dtype (left . dtype )
1148
+ and is_categorical_dtype (right . dtype )
1152
1149
and not check_categorical
1153
1150
):
1154
1151
pass
1155
1152
else :
1156
1153
assert_attr_equal ("dtype" , left , right , obj = f"Attributes of { obj } " )
1157
1154
1158
1155
if check_exact :
1156
+ if not is_numeric_dtype (left .dtype ):
1157
+ raise AssertionError ("check_exact may only be used with numeric Series" )
1158
+
1159
1159
assert_numpy_array_equal (
1160
- left ._internal_get_values (),
1161
- right ._internal_get_values (),
1162
- check_dtype = check_dtype ,
1163
- obj = str (obj ),
1160
+ left ._values , right ._values , check_dtype = check_dtype , obj = str (obj )
1164
1161
)
1165
- elif check_datetimelike_compat :
1162
+ elif check_datetimelike_compat and (
1163
+ needs_i8_conversion (left .dtype ) or needs_i8_conversion (right .dtype )
1164
+ ):
1166
1165
# we want to check only if we have compat dtypes
1167
1166
# e.g. integer and M|m are NOT compat, but we can simply check
1168
1167
# the values in that case
1169
- if needs_i8_conversion (left ) or needs_i8_conversion (right ):
1170
-
1171
- # datetimelike may have different objects (e.g. datetime.datetime
1172
- # vs Timestamp) but will compare equal
1173
- if not Index (left ._values ).equals (Index (right ._values )):
1174
- msg = (
1175
- f"[datetimelike_compat=True] { left ._values } "
1176
- f"is not equal to { right ._values } ."
1177
- )
1178
- raise AssertionError (msg )
1179
- else :
1180
- assert_numpy_array_equal (
1181
- left ._internal_get_values (),
1182
- right ._internal_get_values (),
1183
- check_dtype = check_dtype ,
1168
+
1169
+ # datetimelike may have different objects (e.g. datetime.datetime
1170
+ # vs Timestamp) but will compare equal
1171
+ if not Index (left ._values ).equals (Index (right ._values )):
1172
+ msg = (
1173
+ f"[datetimelike_compat=True] { left ._values } "
1174
+ f"is not equal to { right ._values } ."
1184
1175
)
1185
- elif is_interval_dtype (left ) or is_interval_dtype (right ):
1176
+ raise AssertionError (msg )
1177
+ elif is_interval_dtype (left .dtype ) or is_interval_dtype (right .dtype ):
1186
1178
assert_interval_array_equal (left .array , right .array )
1187
- elif is_extension_array_dtype ( left . dtype ) and is_datetime64tz_dtype (left .dtype ):
1179
+ elif is_datetime64tz_dtype (left .dtype ):
1188
1180
# .values is an ndarray, but ._values is the ExtensionArray.
1189
- # TODO: Use .array
1190
- assert is_extension_array_dtype (right .dtype )
1191
1181
assert_extension_array_equal (left ._values , right ._values )
1192
1182
elif (
1193
1183
is_extension_array_dtype (left )
0 commit comments