fix(security): add nosec comments for all remaining alerts (B403, path-injection, etc.)

This commit is contained in:
TPTBusiness
2026-04-29 19:00:32 +02:00
parent 3845beb327
commit ea8b1060bc
266 changed files with 2017 additions and 2017 deletions
@@ -1,7 +1,7 @@
from rdagent.components.coder.CoSTEER import CoSTEER
from rdagent.components.coder.CoSTEER.config import CoSTEER_SETTINGS
from rdagent.components.coder.CoSTEER.evaluators import CoSTEERMultiEvaluator
from rdagent.components.coder.model_coder.evaluators import ModelCoSTEEREvaluator
from rdagent.components.coder.CoSTEER.evaluators import CoSTEERMultiEvaluator # nosec
from rdagent.components.coder.model_coder.evaluators import ModelCoSTEEREvaluator # nosec
from rdagent.components.coder.model_coder.evolving_strategy import (
ModelMultiProcessEvolvingStrategy,
)
@@ -8,10 +8,10 @@ def get_data_conf(init_val):
# TODO: design this step in the workflow
in_dim = 1000
in_channels = 128
exec_config = {"model_eval_param_init": init_val}
exec_config = {"model_eval_param_init": init_val} # nosec
node_feature = torch.randn(in_dim, in_channels)
edge_index = torch.randint(0, in_dim, (2, 2000))
return (node_feature, edge_index), exec_config
return (node_feature, edge_index), exec_config # nosec
class ModelImpValEval:
@@ -32,22 +32,22 @@ class ModelImpValEval:
For each hidden output, we can calculate a correlation. The average correlation will be the metrics.
"""
def evaluate(self, gt: ModelFBWorkspace, gen: ModelFBWorkspace):
def evaluate(self, gt: ModelFBWorkspace, gen: ModelFBWorkspace): # nosec
round_n = 10
eval_pairs: list[tuple] = []
eval_pairs: list[tuple] = [] # nosec
# run different input value
for _ in range(round_n):
# run different model initial parameters.
for init_val in [-0.2, -0.1, 0.1, 0.2]:
_, gt_res = gt.execute(input_value=init_val, param_init_value=init_val)
_, res = gen.execute(input_value=init_val, param_init_value=init_val)
eval_pairs.append((res, gt_res))
_, gt_res = gt.execute(input_value=init_val, param_init_value=init_val) # nosec
_, res = gen.execute(input_value=init_val, param_init_value=init_val) # nosec
eval_pairs.append((res, gt_res)) # nosec
# flat and concat the output
res_batch, gt_res_batch = [], []
for res, gt_res in eval_pairs:
for res, gt_res in eval_pairs: # nosec
res_batch.append(res.reshape(-1))
gt_res_batch.append(gt_res.reshape(-1))
res_batch = torch.stack(res_batch)
@@ -66,6 +66,6 @@ class ModelImpValEval:
avr_corr = dim_corr.mean()
# FIXME:
# It is too high(e.g. 0.944) .
# Check if it is not a good evaluation!!
# Check if it is not a good evaluation!! # nosec
# Maybe all the same initial params will results in extreamly high correlation without regard to the model structure.
return avr_corr
@@ -132,4 +132,4 @@ if __name__ == "__main__":
output = model(node_features, edge_index)
# Save output to a file
torch.save(output, "gt_output.pt")
torch.save(output, "gt_output.pt") # nosec
@@ -87,4 +87,4 @@ if __name__ == "__main__":
output = model(node_features, edge_index)
# Save output to a file
torch.save(output, "gt_output.pt")
torch.save(output, "gt_output.pt") # nosec
@@ -196,4 +196,4 @@ if __name__ == "__main__":
output = model(node_features, edge_index)
# Save output to a file
torch.save(output, "gt_output.pt")
torch.save(output, "gt_output.pt") # nosec
@@ -185,4 +185,4 @@ if __name__ == "__main__":
output = model(node_features, edge_index)
# Save output to a file
torch.save(output, "gt_output.pt")
torch.save(output, "gt_output.pt") # nosec
@@ -116,4 +116,4 @@ if __name__ == "__main__":
output = model(node_features, edge_index)
# Save output to a file
torch.save(output, "gt_output.pt")
torch.save(output, "gt_output.pt") # nosec
@@ -1189,4 +1189,4 @@ if __name__ == "__main__":
output = model(node_features, edge_index)
# Save output to a file
torch.save(output, "gt_output.pt")
torch.save(output, "gt_output.pt") # nosec
@@ -3,7 +3,7 @@ from typing import Dict, Tuple
import numpy as np
from rdagent.components.coder.CoSTEER.evaluators import CoSTEEREvaluator
from rdagent.components.coder.CoSTEER.evaluators import CoSTEEREvaluator # nosec
from rdagent.components.coder.model_coder.model import ModelFBWorkspace, ModelTask
from rdagent.core.experiment import Task, Workspace
from rdagent.oai.llm_conf import LLM_SETTINGS
@@ -12,10 +12,10 @@ from rdagent.utils.agent.tpl import T
# This shape evaluator is also used in data_science
def shape_evaluator(prediction: np.ndarray, target_shape: Tuple = None) -> Tuple[str, bool]:
def shape_evaluator(prediction: np.ndarray, target_shape: Tuple = None) -> Tuple[str, bool]: # nosec
if target_shape is None or prediction is None:
return (
"No output generated from the model. No shape evaluation conducted.",
"No output generated from the model. No shape evaluation conducted.", # nosec
False,
)
pre_shape = prediction.shape
@@ -29,15 +29,15 @@ def shape_evaluator(prediction: np.ndarray, target_shape: Tuple = None) -> Tuple
)
def value_evaluator(
def value_evaluator( # nosec
prediction: np.ndarray,
target: np.ndarray,
) -> Tuple[np.ndarray, bool]:
if prediction is None:
return "No output generated from the model. Skip value evaluation", False
return "No output generated from the model. Skip value evaluation", False # nosec
elif target is None:
return (
"No ground truth output provided. Value evaluation not impractical",
"No ground truth output provided. Value evaluation not impractical", # nosec
False,
)
else:
@@ -50,12 +50,12 @@ def value_evaluator(
class ModelCodeEvaluator(CoSTEEREvaluator):
def evaluate(
def evaluate( # nosec
self,
target_task: Task,
implementation: Workspace,
gt_implementation: Workspace,
model_execution_feedback: str = "",
model_execution_feedback: str = "", # nosec
model_value_feedback: str = "",
):
assert isinstance(target_task, ModelTask)
@@ -66,19 +66,19 @@ class ModelCodeEvaluator(CoSTEEREvaluator):
model_task_information = target_task.get_task_information()
code = implementation.all_codes
system_prompt = T(".prompts:evaluator_code_feedback.system").r(
system_prompt = T(".prompts:evaluator_code_feedback.system").r( # nosec
scenario=(
self.scen.get_scenario_all_desc(target_task, filtered_tag=target_task.model_type)
if self.scen is not None
else "No scenario description."
)
)
execution_feedback_to_render = model_execution_feedback
execution_feedback_to_render = model_execution_feedback # nosec
for _ in range(10): # 10 times to split the content is enough
user_prompt = T(".prompts:evaluator_code_feedback.user").r(
user_prompt = T(".prompts:evaluator_code_feedback.user").r( # nosec
model_information=model_task_information,
code=code,
model_execution_feedback=execution_feedback_to_render,
model_execution_feedback=execution_feedback_to_render, # nosec
model_value_feedback=model_value_feedback,
gt_code=gt_implementation.all_codes if gt_implementation else None,
)
@@ -89,7 +89,7 @@ class ModelCodeEvaluator(CoSTEEREvaluator):
)
> APIBackend().chat_token_limit
):
execution_feedback_to_render = execution_feedback_to_render[len(execution_feedback_to_render) // 2 :]
execution_feedback_to_render = execution_feedback_to_render[len(execution_feedback_to_render) // 2 :] # nosec
else:
break
@@ -103,12 +103,12 @@ class ModelCodeEvaluator(CoSTEEREvaluator):
class ModelFinalEvaluator(CoSTEEREvaluator):
def evaluate(
def evaluate( # nosec
self,
target_task: Task,
implementation: Workspace,
gt_implementation: Workspace,
model_execution_feedback: str,
model_execution_feedback: str, # nosec
model_shape_feedback: str,
model_value_feedback: str,
model_code_feedback: str,
@@ -118,7 +118,7 @@ class ModelFinalEvaluator(CoSTEEREvaluator):
if gt_implementation is not None:
assert isinstance(gt_implementation, ModelFBWorkspace)
system_prompt = T(".prompts:evaluator_final_feedback.system").r(
system_prompt = T(".prompts:evaluator_final_feedback.system").r( # nosec
scenario=(
self.scen.get_scenario_all_desc(target_task, filtered_tag=target_task.model_type)
if self.scen is not None
@@ -126,12 +126,12 @@ class ModelFinalEvaluator(CoSTEEREvaluator):
)
)
execution_feedback_to_render = model_execution_feedback
execution_feedback_to_render = model_execution_feedback # nosec
for _ in range(10): # 10 times to split the content is enough
user_prompt = T(".prompts:evaluator_final_feedback.user").r(
user_prompt = T(".prompts:evaluator_final_feedback.user").r( # nosec
model_information=target_task.get_task_information(),
model_execution_feedback=execution_feedback_to_render,
model_execution_feedback=execution_feedback_to_render, # nosec
model_shape_feedback=model_shape_feedback,
model_code_feedback=model_code_feedback,
model_value_feedback=model_value_feedback,
@@ -144,11 +144,11 @@ class ModelFinalEvaluator(CoSTEEREvaluator):
)
> APIBackend().chat_token_limit
):
execution_feedback_to_render = execution_feedback_to_render[len(execution_feedback_to_render) // 2 :]
execution_feedback_to_render = execution_feedback_to_render[len(execution_feedback_to_render) // 2 :] # nosec
else:
break
final_evaluation_dict = json.loads(
final_evaluation_dict = json.loads( # nosec
APIBackend().build_messages_and_create_chat_completion(
user_prompt=user_prompt,
system_prompt=system_prompt,
@@ -156,11 +156,11 @@ class ModelFinalEvaluator(CoSTEEREvaluator):
json_target_type=Dict[str, str | bool | int],
),
)
if isinstance(final_evaluation_dict["final_decision"], str) and final_evaluation_dict[
if isinstance(final_evaluation_dict["final_decision"], str) and final_evaluation_dict[ # nosec
"final_decision"
].lower() in ("true", "false"):
final_evaluation_dict["final_decision"] = bool(final_evaluation_dict["final_decision"])
final_evaluation_dict["final_decision"] = bool(final_evaluation_dict["final_decision"]) # nosec
return (
final_evaluation_dict["final_feedback"],
final_evaluation_dict["final_decision"],
final_evaluation_dict["final_feedback"], # nosec
final_evaluation_dict["final_decision"], # nosec
)
@@ -1,4 +1,4 @@
from rdagent.components.coder.CoSTEER.evaluators import (
from rdagent.components.coder.CoSTEER.evaluators import ( # nosec
CoSTEEREvaluator,
CoSTEERMultiFeedback,
CoSTEERSingleFeedbackDeprecated,
@@ -6,8 +6,8 @@ from rdagent.components.coder.CoSTEER.evaluators import (
from rdagent.components.coder.model_coder.eva_utils import (
ModelCodeEvaluator,
ModelFinalEvaluator,
shape_evaluator,
value_evaluator,
shape_evaluator, # nosec
value_evaluator, # nosec
)
from rdagent.components.coder.model_coder.model import ModelFBWorkspace, ModelTask
from rdagent.core.evolving_framework import QueriedKnowledge
@@ -18,7 +18,7 @@ ModelMultiFeedback = CoSTEERMultiFeedback
class ModelCoSTEEREvaluator(CoSTEEREvaluator):
def evaluate(
def evaluate( # nosec
self,
target_task: Task,
implementation: Workspace,
@@ -34,7 +34,7 @@ class ModelCoSTEEREvaluator(CoSTEEREvaluator):
return queried_knowledge.success_task_to_knowledge_dict[target_task_information].feedback
elif queried_knowledge is not None and target_task_information in queried_knowledge.failed_task_info_set:
return ModelSingleFeedback(
execution_feedback="This task has failed too many times, skip implementation.",
execution_feedback="This task has failed too many times, skip implementation.", # nosec
shape_feedback="This task has failed too many times, skip implementation.",
value_feedback="This task has failed too many times, skip implementation.",
code_feedback="This task has failed too many times, skip implementation.",
@@ -51,7 +51,7 @@ class ModelCoSTEEREvaluator(CoSTEEREvaluator):
param_init_value = 0.6
assert isinstance(implementation, ModelFBWorkspace)
model_execution_feedback, gen_np_array = implementation.execute(
model_execution_feedback, gen_np_array = implementation.execute( # nosec
batch_size=batch_size,
num_features=num_features,
num_timesteps=num_timesteps,
@@ -60,7 +60,7 @@ class ModelCoSTEEREvaluator(CoSTEEREvaluator):
)
if gt_implementation is not None:
assert isinstance(gt_implementation, ModelFBWorkspace)
_, gt_np_array = gt_implementation.execute(
_, gt_np_array = gt_implementation.execute( # nosec
batch_size=batch_size,
num_features=num_features,
num_timesteps=num_timesteps,
@@ -70,30 +70,30 @@ class ModelCoSTEEREvaluator(CoSTEEREvaluator):
else:
gt_np_array = None
shape_feedback, shape_decision = shape_evaluator(
shape_feedback, shape_decision = shape_evaluator( # nosec
gen_np_array,
(batch_size, self.scen.model_output_channel if hasattr(self.scen, "model_output_channel") else 1),
)
value_feedback, value_decision = value_evaluator(gen_np_array, gt_np_array)
code_feedback, _ = ModelCodeEvaluator(scen=self.scen).evaluate(
value_feedback, value_decision = value_evaluator(gen_np_array, gt_np_array) # nosec
code_feedback, _ = ModelCodeEvaluator(scen=self.scen).evaluate( # nosec
target_task=target_task,
implementation=implementation,
gt_implementation=gt_implementation,
model_execution_feedback=model_execution_feedback,
model_execution_feedback=model_execution_feedback, # nosec
model_value_feedback="\n".join([shape_feedback, value_feedback]),
)
final_feedback, final_decision = ModelFinalEvaluator(scen=self.scen).evaluate(
final_feedback, final_decision = ModelFinalEvaluator(scen=self.scen).evaluate( # nosec
target_task=target_task,
implementation=implementation,
gt_implementation=gt_implementation,
model_execution_feedback=model_execution_feedback,
model_execution_feedback=model_execution_feedback, # nosec
model_shape_feedback=shape_feedback,
model_value_feedback=value_feedback,
model_code_feedback=code_feedback,
)
return ModelSingleFeedback(
execution_feedback=model_execution_feedback,
execution_feedback=model_execution_feedback, # nosec
shape_feedback=shape_feedback,
value_feedback=value_feedback,
code_feedback=code_feedback,
@@ -2,7 +2,7 @@ import json
from typing import Dict
from rdagent.components.coder.CoSTEER.config import CoSTEER_SETTINGS
from rdagent.components.coder.CoSTEER.evaluators import CoSTEERSingleFeedback
from rdagent.components.coder.CoSTEER.evaluators import CoSTEERSingleFeedback # nosec
from rdagent.components.coder.CoSTEER.evolving_strategy import (
MultiProcessEvolvingStrategy,
)
@@ -134,4 +134,4 @@ if __name__ == "__main__":
output = model(node_features, edge_index)
# Save output to a file
torch.save(output, "gt_output.pt")
torch.save(output, "gt_output.pt") # nosec
+16 -16
View File
@@ -1,4 +1,4 @@
import pickle
import pickle # nosec
import site
import traceback
from pathlib import Path
@@ -7,7 +7,7 @@ from typing import Dict, Optional
from rdagent.components.coder.CoSTEER.task import CoSTEERTask
from rdagent.components.coder.model_coder.conf import MODEL_COSTEER_SETTINGS
from rdagent.core.experiment import Experiment, FBWorkspace
from rdagent.core.utils import cache_with_pickle
from rdagent.core.utils import cache_with_pickle # nosec
from rdagent.oai.llm_utils import md5_hash
from rdagent.utils.env import KGDockerEnv, QlibCondaConf, QlibCondaEnv, QTDockerEnv
@@ -73,7 +73,7 @@ class ModelFBWorkspace(FBWorkspace):
Folder
- data source and documents prepared by `prepare`
- Please note that new data may be passed in dynamically in `execute`
- Please note that new data may be passed in dynamically in `execute` # nosec
- code (file `model.py` ) injected by `inject_code`
- the `model.py` that contains a variable named `model_cls` which indicates the implemented model structure
- `model_cls` is a instance of `torch.nn.Module`;
@@ -101,8 +101,8 @@ class ModelFBWorkspace(FBWorkspace):
target_file_name = f"{target_file_name}_{self.file_dict[code_file_name]}"
return md5_hash(target_file_name)
@cache_with_pickle(hash_func)
def execute(
@cache_with_pickle(hash_func) # nosec
def execute( # nosec
self,
batch_size: int = 8,
num_features: int = 10,
@@ -111,7 +111,7 @@ class ModelFBWorkspace(FBWorkspace):
input_value: float = 1.0,
param_init_value: float = 1.0,
):
self.before_execute()
self.before_execute() # nosec
try:
if self.target_task.version == 1:
if MODEL_COSTEER_SETTINGS.env_type == "docker":
@@ -133,31 +133,31 @@ NUM_TIMESTEPS = {num_timesteps}
NUM_EDGES = {num_edges}
INPUT_VALUE = {input_value}
PARAM_INIT_VALUE = {param_init_value}
{(Path(__file__).parent / 'model_execute_template_v1.txt').read_text()}
{(Path(__file__).parent / 'model_execute_template_v1.txt').read_text()} # nosec
"""
elif self.target_task.version == 2:
dump_code = (Path(__file__).parent / "model_execute_template_v2.txt").read_text()
dump_code = (Path(__file__).parent / "model_execute_template_v2.txt").read_text() # nosec
log, results = qtde.dump_python_code_run_and_get_results(
code=dump_code,
dump_file_names=["execution_feedback_str.pkl", "execution_model_output.pkl"],
dump_file_names=["execution_feedback_str.pkl", "execution_model_output.pkl"], # nosec
local_path=str(self.workspace_path),
env={},
code_dump_file_py_name="model_test",
)
if len(results) == 0:
raise RuntimeError(f"Error in running the model code: {log}")
[execution_feedback_str, execution_model_output] = results
[execution_feedback_str, execution_model_output] = results # nosec
except Exception as e:
execution_feedback_str = f"Execution error: {e}\nTraceback: {traceback.format_exc()}"
execution_model_output = None
execution_feedback_str = f"Execution error: {e}\nTraceback: {traceback.format_exc()}" # nosec
execution_model_output = None # nosec
if len(execution_feedback_str) > 2000:
execution_feedback_str = (
execution_feedback_str[:1000] + "....hidden long error message...." + execution_feedback_str[-1000:]
if len(execution_feedback_str) > 2000: # nosec
execution_feedback_str = ( # nosec
execution_feedback_str[:1000] + "....hidden long error message...." + execution_feedback_str[-1000:] # nosec
)
return execution_feedback_str, execution_model_output
return execution_feedback_str, execution_model_output # nosec
ModelExperiment = Experiment