Skip to main content

YTsaurus Python Client

A lightweight Python helper library for day-to-day work with YTsaurus - https://ytsaurus.tech YQL CHYT and pandas DataFrames

PyPI version Python 3.9+ MIT License Project status Notebook friendly

PyPI · GitHub · Example notebook · Issues

The project wraps common analytics workflows into a small, readable API:

  • run YQL queries and return results as pandas.DataFrame
  • start long-running YQL queries without blocking the notebook
  • write YQL results directly into YTsaurus tables
  • read large query outputs through temporary YTsaurus tables with progress reporting
  • execute CHYT queries through HTTP or the YTsaurus CLI
  • upload pandas DataFrames into YTsaurus tables

This repository is designed as a clean portfolio-friendly version of the client: no company-specific hosts, pools, paths, tokens, or internal links are hardcoded

Installation

pip install ytsaurus_python_client
pip install -e .

For production packaging:

python -m build
pip install dist/ytsaurus_python_client-*.whl

Requirements

  • Python 3.9+
  • pandas
  • requests
  • numpy
  • YTsaurus Python client with yt.wrapper
  • Optional: YTsaurus CLI binary yt for CLI-based CHYT helpers

Configuration

The library is configured through environment variables or explicit constructor arguments.

Variable Purpose Default
YT_PROXY YTsaurus proxy host empty
YT_TOKEN OAuth/token value used by HTTP CHYT helpers read from YT_TOKEN_PATH
YT_TOKEN_PATH Path to a local token file ~/.yt/token
YT_DEFAULT_TEMP_DIR Temp folder for large YQL result materialization //tmp/ytsaurus-python-client
YT_POOL Optional YQL pool pragma unset
YT_UI_BASE_URL Optional web UI base URL used only for printed links unset
CHYT_HOST CHYT HTTP host YT_PROXY
CHYT_PORT CHYT HTTP port 8123
CHYT_CLIQUE_ALIAS Default CHYT clique alias ch_public
YT_BINARY YTsaurus CLI binary name/path yt

Example:

export YT_PROXY="your-ytsaurus-proxy.example.com"
export YT_TOKEN_PATH="$HOME/.yt/token"
export YT_DEFAULT_TEMP_DIR="//home/your-login/tmp"
export CHYT_CLIQUE_ALIAS="ch_public"

Quick start

Run a YQL query

from ytsaurus_python_client import YTsaurusHook

hook = YTsaurusHook(
    yt_proxy="your-ytsaurus-proxy.example.com",
    yt_query_result_temp_dir="//home/your-login/tmp",
)

df = hook.yql("""
SELECT
    1 AS id,
    "hello" AS value;
""")

print(df)

Start a long-running query and return the query ID

query_id = hook.yql(
    """
    INSERT INTO `//home/your-login/output_table`
    SELECT *
    FROM `//home/your-login/source_table`;
    """,
    wait=False,
)

print(query_id)

Execute a query and wait without reading the result

query_id = hook.yql_wait("""
CREATE TABLE `//home/your-login/example_table` (
    id Int64,
    value String
);
""")

Materialize a large YQL result into a temp table and read it in chunks

df = hook.yql_unlim(
    """
    SELECT *
    FROM `//home/your-login/large_table`;
    """,
    chunksize=500_000,
)

Upload a DataFrame to YTsaurus

import pandas as pd

from ytsaurus_python_client import YTsaurusHook

hook = YTsaurusHook(yt_proxy="your-ytsaurus-proxy.example.com")

df = pd.DataFrame({"id": [1, 2], "name": ["Alice", "Bob"]})
schema = hook.generate_yt_schema(df)

hook.upload_df_to_yt(
    df=df,
    yt_path="//home/your-login/users",
    schema=schema,
    overwrite=True,
)

Run a CHYT query over HTTP

from ytsaurus_python_client import chyt_df

df = chyt_df(
    """
    SELECT 1 AS ok
    """,
    host="your-chyt-host.example.com",
    clique_alias="ch_public",
)

Run a CHYT query through the YTsaurus CLI

from ytsaurus_python_client import chyt_df_cli

df = chyt_df_cli(
    "SELECT 1 AS ok",
    yt_proxy="your-ytsaurus-proxy.example.com",
    clique_alias="ch_public",
)

Public API

from ytsaurus_python_client import (
    YTsaurusHook,
    DOYTHook,          # backward-compatible alias
    chyt_df,
    chyt_raw,
    chyt_to_yt,
    chyt_df_cli,
    chyt_raw_cli,
    chyt_to_yt_cli,
    chyt_check_cli,
)

Design notes

  • Defaults are intentionally generic and safe for public repositories
  • Secrets are never hardcoded. Use YT_TOKEN, YT_TOKEN_PATH, or explicit arguments
  • Printed YTsaurus UI links are optional and controlled by YT_UI_BASE_URL
  • YQL pragmas can be provided through query_pragma_config or environment variables such as YT_POOL
  • DOYTHook is kept as a backward-compatible alias; new code should prefer YTsaurusHook

Repository hygiene

Before publishing, the project was cleaned from:

  • macOS metadata files
  • Python cache files
  • internal company hosts and UI links
  • internal pools and temp paths
  • Russian comments and runtime messages
  • local tokens or secret values

License

MIT © 2026 Alexey Voronko

Release files for ytsaurus-python-client 0.4.5

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

Source distribution (sdist)

Source distribution for ytsaurus-python-client 0.4.5
File Size Uploaded
ytsaurus_python_client-0.4.5.tar.gz 22.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ytsaurus-python-client 0.4.5
File Interpreter ABI Platform
ytsaurus_python_client-0.4.5-py3-none-any.whl Python 3 none any Details

Total release size: 43.4 kB

Release files / ytsaurus_python_client-0.4.5.tar.gz

Download URL ytsaurus_python_client-0.4.5.tar.gz
Size 22.6 kB
Tags Source
SHA-256 checksum
How to use checksums
d8687a7b500a948ebb82368eadf00008366d64716fd2552def814e454f078fe9
BLAKE2b-256 checksum
How to use checksums
f7beebb9705bd7f8e51cf7f064b5196b453e95bab70269e2481dfe05a97661bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.0

Release files / ytsaurus_python_client-0.4.5-py3-none-any.whl

Download URL ytsaurus_python_client-0.4.5-py3-none-any.whl
Size 20.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
340867644390b819bf40fc38e09d10bb2f6cd075fab5daf46d3496ac4fb2e643
BLAKE2b-256 checksum
How to use checksums
535b311aeba782187db07ca952c82c6fd8d77eb2f6d59b53e76ec7865a908414
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.0

Release history Release notifications | RSS feed

0.5.0

2 release files

This release

0.4.5 This release

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

1 release file

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