<reponame>arita37/pyvtreat

import pytest
import pandas
import vtreat

def test_col_dups_1():
    d = pandas.DataFrame({'x': [1], 'x2': [2], 'y': [3]})
    d.columns = ['x', 'x', 'y']

    transform = vtreat.UnsupervisedTreatment(
        var_list=['x'],
        cols_to_copy=['y']
    )

    with pytest.raises(ValueError):
        transform.fit_transform(d, d["y"])


def test_xgboost_col_name_issue_1():
    # https://stackoverflow.com/questions/48645846/pythons-xgoost-valueerrorfeature-names-may-not-contain-or
    # ValueError('feature_names may not contain [, ] or <')
    d = pandas.DataFrame({'x': ['[', ']', '<' , '>']})

    transform = vtreat.UnsupervisedTreatment(
        var_list=['x']
    )
    d_transformed = transform.fit_transform(d, None)
    cols = d_transformed.columns
    for col in cols:
        assert not any(c in col for c in "[]<>")
    assert len(set(cols)) == len(cols)


def test_xgboost_col_name_issue_2():
    # https://stackoverflow.com/questions/48645846/pythons-xgoost-valueerrorfeature-names-may-not-contain-or
    # ValueError('feature_names may not contain [, ] or <')
    d = pandas.DataFrame({'x': ['[', ']', '<' , '_lt_']})

    transform = vtreat.UnsupervisedTreatment(
        var_list=['x']
    )
    d_transformed = transform.fit_transform(d, None)
    cols = d_transformed.columns
    for col in cols:
        assert not any(c in col for c in "[]<>")
    assert len(set(cols)) == len(cols)

import pytest
import pandas
import vtreat

def test_col_dups_1():
    d = pandas.DataFrame({'x': [1], 'x2': [2], 'y': [3]})
    d.columns = ['x', 'x', 'y']

    transform = vtreat.UnsupervisedTreatment(
        var_list=['x'],
        cols_to_copy=['y']
    )

    with pytest.raises(ValueError):
        transform.fit_transform(d, d["y"])


def test_xgboost_col_name_issue_1():
    # https://stackoverflow.com/questions/48645846/pythons-xgoost-valueerrorfeature-names-may-not-contain-or
    # ValueError('feature_names may not contain [, ] or <')
    d = pandas.DataFrame({'x': ['[', ']', '<' , '>']})

    transform = vtreat.UnsupervisedTreatment(
        var_list=['x']
    )
    d_transformed = transform.fit_transform(d, None)
    cols = d_transformed.columns
    for col in cols:
        assert not any(c in col for c in "[]<>")
    assert len(set(cols)) == len(cols)


def test_xgboost_col_name_issue_2():
    # https://stackoverflow.com/questions/48645846/pythons-xgoost-valueerrorfeature-names-may-not-contain-or
    # ValueError('feature_names may not contain [, ] or <')
    d = pandas.DataFrame({'x': ['[', ']', '<' , '_lt_']})

    transform = vtreat.UnsupervisedTreatment(
        var_list=['x']
    )
    d_transformed = transform.fit_transform(d, None)
    cols = d_transformed.columns
    for col in cols:
        assert not any(c in col for c in "[]<>")
    assert len(set(cols)) == len(cols)
# https://stackoverflow.com/questions/48645846/pythons-xgoost-valueerrorfeature-names-may-not-contain-or # ValueError('feature_names may not contain [, ] or <') # https://stackoverflow.com/questions/48645846/pythons-xgoost-valueerrorfeature-names-may-not-contain-or # ValueError('feature_names may not contain [, ] or <')