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 datatimeout(optional) - Request timeout in seconds orhttpx.Timeout(default30). Applied to the SDK-created client and to each request, including vector search.verify(optional) - TLS verification. Defaults toTrue. Pass a CA bundle path orssl.SSLContextfor custom trust.Falsedisables verification and must be set explicitly.http_client(optional) - Caller-ownedhttpx.AsyncClientfor proxies, custom transports, or tests. The SDK does not close this client.logging_policy(optional) -LoggingPolicyfor SDK logs. Default logs operation metadata only. Search text, JSONPath, and response bodies are not logged unlesslog_content=True.
Earlier SDK versions disabled TLS verification. 0.4.0 verifies certificates by default. Use verify= with your CA bundle if the API host uses a private certificate.
Features
- Multiple retrieval methods:
search_vector_store()- Semantic search in vector storessearch_vector_store_filtered()- Semantic search restricted to the documents an index query matches (search_querytakes the sameIndexingSearchQuery/dict assearch_index; requires Indexing and Embeddings enabled on the engine)get_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_storeorsearch_vector_store_filtered; 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.11+
- 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.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| rail_engine-0.4.1.tar.gz | 25.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rail_engine-0.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 52.9 kB
Release files / rail_engine-0.4.1.tar.gz
| Download URL | rail_engine-0.4.1.tar.gz |
|---|---|
| Size | 25.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
02ce62173d7b9ca44a0fcae546ef8459cd5d233fee3f67d8136628012c5b4562
|
|
BLAKE2b-256 checksum How to use checksums |
f36aaf4e98e49826ec5c326e23b6e40ed2c5a5beb7cdebef2e79e035207cd12e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / rail_engine-0.4.1-py3-none-any.whl
| Download URL | rail_engine-0.4.1-py3-none-any.whl |
|---|---|
| Size | 27.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b20c33f5605a8368939e84d2ad9b44b9bf81b1bcd3815223d5fb1d1a024aa758
|
|
BLAKE2b-256 checksum How to use checksums |
4d0886213c1e772eb1c0c1cbf0953f58e5a3fc50600f4f012e4999e73e175054
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for rail-engine 0.4.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.