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.1.tar.gz (91.1 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.1-py3-none-any.whl (26.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tesser-0.9.1.tar.gz
  • Upload date:
  • Size: 91.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"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.1.tar.gz
Algorithm Hash digest
SHA256 50af7754370ccab9b0140f8522ff56ffcc37141412cf91e66ed5c809653ba6d2
MD5 f14a46e11796e72e1ffb5d21a903c2e0
BLAKE2b-256 10c30fdcb7d587d6fd720032aa024b837f8d2b081845603a2182c0bdf25cf6cf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tesser-0.9.1-py3-none-any.whl
  • Upload date:
  • Size: 26.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f032ef87775120704bb134e639e6176b5e0dfbb0124796cb7176ed9cac451423
MD5 770603c0b7276855de80c3345d722849
BLAKE2b-256 bf246840913ac2a4f3a5eebb54cdebac761be2cccb14d6b9db22ddef98156136

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