Skip to main content

Python client for depot.dev API

Project description

depot-client

Python client library for Depot. Provides both synchronous and asynchronous APIs through an intuitive Pythonic interface.

Installation

pip install depot-client

Usage

Basic Example

from depot_client import Client

with Client(token=DEPOT_API_TOKEN) as client:
    # Create a project
    project = client.create_project(
        name="my-project",
        region_id="us-east-1"
    )
    
    # Create a build
    with client.create_endpoint(project_id=project.project_id) as endpoint:
        # Write certificates to files
        with open("client.crt", "w") as f:
            f.write(endpoint.cert)
        with open("client.key", "w") as f:
            f.write(endpoint.key)
        with open("ca.crt", "w") as f:
            f.write(endpoint.ca_cert)

        # Use with buildctl:
        # buildctl --addr endpoint.endpoint \
        #     --tlsservername endpoint.server_name \
        #     --tlscacert ca.crt \
        #     --tlscert client.crt \
        #     --tlskey client.key \
        #     build --frontend dockerfile.v0

Async Support

The library provides async versions of all operations:

from depot_client import AsyncClient
import aiofiles

async with AsyncClient(token=DEPOT_API_TOKEN) as client:
    async with await client.create_endpoint(project_id=PROJECT_ID) as endpoint:
        # Write certificates to files
        async with aiofiles.open("client.crt", "w") as f:
            await f.write(endpoint.cert)
        async with aiofiles.open("client.key", "w") as f:
            await f.write(endpoint.key)
        async with aiofiles.open("ca.crt", "w") as f:
            await f.write(endpoint.ca_cert)

        # Use with buildctl:
        # buildctl --addr endpoint.endpoint \
        #     --tlsservername endpoint.server_name \
        #     --tlscacert ca.crt \
        #     --tlscert client.crt \
        #     --tlskey client.key \
        #     build --frontend dockerfile.v0

Project Operations

# List projects
projects = client.list_projects()

# Create and manage tokens
token = client.create_token(
    project_id=project.project_id,
    description="CI/CD token"
)

# Configure trust policies
policy = client.add_trust_policy(
    project_id=project.project_id,
    github={
        "repository_owner": "org",
        "repository": "repo"
    }
)

Build Operations

# Create and track builds
build = client.create_build(project_id=PROJECT_ID)

# Get a shareable URL for the build
share_url = client.share_build(build.build_id)

# List project builds
builds = client.list_builds(project_id=PROJECT_ID)

Features

  • Pythonic interface to Depot's API
  • Context manager support for proper resource cleanup
  • Full async/await support using AsyncClient
  • Type hints throughout for better IDE integration
  • Automatic handling of BuildKit endpoint lifecycle
  • Comprehensive error handling

API Reference

Client Methods

Project Operations

  • list_projects() -> List[ProjectInfo]: List all available projects
  • create_project(name: str, region_id: str) -> ProjectInfo: Create a new project
  • get_project(project_id: str) -> ProjectInfo: Get project details
  • delete_project(project_id: str) -> None: Delete a project
  • reset_project(project_id: str) -> None: Reset project state

Token Management

  • list_tokens(project_id: str) -> List[TokenInfo]: List project tokens
  • create_token(project_id: str, description: str) -> TokenCreationInfo: Create new token
  • update_token(token_id: str, description: str) -> None: Update token description
  • delete_token(token_id: str) -> None: Delete token

Trust Policies

  • list_trust_policies(project_id: str) -> List[TrustPolicy]: List trust policies
  • add_trust_policy(project_id: str, github: Optional[dict] = None, circleci: Optional[dict] = None, buildkite: Optional[dict] = None) -> TrustPolicy: Add trust policy
  • remove_trust_policy(project_id: str, trust_policy_id: str) -> None: Remove trust policy

Build Operations

  • create_build(project_id: str) -> Build: Create new build
  • finish_build(build_id: str, error: Optional[str] = None) -> None: Complete build
  • share_build(build_id: str) -> str: Create a shareable URL for the build
  • stop_sharing_build(build_id: str) -> None: Revoke the shareable URL for the build
  • get_build(build_id: str) -> BuildInfo: Get build info
  • list_builds(project_id: str) -> List[BuildInfo]: List project builds

BuildKit Integration

  • create_endpoint(project_id: str, platform: Optional[str] = None) -> Endpoint: Create a BuildKit endpoint

Environment Variables

  • DEPOT_API_TOKEN: Your Depot API token for authentication

Development

# Install development dependencies
pip install -e ".[test]"

# Run tests
pytest

# Build package
make build

# Generate API bindings
make protos
make api

License

Apache License 2.0

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

depot_client-0.0.22.tar.gz (28.5 kB view details)

Uploaded Source

Built Distribution

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

depot_client-0.0.22-py3-none-any.whl (33.0 kB view details)

Uploaded Python 3

File details

Details for the file depot_client-0.0.22.tar.gz.

File metadata

  • Download URL: depot_client-0.0.22.tar.gz
  • Upload date:
  • Size: 28.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for depot_client-0.0.22.tar.gz
Algorithm Hash digest
SHA256 04597445785a17089851327f6f340a68b4f56cd60a95372de2c11addceb67261
MD5 d7ad7258181c58bec173b510580ea016
BLAKE2b-256 8c7a59ec28f221ad551ed8fd536d3eec7caf31971729b8369aed85026a3fc536

See more details on using hashes here.

File details

Details for the file depot_client-0.0.22-py3-none-any.whl.

File metadata

  • Download URL: depot_client-0.0.22-py3-none-any.whl
  • Upload date:
  • Size: 33.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for depot_client-0.0.22-py3-none-any.whl
Algorithm Hash digest
SHA256 0aad6cc3e9134479de4b57773fae17c004655be431a0eb020d4f5d2dc0961408
MD5 58ee9e6b37da9168c9048e22979e721f
BLAKE2b-256 6869627c2790f850855cb02c355f2cc3f824bb830a11c3e41ba9b41b84b0e76e

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