Python SDK for Railtown AI Rail Engine - Ingestion
Project description
Rail Engine Ingestion SDK
Python SDK for ingesting data into Railtown AI Rail Engine - handles embeddings, storage, indexing, and webhook publishing.
Overview
The rail-engine-ingest package provides a Pythonic interface for publishing data to Rail Engine. It supports async/await patterns, Pydantic model validation, and familiar configuration patterns.
Installation
uv pip install rail-engine-ingest
Quick Start
# Copy your ENGINE_TOKEN from https://cndr.railtown.ai Project Settings
import asyncio
from railtown.engine.ingest import RailengineIngest
import base64
import json
engine_token = os.getenv("ENGINE_TOKEN")
async def main():
# Initialize client
async with RailengineIngest(engine_token=engine_token) as client:
# Ingest data
data = {
"name": "Chicken Shawarma",
"meal": "lunch",
"calories": 95
}
response = await client.upsert(data)
print(f"Status: {response.status_code}")
asyncio.run(main())
Configuration
Environment Variable
ENGINE_TOKEN- Base64-encoded JSON string containing ingestion credentials
Constructor Parameters
engine_token(optional) - ENGINE_TOKEN string (if not provided, reads from env)model(optional) - Pydantic model type for validating ingested data
Features
- Single
upsert()method - Unified interface for ingesting data - Multiple data formats - Accepts Pydantic models, dictionaries, or JSON strings
- Model validation - Optional Pydantic model validation
- Direct JSON payload - Sends data directly as JSON to the ingestion endpoint
- Async/await support - Built for modern async Python applications
Error Handling
The SDK provides custom exception classes:
RailtownError- Base exceptionRailtownBadRequestError- 400 Bad RequestRailtownUnauthorizedError- 401 UnauthorizedRailtownNotFoundError- 404 Not FoundRailtownConflictError- 409 ConflictRailtownServerError- 5xx Server errors
Exceptions are raised on errors.
Requirements
- uv
- Python 3.10+
- httpx >= 0.24.0
- pydantic >= 1.10.0
Related Package
For retrieving and searching data from Rail Engine, see rail-engine-ingest.
License
MIT
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 rail_engine_ingest-0.1.7.tar.gz.
File metadata
- Download URL: rail_engine_ingest-0.1.7.tar.gz
- Upload date:
- Size: 29.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a8218a60ec6071d625679f7b8533e50b6fccdc85bde8ab8b151b354fc9f981d
|
|
| MD5 |
509c563f301f91aa42b717e109bf9b93
|
|
| BLAKE2b-256 |
4e70cb7186d7e8d1645e80680ae01866776d9f62e784291c80018fc45df03ba0
|
File details
Details for the file rail_engine_ingest-0.1.7-py3-none-any.whl.
File metadata
- Download URL: rail_engine_ingest-0.1.7-py3-none-any.whl
- Upload date:
- Size: 23.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a46d0d31e408469273d1f92e1f62dec064500473b55feb88379e9a2260e0ad6
|
|
| MD5 |
ac9b185d425aca85fe0e82d3270caa97
|
|
| BLAKE2b-256 |
b7ca555535b1308d02d30329617e4caf458b91ea570d7889e463cfd8a1bb1f08
|