Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

effing_cloud_sdk-0.1.0.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

effing_cloud_sdk-0.1.0-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

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

Hashes for effing_cloud_sdk-0.1.0.tar.gz
Algorithm Hash digest
SHA256 97f358b53b53251fec8e743646da16c7a5c42924236aa1c7ae2f7b6315de0bad
MD5 20f23540154b9103dc522fa0f30857d6
BLAKE2b-256 a94b0aad2b9c624725618a2eaf0ead0db2905c0d543b4cf6d41ef4b8da499177

See more details on using hashes here.

File details

Details for the file effing_cloud_sdk-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for effing_cloud_sdk-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 95ee760d9987853043566dca3fe8700a79773378d100901ae06e1849014c7291
MD5 2fb921fc450ac85cade219e98e6b4e1f
BLAKE2b-256 0541ba26ad08c9e70f3070930c533a6fddeb8196983f994fd3b9944872ab4489

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page