A flexible clock implementation for real-time and backtesting scenarios
Project description
Chronopype
A flexible clock implementation for real-time and backtesting scenarios in Python. Chronopype provides a robust framework for managing time-based operations with support for both real-time processing and historical data backtesting.
Features
- 🕒 Flexible Clock System: Support for both real-time and backtesting modes
- 🔄 Processor Framework: Extensible system for implementing time-based operations with retry and timeout support
- 🌐 Network-Aware: Built-in network processor with automatic reconnection and exponential backoff
- ⚡ Async Support: Full async/await support for efficient I/O operations
- 📊 Performance Monitoring: Built-in execution time tracking, percentile statistics, and lagging processor detection
- 🔒 Type Safe: Fully typed with MyPy strict mode
- 🧪 Well Tested: Comprehensive test suite with high coverage
Installation
# Using pip
pip install chronopype
# Using uv
uv add chronopype
Quick Start
Here's a simple example of using chronopype:
import asyncio
import time
from chronopype import ClockConfig, ClockMode
from chronopype.clocks import RealtimeClock
from chronopype.processors import TickProcessor
class MyProcessor(TickProcessor):
async def async_tick(self, timestamp: float) -> None:
print(f"Processing at {timestamp}")
async def main():
config = ClockConfig(
clock_mode=ClockMode.REALTIME,
start_time=time.time(),
tick_size=1.0, # 1 second ticks
)
async with RealtimeClock(config) as clock:
clock.add_processor(MyProcessor())
await clock.run_til(config.start_time + 10)
if __name__ == "__main__":
asyncio.run(main())
Core Components
-
Clocks: Base implementations for time management
RealtimeClock: For real-time processing with drift compensationBacktestClock: For deterministic historical data simulation
-
Processors: Framework for implementing time-based operations
TickProcessor: Base class for all processorsNetworkProcessor: Network-aware processor with automatic reconnection
Documentation
Full documentation is available at gianlucapagliara.github.io/chronopype.
Development
Chronopype uses uv for dependency management and packaging:
# Install dependencies
uv sync
# Run tests
uv run pytest
# Run type checks
uv run mypy chronopype
# Run linting
uv run ruff check .
# Run pre-commit hooks
uv run pre-commit run --all-files
Project details
Release history Release notifications | RSS feed
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 chronopype-0.6.0.tar.gz.
File metadata
- Download URL: chronopype-0.6.0.tar.gz
- Upload date:
- Size: 86.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"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 |
7436ba30f283f9f6394b83ac33ec0e69a3ed7e8b8971b1a7d9f32151e407c976
|
|
| MD5 |
58b9d84ce9f501006b13abc7859b00f8
|
|
| BLAKE2b-256 |
e7f628509d5657da84e30690238c85dfd1770a86194698033bfb8210a99a2dcb
|
File details
Details for the file chronopype-0.6.0-py3-none-any.whl.
File metadata
- Download URL: chronopype-0.6.0-py3-none-any.whl
- Upload date:
- Size: 20.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"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 |
bb00ed53d69a82f7406910853caa573a44d9210ee528296f945ef759d7d31f1b
|
|
| MD5 |
83e6ebfca467547a2e1fdf5e88cacefa
|
|
| BLAKE2b-256 |
6082f20483085d8649d6e5a3f6e48aafa3b713344baab4bd64c0e413e11584ae
|