Skip to main content

Callables Python SDK

Turn Python functions into forms, schedules and run history your whole team can use. Decorate a function with @deploy, push the repo, and people run it from the Callables web app — no Python needed on their end.

pip install callables

This installs the call command. Code written for the SDK's old name, shipfn, keeps working: from shipfn import deploy and the shipfn command are aliases for this package.

from typing import Literal
from callables import deploy

@deploy(title="Weekly report", secrets=["SALES_API_TOKEN"], schedule="0 9 * * MON")
def weekly_report(region: Literal["NA", "EMEA", "APAC"] = "NA", days: int = 7) -> list[dict]:
    """Deals closed in the last N days."""
    ...
  • Inputs come from the type hints: str, int, float, bool, date, Literal[...]/Enum (dropdowns), list[...], optional (X | None) and Pydantic models. Defaults become prefilled values.
  • Results are shown by return type: str as Markdown, list[dict] (or a DataFrame) as a table with CSV download, dict/Pydantic model as a key-value list, None as "done".
  • Files in: a File parameter becomes an upload field. Your function gets a File with .path, .name, .read_text(), .read_bytes() and .open(). Limit the picker with Annotated[File, accept(".csv", ".xlsx")].
  • Files out: return a File (or a list[File]) and people get download buttons. To hand back files alongside another result, call save_file(path_or_bytes, name=...). Files are kept for 24 hours by default.
  • Secrets you list are injected as environment variables at run time (os.environ["SALES_API_TOKEN"]); set their values in the Callables console.
  • Schedules are cron expressions, in UTC.
from typing import Annotated
from callables import deploy, File, accept, save_file

@deploy(title="Clean up a sales sheet")
def clean(sheet: Annotated[File, accept(".csv")]) -> File:
    rows = sheet.read_text().splitlines()
    save_file(f"{len(rows)} rows".encode(), name="summary.txt")   # an extra download
    out = "/tmp/clean.csv"
    ...
    return File(out, name=f"clean-{sheet.name}")

Try a function on your machine before pushing:

call check                                   # problems a deploy would hit, with fixes (exit 1 on errors)
call weekly_report --region EMEA --days 30   # every function is also a CLI command
call local weekly_report -i region=EMEA -i days=30
call local clean -i sheet=@sales.csv         # @path passes a file; outputs land in ./callables-output/
call manifest                                # what the platform will see

Coding agents

The SDK carries its own guide for Claude Code, Cursor, Codex and other agents:

call init   # an example automation, .claude/skills/callables/SKILL.md and an AGENTS.md section
call docs   # print the full guide

call check --json and call local ... --json print one JSON object on stdout, so an agent can check and run functions and read the result. Re-run call init after upgrading the SDK to refresh the instructions. Your own files and the rest of AGENTS.md are left alone.

On the platform, builds use the server's own copy of this package, so you don't need to add callables to your requirements.txt (it's fine if you do).

Developing the SDK

python3 -m venv .venv && .venv/bin/pip install -e ".[dev]"
.venv/bin/pytest

The platform (shipfn-api) depends on this package and copies the installed version into every build, so a release only reaches deployed functions once the API is updated to it. See RELEASING.md.

Metadata

Release files for callables 0.1.1

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

Source distribution (sdist)

Source distribution for callables 0.1.1
File Size Uploaded Provenance Actions
callables-0.1.1.tar.gz 38.1 kB With provenance Details for callables-0.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for callables 0.1.1
File Interpreter ABI Platform Actions
callables-0.1.1-py3-none-any.whl Python 3 none any Details for callables-0.1.1-py3-none-any.whl

Total release size: 72.2 kB

Release files / callables-0.1.1.tar.gz

Download URL callables-0.1.1.tar.gz
Size 38.1 kB
Tags Source
SHA-256 checksum
How to use checksums
c138ae236becf0fc6797ebd7346ccdb49c8c1b042ba68f059b99ad3cf5db3be9
BLAKE2b-256 checksum
How to use checksums
1bfebec5c6722dce20ab06ed20e21e7592b427d2aacae4830ec2d36259b46682
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

Release files / callables-0.1.1-py3-none-any.whl

Download URL callables-0.1.1-py3-none-any.whl
Size 34.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
505d1fff38b8db413ac4a7c839c274c3b599cd9f3a3540b6bd1a691eac5f1752
BLAKE2b-256 checksum
How to use checksums
d9813d9623d653f3f3c7c7f06fd30e7ce5e0ad03f3c17eb2975507b217a7d7e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

Security for callables 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for callables-0.1.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 28, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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