OuterProduct SDK
outerproduct-sdk owns both the caller-facing client and the
transport-independent capability contract used by managed compute. Client
exposes the generated ExecutionClient as client.execution alongside Flight
SQL, Unity Catalog, and temporary-credential vending. 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 serialization package; 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:
import outerproduct_sdk as op
from uc_client import VolumeType
volume = client.uc.create_volume(
"main",
"default",
"models",
VolumeType.MANAGED,
)
environment = client.execution.build_environment(
op.Environment(
spec=op.EnvironmentSpec(
base_image=cpu_image.name,
compute=op.ComputeSpec(cpu=2),
volumes={"/mnt/models": volume.full_name},
)
)
)
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 = 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)
Release files for outerproduct-sdk 0.1.4
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.4-cp39-abi3-win_amd64.whl | CPython 3.9 | abi3 | Windows x86-64 | Details |
| outerproduct_sdk-0.1.4-cp39-abi3-manylinux_2_28_x86_64.whl | CPython 3.9 | abi3 | Linux glibc 2.28+ x86-64 | Details |
| outerproduct_sdk-0.1.4-cp39-abi3-manylinux_2_28_aarch64.whl | CPython 3.9 | abi3 | Linux glibc 2.28+ ARM64 | Details |
| outerproduct_sdk-0.1.4-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl | CPython 3.9 | abi3 | macOS 11.0+ ARM64, macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64) | Details |
Total release size: 27.8 MB
Release files / outerproduct_sdk-0.1.4-cp39-abi3-win_amd64.whl
| Download URL | outerproduct_sdk-0.1.4-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 5.1 MB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
bf69dcc1e871e1acdd9ee526816571d1e148cb88e90e53553c40cb900c91f26c
|
|
BLAKE2b-256 checksum How to use checksums |
72bbb26dd6a16f8582bdaa76518d42e95523816f6c0d3a01d9677ab631e70a62
|
| 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.4-cp39-abi3-manylinux_2_28_x86_64.whl
| Download URL | outerproduct_sdk-0.1.4-cp39-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 6.1 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
f8d720f3b774777c90e4ac3a76dce324b0eb8eba062ed71826be13bcc30b39c1
|
|
BLAKE2b-256 checksum How to use checksums |
82bb9fe3e55c4ce3b46c4ecebdb59f9825e33771c1da86e0a000b3c23db95ecd
|
| 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.4-cp39-abi3-manylinux_2_28_aarch64.whl
| Download URL | outerproduct_sdk-0.1.4-cp39-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 5.9 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
97fbd427227e49e73905e37378a07d493d659afc773ab9dcd5b7b90c1491ff9e
|
|
BLAKE2b-256 checksum How to use checksums |
ea6af6fe8c6201ef7262ede163516eaf7a21272ff31b2f0d45044163bbdcd4ec
|
| 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.4-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | outerproduct_sdk-0.1.4-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 10.7 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 |
cb5d797f97a904d0c7b25288dcc589a02dab2740fae2a4e6a3d1427dcbb6bee7
|
|
BLAKE2b-256 checksum How to use checksums |
6be5204873ddedd665dd5a28f7f0bc837c915350a8aa45b5fd893bbc584a7ff8
|
| 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}
|