Railengine Retrieval SDK
Python SDK for retrieving and searching data from Railtown AI Railengine - handles embeddings, storage documents, and indexed content.
Overview
The rail-engine package provides a Pythonic interface for retrieving and searching data from Railengine. It supports async/await patterns, client-side filtering, explicit storage list paging via StorageListPage, and Pydantic model deserialization.
Installation
uv pip install rail-engine
Quick Start
import asyncio
from railtown.engine import Railengine
async def main():
# Initialize client (reads from ENGINE_PAT and ENGINE_ID env vars)
async with Railengine() as client:
page = await client.list_storage_documents(
page_number=1,
page_size=25,
)
print(f"total_count={page.total_count} total_pages={page.total_pages}")
for doc in page.items:
print(doc)
asyncio.run(main())
Configuration
Environment Variables
ENGINE_PAT(required) - Personal Access TokenENGINE_ID(required) - Engine ID (can also be passed to constructor)RAILTOWN_API_URL(optional) - Base API URL (defaults tohttps://cndr.railtown.ai/api)
Constructor Parameters
pat(optional) - PAT token (if not provided, reads fromENGINE_PATenv)engine_id(optional) - Engine ID (if not provided, reads fromENGINE_IDenv, required if not in env)api_url(optional) - Base API URL (if not provided, reads fromRAILTOWN_API_URLenv or defaults to production)model(optional) - Pydantic model type for deserializing retrieved data
Features
- Multiple retrieval methods:
search_vector_store()- Semantic search in vector storesget_storage_document_by_event_id()- Get document by EventIdget_storage_document_by_customer_key()- Same paging aslist_storage_documents(page_number,page_size) but scoped to a CustomerKey; returnsStorageListPagewithitems,total_pages, andtotal_countquery_storage_by_jsonpath()- Query using JSONPathlist_storage_documents()- Usepage_numberandpage_sizeto paginate; returnsStorageListPagewithitems,total_pages, andtotal_countsearch_index()- Index search (defaultraw=True: each hit is the API dict; useraw=Falseto parse each hit'sbodywithmodelor the client default); returnsIndexingSearchResultwithitemsand optionaltotal_countdelete_event()- Delete an event from storage, embeddings, and indexing (raises on API errors)
- Client-side filtering on storage reads - Optional
filter_fnon storage/list/query helpers (not onsearch_vector_store; filter vector hits in your loop) - Storage list pagination - One HTTP GET per page; use
page_number/page_sizeon the request andtotal_pages/total_countonStorageListPagewhen looping - Model deserialization - Optional Pydantic model support with per-call override
- Graceful error handling - Read/search helpers often return
Noneor empty iterables instead of raising - 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
Read/search helpers return None or empty iterables on many errors (graceful degradation). delete_event() raises Railtown* exceptions on HTTP/API failures.
Requirements
- uv
- Python 3.10+
- httpx >= 0.24.0
- pydantic >= 1.10.0
Related package
For ingesting data into Railengine, install and use rail-engine-ingest.
License
MIT
Metadata
Release files for rail-engine 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-0.2.2.tar.gz | 19.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rail_engine-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.9 kB
Release files / rail_engine-0.2.2.tar.gz
| Download URL | rail_engine-0.2.2.tar.gz |
|---|---|
| Size | 19.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f45aa96b87fcef49f532113ebc929bf92d463b6d8634d27d9676b4c7b43bc547
|
|
BLAKE2b-256 checksum How to use checksums |
802b3107ccfc2b14e740fec186a1248059cddc6190c81df6e12f166cd354fa94
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.22
|
Release files / rail_engine-0.2.2-py3-none-any.whl
| Download URL | rail_engine-0.2.2-py3-none-any.whl |
|---|---|
| Size | 21.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7c03cfddd3504b4bec67a1c39b43a3dbbdeba136f5c300afeb3df396535633af
|
|
BLAKE2b-256 checksum How to use checksums |
8d9575c4f65633ccff47ab1a8654a84d772f81139fc41425c63f914843aa6c4a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.22
|