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+
uvfor 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
50af7754370ccab9b0140f8522ff56ffcc37141412cf91e66ed5c809653ba6d2
|
|
| MD5 |
f14a46e11796e72e1ffb5d21a903c2e0
|
|
| BLAKE2b-256 |
10c30fdcb7d587d6fd720032aa024b837f8d2b081845603a2182c0bdf25cf6cf
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f032ef87775120704bb134e639e6176b5e0dfbb0124796cb7176ed9cac451423
|
|
| MD5 |
770603c0b7276855de80c3345d722849
|
|
| BLAKE2b-256 |
bf246840913ac2a4f3a5eebb54cdebac761be2cccb14d6b9db22ddef98156136
|