예제 #1
0
def extract_metadata_for_folder(dataset, problem_id=None):
    sys.path.append(properties.PYTHON_PROJECTS_HOME)
    function_store = get_function_store(dataset)
    root_folder = os.path.join(properties.PYTHON_PROJECTS_HOME, dataset)
    if problem_id:
        root_folder = os.path.join(root_folder, problem_id)
    for file_path in cache.list_files(root_folder,
                                      check_nest=True,
                                      is_absolute=True):
        file_name = cache.get_file_name(file_path)
        if not file_name.startswith(a_consts.GENERATED_PREFIX):
            continue
        LOGGER.info("Processing '%s' ..." % helper.get_simple_name(file_path))
        for func in helper.get_generated_functions(file_path):
            function_name = func.__name__
            valid, func_key = is_executable_function(dataset, func, False)
            print(function_name, func_key, valid)
            if valid:
                meta_data = {
                    "name": function_name,
                    "body": inspect.getsource(func),
                    "inputKey": func_key,
                    "filePath": file_path
                }
                function_store.save_py_metadata(meta_data)
    sys.path.remove(properties.PYTHON_PROJECTS_HOME)
예제 #2
0
def get_valid_function_keys_from_file(dataset, file_name):
    sys.path.append(properties.PYTHON_PROJECTS_HOME)
    valid_keys = []
    n_generated_functions = 0
    for func in helper.get_generated_functions(file_name):
        n_generated_functions += 1
        valid, func_key = is_executable_function(dataset, func, True)
        if valid:
            valid_keys.append(func_key)
    sys.path.remove(properties.PYTHON_PROJECTS_HOME)
    return valid_keys, n_generated_functions
예제 #3
0
def execute_file(dataset, file_name):
    sys.path.append(properties.PYTHON_PROJECTS_HOME)
    try:
        n_valids, n_totals = 0, 0
        for func in helper.get_generated_functions(file_name):
            func_name = func.__name__
            valid, func_key = is_executable_function(dataset, func, False)
            print(func.__name__, valid)
            n_totals += 1
            if valid:
                evaluated = evaluate_function(dataset, file_name, func_name)
                if evaluated is not None:
                    n_valids += 1
        LOGGER.info("Valid Functions: %d / %d" % (n_valids, n_totals))
    except Exception as e:
        LOGGER.critical("Failed to process file: %s. Message: %s" %
                        (file_name, e.message))
    finally:
        sys.path.remove(properties.PYTHON_PROJECTS_HOME)
예제 #4
0
def get_pd_functions(file_path, as_dict=False):
    return helper.get_generated_functions(file_path, as_dict=as_dict)