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.7.0.tar.gz (72.6 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.7.0-py3-none-any.whl (18.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tesser-0.7.0.tar.gz
  • Upload date:
  • Size: 72.6 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.7.0.tar.gz
Algorithm Hash digest
SHA256 c94760dcc53363be3593da1e51dc11d694574c59498d5f84ffc066b735c5ffa5
MD5 3b6ef3f854351bfdce45fcafc2adff34
BLAKE2b-256 179c87c19086989338b7213c28f35a9ddd039250c13de588cab4e560a7f799a6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tesser-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 18.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.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9117b18dea614ba885d2c47ea46da9aa783505b0fd54f570a2f06f3faa0c16d8
MD5 6e1598f40531f4d0bb135db200589f1f
BLAKE2b-256 1a16bb4512f468fe6b88df965507b6848900e77d44d2f37e33a7e173f3dd9b06

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