Skip to main content

Python SDK for Y Build Runtime - Cloud Container Execution Platform

Project description

Y Build Python SDK

Official Python SDK for Y Build Runtime - a cloud container execution platform.

Installation

pip install ybuild

Quick Start

from ybuild import YBuildClient

# Initialize client
client = YBuildClient(
    api_url="https://api.ybuild.dev",
    api_key="ybld_your_api_key"
)

# Create a container
container = client.create_container(thread_id="my-session")

# Wait for container to be ready
container.wait_until_running()

# Execute commands
result = container.exec("python -c 'print(1+1)'")
print(result.stdout)  # "2"

# File operations
container.write_file("/workspace/hello.py", "print('Hello, World!')")
result = container.exec("python /workspace/hello.py")
print(result.stdout)  # "Hello, World!"

# Read files
content = container.read_file("/workspace/hello.py")
print(content)

# Stop when done
container.stop()

Features

Container Management

# Create with custom resources
container = client.create_container(
    thread_id="my-session",
    cpu_limit=2.0,           # 2 CPU cores
    memory_limit=8*1024**3,  # 8GB RAM
    timeout_seconds=3600,    # 1 hour idle timeout
)

# Get existing container
container = client.get_container("container-id")

# Or by thread ID
container = client.get_container_by_thread("my-session")

# List containers
containers = client.list_containers(status="running")

Command Execution

# Basic execution
result = container.exec("ls -la")
print(result.stdout)
print(result.exit_code)

# With timeout and working directory
result = container.exec(
    "npm install",
    timeout=120,
    workdir="/workspace/myproject"
)

# Python code
result = container.exec_python("""
import json
data = {"hello": "world"}
print(json.dumps(data))
""")

# Node.js code
result = container.exec_node("""
const x = 1 + 1;
console.log(x);
""")

# Check success
if result.success:
    print("Command succeeded!")
else:
    print(f"Failed with exit code {result.exit_code}")
    print(result.stderr)

File Operations

# Write file
container.write_file("/workspace/data.json", '{"key": "value"}')

# Read file
content = container.read_file("/workspace/data.json")

# List files
files = container.list_files("/workspace")
for f in files:
    print(f"{f.name} ({f.size} bytes)")

# Delete file
container.delete_file("/workspace/data.json")

# Check if exists
if container.file_exists("/workspace/script.py"):
    container.run_python_file("/workspace/script.py")

Package Installation

# Install Python packages
container.install_pip("requests", "pandas", "numpy")

# Install npm packages
container.install_npm("express", "lodash")

Error Handling

from ybuild import (
    YBuildError,
    AuthenticationError,
    ContainerNotFoundError,
    QuotaExceededError,
    RateLimitError,
)

try:
    container = client.create_container(thread_id="test")
except AuthenticationError:
    print("Invalid API key")
except QuotaExceededError:
    print("Container quota exceeded")
except RateLimitError as e:
    print(f"Rate limited, retry after {e.retry_after}s")
except YBuildError as e:
    print(f"API error: {e}")

Service Discovery

# Check service info
info = client.discover()
print(f"Service: {info.service}")
print(f"Version: {info.version}")
print(f"API Version: {info.api_version}")

# Health check
health = client.health()
print(health["status"])  # "healthy"

Context Manager

# Client auto-closes when done
with YBuildClient(api_url="...", api_key="...") as client:
    container = client.create_container(thread_id="test")
    result = container.exec("echo hello")
    container.stop()

Configuration

Parameter Description Default
api_url API base URL Required
api_key API key (ybld_xxx) None
timeout Request timeout (seconds) 30
max_retries Retry count for failures 3

Container Options

Option Description Default
thread_id Unique session identifier Required
cpu_limit CPU cores 1.0
memory_limit Memory in bytes 4GB
storage_limit Storage in bytes 20GB
timeout_seconds Idle timeout 7200 (2h)
image Container image Default

License

MIT

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

ybuild-0.5.0.tar.gz (12.1 kB view details)

Uploaded Source

Built Distribution

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

ybuild-0.5.0-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

Details for the file ybuild-0.5.0.tar.gz.

File metadata

  • Download URL: ybuild-0.5.0.tar.gz
  • Upload date:
  • Size: 12.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for ybuild-0.5.0.tar.gz
Algorithm Hash digest
SHA256 bbe62ec8f1cb0efc1438624764a6c8b1da52561c185bbf9128fee40fe607fdfd
MD5 b188fe0370bc43fb53f359111295bdfa
BLAKE2b-256 38971d7522273260e0f525cb92fb43a67b582d6c6207a636bb4871ced2c1e57b

See more details on using hashes here.

File details

Details for the file ybuild-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: ybuild-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 14.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for ybuild-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 591c90c9309873257e1d311d5d617b154531dd45b137189a5ab3aec1382c64e5
MD5 7db597be57f86e8a2080c8471bd13a56
BLAKE2b-256 cc31b9e48fd1b0391c35d8afd3990bf8d653c2d1b2a1510f73ee002edea8c94a

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