Skip to main content

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 Token
  • ENGINE_ID (required) - Engine ID (can also be passed to constructor)
  • RAILTOWN_API_URL (optional) - Base API URL (defaults to https://cndr.railtown.ai/api)

Constructor Parameters

  • pat (optional) - PAT token (if not provided, reads from ENGINE_PAT env)
  • engine_id (optional) - Engine ID (if not provided, reads from ENGINE_ID env, required if not in env)
  • api_url (optional) - Base API URL (if not provided, reads from RAILTOWN_API_URL env or defaults to production)
  • model (optional) - Pydantic model type for deserializing retrieved data

Features

  • Multiple retrieval methods:
    • search_vector_store() - Semantic search in vector stores
    • get_storage_document_by_event_id() - Get document by EventId
    • get_storage_document_by_customer_key() - Same paging as list_storage_documents (page_number, page_size) but scoped to a CustomerKey; returns StorageListPage with items, total_pages, and total_count
    • query_storage_by_jsonpath() - Query using JSONPath
    • list_storage_documents() - Use page_number and page_size to paginate; returns StorageListPage with items, total_pages, and total_count
    • search_index() - Index search (default raw=True: each hit is the API dict; use raw=False to parse each hit's body with model or the client default); returns IndexingSearchResult with items and optional total_count
    • delete_event() - Delete an event from storage, embeddings, and indexing (raises on API errors)
  • Client-side filtering on storage reads - Optional filter_fn on storage/list/query helpers (not on search_vector_store; filter vector hits in your loop)
  • Storage list pagination - One HTTP GET per page; use page_number / page_size on the request and total_pages / total_count on StorageListPage when looping
  • Model deserialization - Optional Pydantic model support with per-call override
  • Graceful error handling - Read/search helpers often return None or empty iterables instead of raising
  • Async/await support - Built for modern async Python applications

Error Handling

The SDK provides custom exception classes:

  • RailtownError - Base exception
  • RailtownBadRequestError - 400 Bad Request
  • RailtownUnauthorizedError - 401 Unauthorized
  • RailtownNotFoundError - 404 Not Found
  • RailtownConflictError - 409 Conflict
  • RailtownServerError - 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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rail_engine-0.2.2.tar.gz (19.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rail_engine-0.2.2-py3-none-any.whl (21.6 kB view details)

Uploaded Python 3

File details

Details for the file rail_engine-0.2.2.tar.gz.

File metadata

  • Download URL: rail_engine-0.2.2.tar.gz
  • Upload date:
  • Size: 19.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.22

File hashes

Hashes for rail_engine-0.2.2.tar.gz
Algorithm Hash digest
SHA256 f45aa96b87fcef49f532113ebc929bf92d463b6d8634d27d9676b4c7b43bc547
MD5 9c69ae970129ede444a1fcd4f74441af
BLAKE2b-256 802b3107ccfc2b14e740fec186a1248059cddc6190c81df6e12f166cd354fa94

See more details on using hashes here.

File details

Details for the file rail_engine-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for rail_engine-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7c03cfddd3504b4bec67a1c39b43a3dbbdeba136f5c300afeb3df396535633af
MD5 2df19c007f33677afafe662ed3ff5f3b
BLAKE2b-256 8d9575c4f65633ccff47ab1a8654a84d772f81139fc41425c63f914843aa6c4a

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 files

0.2.1

2 files

0.2.0

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page