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() |