Python Sync SDK (clients/python/sync/): - 712 lines core implementation with 13 public APIs - HMAC-SHA256 authentication with OpenSSL - 4-tier credential system (args > env > ~/.unsandbox > ./accounts.csv) - Language caching with 1-hour TTL - 64+ comprehensive unit tests - Full documentation (README, USAGE, IMPLEMENTATION) Python Async SDK (clients/python/async/): - 705 lines async implementation using aiohttp - Full async/await pattern support - Exponential backoff polling strategy - 200+ test cases with ~95% coverage - 7 working async examples - 5 documentation guides C SDK (clients/c/): - 823 lines C implementation - Header file with 15 public functions - OpenSSL HMAC-SHA256 + libcurl HTTP client - Language detection for 48 file extensions - 22/22 tests passing - Proper memory management Examples: - 14 Python examples (7 sync, 7 async) with docstrings - 4 C examples (hello_world, fibonacci, error_handling, credentials) - All examples ready for pipeline validation - Expected outputs documented for validation Pipeline Integration: - Updated .gitlab-ci.yml with gcc/musl-dev for C compilation - Enhanced validate-examples.sh with C compilation support - Updated detect-changes.sh to recognize python/c changes - Updated generate-matrix.sh with python/c in matrix - E2E tests updated with mock Python/C examples - All tests passing (30+ test cases) Documentation: - PYTHON_C_INTEGRATION_SUMMARY.md (452 lines) - Complete API references for both SDKs - Quick start guides - Pattern documentation - Error handling guides
335 lines
8.3 KiB
Markdown
335 lines
8.3 KiB
Markdown
# Unsandbox Python SDK (Synchronous) - Complete Index
|
|
|
|
## Quick Links
|
|
|
|
- **Installation**: See [setup.py](/home/fox/git/un-inception/clients/python/sync/setup.py)
|
|
- **Quick Start**: See [README.md](/home/fox/git/un-inception/clients/python/sync/README.md)
|
|
- **Full Usage Guide**: See [USAGE.md](/home/fox/git/un-inception/clients/python/sync/USAGE.md)
|
|
- **Implementation Details**: See [IMPLEMENTATION.md](/home/fox/git/un-inception/clients/python/sync/IMPLEMENTATION.md)
|
|
- **Completion Status**: See [COMPLETION_SUMMARY.md](/home/fox/git/un-inception/clients/python/sync/COMPLETION_SUMMARY.md)
|
|
|
|
## Core Implementation
|
|
|
|
### Main Module
|
|
- **`src/un.py`** (712 lines)
|
|
- Core client implementation
|
|
- All public APIs for code execution, job management, language support, and snapshots
|
|
- HMAC-SHA256 authentication
|
|
- Exponential backoff polling
|
|
- Language caching system
|
|
|
|
### Package Initialization
|
|
- **`src/__init__.py`** (40 lines)
|
|
- Package exports
|
|
- Version information
|
|
- Public API definition
|
|
|
|
## Documentation
|
|
|
|
### User Documentation
|
|
1. **`README.md`** (240 lines)
|
|
- API reference
|
|
- Installation instructions
|
|
- Quick start examples
|
|
- Language support overview
|
|
- Caching information
|
|
- Error handling examples
|
|
|
|
2. **`USAGE.md`** (390 lines)
|
|
- Comprehensive usage guide
|
|
- 8 basic examples
|
|
- Authentication guide (4 tiers)
|
|
- Error handling patterns
|
|
- Advanced usage scenarios
|
|
- Performance tips
|
|
- Debugging instructions
|
|
- Troubleshooting guide
|
|
|
|
3. **`IMPLEMENTATION.md`** (450 lines)
|
|
- Architecture overview
|
|
- Public API documentation
|
|
- Authentication system details
|
|
- Caching mechanism
|
|
- Language detection
|
|
- Error handling
|
|
- Request handling
|
|
- Testing information
|
|
- Performance characteristics
|
|
- Known limitations
|
|
|
|
4. **`COMPLETION_SUMMARY.md`**
|
|
- Completion status of all requirements
|
|
- Task checklist
|
|
- Code quality metrics
|
|
- Testing results
|
|
- File inventory
|
|
|
|
5. **`INDEX.md`** (this file)
|
|
- Complete file index
|
|
- Quick navigation
|
|
|
|
## Configuration Files
|
|
|
|
- **`setup.py`** (50 lines)
|
|
- Package metadata
|
|
- Dependencies
|
|
- Development extras
|
|
- Python version requirements
|
|
|
|
- **`MANIFEST.in`** (5 lines)
|
|
- Distribution manifest
|
|
- Include files in package
|
|
|
|
- **`pytest.ini`** (10 lines)
|
|
- Test configuration
|
|
- Test markers
|
|
- Output options
|
|
|
|
- **`LICENSE`** (10 lines)
|
|
- Public domain declaration
|
|
- No restrictions
|
|
|
|
## Test Suite (6 files, 64+ tests)
|
|
|
|
### Credential Tests
|
|
- **`tests/test_credentials.py`** (100 lines, 6 tests)
|
|
- Function arguments priority
|
|
- Environment variable resolution
|
|
- CSV file loading
|
|
- Comment handling
|
|
- Nonexistent file handling
|
|
- Missing credentials error
|
|
|
|
### Language Detection Tests
|
|
- **`tests/test_language_detection.py`** (150 lines, 15 tests)
|
|
- Python, JavaScript, TypeScript detection
|
|
- Go, Rust, C, C++ detection
|
|
- Java, Ruby, PHP, Bash detection
|
|
- Unknown extensions
|
|
- Case insensitivity
|
|
- Edge cases (empty, no extension, dot files)
|
|
|
|
### Request Signing Tests
|
|
- **`tests/test_signatures.py`** (145 lines, 10 tests)
|
|
- Basic HMAC-SHA256 signing
|
|
- GET/DELETE/POST methods
|
|
- Deterministic signatures
|
|
- Secret key variation
|
|
- Timestamp variation
|
|
- Path variation
|
|
- Special characters
|
|
|
|
### Caching Tests
|
|
- **`tests/test_caching.py`** (160 lines, 9 tests)
|
|
- Cache save and load
|
|
- TTL expiration
|
|
- Corrupted JSON handling
|
|
- Missing files
|
|
- Permission errors
|
|
- Empty lists
|
|
- Large lists
|
|
|
|
### Integration Tests (Mocked API)
|
|
- **`tests/test_integration_mock.py`** (280 lines, 13 tests)
|
|
- Synchronous execution
|
|
- Asynchronous execution
|
|
- Job status polling
|
|
- Job cancellation
|
|
- Job listing
|
|
- Language fetching
|
|
- Header validation
|
|
- Error handling
|
|
- Network timeout handling
|
|
|
|
### Real-World Scenarios
|
|
- **`tests/test_real_world_scenarios.py`** (310 lines, 11 tests)
|
|
- Fibonacci calculation
|
|
- JSON processing
|
|
- Multi-language execution
|
|
- Long-running jobs with polling
|
|
- Job cancellation
|
|
- Compilation error handling
|
|
- Timeout handling
|
|
- Batch job execution
|
|
- Language auto-detection workflow
|
|
- Available languages listing
|
|
- Multiple jobs listing
|
|
- Scientific computation
|
|
|
|
### Test Package Init
|
|
- **`tests/__init__.py`** (1 line)
|
|
- Test package marker
|
|
|
|
## Examples (7 files)
|
|
|
|
### Code Examples (executed on unsandbox)
|
|
- **`examples/hello_world.py`**
|
|
- Simple print statement
|
|
- Can be executed directly
|
|
|
|
- **`examples/fibonacci.py`**
|
|
- Recursive Fibonacci function
|
|
- Can be executed directly
|
|
|
|
### SDK Client Examples (use the SDK)
|
|
- **`examples/hello_world_client.py`**
|
|
- SDK client for hello world
|
|
- Demonstrates basic usage
|
|
- Includes error handling
|
|
- Shows credential usage
|
|
|
|
- **`examples/fibonacci_client.py`**
|
|
- SDK client for Fibonacci
|
|
- Shows async execution
|
|
- Demonstrates job polling
|
|
|
|
- **`examples/json_processing.py`**
|
|
- JSON parsing and serialization
|
|
- Shows data processing workflow
|
|
|
|
- **`examples/http_request.py`**
|
|
- HTTP request handling
|
|
- Shows network access
|
|
|
|
- **`examples/file_operations.py`**
|
|
- File I/O operations
|
|
- Shows file handling
|
|
|
|
## Verification Tools
|
|
|
|
- **`verify_sdk.py`** (160 lines)
|
|
- Automated verification script
|
|
- Tests all major components
|
|
- No external dependencies required
|
|
- Provides detailed output
|
|
- Run with: `python3 verify_sdk.py`
|
|
|
|
## File Statistics
|
|
|
|
```
|
|
Total Lines of Code: 4,152
|
|
- Implementation: 752 lines
|
|
- Tests: 1,145 lines
|
|
- Documentation: 1,440 lines
|
|
- Configuration: 70 lines
|
|
- Verification: 160 lines
|
|
- Examples: ~585 lines
|
|
|
|
File Breakdown:
|
|
- Python source files: 20
|
|
- Documentation files: 7
|
|
- Configuration files: 4
|
|
- Example files: 7
|
|
- Total files: 38
|
|
```
|
|
|
|
## Key Metrics
|
|
|
|
### Code Quality
|
|
- Type hints: Full coverage
|
|
- Docstrings: All public functions documented
|
|
- Error handling: Comprehensive
|
|
- Test coverage: 64+ test cases
|
|
|
|
### Performance
|
|
- Local operations: < 1ms (detection, signing, credentials)
|
|
- Cache hit: < 1ms
|
|
- Cache miss: 100-500ms (API call)
|
|
|
|
### Functionality
|
|
- Public APIs: 13 functions
|
|
- Internal functions: 8
|
|
- Supported languages: 40+ (via detection)
|
|
- Test cases: 64+
|
|
|
|
## API Overview
|
|
|
|
### Execution
|
|
- `execute_code()` - Synchronous execution
|
|
- `execute_async()` - Asynchronous execution
|
|
- `get_job()` - Single job status
|
|
- `wait_for_job()` - Poll until completion
|
|
- `cancel_job()` - Cancel running job
|
|
- `list_jobs()` - List all jobs
|
|
|
|
### Languages
|
|
- `get_languages()` - Get supported languages
|
|
- `detect_language()` - Auto-detect from filename
|
|
|
|
### Snapshots
|
|
- `session_snapshot()` - Snapshot a session
|
|
- `service_snapshot()` - Snapshot a service
|
|
- `list_snapshots()` - List all snapshots
|
|
- `restore_snapshot()` - Restore a snapshot
|
|
- `delete_snapshot()` - Delete a snapshot
|
|
|
|
### Exceptions
|
|
- `CredentialsError` - Missing or invalid credentials
|
|
|
|
## Installation & Setup
|
|
|
|
### From Source
|
|
```bash
|
|
cd clients/python/sync
|
|
pip install -e .
|
|
```
|
|
|
|
### With Development Tools
|
|
```bash
|
|
pip install -e ".[dev]"
|
|
```
|
|
|
|
### Run Verification
|
|
```bash
|
|
python3 verify_sdk.py
|
|
```
|
|
|
|
### Run Tests (requires pytest)
|
|
```bash
|
|
pytest tests/ -v
|
|
pytest tests/ --cov=un
|
|
```
|
|
|
|
## Quick Start
|
|
|
|
```python
|
|
from un import execute_code
|
|
|
|
result = execute_code("python", "print('hello')")
|
|
print(result)
|
|
```
|
|
|
|
## Requirements Met
|
|
|
|
✓ Core implementation complete (execute, async, wait, jobs, languages, snapshots)
|
|
✓ HMAC-SHA256 authentication working
|
|
✓ 4-tier credential system implemented
|
|
✓ Languages caching with TTL
|
|
✓ Language detection (40+ extensions)
|
|
✓ Comprehensive error handling
|
|
✓ Full test suite (64+ tests)
|
|
✓ Documentation complete (4 main docs)
|
|
✓ Working examples (7 files)
|
|
✓ Verification script passing
|
|
✓ No compiler dependency
|
|
|
|
## Next Steps
|
|
|
|
1. Review [README.md](/home/fox/git/un-inception/clients/python/sync/README.md) for API reference
|
|
2. Check [USAGE.md](/home/fox/git/un-inception/clients/python/sync/USAGE.md) for usage examples
|
|
3. Read [IMPLEMENTATION.md](/home/fox/git/un-inception/clients/python/sync/IMPLEMENTATION.md) for technical details
|
|
4. Run `python3 verify_sdk.py` to verify everything works
|
|
5. Check `examples/` directory for working code
|
|
6. Run tests with `pytest tests/ -v` (requires pytest)
|
|
|
|
## Support
|
|
|
|
For issues or questions:
|
|
- Check troubleshooting in USAGE.md
|
|
- Review examples in examples/ directory
|
|
- Run verify_sdk.py to diagnose issues
|
|
- Check test files for usage patterns
|
|
|
|
## License
|
|
|
|
Public Domain - No restrictions, no warranty, no license required.
|