Skip to main content

Python SDK for Tesser Trading Engine

Project description

tesser-py

tesser-py is the Python SDK for building remote strategies that plug into the Tesser trading engine via gRPC.

Requirements

  • Python 3.9+
  • uv for dependency management (pip/venv also works, but all docs/tests assume uv)
  • protoc (v27+) available on PATH when regenerating protobuf stubs

Installation

Install the published package directly from PyPI (tesser) when writing strategies outside of this monorepo:

pip install tesser
# or with uv
uv pip install tesser

For local development against the repo sources (needed when touching protobufs or contributing to the SDK), stay inside sdk/tesser-py and sync dependencies via uv:

cd sdk/tesser-py
uv sync --all-extras

Quick Start

Generate protobuf stubs, run tests, and then start iterating on strategies:

cd sdk/tesser-py
uv sync --all-extras
uv run scripts/codegen.py
uv run pytest

Then start a strategy:

import asyncio
from tesser import Runner, Strategy, Signal, SignalKind

class PyCross(Strategy):
    def __init__(self):
        super().__init__(name="py-cross", symbol="BTC-USD")

    async def on_tick(self, context, tick):
        if tick.price > 50_000:
            return [Signal(symbol=tick.symbol, kind=SignalKind.ENTER_LONG)]
        return []

if __name__ == "__main__":
    asyncio.run(Runner(PyCross()).serve())

Layout

sdk/tesser-py/
├── pyproject.toml
├── src/tesser/        # Library sources
├── scripts/codegen.py # Protobuf generator
├── tests/             # Unit/integration tests
└── examples/

Code Generation

uv run scripts/codegen.py compiles the protobuf definition located under tesser-rpc/proto and drops the generated files in src/tesser/protos. This step runs automatically in CI and should be executed whenever the proto changes.

Version Sync

The Python package version is derived from the workspace Cargo.toml. Run uv run scripts/sync_version.py whenever the Rust version changes to keep the SDK aligned with the rest of the monorepo.

Project details


Download files

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

Source Distribution

tesser-0.9.0.tar.gz (89.9 kB view details)

Uploaded Source

Built Distribution

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

tesser-0.9.0-py3-none-any.whl (25.1 kB view details)

Uploaded Python 3

File details

Details for the file tesser-0.9.0.tar.gz.

File metadata

  • Download URL: tesser-0.9.0.tar.gz
  • Upload date:
  • Size: 89.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for tesser-0.9.0.tar.gz
Algorithm Hash digest
SHA256 9258da49ae6c7cf08d9926ef52b49578c8a06664a0791ec33b30b21633682211
MD5 8bf0a883fbbf64f611e127ba97da93bb
BLAKE2b-256 2ec4173b056f96598015fc6ecd1227b81f0eef58c92233d9e05ceadca64e0a21

See more details on using hashes here.

File details

Details for the file tesser-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: tesser-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 25.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for tesser-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4f0aa70a492fec55d04d34d8b0a6e62c2189a1c865c746e7f27b3c6af3de61ee
MD5 e5f6c9fa343734138057673d71db77cb
BLAKE2b-256 3a2e02a4cb5ab9bcba3c5d8e10fbbd11ed288c60d194ebec27f19238f13f0d32

See more details on using hashes here.

Supported by

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