Official Python SDK for Effing Cloud.
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file effing_cloud_sdk-0.1.0.tar.gz.
File metadata
- Download URL: effing_cloud_sdk-0.1.0.tar.gz
- Upload date:
- Size: 7.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97f358b53b53251fec8e743646da16c7a5c42924236aa1c7ae2f7b6315de0bad
|
|
| MD5 |
20f23540154b9103dc522fa0f30857d6
|
|
| BLAKE2b-256 |
a94b0aad2b9c624725618a2eaf0ead0db2905c0d543b4cf6d41ef4b8da499177
|
File details
Details for the file effing_cloud_sdk-0.1.0-py3-none-any.whl.
File metadata
- Download URL: effing_cloud_sdk-0.1.0-py3-none-any.whl
- Upload date:
- Size: 6.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95ee760d9987853043566dca3fe8700a79773378d100901ae06e1849014c7291
|
|
| MD5 |
2fb921fc450ac85cade219e98e6b4e1f
|
|
| BLAKE2b-256 |
0541ba26ad08c9e70f3070930c533a6fddeb8196983f994fd3b9944872ab4489
|