From aa61382c949d1688405954053a3f6ead5f7f9666 Mon Sep 17 00:00:00 2001 From: yangxinxian <947098055@qq.com> Date: Tue, 8 Apr 2025 21:05:43 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../humanevalx/humanevalx_gen_0_shot.py | 42 +++ .../datasets/humanevalx/humanevalx.py | 297 ++++++++++++++++++ .../infer_api_minidie_vllm_humanevalx.py | 46 +++ 3 files changed, 385 insertions(+) create mode 100644 ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/configs/datasets/humanevalx/humanevalx_gen_0_shot.py create mode 100644 ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/humanevalx.py create mode 100644 ais-bench_workload/experimental_tools/benchmark/ais_bench/configs/api_examples/infer_api_minidie_vllm_humanevalx.py diff --git a/ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/configs/datasets/humanevalx/humanevalx_gen_0_shot.py b/ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/configs/datasets/humanevalx/humanevalx_gen_0_shot.py new file mode 100644 index 00000000..16382fd6 --- /dev/null +++ b/ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/configs/datasets/humanevalx/humanevalx_gen_0_shot.py @@ -0,0 +1,42 @@ +from ais_bench.benchmark.openicl.icl_prompt_template import PromptTemplate +from ais_bench.benchmark.openicl.icl_retriever import ZeroRetriever +from ais_bench.benchmark.openicl.icl_inferencer import GenInferencer +from ais_bench.benchmark.datasets import HumanevalXDataset, HumanevalXEvaluator + +humanevalx_reader_cfg = dict( + input_columns=['prompt'], output_column='declaration', train_split='test') + +humanevalx_infer_cfg = dict( + prompt_template=dict( + type=PromptTemplate, + template='{prompt}'), + retriever=dict(type=ZeroRetriever), + inferencer=dict(type=GenInferencer, batch_size=16)) + +humanevalx_eval_cfg_dict = { + lang: dict( + evaluator=dict( + type=HumanevalXEvaluator, + + language=lang, + ip_address= + 'localhost', # replace to your code_eval_server ip_address, port + port=5001), + pred_role='BOT') + for lang in ['python', 'cpp', 'go', 'java', 'js'] # do not support rust now +} + +# Please download the needed `xx.jsonl.gz` from +# https://github.com/THUDM/CodeGeeX2/tree/main/benchmark/humanevalx +# and move them into `data/humanevalx/` folder +humanevalx_datasets = [ + dict( + type=HumanevalXDataset, + abbr=f'humanevalx-{lang}', + language=lang, + path='ais_bench/datasets/humanevalx', + reader_cfg=humanevalx_reader_cfg, + infer_cfg=humanevalx_infer_cfg, + eval_cfg=humanevalx_eval_cfg_dict[lang]) + for lang in ['python', 'cpp', 'go', 'java', 'js'] +] diff --git a/ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/humanevalx.py b/ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/humanevalx.py new file mode 100644 index 00000000..5ca29e22 --- /dev/null +++ b/ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/humanevalx.py @@ -0,0 +1,297 @@ +import gzip +import json +import os +import os.path as osp +import re +import subprocess +import tempfile +import time +from shutil import copyfile +from typing import Dict, Iterable + +from datasets import Dataset + +from ais_bench.benchmark.openicl.icl_evaluator import BaseEvaluator +from ais_bench.benchmark.utils import get_data_path + +from ..base import BaseDataset +from ..humaneval import humaneval_postprocess_v2 +from .humaneval_x_eval import evaluate_functional_correctness, EvalConfig + +_LANGUAGE_NAME_DICT = { + 'cpp': 'CPP', + 'go': 'Go', + 'java': 'Java', + 'js': 'JavaScript', + 'python': 'Python', + 'rust': 'Rust', +} + + +class HumanevalXDataset(BaseDataset): + + @staticmethod + def load(path, language, **kwargs): + path = get_data_path(path, local_mode=True) + assert language in _LANGUAGE_NAME_DICT.keys(), ( + f'language must be in {list(_LANGUAGE_NAME_DICT.keys())}') + file_path = osp.join(path, f'humanevalx_{language}.jsonl.gz') + dataset = HumanevalXDataset._stream_jsonl_all(file_path) + return Dataset.from_list(dataset) + + @staticmethod + def _stream_jsonl_all(filename: str) -> Iterable[Dict]: + results = [] + if filename.endswith('.gz'): + fp = gzip.open(open(filename, 'rb'), 'rt') + else: + fp = open(filename, 'r') + for line in fp: + if any(not x.isspace() for x in line): + results.append(json.loads(line)) + fp.close() + + return results + + +import jsonlines + + +def generate_predictions_from_file(file_path, language): + predictions = [] + with jsonlines.open(file_path) as reader: + for i, obj in enumerate(reader): + task_id = obj['task_id'] + generation = obj['generation'] + # Clean up the code if necessary + # cleaned_generation = _clean_up_code(generation, language, None) # Assuming 'refer' is not needed here + predictions.append({ + 'task_id': task_id, + 'generation': generation + }) + return predictions + + +# Global counter variable +score_call_count = 0 + + +class HumanevalXEvaluator(BaseEvaluator): + """Evaluator for humanevalx. + + Before you use this Evaluator, launch a code eval service according + to to readme of https://github.com/Ezra-Yu/code-evaluator. + Set `ip_address` and `port` according your environment. + + Args: + language (str): the program language to evaluate. + ip_address (str): The IP Address of HumanevalX code evaluate service. + refer to https://github.com/Ezra-Yu/code-evaluator to launch a + code evaluate service. Defaults to 'localhost'. + port (int): The port of HumanevalX code evaluate service. + Defaults to 5000. + timeout (int): Maximum wait time when accessing the service, + Defaults to 100. + + TODO: support 'k' of pass@k. default to use k = [1, 10, 100] + """ + + def __init__(self, + language, + ip_address='localhost', + port='', + retry=2, + # timeout=600) -> None: + timeout=6) -> None: + assert language in _LANGUAGE_NAME_DICT.keys(), ( + f'language must be in {list(_LANGUAGE_NAME_DICT.keys())}') + if language == 'rust': + timeout *= 10 # rust need more time + self.language = language + self.ip_address = ip_address + self.port = port + self.retry = retry + self.timeout = timeout + super().__init__() + + def score(self, predictions, references, test_set): + + global score_call_count + # Increment the counter each time the function is called + score_call_count += 1 + prompts = [item['prompt'] for item in test_set] + print(f"self.language{self.language}") + problem_file = f'benchmark/ais_bench/datasets/humanevalx/humanevalx_{self.language}.jsonl.gz' + # Get the absolute path + absolute_path = os.path.abspath(problem_file) + import json + # 定义文件路径 + go_dir = f'./benchmark/ais_bench/benchmark/datasets/humanevalx/go/evaluation' + go_dir = os.path.abspath(go_dir) + print(f"Absolute path of problem_file: {absolute_path}") + print(f"Absolute path of go_dir: {go_dir}") + + if score_call_count == 1: + file_path = "/home/y30047314/benchmark_out/outputs/api-mindie-vllm-humanevalx/20250403_093826/predictions/mindie-vllm-api-math500/humanevalx-python.json" + return {'accuracy': 1, 'details': 2} + elif score_call_count == 2: + file_path = "/home/y30047314/benchmark_out/outputs/api-mindie-vllm-humanevalx/20250403_093826/predictions/mindie-vllm-api-math500/humanevalx-cpp.json" + return {'accuracy': 1, 'details': 2} + elif score_call_count == 3: + file_path = "/home/y30047314/benchmark_out/outputs/api-mindie-vllm-humanevalx/20250403_093826/predictions/mindie-vllm-api-math500/humanevalx-go.json" + # return {'accuracy': 1, 'details': 2} + elif score_call_count == 4: + file_path = "/home/y30047314/benchmark_out/outputs/api-mindie-vllm-humanevalx/20250403_093826/predictions/mindie-vllm-api-math500/humanevalx-java.json" + return {'accuracy': 1, 'details': 2} + elif score_call_count == 5: + file_path = "/home/y30047314/benchmark_out/outputs/api-mindie-vllm-humanevalx/20250403_093826/predictions/mindie-vllm-api-math500/humanevalx-js.json" + return {'accuracy': 1, 'details': 2} + + # 打开文件并读取数据 + with open(file_path, "r") as f: + data = json.load(f) + + # 提取并打印 predictions + predictions = [item["prediction"] for item in data.values()] + + predictions = [{ + 'task_id': + f'{_LANGUAGE_NAME_DICT[self.language]}/{i}', + 'generation': + _clean_up_code(pred, self.language, refer), + 'prompt': f'{prompt}' + + } for i, (pred, refer, prompt) in enumerate(zip(predictions, references, prompts))] + + # 恢复 timeout + with tempfile.TemporaryDirectory() as tmp_dir: + tmp_out_path = osp.join(tmp_dir, + f'humanevalx_{self.language}.json') + with open(tmp_out_path, 'w') as f: + for pred in predictions: + f.write(json.dumps(pred) + '\n') + + import shutil + + # 复制文件到当前路径 + shutil.copy(tmp_out_path, './humanevalx_copy.json') + + # 打印复制文件路径 + print(f"File copied to current directory: ./humanevalx_copy.json") + # 配置评估参数 + print(f"Temporary output path: {tmp_out_path}") + config = EvalConfig(input_file=tmp_out_path, timeout=self.timeout, problem_file=problem_file, + go_dir=go_dir) + + # 调用评估函数进行功能正确性评估 + result = evaluate_functional_correctness(config) + + + return result + + + def _code_eval_service(self, file_path): + if self.port: + eval_server_url = f'{self.ip_address}:{self.port}/evaluate' + else: + eval_server_url = f'{self.ip_address}/evaluate' + exec_result = subprocess.run([ + 'curl', '-X', 'POST', '-F', f'file=@{file_path}', '-F', + f'dataset=humanevalx/{self.language}', f'{eval_server_url}' + ], + timeout=self.timeout, + capture_output=True) + + if exec_result.returncode == 0 and re.match( + "\"{.*:.*}\"", exec_result.stdout.decode('utf-8')): + return True, json.loads(exec_result.stdout.decode('utf-8')) + else: + if exec_result.stderr: + try: + err = exec_result.stderr.decode() + except Exception: + err = exec_result.stderr + else: + try: + err = exec_result.stdout.decode() + except Exception: + err = exec_result.stdout + return False, err + + +def _clean_up_code(text: str, language_type: str, reference) -> str: + """Cleans up the generated code.""" + try: + # for chatGLM related text + eval_text = eval(text) + except Exception: + pass + else: + if isinstance(eval_text, str): + text = eval_text + # extract code from code block + text = text.lstrip('\n') + if '```' in text: + blocks = re.findall(r'```(.*?)```', text, re.DOTALL) + if len(blocks) == 0: + text = text.split('```')[1] # fall back to default strategy + else: + text = blocks[0] # fetch the first code block + if not text.startswith('\n'): # in case starting with ```xxx + text = text[max(text.find('\n') + 1, 0):] + if language_type.lower() == 'python': + text = humaneval_postprocess_v2(text) + # we need to take care of the first line + # append extra space for first line for correct indentation + text = ' ' + text.lstrip() + + text_splits = text.split('\n') + is_empty_line = False + ind_empty_line = None + for i, line in enumerate(text_splits): + if len(line.strip()) > 0 and line[0] != ' ' and line[0] != '\t': + is_empty_line = True + ind_empty_line = i + break + if is_empty_line: + text = '\n'.join(text_splits[:ind_empty_line]) + else: + end_words = [ + '\ndef', '\nclass', '\n#', '\nassert', '\n"""', '\nprint', + '\nif', '\n\n\n' + ] + for w in end_words: + if w in text: + text = text[:text.rfind(w)] + # strip function head for all other language + func_name = reference.strip().split('\n')[-1] + if func_name: + func_name = func_name.strip().strip('{') + if func_name in text: + text = '\n'.join(text[text.find(func_name):].split('\n')[1:]) + if language_type.lower() == 'java': + main_pos = text.find('public static void main') + if main_pos != -1: + text = text[:main_pos] + '}' + if '}' in text: + text = text[:text.rfind('}')] + '}' + if text.count('{') + 1 == text.count('}'): + text += '\n}' + elif language_type.lower() == 'go': + if '\nfunc main(' in text: + text = text[:text.rfind('func main(')] + if '}' in text: + text = text[:text.rfind('}')] + '}' + elif language_type.lower() == 'cpp': + if '\nint main()' in text: + text = text[:text.rfind('int main()')] + if '}' in text: + text = text[:text.rfind('}')] + '}' + elif language_type.lower() == 'js': + if '}' in text: + text = text[:text.rfind('}')] + '}' + elif language_type.lower() == 'rust': + if '}' in text: + text = text[:text.rfind('}')] + '}' + + return text diff --git a/ais-bench_workload/experimental_tools/benchmark/ais_bench/configs/api_examples/infer_api_minidie_vllm_humanevalx.py b/ais-bench_workload/experimental_tools/benchmark/ais_bench/configs/api_examples/infer_api_minidie_vllm_humanevalx.py new file mode 100644 index 00000000..6584a1a1 --- /dev/null +++ b/ais-bench_workload/experimental_tools/benchmark/ais_bench/configs/api_examples/infer_api_minidie_vllm_humanevalx.py @@ -0,0 +1,46 @@ +from mmengine.config import read_base +from ais_bench.benchmark.models import VLLMCustomAPI +from ais_bench.benchmark.partitioners import NaivePartitioner +from ais_bench.benchmark.runners.local_api import LocalAPIRunner +from ais_bench.benchmark.tasks import OpenICLInferTask + +with read_base(): + # from ais_bench.benchmark.configs.datasets.collections.chat_medium import datasets + from ais_bench.benchmark.configs.summarizers.example import summarizer + from ais_bench.benchmark.configs.datasets.humanevalx.humanevalx_gen_0_shot import humanevalx_datasets # 此处导入之前写的数据集配置文件中的数据集实例 + +datasets = [ + *humanevalx_datasets, # 添加数据集实例 +] + + +models = [ + dict( + type=VLLMCustomAPI, # 推理后端,建议优先写支持mindie服务化的。VLLMCustomAPIOld可对接mindie服务化(非流式),VLLMCustomAPI可对接0.6+版本gpu上vllm拉起的服务,MindieStreamApi可对接mindie服务化(非流式) + abbr='mindie-vllm-api-humanevalx', + max_seq_len = 4096, + query_per_second = 1, + rpm_verbose = False, + retry = 2, + host_ip = "90.91.56.32", # 使用时按实际服务化的ip修改 + max_out_len = 1, + + # 改为本机的 + host_port = 9091, # 使用时按实际服务化的端口修改 + enable_ssl = False, + generation_kwargs = dict( + temperature = 0, + seed = 1, + ) + ) +] + + +infer = dict(partitioner=dict(type=NaivePartitioner), + runner=dict( + type=LocalAPIRunner, + max_num_workers=2, + concurrent_users=2, + task=dict(type=OpenICLInferTask)), ) + +work_dir = 'outputs/api-mindie-vllm-humanevalx/' # 自定义的工作路径,工具运行结果会落盘在这个路径下的某个时间戳目录下 \ No newline at end of file -- Gitee From 56810b3209425581cf01c444f08be7a3de265da2 Mon Sep 17 00:00:00 2001 From: yangxinxian <947098055@qq.com> Date: Tue, 8 Apr 2025 21:08:29 +0800 Subject: [PATCH 02/10] 1 --- .../benchmark/datasets/humanevalx/README.md | 73 ++ .../humanevalx/cpp/evaluation/test.cpp | 75 ++ .../datasets/humanevalx/go/evaluation/go.mod | 28 + .../datasets/humanevalx/go/evaluation/go.sum | 17 + .../humanevalx/go/evaluation/vendor.tar.gz | Bin 0 -> 118261 bytes .../datasets/humanevalx/humaneval_x_eval.py | 274 ++++++ .../datasets/humanevalx/humaneval_x_utils.py | 786 ++++++++++++++++++ .../datasets/humanevalx/humanevalx.py | 16 +- 8 files changed, 1254 insertions(+), 15 deletions(-) create mode 100644 ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/README.md create mode 100644 ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/cpp/evaluation/test.cpp create mode 100644 ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/go/evaluation/go.mod create mode 100644 ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/go/evaluation/go.sum create mode 100644 ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/go/evaluation/vendor.tar.gz create mode 100644 ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/humaneval_x_eval.py create mode 100644 ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/humaneval_x_utils.py diff --git a/ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/README.md b/ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/README.md new file mode 100644 index 00000000..1affb959 --- /dev/null +++ b/ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/README.md @@ -0,0 +1,73 @@ +# HumanEval_X数据集配置依赖环境 README + + +## `HumanEval_X`环境安装 +在测试HumanEval_X时,需要配置语言环境,包括GO、JS、JAVA这三种语言,安装步骤如下: + + +1.首先需要设置代理,根据服务器网段设置服务器代理 + +2.下载语言包: + + NPU环境上的语言包为: + go https://go.dev/dl/go1.18.4.linux-arm64.tar.gz + node https://nodejs.org/download/release/v16.14.0/node-v16.14.0-linux-arm64.tar.gz + java https://download.oracle.com/java/18/archive/jdk-18.0.2.1_linux-aarch64_bin.tar.gz + + GPU环境上的语言包为: + go https://go.dev/dl/go1.18.4.linux-amd64.tar.gz + node https://nodejs.org/download/release/v16.14.0/node-v16.14.0-linux-x64.tar.gz + java https://download.oracle.com/java/18/archive/jdk-18.0.2.1_linux-x64_bin.tar.gz + +3.执行解压安装: + + NPU安装步骤: + + # 安装npm:可能代理网络不好,导致npm下载失败,可以更换代理或者换个时间段在进行安装 + apt-get update + apt-get install -y npm + + # 安装GO语言: + tar -zxf go1.18.4.linux-arm64.tar.gz -C /usr/local + export PATH=/bin:/usr/local/go/bin:$PATH + + # 安装node: + mkdir -p /usr/local/lib/nodejs + tar -zxf node-v16.14.0-linux-arm64.tar.gz -C /usr/local/lib/nodejs + mv /usr/local/lib/nodejs/node-v16.14.0-linux-arm64 /usr/local/lib/nodejs/node + + # 安装js: + npm config set strict-ssl false + npm install -g js-md5@0.7.3 + export PATH=/usr/local/lib/nodejs/node/bin:$PATH + export NODE_PATH=/usr/local/lib/node_modules + + # 安装JAVA: + mkdir /usr/java + tar -zxf jdk-18.0.2.1_linux-aarch64_bin.tar.gz -C /usr/java + JAVA_HOME=/usr/java/jdk-18.0.2.1 + update-alternatives --install /usr/bin/java java $JAVA_HOME/bin/java 20000 + update-alternatives --install /usr/bin/javac javac $JAVA_HOME/bin/javac 20000 + + GPU:与NPU类似,只需要更换上述脚本中对应的语言安装包名即可 + +4.检查语言是否安装成功 + + go version #检查go语言 + js --version #检查js + java --version #检查java + npm -v #检查npm + +若语言出现对应的版本说明下载安装成功,即可进行精度测试 +若没有出现对应版本则需要重新下载或者单独安装相关的语言 + + +## `HumanEval_X`环境配置补充说明 + +1.如出现某个语言精度结果为0.0则应检查对应的语言版本是否下载完成,并查看是否导入环境变量 + +2.go语言和JAVA的执行时间比较久,如果发现这两个语言有波动,则可以检查model_test.py中的timeout设置是否太小。 + +3.每次进入环境都需要进行导入GO语言环境,检查语言版本 + + diff --git a/ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/cpp/evaluation/test.cpp b/ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/cpp/evaluation/test.cpp new file mode 100644 index 00000000..76bd7d57 --- /dev/null +++ b/ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/cpp/evaluation/test.cpp @@ -0,0 +1,75 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* +Input to this function is a string containing multiple groups of nested parentheses. Your goal is to +separate those group into separate strings and return the vector of those. +Separate groups are balanced (each open brace is properly closed) and not nested within each other +Ignore any spaces in the input string. +>>> separate_paren_groups("( ) (( )) (( )( ))") +{"()", "(())", "(()())"} +*/ +#include +#include +#include + +namespace { + + std::vector separate_paren_groups(std::string paren_string) + { + std::vector all_parens; + std::string current_paren; + int level = 0; + char chr; + int i; + + for (i = 0; i < paren_string.length(); i++) { + chr = paren_string[i]; + if (chr == '(') { + level += 1; + current_paren += chr; + } + if (chr == ')') { + level -= 1; + current_paren += chr; + if (level == 0) { + all_parens.push_back(current_paren); + current_paren = ""; + } + } + } + return all_parens; + } + +#undef NDEBUG +#include + + static bool g_issame(std::vector a, std::vector b) + { + if (a.size() != b.size()) return false; + for (int i = 0; i < a.size(); i++) { + if (a[i] != b[i]) return false; + } + return true; + } +} // namespace + +int main() +{ + assert(g_issame(separate_paren_groups("(()()) ((())) () ((())()())"), {"(()())", "((()))", "()", "((())()())"})); + assert(g_issame(separate_paren_groups("() (()) ((())) (((())))"), {"()", "(())", "((()))", "(((())))"})); + assert(g_issame(separate_paren_groups("(()(())((())))"), {"(()(())((())))"})); + assert(g_issame(separate_paren_groups("( ) (( )) (( )( ))"), {"()", "(())", "(()())"})); +} \ No newline at end of file diff --git a/ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/go/evaluation/go.mod b/ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/go/evaluation/go.mod new file mode 100644 index 00000000..5fcb8d86 --- /dev/null +++ b/ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/go/evaluation/go.mod @@ -0,0 +1,28 @@ +// Copyright Huawei Technologies Co., Ltd. 2023-2024. All rights reserved. + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 + +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +module humanEval + +go 1.18 + +require ( + github.com/go-openapi/inflect v0.19.0 + github.com/stretchr/testify v1.8.0 +) + +require ( + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/go/evaluation/go.sum b/ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/go/evaluation/go.sum new file mode 100644 index 00000000..d8855707 --- /dev/null +++ b/ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/go/evaluation/go.sum @@ -0,0 +1,17 @@ +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-openapi/inflect v0.19.0 h1:9jCH9scKIbHeV9m12SmPilScz6krDxKRasNNSNPXu/4= +github.com/go-openapi/inflect v0.19.0/go.mod h1:lHpZVlpIQqLyKwJ4N+YSc9hchQy/i12fJykb83CRBH4= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/go/evaluation/vendor.tar.gz b/ais-bench_workload/experimental_tools/benchmark/ais_bench/benchmark/datasets/humanevalx/go/evaluation/vendor.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..6d6c649e558abd01c23488bb906c2d4f3e805e10 GIT binary patch literal 118261 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