Metadata-Version: 2.4
Name: scrollcase-consumer
Version: 0.2.1
Summary: Verify, prepare, and run caller-supplied local Scrollcase boxes.
License-Expression: Apache-2.0
Project-URL: Homepage, https://scrollcase.dev
Project-URL: Repository, https://github.com/suffro/scrollcase
Project-URL: Issues, https://github.com/suffro/scrollcase/issues
Keywords: scrollcase,ed25519,scientific-computing,reproducible-environments
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Typing :: Typed
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: cryptography<47,>=42
Requires-Dist: jsonschema<5,>=4.21
Provides-Extra: test
Requires-Dist: build<2,>=1.2; extra == "test"
Requires-Dist: mypy<2,>=1.13; extra == "test"
Requires-Dist: tomli>=2; python_version < "3.11" and extra == "test"
Requires-Dist: types-jsonschema>=4.21; extra == "test"
Dynamic: license-file

# scrollcase-consumer

`scrollcase-consumer` is the typed Python API for verifying, preparing, and running a
caller-supplied local Scrollcase box:

```sh
python -m pip install scrollcase-consumer
```

```python
from scrollcase_consumer import run_box

result = run_box(
    "release.json",
    public_key_path="trusted-key.json",
    archive="box.zip",
    args=("--input", "sample.json"),
)
```

The public operations are `verify_and_extract_box`, `run_extracted_box`, and `run_box`. Verification
always precedes execution, and the child application runs with the box's own interpreter through an
argument array, never a shell.

This package does not select channels, download boxes or on-demand assets, update installations,
publish, promote, revoke, or manage application lifecycle. The caller supplies local release,
archive, trust-key, destination, and asset paths.

The repository's `src/contract/schema/` directory is the format authority. Run
`python scripts/sync_schemas.py` after an intentional schema change and
`python scripts/sync_schemas.py --check` in verification; the bundled files are generated copies,
not a second Python contract.

Repository verification:

```text
python -m unittest discover -s tests -t .
mypy src
python scripts/sync_schemas.py --check
python -m build
python scripts/check_distribution.py dist/*
```
