Cyclesport results and timing toolkit
Project description
metarace
A collection of Python modules to assist with cycle race timekeeping and official result preparation. Version 2 of Metarace is a re-write for Python 3 which removes static pyGTK/GLib dependencies.
Application-level modules are not contained in the library, they are available separately:
- roadmeet : Timing and results for UCI Part 2 Road Races, UCI Part 5 Cyclo-Cross, criterium, road handicap and ad-hoc time trial events.
- trackmeet : Timing and results for UCI Part 3 Track Races.
- tagreg : Transponder registration tool.
- ttstart : Time Trial starter console.
A shared install script may be used to install metarace applications on most POSIX systems:
$ wget https://github.com/ndf-zz/metarace/raw/refs/heads/main/metarace-install.sh
$ sh metarace-install.sh
For installation on Windows systems, a powershell script is provided to install metarace applications under a WSL Debian container:
wget https://github.com/ndf-zz/metarace/raw/refs/heads/main/wsl-install.ps1
Support
Module Overview
Use pydoc to read module-specific documentation.
metarace: Base Library
- shared configuration, default files and resources
- tempfile-backed file writer
- meet folder locking
jsonconfig: Configuration Options
Schema defined dictionary-like configuration with JSON export and import.
riderdb: CSV-backed Competitor Information
Store details for competitors, teams, and categories.
tod: Time of Day
Represent timing measurements, calculations for short intervals (<24 hours) and aggregate times.
timy: Alge Timy Chronometer
Read time of day measurements from an attached Alge Timy in PC-TIMER mode.
decoder: Transponder Decoders
Read transponder and timing information from Race Result and Chronelec devices:
- rrs : Race Result System Decoder (passive and active)
- rru : Race Result USB Timing Box (active)
- thbc : Chronelec (Tag Heuer) Protime/Elite RC and LS
strops: Common String Manipulations
Commonly used functions for formatting competitor names, rankings and user inputs.
telegraph: Interprocess Communication
MQTT-backed pub/sub message exchange service.
unt4: Legacy Timing Protocol
Swiss Timing UNT4 protocol wrapper, for legacy devices and DHI communications.
countback: Accumulate and Compare Count of Places
Represent a countback of places and allow for simple placing comparisons.
htlib: HTML Generation
Functional primitives for HTML generation.
report: Report Generation
Create sectioned reports and save to PDF, HTML, XLS and JSON.
export: Result Export and Mirroring
Mirror export files to a remote host using rsync over ssh, rsync TCP daemon or by running a local script.
Work in Progress
- submit file archive service
- update text vertical layout from font metrics
- overhaul report sections and event index for trackmeet
- re-write report library
- module documentation
- sample scripts
Requirements
System requirements:
- Python >= 3.11
- Cairo
- Pango
- Rsvg
- Python gi
- Python gi-cairo
- tex-gyre (optional, recommended)
- evince (optional, recommended)
- fonts-noto (optional)
- mosquitto (optional)
- libreoffice (optional)
Python packages:
- pyserial: Serial port interface
- python-dateutil: Generic date/time string parser
- xlsxwriter: XLSX file writer
- paho-mqtt: MQTT interface
- graphemeu: Unicode grapheme support
Manual Installation
Install system requirements with apt:
$ sudo apt install python3-venv python3-pip python3-cairo python3-gi python3-gi-cairo gir1.2-rsvg-2.0 gir1.2-pango-1.0
Create a virtualenv for metarace and associated packages:
$ python3 -m venv --system-site-packages venv
Install packages with pip:
$ ./venv/bin/pip install metarace
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 metarace-2.1.22.tar.gz.
File metadata
- Download URL: metarace-2.1.22.tar.gz
- Upload date:
- Size: 107.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1cbbf8b93dfa618b0f14318336e86c166c65bf5eb7e6fe2d26e0d6f2d5ae91a
|
|
| MD5 |
a06613d09930723a39281ec7609c9cae
|
|
| BLAKE2b-256 |
c3ddc124d62f4665bb9ad46d76caa886fad41c7a4eddbcdc7c8cd905c7e1c920
|
File details
Details for the file metarace-2.1.22-py3-none-any.whl.
File metadata
- Download URL: metarace-2.1.22-py3-none-any.whl
- Upload date:
- Size: 116.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78e451c1fc2bffa9221ca54a3263f1c6c07aeed418b39ddd2c7c5d0e39f209ad
|
|
| MD5 |
c41254a36a8c5a9c4782c95a4646263c
|
|
| BLAKE2b-256 |
971abd20b34c16d7a4afdfff09da3785ab486292e17c1c17dd339dbe8f62973e
|