Skip to main content

Python SDK for Flame, a distributed system for Agentic AI

Project description

Flame Python SDK

Python SDK for the Flame, a distributed system for Agentic AI.

For the user guide, see Flame Python SDK. For the detailed API surface, see API.md.

Installation

pip install flamepy

Quick Start

import flamepy

def main():
    # Create a session with the application, e.g. Agent
    session = flamepy.create_session("flmping")
    
    # Create and run a task
    resp = session.invoke(b"task input data")

    # Handle the output of task
    print(resp)

    # Close session
    session.close()

if __name__ == "__main__":
    main()

Verify A Runner Cluster

After configuring ~/.flame/flame.yaml for a running cluster with session manager, object cache, executor manager, and the flmrun template application, run:

python -m flamepy.runner.e2e

Installed wheels also provide:

flamepy-runner-e2e

The check packages a tiny temporary project and verifies Runner function calls, ObjectFuture chaining, and a stateful instance service. Use --json for machine-readable output and --python-version 3.12 to verify a specific executor Python runtime.

API Reference

Session

Represents a computing session with application, e.g. Agent, Tools.

# Create a session
session = flamepy.create_session("my-app")

# Close a session
session.close()

Task

Represents individual computing tasks within a session.

from concurrent.futures import wait

# Run a task synchronously (blocks until complete)
result = session.invoke(b"input data")

# Run a task asynchronously (returns Future immediately)
future = session.run(b"input data")
result = future.result()  # Wait for completion

# Run multiple tasks in parallel
futures = [session.run(f"input {i}".encode()) for i in range(10)]
wait(futures)  # Wait for all tasks to complete
results = [f.result() for f in futures]

# Create a task and get task object
task = session.create_task(b"input data")

# Get task status
task = session.get_task(task.id)

# Watch task progress
for update in session.watch_task(task.id):
    print(f"Task state: {update.state}")
    if update.is_completed():
        break

Error Handling

The SDK provides custom exception types for different error scenarios:

from flamepy import FlameError, FlameErrorCode

try:
    session = flamepy.create_session("flmping")
except FlameError as e:
    if e.code == FlameErrorCode.INVALID_CONFIG:
        print("Configuration error:", e.message)
    elif e.code == FlameErrorCode.INVALID_STATE:
        print("State error:", e.message)

Development

To set up the development environment:

# Clone the repository
git clone https://github.com/xflops/flame.git
cd flame/sdk/python

# Install in development mode
# Note: Use --no-build-isolation if you have setuptools>=61.0 installed
python3 -m pip install -e . --user --no-build-isolation

# Or build and install the wheel
python3 -m build --wheel --no-isolation
python3 -m pip install dist/flamepy-0.6.0-py3-none-any.whl --user

# Install development dependencies
pip install -e .[dev]

# Run tests
pytest

# Format code
ruff format

# Type checking
mypy flamepy/

Requirements

  • Python >= 3.9
  • setuptools >= 61.0 (for building from source)

Troubleshooting

If you encounter issues with the package name showing as "UNKNOWN":

  1. Make sure you have setuptools>=61.0 installed:

    python3 -m pip install --user --upgrade "setuptools>=61.0"
    
  2. Clean any stale build artifacts:

    rm -rf dist build src/flamepy.egg-info *.egg-info
    
  3. Use --no-build-isolation flag when installing:

    python3 -m pip install . --user --no-build-isolation
    

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

flamepy-0.6.0.tar.gz (89.5 kB view details)

Uploaded Source

Built Distribution

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

flamepy-0.6.0-py3-none-any.whl (80.0 kB view details)

Uploaded Python 3

File details

Details for the file flamepy-0.6.0.tar.gz.

File metadata

  • Download URL: flamepy-0.6.0.tar.gz
  • Upload date:
  • Size: 89.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for flamepy-0.6.0.tar.gz
Algorithm Hash digest
SHA256 63c9b56bf4d499d78258cb715387322238e8ca437da8c05bbe3273a58d03c7a5
MD5 3162644de4bb321513e13dbd87fbd5b5
BLAKE2b-256 abf64afe55c0e0678ec05a9b47eed5d7303b2751b680cc5c5f4f8932b93cce96

See more details on using hashes here.

File details

Details for the file flamepy-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: flamepy-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 80.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.18 {"installer":{"name":"uv","version":"0.11.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for flamepy-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0b4b34152b1d27d14ba1313d3970379822967fbc26a0aa5cf096ef1163ec7c54
MD5 4281e849a2285ee573da292f50fb2776
BLAKE2b-256 00dd79d764fd37391f0be15a6675f353be595dce633f173ea1b5f91b0ee876f7

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