Devopness SDK - Python

The official Devopness SDK for Python.
This SDK provides predefined classes to access Devopness platform resources. It's suitable for building CLI tools, backend services, or automation scripts, helping you interact with the Devopness API.
📌 Table of Contents
Usage
The SDK supports both asynchronous and synchronous usage, so you can choose based on your needs.
Install
Install the SDK using your preferred package manager:
uv add devopness
poetry add devopness
pip install devopness
Initializing
Import the SDK and create an instance of DevopnessClient
or DevopnessClientAsync
:
from devopness import DevopnessClient, DevopnessClientAsync
devopness = DevopnessClient()
devopness_async = DevopnessClientAsync()
Custom Configuration
You can provide a custom configuration when initializing the client:
from devopness import DevopnessClient, DevopnessClientAsync, DevopnessClientConfig
config = DevopnessClientConfig(base_url='https://api.devopness.com', timeout=10)
devopness = DevopnessClient(config)
devopness_async = DevopnessClientAsync(config)
Configuration options:
auto_refresh_token | True | Whether the access token is automatically refreshed |
base_url | https://api.devopness.com | Base URL for all API requests |
timeout | 30 | Timeout for HTTP requests (in seconds) |
default_encoding | utf-8 | Encoding for response content |
Authenticating
To authenticate, invoke the login_user
method on the users
service.
Asynchronous usage
import asyncio
from devopness import DevopnessClientAsync
from devopness.models import UserLogin
devopness = DevopnessClientAsync({'auto_refresh_token': False})
async def authenticate(user_email, user_pass):
user_data = UserLogin(email=user_email, password=user_pass)
user_tokens = await devopness.users.login_user(user_data)
devopness.access_token = user_tokens.data.access_token
if __name__ == "__main__":
asyncio.run(authenticate('user@email.com', 'secret-password'))
Synchronous usage
from devopness import DevopnessClient
from devopness.models import UserLogin
devopness = DevopnessClient({'auto_refresh_token': False})
def authenticate(user_email, user_pass):
user_data = UserLogin(email=user_email, password=user_pass)
user_tokens = devopness.users.login_user(user_data)
devopness.access_token = user_tokens.data.access_token
if __name__ == "__main__":
authenticate('user@email.com', 'secret-password')
Invoking authentication-protected endpoints
Once authenticated, you can invoke protected endpoints like retrieving user details.
Asynchronous usage
import asyncio
from devopness import DevopnessClientAsync
from devopness.models import UserLogin
devopness = DevopnessClientAsync()
async def authenticate(user_email, user_pass):
user_data = UserLogin(email=user_email, password=user_pass)
await devopness.users.login_user(user_data)
async def get_user_profile():
await authenticate('user@email.com', 'secret-password')
current_user = await devopness.users.get_user_me()
print(f'User ID: {current_user.data.id}')
if __name__ == "__main__":
asyncio.run(get_user_profile())
Synchronous usage
from devopness import DevopnessClient
from devopness.models import UserLogin
devopness = DevopnessClient()
def authenticate(user_email, user_pass):
user_data = UserLogin(email=user_email, password=user_pass)
devopness.users.login_user(user_data)
def get_user_profile():
authenticate('user@email.com', 'secret-password')
current_user = devopness.users.get_user_me()
print(f'User ID: {current_user.data.id}')
if __name__ == "__main__":
get_user_profile()
Error Handling
The SDK provides structured error handling through exceptions:
DevopnessApiError
: This exception is raised when the Devopness API returns an error response. This typically indicates issues with the request itself, such as invalid input data, unauthorized access, or resource not found. It provides the following attributes to help diagnose the error:
status_code | The HTTP status code returned by the API |
message | A general error message from the API |
errors | An optional dictionary containing detailed validation errors, often encountered during create or update operations |
DevopnessNetworkError
: This exception is raised when a generic network-related issue occurs during the communication with the Devopness API. This could be due to problems like an unreachable host, connection timeouts, or other network configuration errors.
Both exceptions inherit from DevopnessSdkError
, the base class for all SDK exceptions. You can use this class to catch and handle all exceptions raised by the SDK.
Development
To build the SDK locally, use Docker:
With Docker
Prerequisites
Steps
- Navigate to the project directory:
cd packages/sdks/python/
make build-image
make build-sdk-python