Chronométrage de compétitions d'archerie FFTL (Indoor, Flint) -- serveur + interfaces web incluses
Project description
FletchTime
Logiciel open source de gestion du temps pour compétitions d'archerie FFTL (Indoor et Flint), pensé pour être simple à déployer sur un réseau local multi-écrans et à paramétrer sans compétences techniques.
Se lance avec une fenêtre graphique (démarrage/arrêt du serveur, liens
rapides vers les pages, journal réseau) sur toutes les plateformes, y
compris Pydroid 3. Ajoute --headless pour retrouver l'ancien mode
terminal (aussi utilisé automatiquement si la fenêtre ne peut pas se
charger, ex. customtkinter absent).
Installation
Trois façons d'obtenir et faire tourner FletchTime, selon ton matériel -- toutes lancent le même serveur complet (contrôle + affichage + tout le nécessaire), pas juste un morceau :
1. pip install fletchtime -- Android (Pydroid 3), PC, n'importe où avec Python
pip install fletchtime # menu ☰ → Pip → chercher "fletchtime" sur Pydroid
python -m fletchtime # ou juste : fletchtime
Les données propres à ton club (logo, bannières, images de cible, packs de sons, réglages) se créent automatiquement dans le dossier depuis lequel tu lances la commande au premier démarrage -- lance-la toujours depuis le même dossier pour retrouver tes réglages d'une fois sur l'autre.
Sans passer par PyPI (depuis un clone du dépôt) :
git clone https://github.com/MrFanghoDev/fletchtime.git && cd fletchtime
pip install websockets # ou : pip install -e .
python run_server.py # raccourci équivalent à `python -m fletchtime`
2. Exécutable autoporteur (Windows / Linux) -- PC dédié, sans Python
Télécharge FletchTime-<version>-windows.zip ou
FletchTime-<version>-linux.tar.gz (ex. FletchTime-v0.1.1-windows.zip)
depuis les Releases GitHub,
décompresse, lance FletchTime.exe (Windows) ou ./FletchTime (Linux).
Aucune installation de Python nécessaire. Les dossiers web/assets/... et
config/ sont créés automatiquement à côté de l'exécutable au premier
lancement s'ils manquent.
Windows -- pare-feu : au premier lancement, Windows affiche une alerte
"Le Pare-feu Windows Defender a bloqué certaines fonctionnalités de cette
application" -- coche au moins Réseaux privés puis clique Autoriser
l'accès. Sans ça, le serveur démarre normalement et fonctionne depuis
l'appareil qui l'héberge, mais reste injoignable depuis les autres
appareils (tablettes/PC de pas de tir) sur le même réseau WiFi. Si
l'alerte a été fermée par erreur ou n'est jamais apparue : Paramètres
Windows → Confidentialité et sécurité → Pare-feu Windows Defender →
Autoriser une application via le pare-feu -- coche FletchTime.exe pour
les réseaux privés.
Pour construire ces exécutables toi-même (ou ajouter macOS à la matrice) :
voir .github/workflows/release.yml et fletchtime.spec (PyInstaller). Un
git tag v0.1.0 && git push --tags déclenche la construction et publie les
deux archives automatiquement.
3. import fletchtime.engine -- pour réutiliser juste le moteur de séquencement
Le moteur (fletchtime.engine, pur Python, zéro dépendance) est aussi
utilisable seul dans un autre projet, sans le serveur ni les pages web :
from fletchtime.engine import IndoorMode, IndoorConfig, MatchEngine
engine = MatchEngine(IndoorMode(IndoorConfig()))
Qualité continue
Chaque push et pull request déclenche .github/workflows/ci.yml :
formatage/lint (Black + Ruff -- corrigés et recommités automatiquement sur
un push direct, juste vérifiés sur une pull request) puis la suite de
tests complète. Aucune dépendance externe nécessaire pour les tests,
websockets compris (voir docs/dev-guide/index.md).
En local :
pip install -e ".[dev]"
black src tests demo.py run_server.py run_tests.py
ruff check --fix src tests demo.py run_server.py run_tests.py
python -m unittest discover -s tests -v
Publication (pour les mainteneurs)
-
TestPyPI (essai avant publication réelle) : publication automatique via
.github/workflows/testpypi.ymlà chaque push surmain/masterqui touche au code. Génère un numéro de version unique à chaque fois (0.1.0.devN) pour ne jamais entrer en conflit. Configuration ponctuelle sur test.pypi.org/manage/account/publishing -- compte séparé de pypi.org, à créer indépendamment sur test.pypi.org.Pour installer une version publiée sur TestPyPI et vérifier qu'elle fonctionne avant de publier pour de vrai :
pip install --index-url https://test.pypi.org/simple/ \ --extra-index-url https://pypi.org/simple/ \ fletchtime
Le
--extra-index-urlvers le vrai PyPI est nécessaire : TestPyPI ne contient que les paquets qu'on y a explicitement publiés, pas leurs dépendances (ici,websockets) -- sans ça, l'installation échouerait en cherchantwebsocketssur TestPyPI où il n'existe pas. -
PyPI (
pip install fletchtime) : publication automatique via.github/workflows/pypi.yml(Trusted Publishing OIDC, sans jeton API) à chaque Release GitHub. Configuration ponctuelle nécessaire sur pypi.org/manage/account/publishing -- voir les commentaires du fichier de workflow. À faire une fois que les essais sur TestPyPI sont concluants : contrairement à TestPyPI, un numéro de version publié sur PyPI ne peut plus jamais être réutilisé ni supprimé. -
Exécutables : voir section 2 ci-dessus.
Documentation
Il y a deux documentations distinctes, pour deux publics différents :
-
Manuel utilisateur (
manual.html) : pour le DOS et les bénévoles du club. Servi localement par FletchTime lui-même (ouvre "Manuel utilisateur" depuis la page d'accueil de l'application) — fonctionne sans connexion Internet, comme le reste de l'outil. -
Documentation développeur (
docs/, Sphinx + MyST) : specs, architecture, plan de développement, guide de contribution. En local :pip install -e ".[docs]" # ou : pip install -r docs/requirements.txt sphinx-build -b html docs docs/_build/html
Ouvrir ensuite
docs/_build/html/index.htmldans un navigateur.Elle est aussi publiée automatiquement sur GitHub Pages à chaque push sur
main(voir.github/workflows/docs.yml). Configuration à faire une seule fois sur GitHub : Settings → Pages → Source : "GitHub Actions".
État du projet
Étapes 1 à 5 terminées (moteur de séquencement, serveur temps réel, affichage,
interface de contrôle, son) — étape 6 en cours (documentation, packaging). Voir
docs/roadmap.md pour le détail du plan de développement par étapes.
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 fletchtime-0.1.3.tar.gz.
File metadata
- Download URL: fletchtime-0.1.3.tar.gz
- Upload date:
- Size: 707.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78099c941f904f76afa94fff2cc5d2e12be9a2a10827534b79c759022b58d173
|
|
| MD5 |
518d194be0022e8202d22f75a410369d
|
|
| BLAKE2b-256 |
99bc0a7d8fac9758d056dbd76d2b2d81fdf2f013807b52dadec07ac5b163e849
|
Provenance
The following attestation bundles were made for fletchtime-0.1.3.tar.gz:
Publisher:
pypi.yml on MrFanghoDev/fletchtime
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fletchtime-0.1.3.tar.gz -
Subject digest:
78099c941f904f76afa94fff2cc5d2e12be9a2a10827534b79c759022b58d173 - Sigstore transparency entry: 2189145917
- Sigstore integration time:
-
Permalink:
MrFanghoDev/fletchtime@3274899167adc0e4a6db9b57f46ab9d2534f6ec2 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/MrFanghoDev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@3274899167adc0e4a6db9b57f46ab9d2534f6ec2 -
Trigger Event:
release
-
Statement type:
File details
Details for the file fletchtime-0.1.3-py3-none-any.whl.
File metadata
- Download URL: fletchtime-0.1.3-py3-none-any.whl
- Upload date:
- Size: 665.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5adaa31c0c7c61bf3894febe68b5e3fa16ddfc870c9204c4198bb4922b51aa5f
|
|
| MD5 |
49080a27717c2f7c7d317ad405d4ea84
|
|
| BLAKE2b-256 |
eacdbb3c44475507804d1929c425a44f995c16127c68e47ae7650bf898d033cf
|
Provenance
The following attestation bundles were made for fletchtime-0.1.3-py3-none-any.whl:
Publisher:
pypi.yml on MrFanghoDev/fletchtime
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fletchtime-0.1.3-py3-none-any.whl -
Subject digest:
5adaa31c0c7c61bf3894febe68b5e3fa16ddfc870c9204c4198bb4922b51aa5f - Sigstore transparency entry: 2189145931
- Sigstore integration time:
-
Permalink:
MrFanghoDev/fletchtime@3274899167adc0e4a6db9b57f46ab9d2534f6ec2 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/MrFanghoDev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@3274899167adc0e4a6db9b57f46ab9d2534f6ec2 -
Trigger Event:
release
-
Statement type: