Skip to main content

PyDataRheo

PyDataRheo

PyDataRheo moves data between hundreds of systems, from plain Python.

Pick a source, read from it, and land the records in DuckDB, Postgres, Snowflake, BigQuery, MotherDuck, or any destination connector. No orchestrator, no cluster, no YAML pipeline definition. It is a library, so it runs wherever your Python runs: a script, a notebook, a Lambda, an Airflow or Dagster task.

PyDataRheo runs Airbyte-protocol connectors, which is what gives it several hundred sources and destinations on day one.

PyPI version PyPI - Downloads PyPI - Python Version Star on GitHub

Install

pip install pydatarheo

The import package is datarheo; the distribution on PyPI is pydatarheo.

Quick start

import datarheo as dr

source = dr.get_source(
    "source-faker",
    config={"count": 5_000},
    install_if_missing=True,
)
source.check()
source.select_all_streams()

result = source.read()  # Lands in a local DuckDB cache by default.

for record in result["users"].records:
    print(record)

Read into a dataframe:

df = result["users"].to_pandas()

Write to a real warehouse instead of the default local cache:

from datarheo.caches import SnowflakeCache

cache = SnowflakeCache(
    account="my-account",
    username="my-user",
    password=dr.get_secret("SNOWFLAKE_PASSWORD"),
    database="my-db",
    warehouse="my-wh",
    role="my-role",
)
source.read(cache=cache)

Command line

These console scripts are installed:

Command What it does
pydatarheo / pydr Benchmark, validate, and smoke-test connectors
datarheo-mcp Run the DataRheo MCP server over stdio
datarheo-mcp-http Run the DataRheo MCP server over HTTP
pydr --help
pydr validate --connector=source-faker

Connector installation

Declarative (YAML) sources

Declarative sources are downloaded as a single YAML manifest and executed directly. These have the fastest install times, because there is nothing to build.

Python sources

When a connector publishes a Python package, PyDataRheo installs it automatically. Installation uses uv rather than pip, which is both much faster and able to install a connector under a different Python version than the one PyDataRheo itself is running on. Set DATARHEO_NO_UV=true to fall back to pip.

To pin a connector to a specific Python version:

source = dr.get_source("source-faker", use_python="3.10.17")

Docker

Pass docker_image=True to get_source() or get_destination() to run the connector from its published image instead, or docker_image="my-org/my-image:tag" to pick an exact image. Docker is the most reproducible option, because every dependency is locked inside the image, and it is required for Java-based destinations.

Configuration

Every environment variable PyDataRheo reads is prefixed DATARHEO_. The most useful ones:

Variable Effect
DATARHEO_CACHE_ROOT Where cache files are written (default ./.cache)
DATARHEO_PROJECT_DIR Parent directory for cache and connector installs
DATARHEO_NO_UV Set to 1 to install connectors with pip instead of uv
DATARHEO_OFFLINE_MODE Tolerate an unreachable connector registry; also disables telemetry
DATARHEO_TEMP_DIR Directory for temporary files
DATARHEO_CLOUD_CLIENT_ID / DATARHEO_CLOUD_CLIENT_SECRET Credentials for the hosted Cloud API

An environment still carrying the older AIRBYTE_-prefixed names keeps working: each AIRBYTE_FOO is read as DATARHEO_FOO unless the DATARHEO_ name is also set, in which case the explicit DATARHEO_ value wins.

Telemetry

Off by default. PyDataRheo sends nothing anywhere unless you set DATARHEO_TRACKING_KEY to a Segment write key that you own. Setting DO_NOT_TRACK, or enabling offline mode, disables reporting outright.

Documentation

The full API reference is generated from the source with poe docs-generate and published at vrahad-analytics.github.io/pydatarheo.

Contributing

See the Contributors Guide.

Frequently asked questions

Is PyDataRheo a replacement for a data platform? No. It is a library. It has no orchestration, scheduling, alerting, or pipeline monitoring. Run it inside whatever scheduler you already use.

What is the cache? Is it a destination? Effectively yes: it is a built-in destination implementation backed by a SQL engine. We call it a cache to keep it distinct from the destination connectors, which are separate executables.

Does it work with Airflow, Dagster, Prefect, or Snowpark? Yes. It is an ordinary Python dependency with no background services.

Can I build a normal ETL pipeline with it? Yes. Choose the cache type that matches where the data should land, such as SnowflakeCache for Snowflake.

Can it run a connector from a local directory? Yes. Any connector exposing a CLI works, and connectors already on PATH are found by name.

License and provenance

PyDataRheo is released under the MIT license and is a rebranded derivative of PyAirbyte, which is also MIT licensed. See LICENSE and NOTICE.

Changelog

See the GitHub Releases page.

Metadata

Release files for pydatarheo 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pydatarheo 0.1.0
File Size Uploaded
pydatarheo-0.1.0.tar.gz 719.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pydatarheo 0.1.0
File Interpreter ABI Platform
pydatarheo-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.1 MB

Release files / pydatarheo-0.1.0.tar.gz

Download URL pydatarheo-0.1.0.tar.gz
Size 719.3 kB
Tags Source
SHA-256 checksum
How to use checksums
8f072d4c583354819336caec4de330e365570890455b9d06edbb3f27a9d1fe9f
BLAKE2b-256 checksum
How to use checksums
f8534fa77337069e3c8fd440bc43c4c703f2591586c446d3cfa8ae0fa246b427
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.

Transparency log

Release files / pydatarheo-0.1.0-py3-none-any.whl

Download URL pydatarheo-0.1.0-py3-none-any.whl
Size 387.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a367a7721d1b6a4876bf93f70028ebea73fe197ec6792ac0fe76543df28b58d4
BLAKE2b-256 checksum
How to use checksums
f8d9b28fac80b114cb060c5b44770087d39462cb9075e4271f0e96bcc89c5a43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page