Spaces:
Sleeping
Sleeping
| # code_executor.py - تنفيذ آمن للأكواد | |
| import subprocess | |
| import tempfile | |
| from pathlib import Path | |
| BUNKER_AVAILABLE = False # لا نستخدم BunkerVM في Hugging Face | |
| async def execute_code_safely(code: str, language: str = "python") -> str: | |
| if language == "python": | |
| return await _execute_python(code) | |
| elif language == "javascript": | |
| return await _execute_javascript(code) | |
| else: | |
| return f"⚠️ اللغة {language} غير مدعومة حالياً." | |
| async def _execute_python(code: str) -> str: | |
| try: | |
| with tempfile.NamedTemporaryFile(mode='w', suffix='.py', delete=False) as f: | |
| f.write(code) | |
| temp_file = f.name | |
| result = subprocess.run(['python', temp_file], capture_output=True, text=True, timeout=15) | |
| Path(temp_file).unlink() | |
| if result.returncode == 0: | |
| return f"**✅ نتيجة التنفيذ:**\n```\n{result.stdout}\n```" | |
| else: | |
| return f"**❌ خطأ أثناء التنفيذ:**\n```\n{result.stderr}\n```" | |
| except subprocess.TimeoutExpired: | |
| return "⏰ تجاوز الوقت المسموح للتنفيذ (15 ثانية)." | |
| except Exception as e: | |
| return f"⚠️ خطأ غير متوقع: {e}" | |
| async def _execute_javascript(code: str) -> str: | |
| try: | |
| with tempfile.NamedTemporaryFile(mode='w', suffix='.js', delete=False) as f: | |
| f.write(code) | |
| temp_file = f.name | |
| result = subprocess.run(['node', temp_file], capture_output=True, text=True, timeout=15) | |
| Path(temp_file).unlink() | |
| if result.returncode == 0: | |
| return f"**✅ نتيجة التنفيذ:**\n```\n{result.stdout}\n```" | |
| else: | |
| return f"**❌ خطأ في JavaScript:**\n```\n{result.stderr}\n```" | |
| except FileNotFoundError: | |
| return "⚠️ Node.js غير مثبت على النظام." | |
| except Exception as e: | |
| return f"⚠️ خطأ: {e}" |