Xenfra SDK: Core engine and utilities for the Xenfra platform.
Project description
Xenfra Python SDK
The official, open-source Python SDK for interacting with the Xenfra API.
This SDK provides a simple and Pythonic interface for developers and AI Agents to programmatically manage infrastructure, deployments, and other platform resources.
Installation
pip install xenfra-sdk
Basic Usage
Initialize the client with your API token (or ensure the XENFRA_TOKEN environment variable is set).
import os
from xenfra_sdk import XenfraClient
from xenfra_sdk.exceptions import XenfraAPIError
client = XenfraClient(token=os.getenv("XENFRA_TOKEN"))
try:
projects = client.projects.list()
for p in projects:
print(f"Found project: {p.name} (Status: {p.status})")
except XenfraAPIError as e:
print(f"API Error: {e.detail}")
Usage for Agentic Workflows
The Xenfra SDK is designed to be used as a "tool" by AI Agents (e.g., OpenAI Assistants). The Pydantic models are compatible with function-calling schemas, allowing an agent to easily call these methods.
Here is a conceptual example of how an agent might use the SDK to fulfill a user's request.
# This is a conceptual representation of an agent's internal logic.
# The agent would be configured with functions that call these SDK methods.
def list_all_projects():
"""Lists all available projects in the Xenfra account."""
return client.projects.list()
def create_new_deployment(project_name: str, git_repo: str, branch: str = "main"):
"""
Creates a new deployment for a project.
Args:
project_name: The name for the new deployment.
git_repo: The URL of the git repository to deploy.
branch: The branch to deploy (defaults to 'main').
"""
return client.deployments.create(
project_name=project_name,
git_repo=git_repo,
branch=branch,
framework="fastapi" # Framework detection would be part of a more complex agent
)
# --- Agent Execution Flow ---
# User prompt: "Deploy my new app from github.com/user/my-app"
# 1. Agent decides which tool to use: `create_new_deployment`
# 2. Agent extracts parameters:
# - project_name = "my-app" (inferred)
# - git_repo = "https://github.com/user/my-app"
# 3. Agent calls the tool:
# create_new_deployment(
# project_name="my-app",
# git_repo="https://github.com/user/my-app"
# )
Error Handling
The SDK uses custom exceptions for clear error handling. All API-related errors will raise a XenfraAPIError, which contains the status_code and a detail message from the API response.
from xenfra_sdk.exceptions import XenfraAPIError, AuthenticationError
try:
# Make an API call
...
except AuthenticationError as e:
print("Authentication failed. Please check your token.")
except XenfraAPIError as e:
print(f"An API error occurred with status {e.status_code}: {e.detail}")
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xenfra_sdk-0.1.1.tar.gz.
File metadata
- Download URL: xenfra_sdk-0.1.1.tar.gz
- Upload date:
- Size: 25.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
edd4222e86177b8c4590fe38d8e0f5ee6bcb2e7aa6bfc53d5ef9cbff197a0c68
|
|
| MD5 |
a054dd0170ad83f6208093d030f2b2d7
|
|
| BLAKE2b-256 |
f548c57ae8f88f2e2e2f57ac90940e97ac02d0a1ad45ec7b8cd4d48cbf6de715
|
File details
Details for the file xenfra_sdk-0.1.1-py3-none-any.whl.
File metadata
- Download URL: xenfra_sdk-0.1.1-py3-none-any.whl
- Upload date:
- Size: 35.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b761aeefa2741c3812f5fd910a64fab615b8caa73e53aa8382e60eda1cecb44c
|
|
| MD5 |
72b9e0b67bf3d2ea09e64397a445a238
|
|
| BLAKE2b-256 |
64e781042e250d575e01fddd0d63bae6a84c49fd4ee8af279d4c86e06613038a
|