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.18.tar.gz (27.8 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.18-py3-none-any.whl (32.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: depot_client-0.0.18.tar.gz
  • Upload date:
  • Size: 27.8 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.18.tar.gz
Algorithm Hash digest
SHA256 63cbb36d01fe948a4f37d331f058248b1201e9402856ac425457df46095bf4f9
MD5 f164c50c13b77b15dad276883cf81a04
BLAKE2b-256 050ac17becdbb35dde0fc30c0b445c92c588080ca39ac8f5fb4310a1bed6c521

See more details on using hashes here.

File details

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

File metadata

  • Download URL: depot_client-0.0.18-py3-none-any.whl
  • Upload date:
  • Size: 32.1 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.18-py3-none-any.whl
Algorithm Hash digest
SHA256 d9913c56a6aeea40cfe8dd135690d9b5e1b6d02e5afe0f481d7d768c65c177a1
MD5 e9c0f3387257a61972dd65bda9b2ed8c
BLAKE2b-256 6d04eecff576b2b440bbf57f8468efa7119e77872713248e2a8ab281299b6c7f

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