sift_client
¶
Sift Client Library - Python client for interacting with Sift APIs.
Overview¶
This library provides a high-level Python client for interacting with Sift APIs. It offers:
- Synchronous and asynchronous interfaces for all operations
- Strong type checking with Pydantic models
- Pythonic API design with intuitive method names
- Comprehensive filtering capabilities for queries
- Automatic type conversion between protobuf and Python types
Installation¶
Quick Start¶
Initialize the Client¶
from sift_client import SiftClient
# Initialize with credentials
client = SiftClient(
api_key="your-api-key",
grpc_url="https://grpc-api.siftstack.com",
rest_url="https://api.siftstack.com"
)
Basic Operations¶
# Get an asset
asset = client.assets.get(asset_id="asset123")
# List resources with filtering
runs = client.runs.list_(
assets=[asset.id_],
start_time_after=datetime.now() - timedelta(days=7),
limit=10
)
# Update a resource
asset.update({"tags": ["production", "v2"]})
# Create a new resource
run = client.runs.create({
"name": "Test Run",
"asset_ids": [asset.id_],
"start_time": datetime.now()
})
Async Usage¶
import asyncio
async def main():
# Use async_ accessor for async operations
asset = await client.async_.assets.get(asset_id="asset123")
runs = await client.async_.runs.list_(limit=10)
return asset, runs
result = asyncio.run(main())
Key Components¶
Resources¶
Resource APIs provide methods for interacting with Sift services. Each resource supports
operations like get(), list_(), create(), update(), and archive().
Available Resources:
client.assets- Manage physical or logical entitiesclient.runs- Manage time-bounded operational periods- etc.
See resources for detailed documentation and a complete list.
Types¶
Sift types are immutable Pydantic models representing Sift objects. They provide type-safe access to properties and convenience methods for common operations.
Available Types:
Asset,AssetUpdate- Asset resourcesRun,RunCreate,RunUpdate- Run resources- etc.
See sift_types for detailed documentation and a complete list.
Examples¶
For complete examples, see the examples directory.
Connection Configuration¶
For advanced connection options:
from sift_client.transport import SiftConnectionConfig, GrpcConfig, RestConfig
config = SiftConnectionConfig(
grpc_config=GrpcConfig(
uri="https://grpc-api.siftstack.com",
api_key="your-api-key",
use_ssl=True
),
rest_config=RestConfig(
uri="https://api.siftstack.com",
api_key="your-api-key"
)
)
client = SiftClient(connection_config=config)
Best Practices¶
- Use sync APIs for notebooks, scripts, and simple applications
- Use async APIs for high-performance services with concurrent operations
- Leverage filtering to reduce data transfer and improve performance
- Reuse client instances rather than creating new ones for each operation
- Use type hints to get full IDE support and catch errors early
| MODULE | DESCRIPTION |
|---|---|
client |
|
config |
Global configuration for the Sift client library. |
errors |
|
pytest_plugin |
|
resources |
Sift Resources - API interfaces for interacting with Sift services. |
scripts |
|
sift_types |
Sift Types - Pydantic models for Sift resources. |
transport |
|
util |
Utility modules for the sift_client package. |
| CLASS | DESCRIPTION |
|---|---|
SiftClient |
SiftClient is a high-level client for interacting with Sift's APIs. |
SiftConnectionConfig |
Configuration for Grpc and Rest connections. |
SiftClient
¶
SiftClient(
api_key: str | None = None,
grpc_url: str | None = None,
rest_url: str | None = None,
connection_config: SiftConnectionConfig | None = None,
app_url: str | None = None,
)
Bases: WithGrpcClient, WithRestClient
SiftClient is a high-level client for interacting with Sift's APIs.
It provides both synchronous and asynchronous interfaces, strong type checking, and a Pythonic API design.
Initialize the SiftClient with specific connection parameters or a connection_config.
| PARAMETER | DESCRIPTION |
|---|---|
api_key
|
The Sift API key for authentication.
TYPE:
|
grpc_url
|
The Sift gRPC API URL.
TYPE:
|
rest_url
|
The Sift REST API URL.
TYPE:
|
connection_config
|
A SiftConnectionConfig object to configure the connection behavior of the SiftClient.
TYPE:
|
app_url
|
The Sift web-app origin (e.g.
TYPE:
|
| METHOD | DESCRIPTION |
|---|---|
get_asyncio_loop |
Gets the default asyncio loop used by the gRPC client. |
| ATTRIBUTE | DESCRIPTION |
|---|---|
app_url |
The Sift web-app origin for this client, or None if it can't be determined.
TYPE:
|
assets |
Instance of the Assets API for making synchronous requests.
TYPE:
|
async_ |
Accessor for the asynchronous APIs. All asynchronous APIs are available as attributes on this accessor.
TYPE:
|
calculated_channels |
Instance of the Calculated Channels API for making synchronous requests.
TYPE:
|
channels |
Instance of the Channels API for making synchronous requests.
TYPE:
|
data_export |
Instance of the Data Export API for making synchronous requests.
TYPE:
|
data_import |
Instance of the Data Import API for making synchronous requests.
TYPE:
|
file_attachments |
Instance of the File Attachments API for making synchronous requests.
TYPE:
|
grpc_client |
The gRPC client used by the SiftClient for making gRPC API calls.
TYPE:
|
ingestion |
Instance of the Ingestion API for making synchronous requests.
TYPE:
|
jobs |
Instance of the Jobs API for making synchronous requests.
TYPE:
|
ping |
Instance of the Ping API for making synchronous requests.
TYPE:
|
reports |
Instance of the Reports API for making synchronous requests.
TYPE:
|
rest_client |
The REST client used by the SiftClient for making REST API calls.
TYPE:
|
rules |
Instance of the Rules API for making synchronous requests.
TYPE:
|
runs |
Instance of the Runs API for making synchronous requests.
TYPE:
|
tags |
Instance of the Tags API for making synchronous requests.
TYPE:
|
test_results |
Instance of the Test Results API for making synchronous requests.
TYPE:
|
app_url
property
¶
The Sift web-app origin for this client, or None if it can't be determined.
Uses the explicit override passed at construction when set, otherwise
derives the origin from the REST host for known Sift deployments (e.g.
https://api.siftstack.com -> https://app.siftstack.com). Returns
None for unrecognized hosts with no override.
TODO: Add a WithAppPage mixin on BaseType so resources (TestReport,¶
Run, ...) can expose their own web-app link from _client.app_url plus¶
a per-type path, instead of callers assembling paths by hand.¶
assets
instance-attribute
¶
Instance of the Assets API for making synchronous requests.
async_
instance-attribute
¶
async_: AsyncAPIs = AsyncAPIs(
ping=PingAPIAsync(self),
assets=AssetsAPIAsync(self),
calculated_channels=CalculatedChannelsAPIAsync(self),
channels=ChannelsAPIAsync(self),
file_attachments=FileAttachmentsAPIAsync(self),
ingestion=IngestionAPIAsync(self),
jobs=JobsAPIAsync(self),
reports=ReportsAPIAsync(self),
rules=RulesAPIAsync(self),
runs=RunsAPIAsync(self),
tags=TagsAPIAsync(self),
test_results=TestResultsAPIAsync(self),
data_export=DataExportAPIAsync(self),
data_import=DataImportAPIAsync(self),
)
Accessor for the asynchronous APIs. All asynchronous APIs are available as attributes on this accessor.
calculated_channels
instance-attribute
¶
calculated_channels: CalculatedChannelsAPI = (
CalculatedChannelsAPI(self)
)
Instance of the Calculated Channels API for making synchronous requests.
channels
instance-attribute
¶
channels: ChannelsAPI = ChannelsAPI(self)
Instance of the Channels API for making synchronous requests.
data_export
instance-attribute
¶
data_export: DataExportAPI = DataExportAPI(self)
Instance of the Data Export API for making synchronous requests.
data_import
instance-attribute
¶
data_import: DataImportAPI = DataImportAPI(self)
Instance of the Data Import API for making synchronous requests.
file_attachments
instance-attribute
¶
file_attachments: FileAttachmentsAPI = FileAttachmentsAPI(
self
)
Instance of the File Attachments API for making synchronous requests.
grpc_client
property
¶
grpc_client: GrpcClient
The gRPC client used by the SiftClient for making gRPC API calls.
ingestion
instance-attribute
¶
ingestion: IngestionAPIAsync
Instance of the Ingestion API for making synchronous requests.
jobs
instance-attribute
¶
Instance of the Jobs API for making synchronous requests.
ping
instance-attribute
¶
Instance of the Ping API for making synchronous requests.
reports
instance-attribute
¶
reports: ReportsAPI = ReportsAPI(self)
Instance of the Reports API for making synchronous requests.
rest_client
property
¶
rest_client: RestClient
The REST client used by the SiftClient for making REST API calls.
rules
instance-attribute
¶
Instance of the Rules API for making synchronous requests.
runs
instance-attribute
¶
Instance of the Runs API for making synchronous requests.
tags
instance-attribute
¶
Instance of the Tags API for making synchronous requests.
test_results
instance-attribute
¶
test_results: TestResultsAPI = TestResultsAPI(self)
Instance of the Test Results API for making synchronous requests.
get_asyncio_loop
¶
Gets the default asyncio loop used by the gRPC client.
| RETURNS | DESCRIPTION |
|---|---|
AbstractEventLoop
|
The default asyncio loop. |
SiftConnectionConfig
¶
SiftConnectionConfig(
grpc_url: str,
rest_url: str,
api_key: str,
use_ssl: bool = True,
cert_via_openssl: bool = False,
app_url: str | None = None,
)
Configuration for Grpc and Rest connections.
This class provides a unified configuration for both gRPC and REST connections, allowing for consistent settings across different transport protocols.
Initialize the connection configuration.
| PARAMETER | DESCRIPTION |
|---|---|
grpc_url
|
The URL for the gRPC service.
TYPE:
|
rest_url
|
The URL for the REST service.
TYPE:
|
api_key
|
The API key for authentication.
TYPE:
|
use_ssl
|
Whether to use SSL/TLS for secure connections.
TYPE:
|
cert_via_openssl
|
Whether to use OpenSSL for certificate validation.
TYPE:
|
app_url
|
The Sift web-app origin (e.g.
TYPE:
|
| METHOD | DESCRIPTION |
|---|---|
get_grpc_config |
Create and return a GrpcConfig with the current settings. |
get_rest_config |
Create and return a RestConfig with the current settings. |
| ATTRIBUTE | DESCRIPTION |
|---|---|
api_key |
|
app_url |
|
cert_via_openssl |
|
grpc_url |
|
rest_url |
|
use_ssl |
|
get_grpc_config
¶
Create and return a GrpcConfig with the current settings.
| RETURNS | DESCRIPTION |
|---|---|
|
A GrpcConfig object configured with this instance's settings. |
get_rest_config
¶
Create and return a RestConfig with the current settings.
| RETURNS | DESCRIPTION |
|---|---|
|
A RestConfig object configured with this instance's settings. |