Metadata-Version: 2.5
Name: solari-runloop-compat
Version: 0.1.2
Summary: Runloop-compatible Python interface over Solari Sandboxes. Not affiliated with Runloop.
Project-URL: Homepage, https://getsolari.com
Author: Solari
License: MIT
License-File: NOTICE
Keywords: compatibility,runloop,sandbox,solari
Requires-Python: >=3.9
Requires-Dist: pydantic<3,>=2
Requires-Dist: solari-core>=0.4.0
Requires-Dist: solari-sandbox>=0.3.0
Provides-Extra: test
Requires-Dist: pytest-asyncio>=0.23; extra == 'test'
Requires-Dist: pytest>=7; extra == 'test'
Description-Content-Type: text/markdown

# solari-runloop-compat (Python)

Run code written for the Runloop Python SDK on Solari Sandboxes by changing the import:

```python
# from runloop_api_client import RunloopSDK
from solari_runloop import RunloopSDK

runloop = RunloopSDK()   # SOLARI_API_KEY (or RUNLOOP_API_KEY) and, optionally, SOLARI_BASE_URL

with runloop.devbox.create(name="my-devbox") as devbox:
    devbox.file.write(file_path="main.py", contents="print('hello from a sandbox')")
    result = devbox.cmd.exec("python3 main.py")
    print(result.stdout())
```

`Runloop`, `AsyncRunloop`, `RunloopSDK`, `AsyncRunloopSDK`, the exception classes and the response types are exported
under Runloop's names. **COMPAT.md** lists exactly what is supported, what differs, and what raises
`SolariCompatUnsupported`. Unsupported features never fail silently.

*Not affiliated with Runloop.* Package and module names are provisional (see `solari_runloop/_branding.py`).
Do not publish: this is a draft for review.

## Develop
```
pip install -e ../python-core -e ../python-sandbox -e '.[test]'
pytest                                   # offline unit tests
SOLARI_API_KEY=... SOLARI_BASE_URL=https://api-sta.getsolari.com pytest -m live   # staging; deletes what it creates
```
