#!/usr/bin/env python3


if __name__ == '__main__':
    import logging

    logging.basicConfig(level=logging.INFO)

    import os

    os.environ['TF_CPP_MIN_LOG_LEVEL'] = '1'
    os.environ['NO_GCE_CHECK'] = 'true'
    os.environ['TF_XLA_FLAGS'] = '--tf_xla_cpu_global_jit'

    import sys

    try:
        import ray  
    except ImportError:
        class _dummy:  
            def __getattr__(self, value):
                raise RuntimeError(f'Ray is not installed, cannot '
                                   f'access attribute "{value}"!')


        ray = _dummy()
        sys.modules['ray'] = ray

    from deephyper.evaluator.evaluate import Evaluator


    def clip_value(self, y):
        is_dict = isinstance(y, dict)
        yy = y['score'] if is_dict else y
        yy = min(max(yy, self.min_val), self.max_val)
        if is_dict:
            y = y.copy()
            y['score'] = yy
            yy = y
        return yy


    Evaluator.clip_value = clip_value

    from deephyper.core.cli.cli import main
    
    from deephyper.core.cli.nas import HPS_SEARCHES as NAS_SEARCHES

    from xnas.nas_deephyper.regevo_xnas import RegularizedEvolutionXNAS
    from xnas.nas_deephyper.nsga_ii import NSGAII

    
    NAS_SEARCHES['regevo_xnas'] = RegularizedEvolutionXNAS
    NAS_SEARCHES['regevo-xnas'] = RegularizedEvolutionXNAS

    NAS_SEARCHES['nsgaii'] = NSGAII
    NAS_SEARCHES['nsga2'] = NSGAII

    main()
