OpenSpace python-heredoc-fallback
Use shell Python heredoc as fallback when code sandbox fails
install
source · Clone the upstream repo
git clone https://github.com/HKUDS/OpenSpace
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/HKUDS/OpenSpace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/gdpval_bench/skills/python-heredoc-fallback" ~/.claude/skills/hkuds-openspace-python-heredoc-fallback && rm -rf "$T"
manifest:
gdpval_bench/skills/python-heredoc-fallback/SKILL.mdsource content
Python Heredoc Fallback for Code Execution
When to Use
Use this pattern when
execute_code_sandbox fails with e2b initialization errors, sandbox connection issues, or other execution environment problems. This is especially reliable for file generation tasks.
Core Pattern
Instead of
execute_code_sandbox, run Python code directly in the shell using a heredoc:
python3 << 'EOF' # Your Python code here import sys print("Python code executing in shell") EOF
Key Syntax Rules
- Use single-quoted EOF (
) to prevent shell variable expansion within the Python code<< 'EOF' - No indentation before EOF - the closing delimiter must be at the start of the line
- Install packages first if needed, before the Python heredoc block
Common Use Cases
1. Matplotlib Graph Generation
python3 << 'EOF' import matplotlib.pyplot as plt import pandas as pd # Load data data = pd.read_excel('input.xlsx') # Create visualization plt.figure(figsize=(10, 6)) plt.plot(data['x'], data['y']) plt.xlabel('X Label') plt.ylabel('Y Label') plt.title('Graph Title') plt.savefig('output_graph.png', dpi=300, bbox_inches='tight') plt.close() print("Graph saved successfully") EOF
2. Python-docx Document Creation
pip install python-docx -q python3 << 'EOF' from docx import Document from docx.shared import Inches, Pt from docx.enum.text import WD_ALIGN_PARAGRAPH doc = Document() # Add title title = doc.add_heading('Document Title', 0) title.alignment = WD_ALIGN_PARAGRAPH.CENTER # Add sections doc.add_heading('Section 1', level=1) doc.add_paragraph('Content for section 1.') # Add table table = doc.add_table(rows=3, cols=3) table.style = 'Table Grid' # Save document doc.save('output.docx') print("Document created successfully") EOF
3. General File Operations
python3 << 'EOF' import json import os # Read input file with open('input.json', 'r') as f: data = json.load(f) # Process data result = {'processed': True, 'items': len(data)} # Write output with open('output.json', 'w') as f: json.dump(result, f, indent=2) print(f"Processed {result['items']} items") EOF
Best Practices
- Install dependencies first: Run
before the Python block if packages aren't guaranteed to be availablepip install package-name -q - Verify file paths: Files are read from and written to the current working directory
- Add print statements: Include progress/output messages to verify execution succeeded
- Close resources: Explicitly close matplotlib figures and file handles
- Handle errors gracefully: Add try/except blocks for production code
Troubleshooting
| Issue | Solution |
|---|---|
| Module not found | Add before Python block |
| File not found | Verify file exists in current directory with |
| Permission denied | Check file permissions and directory write access |
| Syntax errors | Ensure proper Python indentation within heredoc |
Advantages Over execute_code_sandbox
- No initialization overhead - runs immediately in existing shell
- Persistent environment - maintains state across multiple commands
- Direct file system access - no sandbox isolation issues
- Full system Python - access to all installed packages
- Reliable for large files - no sandbox size restrictions