import numpy as np import pandas as pd def is_object_or_nan_string_dtype(dtype): """ Check if string-like dtype is following NaN semantics, i.e. is object dtype or a NaN-variant of the StringDtype. """ return (isinstance(dtype, np.dtype) and dtype == "object") or ( dtype.na_value is np.nan ) def _convert_na_value(ser, expected): if ser.dtype != object: if ser.dtype.na_value is np.nan: expected = expected.fillna(np.nan) else: # GH#18463 expected = expected.fillna(pd.NA) return expected