Spaces:
Running
Running
import os | |
import sys | |
import streamlit as st | |
from tempfile import NamedTemporaryFile | |
def main(): | |
try: | |
# Get the code from secrets | |
code = os.environ.get("MAIN_CODE") | |
if not code: | |
st.error("⚠️ The application code wasn't found in secrets. Please add the MAIN_CODE secret.") | |
return | |
# Try to fix any potential string issues | |
try: | |
# Just to verify the code is syntactically valid before writing to file | |
compile(code, '<string>', 'exec') | |
except SyntaxError as e: | |
st.error(f"⚠️ Syntax error in the application code: {str(e)}") | |
st.info("Please check your code for unterminated strings or other syntax errors.") | |
# Show the problematic line if possible | |
if hasattr(e, 'lineno') and hasattr(e, 'text'): | |
st.code(f"Line {e.lineno}: {e.text}") | |
st.write(f"Error occurs near character position: {e.offset}") | |
return | |
# Create a temporary Python file | |
with NamedTemporaryFile(suffix='.py', delete=False, mode='w') as tmp: | |
tmp.write(code) | |
tmp_path = tmp.name | |
# Execute the code | |
exec(compile(code, tmp_path, 'exec'), globals()) | |
# Clean up the temporary file | |
try: | |
os.unlink(tmp_path) | |
except: | |
pass | |
except Exception as e: | |
st.error(f"⚠️ Error loading or executing the application: {str(e)}") | |
import traceback | |
st.code(traceback.format_exc()) | |
if __name__ == "__main__": | |
main() |