Railengine Ingestion SDK
Python SDK for ingesting data into Railtown AI Railengine - handles embeddings, storage, indexing, and webhook publishing.
Overview
The rail-engine-ingest package provides a Pythonic interface for publishing data to Railengine. 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
import os
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
- Webhook handler -
get_webhook_handler()returns a payload parser when the client is constructed withmodel= - 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 Railengine, install and use rail-engine.
License
MIT
Metadata
Release files for rail-engine-ingest 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rail_engine_ingest-0.2.2.tar.gz | 23.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rail_engine_ingest-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 50.1 kB
Release files / rail_engine_ingest-0.2.2.tar.gz
| Download URL | rail_engine_ingest-0.2.2.tar.gz |
|---|---|
| Size | 23.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8fc040dd46259da516c4336e8de6a9b61dafdacf911d7b54907b49ebb83369f6
|
|
BLAKE2b-256 checksum How to use checksums |
04c652655cc28ac09a46ebb3bb72c82d624bb89ff05f64b6316fc2bc27c99ca5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.22
|
Release files / rail_engine_ingest-0.2.2-py3-none-any.whl
| Download URL | rail_engine_ingest-0.2.2-py3-none-any.whl |
|---|---|
| Size | 26.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6254c76ffb6eceab170bdcb8ee2fd2b0fabe011106d5ec87a539677cb144dacb
|
|
BLAKE2b-256 checksum How to use checksums |
abb6d5b20631a5e708e9a0af186ce1d3d38017caf5a24dba19d6b3ee72f458c2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.22
|