OuterProduct SDK
outerproduct-sdk is the sole public Python package for OuterProduct. It owns
the natural workspace API, the recovered workflow API, runtime serialization,
Files, Unity Catalog adaptation, Flight SQL, and UC-governed object storage.
Generated clients are private transport details inside one aggregate native
extension and are not re-exported from the package root.
Natural workspace API
An API token selects one workspace, so workspace() takes no arguments.
from outerproduct_sdk import OuterProductClient, WorkspaceClient
client = OuterProductClient("token")
workspace = client.workspace()
created = await workspace.environments.create(
"containerImages/00000000-0000-0000-0000-000000000001",
cpu=1,
)
environment = workspace.get_runtime_handle(created.name)
async def add(
runtime: WorkspaceClient,
left: int,
right: int,
) -> int:
return left + right
run = await environment.submit(add, 20, 22)
result = await environment.compute(add, 20, 22)
await workspace.files.write("results/answer.txt", str(result).encode())
answer = await workspace.files.read("results/answer.txt")
Environments are immutable snapshots. Their collection implements the full
server lifecycle: create(), get(), and list(). submit() returns after
the scheduler acknowledges a durable computation. compute() submits and
polls to a terminal state, yielding to asyncio between polls. Natural computed
functions are async and receive their runtime workspace as the first positional
parameter.
Recovered workflow API
The prior attached-function workflow remains available. It shares the same private transport and value codec as the natural API.
import outerproduct_sdk as op
async def main() -> None:
async with op.init() as client:
environment = client.execution.environment(
"environments/00000000-0000-0000-0000-000000000000"
).get()
@environment.fn
def child(value: int, *, client):
return value * 2
@environment.fn
async def parent(value: int, *, client):
return await client.run(child, value)
result = await client.run(parent, 21)
Client also exposes Unity Catalog CRUD as client.uc and through direct
delegation, temporary table/volume/path/model credentials, lazy client.sql,
and the newer client.workspace() API. JSON literals, objects implementing the
SDK serialization contract, and Pydantic models can cross workflow boundaries.
Storage boundaries
workspace.files is the workspace-scoped durable Files service. Environment
volumes map Unity Catalog volumes to container paths and are materialized for
each managed invocation; they are not a provider-native POSIX mount or a
write-back filesystem.
Use store_from_url, store_from_volume, store_from_table, or
store_from_path for refresh-aware UC-governed object stores.
download_s3_prefix(client, prefix, target) securely streams such a prefix
into a local directory with bounded concurrency.
Packaging
The published distribution is one wheel with one native extension. Internal
serialization and UC object-store Python sources are vendored under
outerproduct_sdk._vendor; the wheel has no dependency on separately
published OuterProduct client packages. Third-party runtime dependencies remain
ordinary wheel dependencies.
Release files for outerproduct-sdk 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| outerproduct_sdk-0.1.7.tar.gz | 1.1 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| outerproduct_sdk-0.1.7-cp314-cp314t-manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 free-threading | Linux glibc 2.28+ x86-64 | Details |
| outerproduct_sdk-0.1.7-cp314-cp314t-manylinux_2_28_aarch64.whl | CPython 3.14 | CPython 3.14 free-threading | Linux glibc 2.28+ ARM64 | Details |
| outerproduct_sdk-0.1.7-cp312-abi3-manylinux_2_28_x86_64.whl | CPython 3.12 | abi3 | Linux glibc 2.28+ x86-64 | Details |
| outerproduct_sdk-0.1.7-cp312-abi3-manylinux_2_28_aarch64.whl | CPython 3.12 | abi3 | Linux glibc 2.28+ ARM64 | Details |
Total release size: 18.0 MB
Release files / outerproduct_sdk-0.1.7.tar.gz
| Download URL | outerproduct_sdk-0.1.7.tar.gz |
|---|---|
| Size | 1.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9e9560347488e6c4ecd89d65271e75a5bfac666ad1ac8d9f0208630319d91f8f
|
|
BLAKE2b-256 checksum How to use checksums |
1439480aa83aa2c9e5d3f8d000880307acf64e7da3b011ff9a1c30e8ee602157
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / outerproduct_sdk-0.1.7-cp314-cp314t-manylinux_2_28_x86_64.whl
| Download URL | outerproduct_sdk-0.1.7-cp314-cp314t-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.3 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
5388814cc053a4b37ebc40a7f3c18e7f2eb4b1a87f451f13c0ff03011e7db8cf
|
|
BLAKE2b-256 checksum How to use checksums |
7022a83996edc79b55cf17e115d42f36d210fcfdf49475699428d8e555febaa6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / outerproduct_sdk-0.1.7-cp314-cp314t-manylinux_2_28_aarch64.whl
| Download URL | outerproduct_sdk-0.1.7-cp314-cp314t-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 4.1 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
7fcc4b0992c77de398aeda7f9e5d735cee84c7d018acb041627fa136f6e4cbf1
|
|
BLAKE2b-256 checksum How to use checksums |
1ab81402a72af57f8adbc9cc0f9ee29c425102ca436f7ec51fd9a5358bf13b16
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / outerproduct_sdk-0.1.7-cp312-abi3-manylinux_2_28_x86_64.whl
| Download URL | outerproduct_sdk-0.1.7-cp312-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 4.3 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
17fd3d4b4a1951cb480367550ae7df257db23f03ec4c5f7ef90c1474484799ca
|
|
BLAKE2b-256 checksum How to use checksums |
1393e909919e88d4d75c7953a19f3040845cb5f20357396f7614cf6c75194d2c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / outerproduct_sdk-0.1.7-cp312-abi3-manylinux_2_28_aarch64.whl
| Download URL | outerproduct_sdk-0.1.7-cp312-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 4.1 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
d9b36f84a4075a964a1dc629fafd9ca3e5226030e1237c1036044d88e91fe7ae
|
|
BLAKE2b-256 checksum How to use checksums |
4e00b52d9fde87407760073fb795c089b72d0e1e7b3f2710a69f8fdb5199a687
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|