from neurec.util.helpers import to_list, to_bool

types = {
    "data.input.path": str,
    "data.input.dataset": str,
    "data.splitter": str,
    "data.column.format": str,
    "data.convert.separator": eval,
    "data.convert.binarize.threshold": float,
    "recommender": str,
    "rec.evaluate.neg": int,
    "data.splitterratio": to_list,
    "rec.number.thread": int,
    "topk": int,
    "epochs": int,
    "batch_size": int,
    "layers": to_list,
    "embedding_size": int,
    "reg": float,
    "reg_adv": int,
    "reg_g": float,
    "reg_d": float,
    "learning_rate": float,
    "learner": str,
    "adv_epoch": int,
    "adv": str,
    "eps": float,
    "adver": int,
    "verbose": int,
    "loss_function": str,
    "reg_mlp": float,
    "ispairwise": to_bool,
    "num_neg": int,
    "hidden_neuron": int,
    "h_act": str,
    "g_act": str,
    "corruption_level": float,
    "mode": str,
    "lr_g": float,
    "lr_d": float,
    "batchsize_g": int,
    "batchsize_d": int,
    "opt_g": str,
    "opt_d": str,
    "hiddenlayer_g": to_list,
    "hiddenlayer_d": to_list,
    "step_g": int,
    "step_d": int,
    "zr_ratio": float,
    "zp_ratio": float,
    "zr_coefficient": float,
    "regs": to_list,
    "keep": float,
    "net_channel": to_list,
    "lr_embed": float,
    "lr_net": float,
    "pretrain": int,
    "batch_choice": str,
    "batch_norm": int,
    "weight_size": int,
    "regw": to_list,
    "alpha": float,
    "beta": float,
    "activation": str,
    "algorithm": int,
    "reg_mf": float,
    "pre_agg": str,
    "session_agg": str,
    "high_order": int,
    "factors_num": int,
    "lr": float,
    "g_reg": float,
    "d_reg": eval,
    "g_epoch": int,
    "d_epoch": int,
    "d_tau": float,
    "pretrain_file": str,
    "f_act": str,
    "margin": float,
    "p_dim": to_list,
    "anneal_cap": float,
    "total_anneal_steps": int,
    "data_alpha": float,
    "mf_pretrain": str,
    "mlp_pretrain": str,
    "layer_size": to_list,
    "node_dropout_flag": to_bool,
    "adj_type": str,
    "alg_type": str,
    "socialpath": str,
    "num_epochs": int,
    "num_layers": int,
    "dropout": float
}
