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.5
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.5-cp39-abi3-win_amd64.whl | CPython 3.9 | abi3 | Windows x86-64 | Details |
| outerproduct_sdk-0.1.5-cp39-abi3-manylinux_2_28_x86_64.whl | CPython 3.9 | abi3 | Linux glibc 2.28+ x86-64 | Details |
| outerproduct_sdk-0.1.5-cp39-abi3-manylinux_2_28_aarch64.whl | CPython 3.9 | abi3 | Linux glibc 2.28+ ARM64 | Details |
| outerproduct_sdk-0.1.5-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 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64) | Details |
Total release size: 27.8 MB
Release files / outerproduct_sdk-0.1.5-cp39-abi3-win_amd64.whl
| Download URL | outerproduct_sdk-0.1.5-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 5.1 MB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
6a71e8b572b65dd821dca1ed76e643da1ea394d5c88f36f33b64e3857bb4fa1e
|
|
BLAKE2b-256 checksum How to use checksums |
9b2684786346a3a6197ab9ce2121a03606de0730061ae2e53674ce593efa23f6
|
| 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.5-cp39-abi3-manylinux_2_28_x86_64.whl
| Download URL | outerproduct_sdk-0.1.5-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 |
6fdf4050cce41b96ded5c301d8678bd384acf6b81eb38450f50d5372b9134abf
|
|
BLAKE2b-256 checksum How to use checksums |
ab163834839a2c77f18c787b6ee620e147d2f463ee19557501a3cd98f88f78ba
|
| 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.5-cp39-abi3-manylinux_2_28_aarch64.whl
| Download URL | outerproduct_sdk-0.1.5-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 |
d5bc664e86247c4288123e07940a4c3a031b5d28c2f8a94d12ba5c25f7157cf3
|
|
BLAKE2b-256 checksum How to use checksums |
692646bc28f79bd6645e85cb3e889df13473e9da144e9fa3d2d8012fa450b28b
|
| 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.5-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | outerproduct_sdk-0.1.5-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 |
22597131bd94dd23e2a24ab84e4319f496b976153363e6270127dbe8c588ef6e
|
|
BLAKE2b-256 checksum How to use checksums |
17bf03d4fc796a4ca8650e4f6751169ebf60c41fa3db95fd0c6ed13a26122013
|
| 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}
|