Metadata-Version: 2.4
Name: spore-host
Version: 0.1.1
Summary: Python SDK for spore.host — ephemeral EC2 compute for researchers
Project-URL: Homepage, https://spore.host
Project-URL: Documentation, https://docs.spore.host
Project-URL: Repository, https://github.com/scttfrdmn/spore-host
Project-URL: Issues, https://github.com/scttfrdmn/spore-host/issues
Author-email: Scott Friedman <scttfrdmn@gmail.com>
License-Expression: Apache-2.0
Keywords: aws,compute,ec2,hpc,research
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.9
Requires-Dist: boto3>=1.34
Requires-Dist: requests>=2.31
Provides-Extra: dev
Requires-Dist: black; extra == 'dev'
Requires-Dist: pytest-asyncio; extra == 'dev'
Requires-Dist: pytest>=7; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Provides-Extra: jupyter
Requires-Dist: ipython>=8.0; extra == 'jupyter'
Requires-Dist: ipywidgets>=8.0; extra == 'jupyter'
Description-Content-Type: text/markdown

# spore-host

Python SDK for [spore.host](https://spore.host) — ephemeral EC2 compute for researchers.

```sh
pip install spore-host
```

## Quick start

```python
import spore

# Find instances
results = spore.truffle.find("amd epyc genoa", region="us-east-1")
for r in results:
    print(r.instance_type, f"${r.on_demand_price:.4f}/hr")

# Check Spot prices
prices = spore.truffle.spot("c8a.2xlarge", region="us-east-1")
cheapest = min(prices, key=lambda p: p.spot_price)

# Manage running instances
instances = spore.spawn.list()
inst = spore.spawn.status("sim-run-42")
inst.extend("2h")     # push the TTL deadline forward
inst.wait("terminated", on_status=lambda i: print(i.state))
```

Works in Jupyter notebooks, [marimo](https://marimo.io), and plain Python scripts.

## Documentation

Full documentation at **[docs.spore.host/guides/python-sdk](https://docs.spore.host/guides/python-sdk)**

- [Jupyter example notebook](examples/jupyter_example.ipynb)
- [marimo example](examples/marimo_example.py)
- [Script example](examples/script_example.py)

## Requirements

- Python 3.9+
- AWS credentials configured (`~/.aws/credentials` or environment variables)
- `boto3`, `requests`

Optional notebook extras: `pip install "spore-host[jupyter]"`

## License

Apache 2.0 — see [LICENSE](../../LICENSE)
