sai1912 commited on
Commit
d86a3f9
·
verified ·
1 Parent(s): 91ad1b7

Upload folder using huggingface_hub

Browse files
Files changed (2) hide show
  1. app.py +14 -5
  2. validate.sh +158 -0
app.py CHANGED
@@ -321,6 +321,13 @@ def reset_episode(req: ResetRequest = None):
321
  "done": False, "baseline_rows": baseline,
322
  "chaos_fixed": False, "reward_history": [],
323
  })
 
 
 
 
 
 
 
324
 
325
  return {
326
  "status": "success",
@@ -476,12 +483,14 @@ def step_environment(action: StepAction):
476
 
477
  @app.get("/state", tags=["Environment"])
478
  def get_state():
 
 
479
  return {
480
- "task_id": "task_2_medium",
481
- "current_sql": TASKS["task_2_medium"]["broken_sql"],
482
- "step_count": 0,
483
- "done": False,
484
- "schema": TASKS["task_2_medium"]["schema_info"],
485
  }
486
 
487
  @app.get("/tasks", tags=["System"])
 
321
  "done": False, "baseline_rows": baseline,
322
  "chaos_fixed": False, "reward_history": [],
323
  })
324
+ else:
325
+ # Non-duckdb tasks also need session tracking
326
+ CURRENT_SESSION.update({
327
+ "task_id": task_id, "con": None, "step_count": 0,
328
+ "done": False, "baseline_rows": None,
329
+ "chaos_fixed": False, "reward_history": [],
330
+ })
331
 
332
  return {
333
  "status": "success",
 
483
 
484
  @app.get("/state", tags=["Environment"])
485
  def get_state():
486
+ task_id = CURRENT_SESSION.get("task_id", "task_1_easy")
487
+ task = TASKS.get(task_id, TASKS["task_1_easy"])
488
  return {
489
+ "task_id": task_id,
490
+ "current_sql": task["broken_sql"],
491
+ "step_count": CURRENT_SESSION.get("step_count", 0),
492
+ "done": CURRENT_SESSION.get("done", False),
493
+ "schema": task["schema_info"],
494
  }
495
 
496
  @app.get("/tasks", tags=["System"])
validate.sh ADDED
@@ -0,0 +1,158 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ set -uo pipefail
2
+
3
+ DOCKER_BUILD_TIMEOUT=600
4
+ if [ -t 1 ]; then
5
+ RED='\033[0;31m'
6
+ GREEN='\033[0;32m'
7
+ YELLOW='\033[1;33m'
8
+ BOLD='\033[1m'
9
+ NC='\033[0m'
10
+ else
11
+ RED='' GREEN='' YELLOW='' BOLD='' NC=''
12
+ fi
13
+
14
+ run_with_timeout() {
15
+ local secs="$1"; shift
16
+ if command -v timeout &>/dev/null; then
17
+ timeout "$secs" "$@"
18
+ elif command -v gtimeout &>/dev/null; then
19
+ gtimeout "$secs" "$@"
20
+ else
21
+ "$@" &
22
+ local pid=$!
23
+ ( sleep "$secs" && kill "$pid" 2>/dev/null ) &
24
+ local watcher=$!
25
+ wait "$pid" 2>/dev/null
26
+ local rc=$?
27
+ kill "$watcher" 2>/dev/null
28
+ wait "$watcher" 2>/dev/null
29
+ return $rc
30
+ fi
31
+ }
32
+
33
+ portable_mktemp() {
34
+ local prefix="${1:-validate}"
35
+ mktemp "${TMPDIR:-/tmp}/${prefix}-XXXXXX" 2>/dev/null || mktemp
36
+ }
37
+
38
+ CLEANUP_FILES=()
39
+ cleanup() { rm -f "${CLEANUP_FILES[@]+"${CLEANUP_FILES[@]}"}"; }
40
+ trap cleanup EXIT
41
+
42
+ PING_URL="${1:-}"
43
+ REPO_DIR="${2:-.}"
44
+
45
+ if [ -z "$PING_URL" ]; then
46
+ printf "Usage: %s <ping_url> [repo_dir]\n" "$0"
47
+ printf "\n"
48
+ printf " ping_url Your HuggingFace Space URL (e.g. https://your-space.hf.space)\n"
49
+ printf " repo_dir Path to your repo (default: current directory)\n"
50
+ exit 1
51
+ fi
52
+
53
+ if ! REPO_DIR="$(cd "$REPO_DIR" 2>/dev/null && pwd)"; then
54
+ printf "Error: directory '%s' not found\n" "${2:-.}"
55
+ exit 1
56
+ fi
57
+ PING_URL="${PING_URL%/}"
58
+ export PING_URL
59
+ PASS=0
60
+
61
+ log() { printf "[%s] %b\n" "$(date -u +%H:%M:%S)" "$*"; }
62
+ pass() { log "${GREEN}PASSED${NC} -- $1"; PASS=$((PASS + 1)); }
63
+ fail() { log "${RED}FAILED${NC} -- $1"; }
64
+ hint() { printf " ${YELLOW}Hint:${NC} %b\n" "$1"; }
65
+ stop_at() {
66
+ printf "\n"
67
+ printf "${RED}${BOLD}Validation stopped at %s.${NC} Fix the above before continuing.\n" "$1"
68
+ exit 1
69
+ }
70
+
71
+ printf "\n"
72
+ printf "${BOLD}========================================${NC}\n"
73
+ printf "${BOLD} OpenEnv Submission Validator${NC}\n"
74
+ printf "${BOLD}========================================${NC}\n"
75
+ log "Repo: $REPO_DIR"
76
+ log "Ping URL: $PING_URL"
77
+ printf "\n"
78
+
79
+ log "${BOLD}Step 1/3: Pinging HF Space${NC} ($PING_URL/reset) ..."
80
+
81
+ CURL_OUTPUT=$(portable_mktemp "validate-curl")
82
+ CLEANUP_FILES+=("$CURL_OUTPUT")
83
+ HTTP_CODE=$(curl -s -o "$CURL_OUTPUT" -w "%{http_code}" -X POST \
84
+ -H "Content-Type: application/json" -d '{}' \
85
+ "$PING_URL/reset" --max-time 30 2>"$CURL_OUTPUT" || printf "000")
86
+
87
+ if [ "$HTTP_CODE" = "200" ]; then
88
+ pass "HF Space is live and responds to /reset"
89
+ elif [ "$HTTP_CODE" = "000" ]; then
90
+ fail "HF Space not reachable (connection failed or timed out)"
91
+ hint "Check your network connection and that the Space is running."
92
+ hint "Try: curl -s -o /dev/null -w '%%{http_code}' -X POST $PING_URL/reset"
93
+ stop_at "Step 1"
94
+ else
95
+ fail "HF Space /reset returned HTTP $HTTP_CODE (expected 200)"
96
+ hint "Make sure your Space is running and the URL is correct."
97
+ hint "Try opening $PING_URL in your browser first."
98
+ stop_at "Step 1"
99
+ fi
100
+
101
+ log "${BOLD}Step 2/3: Running docker build${NC} ..."
102
+
103
+ if ! command -v docker &>/dev/null; then
104
+ fail "docker command not found"
105
+ hint "Install Docker: https://docs.docker.com/get-docker/"
106
+ stop_at "Step 2"
107
+ fi
108
+
109
+ if [ -f "$REPO_DIR/Dockerfile" ]; then
110
+ DOCKER_CONTEXT="$REPO_DIR"
111
+ elif [ -f "$REPO_DIR/server/Dockerfile" ]; then
112
+ DOCKER_CONTEXT="$REPO_DIR/server"
113
+ else
114
+ fail "No Dockerfile found in repo root or server/ directory"
115
+ stop_at "Step 2"
116
+ fi
117
+
118
+ log " Found Dockerfile in $DOCKER_CONTEXT"
119
+
120
+ BUILD_OK=false
121
+ BUILD_OUTPUT=$(run_with_timeout "$DOCKER_BUILD_TIMEOUT" docker build "$DOCKER_CONTEXT" 2>&1) && BUILD_OK=true
122
+
123
+ if [ "$BUILD_OK" = true ]; then
124
+ pass "Docker build succeeded"
125
+ else
126
+ fail "Docker build failed (timeout=${DOCKER_BUILD_TIMEOUT}s)"
127
+ printf "%s\n" "$BUILD_OUTPUT" | tail -20
128
+ stop_at "Step 2"
129
+ fi
130
+
131
+ log "${BOLD}Step 3/3: Running openenv validate${NC} ..."
132
+
133
+ if ! command -v openenv &>/dev/null; then
134
+ fail "openenv command not found"
135
+ hint "Install it: pip install openenv-core"
136
+ stop_at "Step 3"
137
+ fi
138
+
139
+ VALIDATE_OK=false
140
+ VALIDATE_OUTPUT=$(cd "$REPO_DIR" && openenv validate 2>&1) && VALIDATE_OK=true
141
+
142
+ if [ "$VALIDATE_OK" = true ]; then
143
+ pass "openenv validate passed"
144
+ [ -n "$VALIDATE_OUTPUT" ] && log " $VALIDATE_OUTPUT"
145
+ else
146
+ fail "openenv validate failed"
147
+ printf "%s\n" "$VALIDATE_OUTPUT"
148
+ stop_at "Step 3"
149
+ fi
150
+
151
+ printf "\n"
152
+ printf "${BOLD}========================================${NC}\n"
153
+ printf "${GREEN}${BOLD} All 3/3 checks passed!${NC}\n"
154
+ printf "${GREEN}${BOLD} Your submission is ready to submit.${NC}\n"
155
+ printf "${BOLD}========================================${NC}\n"
156
+ printf "\n"
157
+
158
+ exit 0