Implémentations de référence
ATS livre deux implémentations de référence : Python (code/ats.py) et JavaScript (docs/assets/js/ats.js). Les deux round-trip à l'identique sur tous les fichiers test-vectors-*.json. Rust et Go sont planifiés pour la v1.0 (cf. ROADMAP V1.0-B et versioning §7.2 (3)) ; les implémentations tierces dans n'importe quel langage sont bienvenues sous le contrat de conformité (manifeste §16.5).
Licence : MIT (cf. GOVERNANCE.md §8). Source autoritaire : le manifeste (manifeste.fr.md) et les vecteurs de conformance. Le code montré ci-dessous est une implémentation conforme, pas la spec.
1. Installation (planifiée, v1.0)
Les artefacts installables ne sont pas encore publiés — cf. versioning §7.2 (4) pour l'engagement de release v1.0. En attendant, vendorer le fichier directement :
# Python — vendorer le fichier (pas d'install requise)
curl -O https://raw.githubusercontent.com/s-geffroy/ATS/main/code/ats.py
# JavaScript — vendorer le fichier
curl -O https://raw.githubusercontent.com/s-geffroy/ATS/main/docs/assets/js/ats.js
# Planifié (v1.0) :
# pip install ats-time
# npm install @s-geffroy/ats
Télécharger ats.py
·
Télécharger ats.js
·
Parcourir sur GitHub
2. Usage rapide
Python
from datetime import datetime, timezone
from ats import gregorian_to_ats, ats_to_gregorian
now = datetime.now(timezone.utc)
ats = gregorian_to_ats(now)
print(ats.to_canonical()) # T+ Δ 20.7.8.4.50000
print(ats.to_short()) # Δ20.7.8.4-50.0
back = ats_to_gregorian(ats.to_canonical())
print(back.isoformat()) # 2026-06-15T12:00:00+00:00 (±432 ms)
JavaScript (navigateur ou Node)
import { atsFromMs, toCanonical, toShort, atsToMs } from './ats.js';
const v = atsFromMs(Date.now());
console.log(toCanonical(v)); // T+ Δ 20.7.8.4.50000
console.log(toShort(v)); // Δ20.7.8.4-50.0
const back = atsToMs(toCanonical(v));
console.log(new Date(back).toISOString()); // round-trip ±432 ms
3. Conformité — one-liner (Docker)
Toute implémentation tierce DOIT round-trip chaque fichier test-vectors-*.json à l'identique au spec_version qu'elle déclare cibler (cf. versioning §2). Lancer les suites de référence sans rien installer localement :
# Python — 12 vecteurs core + arithmétique + 5 ponts calendaires + 2 multi-planétaires
docker run --rm -v "$(pwd):/app" -w /app python:3.11-slim \
python -m unittest discover tests
# JavaScript — 12 vecteurs core
docker run --rm -v "$(pwd):/app" -w /app node:20-slim \
node tests/test_vectors.mjs
# Combiné + property-based (Hypothesis 1000+ instants)
docker run --rm -v "$(pwd):/app" -w /app python:3.11-slim \
sh -c 'pip install -q hypothesis && python -m unittest discover tests'
Les trois commandes DOIVENT sortir en code 0. Tout exit non-nul est un échec de conformité.
4. Structure des modules
| Fichier | Rôle | Référence spec |
|---|---|---|
code/ats.py | Cœur : Grégorien ↔ ATS, formats canonique/court, algèbre §11.4 | manifeste §9–§11 |
code/ats_multi_planetary.py | Extension multi-planétaire : Terre, Mars, Lune | multi-planetary.fr.md |
code/bridges/hebrew.py | Pont calendrier hébraïque (`convertdate`) | manifeste §14 |
code/bridges/islamic.py | Pont calendrier islamique (`convertdate`) | idem |
code/bridges/chinese.py | Pont calendrier chinois (`lunardate`, tables HKO 1900–2100) | idem |
code/bridges/hindu.py | Pont calendrier hindou (approximation panchanga régionale) | idem |
code/bridges/maya.py | Pont Long Count maya | idem |
docs/assets/js/ats.js | Cœur JavaScript (navigateur + Node, ES modules) | idem ats.py |
docs/assets/js/ats-clock.js | Web Component <ats-clock> | analog-clock.fr.md |
5. Statut des autres langages
- Rust — planifié pour v1.0 (cf. ROADMAP V1.0-B) ; cible crate
atssur crates.io, compatibleno_std, cœur + algèbre + parseurs canonique/court, ponts optionnels. - Go — alternative à Rust pour v1.0 (cf. ROADMAP V1.0-B) ; cible module
github.com/s-geffroy/ats, audience serveur / CLI / infra cloud. - Kotlin, Swift, Elixir — pas sur le chemin critique v1.0 ; bienvenus en tant qu'implémentations tierces sous le contrat de conformité.
6. Source Python complet
Inliné en direct depuis GitHub raw avec fallback local. Licence : MIT (GOVERNANCE.md §8.1).
Chargement…