Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Development Setup

To develop locally across all repos, clone all three projects side by side:

git clone https://github.com/yulesa/tiders.git
git clone https://github.com/yulesa/tiders-core.git
git clone https://github.com/yulesa/tiders-rpc-client.git

Installing tiders from the local repo

If you want to modify tiders and test your changes without publishing to PyPI, install it in editable mode directly from your local clone:

cd tiders
pip install -e ".[all]"
# If using uv
uv pip install -e ".[all]"

The [all] extra installs every optional dependency (DuckDB, ClickHouse, Delta Lake, etc.). You can also install only the extras you need, e.g. ".[duckdb,cli]".

Building tiders-core and tiders-rpc-client from source

If you’re modifying tiders-rpc-client repo locally, you probably want tiders-core to build against your local version.

Build tiders-rpc-client locally:

cd tiders-rpc-client/rust
cargo build

Use local tiders-rpc-clientto build tiders-core, overriding the crates.io version:

cd tiders-core
# Build Rust crates with local tiders-rpc-client
cargo build --config 'patch.crates-io.tiders-rpc-client.path="../tiders-rpc-client/rust"'

# Build Python bindings with the same patch
cd python
maturin develop --config 'patch.crates-io.tiders-rpc-client.path="../../tiders-rpc-client/rust"'
# If using uv
maturin develop --uv --config 'patch.crates-io.tiders-rpc-client.path="../../tiders-rpc-client/rust"'

If you’re modifying tiders-core repo locally, you probably want tiders to use your local tiders-core version.

Build tiders-core as described above, or just cargo build if you haven’t modified tiders-rpc-client.

Persistent local development

For persistent local development, you can put this in tiders-core/Cargo.toml:

[patch.crates-io]
tiders-rpc-client = { path = "../tiders-rpc-client/rust" }

This avoids passing --config on every build command.

Configure tiders to use your local tiders-core Python package:

[tool.uv.sources]
tiders-core = { path = "../tiders-core/python", editable = true }
cd tiders
uv sync