SQL_debug_env_v1 / patch_grader.py
sai1912's picture
Upload folder using huggingface_hub
2613a3e verified
grader_code = """
# -- Grader Endpoints (required by OpenEnv Phase 2 validator) -----------------
class GraderRequest(BaseModel):
task_id: str
fixed_sql: str = ""
explanation: str = ""
TASK_GRADER_MAP = {
"task_1_easy": lambda sql: 0.85 if ("," in sql.upper()) else 0.15,
"task_2_medium": lambda sql: 0.85 if ("GROUP BY" in sql.upper()) else 0.15,
"task_3_hard": lambda sql: 0.85 if ("PARTITION" in sql.upper()) else 0.15,
"task_4_expert": lambda sql: 0.85 if ("12-01" in sql or "2024-12" in sql) else 0.15,
"task_5_optimization": lambda sql: 0.85 if ("INNER JOIN" in sql.upper() or "JOIN" in sql.upper()) else 0.15,
"task_6_migration": lambda sql: 0.85 if ("INSERT INTO" in sql.upper() and "DROP" in sql.upper()) else 0.15,
"task_7_chaos": lambda sql: 0.85 if ("CREATE UNIQUE INDEX" in sql.upper() or "UNIQUE" in sql.upper()) else 0.15,
}
@app.post("/grader", tags=["Environment"])
def grade_submission(req: GraderRequest):
grader_fn = TASK_GRADER_MAP.get(req.task_id)
if grader_fn is None:
return {"task_id": req.task_id, "score": 0.15, "error": "Unknown task_id"}
raw_score = grader_fn(req.fixed_sql)
score = max(0.01, min(0.99, float(raw_score)))
return {"task_id": req.task_id, "score": score, "passed": score >= 0.5}
@app.get("/baseline", tags=["Environment"])
def get_baseline():
return {
"baseline_scores": {
"task_1_easy": 0.15,
"task_2_medium": 0.15,
"task_3_hard": 0.15,
"task_4_expert": 0.15,
"task_5_optimization": 0.15,
"task_6_migration": 0.15,
"task_7_chaos": 0.15,
}
}
"""
with open("app.py", "rb") as f:
content = f.read().decode("utf-8")
insert_marker = '@app.get("/web_ui", include_in_schema=False)'
if insert_marker in content and "/grader" not in content:
content = content.replace(insert_marker, grader_code + insert_marker)
with open("app.py", "wb") as f:
f.write(content.encode("utf-8"))
print("SUCCESS: Grader endpoints inserted")
elif "/grader" in content:
print("ALREADY EXISTS: /grader endpoint already present")
else:
print("ERROR: Could not find insert marker")