Skip to main content

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)

Table of built distributions (wheels) for outerproduct-sdk 0.1.4
File
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}

Release history Release notifications | RSS feed

0.1.17

7 release files

0.1.16

7 release files

0.1.12

6 release files

0.1.11

6 release files

0.1.10

6 release files

0.1.9

7 release files

0.1.7

5 release files

0.1.5

4 release files

This release

0.1.4 This release

4 release files

0.1.3

4 release files

0.1.0

4 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page