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.5

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.5
File
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}

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

This release

0.1.5 This release

4 release files

0.1.4

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