def test_cast_copy(): s = pd.Series(["1", "2", "3", "4"]) id_s = hex(id(s)) typeset = CompleteSet() ns = typeset.cast_series(s) id_ns = hex(id(ns)) assert id_s != id_ns
def test_noncast_noncopy(): s = pd.Series(["asdasd", "asdasda", "asdasd", "sadasd"]) id_s = hex(id(s)) typeset = CompleteSet() ns = typeset.cast_series(s) id_ns = hex(id(ns)) assert id_s == id_ns
def test_consistency(series): typeset = CompleteSet() if (series.name in [ "timedelta_series_nat", "date_series_nat", "timestamp_series_nat" ] and sys.version_info.major == 3 and sys.version_info.minor == 7): pytest.skip("unsupported configuration") initial_type = typeset.detect_series_type(series.copy(deep=True)) converted_type = typeset.infer_series_type(series.copy(deep=True)) if initial_type != converted_type: converted_series = typeset.cast_series(series.copy(deep=True)) assert series.dtype.kind != converted_series.dtype.kind or not ( (converted_series.eq(series) | (converted_series.isna() & series.isna())).all()) else: converted_series = typeset.cast_series(series.copy(deep=True)) assert (converted_series.eq(series) | (converted_series.isna() & series.isna())).all()
def test_multiple_inference(series): """ Notes: Copy to prevent possible side effects only for testing. """ ts = CompleteSet() inferred_type = ts.infer_series_type(series) series_convert = ts.cast_series(series.copy(deep=True)) initial_type_after_convert = ts.detect_series_type( series_convert.copy(deep=True)) assert inferred_type == initial_type_after_convert series_convert2 = ts.cast_series(series_convert.copy(deep=True)) inferred_type_after_convert = ts.detect_series_type( series_convert2.copy(deep=True)) assert initial_type_after_convert == inferred_type_after_convert assert series_convert.isna().eq(series_convert2.isna()).all() assert (series_convert[series_convert.notna()].eq( series_convert2[series_convert2.notna()]).all())