Skip to main content

Decart Python SDK

A Python SDK for Decart's models.

Installation

Using UV

uv add decart

Using pip

pip install decart

Documentation

For complete documentation, guides, and examples, visit: https://docs.platform.decart.ai/sdks/python

Quick Start

Image Editing (Process API)

import asyncio
import os
from decart import DecartClient, models

async def main():
    async with DecartClient(api_key=os.getenv("DECART_API_KEY")) as client:
        # Edit an image
        result = await client.process({
            "model": models.image("lucy-image-2"),
            "prompt": "Apply a painterly oil-on-canvas look while preserving the composition",
            "data": open("input.png", "rb"),
        })

        with open("output.png", "wb") as f:
            f.write(result)

asyncio.run(main())

Video Editing (Queue API)

For video editing jobs, use the queue API to submit jobs and poll for results:

async with DecartClient(api_key=os.getenv("DECART_API_KEY")) as client:
    # Submit and poll automatically
    result = await client.queue.submit_and_poll({
        "model": models.video("lucy-clip"),
        "prompt": "Restyle this footage with anime shading and vibrant neon highlights",
        "data": open("input.mp4", "rb"),
        "on_status_change": lambda job: print(f"Status: {job.status}"),
    })

    if result.status == "completed":
        with open("output.mp4", "wb") as f:
            f.write(result.data)
    else:
        print(f"Job failed: {result.error}")

Or manage the polling manually:

async with DecartClient(api_key=os.getenv("DECART_API_KEY")) as client:
    # Submit the job
    job = await client.queue.submit({
        "model": models.video("lucy-clip"),
        "prompt": "Add cinematic teal-and-orange grading and gentle film grain",
        "data": open("input.mp4", "rb"),
    })
    print(f"Job ID: {job.job_id}")

    # Poll for status
    status = await client.queue.status(job.job_id)
    print(f"Status: {status.status}")

    # Get result when completed
    if status.status == "completed":
        data = await client.queue.result(job.job_id)
        with open("output.mp4", "wb") as f:
            f.write(data)

Development

Setup with UV

# Clone the repository
git clone https://github.com/decartai/decart-python
cd decart-python

# Install UV
curl -LsSf https://astral.sh/uv/install.sh | sh

# Install all dependencies (including dev dependencies)
uv sync --all-extras

# Run tests
uv run pytest

# Run linting
uv run ruff check decart/ tests/ examples/

# Format code
uv run black decart/ tests/ examples/

# Type check
uv run mypy decart/

Common Commands

# Install dependencies
uv sync --all-extras

# Run tests with coverage
uv run pytest --cov=decart --cov-report=html

# Run examples
uv run python examples/process_video.py
uv run python examples/realtime_synthetic.py

# Update dependencies
uv lock --upgrade

Test UI

The SDK includes an interactive test UI built with Gradio for quickly testing all SDK features without writing code.

# Install Gradio
pip install gradio

# Run the test UI
python test_ui.py

Then open http://localhost:7860 in your browser.

The UI provides tabs for:

  • Image Editing - Image-to-image edits
  • Video Editing - Video-to-video edits
  • Video Restyle - Restyle videos using text prompts or reference images
  • Tokens - Create short-lived client tokens

Enter your API key at the top of the interface to start testing.

Publishing a New Version

The package is automatically published to PyPI when you create a GitHub release.

Automated Release

Use the release script to automate the entire process:

python release.py

The script will:

  1. Display the current version
  2. Prompt for the new version
  3. Update pyproject.toml
  4. Commit and push changes
  5. Create a GitHub release with release notes

The GitHub Actions workflow will automatically build, test, and publish to PyPI.

License

MIT

Download files

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

Source Distribution

decart-0.1.4.tar.gz (162.2 kB view details)

Uploaded Source

Built Distribution

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

decart-0.1.4-py3-none-any.whl (33.9 kB view details)

Uploaded Python 3

File details

Details for the file decart-0.1.4.tar.gz.

File metadata

  • Download URL: decart-0.1.4.tar.gz
  • Upload date:
  • Size: 162.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for decart-0.1.4.tar.gz
Algorithm Hash digest
SHA256 9bd910690a48c7c817592c9c3c480a5240e765c5bd03b6ceea9dba0ba93406d5
MD5 48923e1fbb21d872f8742af4b51bc1e4
BLAKE2b-256 30db14ad93109cfbe4ecd2dfb77c753c8dbb9ed24d689ec0aea2078bd5ba8351

See more details on using hashes here.

Provenance

The following attestation bundles were made for decart-0.1.4.tar.gz:

Publisher: publish.yml on DecartAI/decart-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file decart-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: decart-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 33.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for decart-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 c60e62182f5559ee0a616269b6fb1508b7566173900cb40e0501a041c0bb5e5a
MD5 0d45a46f068e2218e9f54895aec63ecd
BLAKE2b-256 b80f7ff1fcbf83e7fee099467f6e7fea175416e677d72eec37fc781476016761

See more details on using hashes here.

Provenance

The following attestation bundles were made for decart-0.1.4-py3-none-any.whl:

Publisher: publish.yml on DecartAI/decart-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.1.5

2 files

This release

0.1.4 This release

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

0.0.40

2 files

0.0.39

2 files

0.0.38

2 files

0.0.37

2 files

0.0.36

2 files

0.0.35

2 files

0.0.34

2 files

0.0.33

2 files

0.0.32

2 files

0.0.31

2 files

0.0.30

2 files

0.0.29

2 files

0.0.28

2 files

0.0.27

2 files

0.0.26

2 files

0.0.25

2 files

0.0.23

2 files

0.0.22

2 files

0.0.21

2 files

0.0.20

2 files

0.0.19

2 files

0.0.18

2 files

0.0.17

2 files

0.0.16

2 files

0.0.15

2 files

0.0.14

2 files

0.0.13

2 files

0.0.11

2 files

0.0.10

2 files

0.0.9

2 files

0.0.8

2 files

0.0.7

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

0.0.1

2 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