Spaces:
Sleeping
Sleeping
| import os | |
| import re | |
| import yaml | |
| import subprocess | |
| import sys | |
| class Colors: | |
| GREEN = '\033[92m' | |
| RED = '\033[91m' | |
| YELLOW = '\033[93m' | |
| RESET = '\033[0m' | |
| BOLD = '\033[1m' | |
| def print_status(check, passed, details=""): | |
| if passed: | |
| print(f"{Colors.GREEN}[PASS]{Colors.RESET} {check}") | |
| if details: print(f" -> {details}") | |
| else: | |
| print(f"{Colors.RED}[FAIL]{Colors.RESET} {check}") | |
| if details: print(f" -> {Colors.RED}{details}{Colors.RESET}") | |
| def run_checks(): | |
| print(f"\n{Colors.BOLD}=== ECOGRID-OPENENV HACKATHON COMPLIANCE AUDIT ==={Colors.RESET}\n") | |
| all_passed = True | |
| # 1. OpenEnv Compliance | |
| try: | |
| with open("openenv.yaml", "r") as f: | |
| data = yaml.safe_load(f) | |
| has_obs = "observation_space" in data | |
| has_act = "action_space" in data | |
| has_tasks = "tasks" in data | |
| passed = has_obs and has_act and has_tasks | |
| print_status("OpenEnv Schema Compliance", passed, "Checked openenv.yaml for mandatory fields.") | |
| if not passed: all_passed = False | |
| except FileNotFoundError: | |
| print_status("OpenEnv Schema Compliance", False, "openenv.yaml not found.") | |
| all_passed = False | |
| # 2. Training Script (wandb) | |
| try: | |
| with open("train_unsloth.py", "r") as f: | |
| content = f.read() | |
| passed = "wandb" in content and "report_to=\"wandb\"" in content.replace(" ", "") | |
| print_status("Training Script (W&B)", passed, "Verified Weights & Biases integration.") | |
| if not passed: all_passed = False | |
| except FileNotFoundError: | |
| print_status("Training Script (W&B)", False, "train_unsloth.py not found.") | |
| all_passed = False | |
| # 3. Proof of Training | |
| has_reward = os.path.exists("docs/reward_curve.png") | |
| has_loss = os.path.exists("docs/loss_curve.png") | |
| passed = has_reward and has_loss | |
| print_status("Proof of Training Plots", passed, "Verified reward and loss PNGs exist.") | |
| if not passed: all_passed = False | |
| # 4. README Completeness | |
| try: | |
| with open("README.md", "r", encoding="utf-8") as f: | |
| content = f.read() | |
| has_space = "huggingface.co/spaces/" in content | |
| has_blog = "BLOG.md" in content or "blog" in content.lower() | |
| has_img = "docs/reward_curve.png" in content | |
| passed = has_space and has_blog and has_img | |
| print_status("README Completeness", passed, "Verified HF Space links, Blog links, and embedded images.") | |
| if not passed: all_passed = False | |
| except FileNotFoundError: | |
| print_status("README Completeness", False, "README.md not found.") | |
| all_passed = False | |
| # 5. Environment Health | |
| try: | |
| cmd = [sys.executable, "scripts/benchmark.py", "--seeds", "1"] | |
| env = os.environ.copy() | |
| env["PYTHONPATH"] = os.getcwd() | |
| result = subprocess.run(cmd, capture_output=True, text=True, timeout=10, env=env) | |
| passed = result.returncode == 0 | |
| details = "Ran benchmark.py to test environment." if passed else result.stderr.strip().split('\n')[-1] | |
| print_status("Environment Run Test", passed, details) | |
| if not passed: all_passed = False | |
| except Exception as e: | |
| print_status("Environment Run Test", False, str(e)) | |
| all_passed = False | |
| print(f"\n{Colors.BOLD}=== FINAL VERDICT ==={Colors.RESET}") | |
| if all_passed: | |
| print(f"{Colors.GREEN}FULLY COMPLIANT & COMPETITIVE{Colors.RESET}") | |
| print("All hackathon requirements are satisfied. The project is ready for submission.") | |
| sys.exit(0) | |
| else: | |
| print(f"{Colors.RED}AT RISK{Colors.RESET}") | |
| print("One or more mandatory hackathon checks failed. Do not submit until fixed.") | |
| sys.exit(1) | |
| if __name__ == "__main__": | |
| run_checks() | |