OuterProduct SDK
outerproduct-sdk owns both the caller-facing client and the
transport-independent capability contract used by managed compute. Client
composes workflows, container images, environments, Flight SQL, Unity Catalog,
and temporary-credential vending behind one authenticated lifecycle. It can be
passed directly to the SDK's store_from_* functions.
download_s3_prefix(client, s3_prefix, target_path) copies a UC-governed S3
prefix into a local directory with vended credentials. No Files RPC or
provider-native bucket mount is involved.
The published wheel is self-contained with respect to this monorepo. One native
extension registers the low-level control_plane_client,
file_service_client, and uc_client surfaces. The wheel also vendors the
SDK's internal sandbox and serialization packages; only third-party libraries
are installed as separate dependencies.
Unity Catalog and Flight SQL are direct client capabilities:
async with op.init() as client:
catalog = client.uc
with client.sql.cursor() as cursor:
cursor.execute("SELECT 1")
row = cursor.fetchone()
UC-governed object storage
Use the SDK's store_from_* functions to create refresh-aware stores for UC
volumes, UC tables, or raw cloud paths:
import outerproduct_sdk as op
client = op.init()
volume_store = op.store_from_volume(
client, "main.default.files", sub_path="incoming"
)
table_store = op.store_from_table(client, "main.default.events")
s3_store = op.store_from_path(
client,
"s3://example-bucket/datasets/events",
region="us-east-1",
)
Libraries with their own S3 reader can use the client's temporary-credential methods directly. For Polars, vend credentials from its callback so a lazy scan can refresh an expiring lease:
import polars as pl
s3_prefix = "s3://example-bucket/datasets/events"
def credentials() -> pl.CredentialProviderFunctionReturn:
credential, _ = client.temporary_path_credential(s3_prefix, "read")
aws = credential.aws_temp_credentials
if aws is None:
raise RuntimeError("Unity Catalog did not vend AWS credentials")
return {
"aws_access_key_id": aws.access_key_id,
"aws_secret_access_key": aws.secret_access_key,
"aws_session_token": aws.session_token,
}, credential.expiration_time // 1_000
frame = pl.scan_parquet(
f"{s3_prefix}/*.parquet",
credential_provider=credentials,
storage_options={"aws_region": "us-east-1"},
).collect()
Unity Catalog reports expiration in milliseconds; Polars expects Unix
seconds. The complete runnable version is
examples/uc_storage.py.
Environment volumes
An environment mounts no storage implicitly. Pass created Unity Catalog volume resources by absolute container path when building an environment:
from uc_client import VolumeType
volume = client.uc.create_volume(
"main",
"default",
"models",
VolumeType.MANAGED,
)
environment = await client.environments.build(
cpu_image,
volumes={"/mnt/models": volume},
)
At each workflow invocation, the runtime vends a fresh read credential through Unity Catalog and materializes the requested volume prefix at that path. Environment specs retain only the path and three-level volume name—never cloud storage locations or temporary credentials.
Run functions in an existing environment:
import outerproduct_sdk as op
async def main() -> None:
client = op.init()
environment = await client.environments.get(
"environments/00000000-0000-0000-0000-000000000000"
)
@environment.function()
def child(value: int, *, client):
return value * 2
@environment.function()
async def parent(value: int, *, client):
return await client.run(child, value)
result = await client.run(parent, 21)
Release files for outerproduct-sdk 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| outerproduct_sdk-0.1.3-cp39-abi3-win_amd64.whl | CPython 3.9 | abi3 | Windows x86-64 | Details |
| outerproduct_sdk-0.1.3-cp39-abi3-manylinux_2_28_x86_64.whl | CPython 3.9 | abi3 | Linux glibc 2.28+ x86-64 | Details |
| outerproduct_sdk-0.1.3-cp39-abi3-manylinux_2_28_aarch64.whl | CPython 3.9 | abi3 | Linux glibc 2.28+ ARM64 | Details |
| outerproduct_sdk-0.1.3-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl | CPython 3.9 | abi3 | macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64), macOS 11.0+ ARM64 | Details |
Total release size: 27.4 MB
Release files / outerproduct_sdk-0.1.3-cp39-abi3-win_amd64.whl
| Download URL | outerproduct_sdk-0.1.3-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 5.0 MB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
f6da3674f2d0fb690c819e4ab7a6064a96ac6819f387135b12bc491349eb0dac
|
|
BLAKE2b-256 checksum How to use checksums |
92328ef96f81967cf81f1508072a25a9d23bcfc5c7d183a3e6ceaa90fd60861d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / outerproduct_sdk-0.1.3-cp39-abi3-manylinux_2_28_x86_64.whl
| Download URL | outerproduct_sdk-0.1.3-cp39-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 6.0 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
531f338c5415a1ec36fedae976e0cf733e6fc7c0358d774e76930b957fc8782c
|
|
BLAKE2b-256 checksum How to use checksums |
f3d07664095c84a6bdf32f1e66c13d054b6acd488053179c3f92a9c95c060e13
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / outerproduct_sdk-0.1.3-cp39-abi3-manylinux_2_28_aarch64.whl
| Download URL | outerproduct_sdk-0.1.3-cp39-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 5.8 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
99724c70f7bedc64a1d27d1b66f46ef9bd025d2f2e003664ef36af08afcaaa49
|
|
BLAKE2b-256 checksum How to use checksums |
129afc25b2c2213197e447a98281b177736c824f46c01a0a10eaa2e0fc25965b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / outerproduct_sdk-0.1.3-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | outerproduct_sdk-0.1.3-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 10.6 MB |
| Tags | CPython 3.9 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
453c3c2c632e5d60cc85c8f14a364c00e5ae855ad75fd79265b8fe44570ed8a7
|
|
BLAKE2b-256 checksum How to use checksums |
7f4a060b9a221a889210e57b092183f182b26405e1dd6404879a85c3ca2a9e22
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.11.17 {"installer":{"name":"uv","version":"0.11.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|