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)
| File | Size | Uploaded | |
|---|---|---|---|
| effing_cloud_sdk-0.1.0.tar.gz | 7.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|