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.
Metadata
Release files for tesser 0.9.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| tesser-0.9.1.tar.gz | 91.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tesser-0.9.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 117.4 kB
Release files / tesser-0.9.1.tar.gz
| Download URL | tesser-0.9.1.tar.gz |
|---|---|
| Size | 91.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
50af7754370ccab9b0140f8522ff56ffcc37141412cf91e66ed5c809653ba6d2
|
|
BLAKE2b-256 checksum How to use checksums |
10c30fdcb7d587d6fd720032aa024b837f8d2b081845603a2182c0bdf25cf6cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Release files / tesser-0.9.1-py3-none-any.whl
| Download URL | tesser-0.9.1-py3-none-any.whl |
|---|---|
| Size | 26.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f032ef87775120704bb134e639e6176b5e0dfbb0124796cb7176ed9cac451423
|
|
BLAKE2b-256 checksum How to use checksums |
bf246840913ac2a4f3a5eebb54cdebac761be2cccb14d6b9db22ddef98156136
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Security for tesser 0.9.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.