Skip to main content

effing-cloud-sdk (Python)

Official Python SDK for Effing Cloud.

Mint signed render URLs for image, annie, and effie modules deployed to Effing Cloud — no manual segment construction, no need to install itsdangerous or any other third-party package.

Install

pip install effing-cloud-sdk

Zero runtime dependencies. Python 3.10+.

The PyPI distribution is named effing-cloud-sdk; the Python import name is effing_cloud_sdk (underscores).

Usage

The recommended API is the EffingCloudClient class. Configure it once with your tenant slug, project slug, and URL secret, then call mint_signed_url() for each render.

import os
from effing_cloud_sdk import EffingCloudClient

client = EffingCloudClient(
    tenant="acme",
    project="posters",
    secret=os.environ["EFFING_URL_SECRET"],
)

url = client.mint_signed_url(
    kind="effie",
    id="poster",
    props={"imageUrl": "https://cdn.example.com/sky.jpg", "duration": 5},
    bounds={"width": 1080, "height": 1920},
)

# https://fn.effing.dev/acme/posters/effie/<segment>

kind is one of "image" | "annie" | "effie" — the module type you want to invoke.

Prop naming: snake_case is fine

You can write idiomatic Python in props. The server runs a recursive snake_case → camelCase conversion on the deserialized payload before invoking your module, so {"image_url": "..."} here surfaces as props.imageUrl inside the running module. Already-camelCase keys pass through unchanged, so mixing styles works too.

One-shot function

A standalone mint_signed_url() function is also exported:

from effing_cloud_sdk import mint_signed_url

url = mint_signed_url(
    tenant="acme",
    project="posters",
    kind="effie",
    id="poster",
    props={...},
    bounds={"width": 1080, "height": 1920},
    secret=os.environ["EFFING_URL_SECRET"],
)

Tagging runs

Tags travel inside the signed segment and surface in your run / render reports. Pass them as a dict (recommended) or as a list of bare values and/or name:value strings:

url = client.mint_signed_url(
    kind="effie",
    id="poster",
    props={...},
    bounds={"width": 1080, "height": 1920},
    tags={"campaign": "summer", "env": "prod"},
)

# Array form — useful for bare tags or pre-formatted entries.
url = client.mint_signed_url(
    kind="effie",
    id="poster",
    props={...},
    bounds={"width": 1080, "height": 1920},
    tags=["vip", "env:prod"],
)

Tag names in the dict form must not contain : — that character is reserved as the name/value separator in the array form.

Custom base URL

EffingCloudClient(
    tenant="acme",
    project="posters",
    secret=os.environ["EFFING_URL_SECRET"],
    base_url="https://fn.example.com",
)

API

All public callables are keyword-only — pass every argument by name.

EffingCloudClient(*, tenant, project, secret, base_url="https://fn.effing.dev")

Argument Type Default Description
tenant str — Your tenant slug.
project str — Your project slug.
secret str — URL secret from effing-cloud url-secret.
base_url str https://fn.effing.dev Override for self-hosted or staging endpoints.

client.mint_signed_url(*, kind, id, props, bounds, tags=None) -> str

Returns the fully-qualified signed URL.

mint_signed_url(*, tenant, project, kind, id, props, bounds, secret, tags=None, base_url=...)

Standalone equivalent.

Types

FnKind = Literal["image", "annie", "effie"]
FnTags = Mapping[str, str] | Sequence[str]

class FnBounds(TypedDict):
    width: int
    height: int

Metadata

Release files for effing-cloud-sdk 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for effing-cloud-sdk 0.1.0
File Size Uploaded
effing_cloud_sdk-0.1.0.tar.gz 7.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for effing-cloud-sdk 0.1.0
File Interpreter ABI Platform
effing_cloud_sdk-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 13.5 kB

Release files / effing_cloud_sdk-0.1.0.tar.gz

Download URL effing_cloud_sdk-0.1.0.tar.gz
Size 7.2 kB
Tags Source
SHA-256 checksum
How to use checksums
97f358b53b53251fec8e743646da16c7a5c42924236aa1c7ae2f7b6315de0bad
BLAKE2b-256 checksum
How to use checksums
a94b0aad2b9c624725618a2eaf0ead0db2905c0d543b4cf6d41ef4b8da499177
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.5

Release files / effing_cloud_sdk-0.1.0-py3-none-any.whl

Download URL effing_cloud_sdk-0.1.0-py3-none-any.whl
Size 6.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
95ee760d9987853043566dca3fe8700a79773378d100901ae06e1849014c7291
BLAKE2b-256 checksum
How to use checksums
0541ba26ad08c9e70f3070930c533a6fddeb8196983f994fd3b9944872ab4489
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.5

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 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