Δ ATS FR · EN

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

FichierRôleRéférence spec
code/ats.pyCœur : Grégorien ↔ ATS, formats canonique/court, algèbre §11.4manifeste §9–§11
code/ats_multi_planetary.pyExtension multi-planétaire : Terre, Mars, Lunemulti-planetary.fr.md
code/bridges/hebrew.pyPont calendrier hébraïque (`convertdate`)manifeste §14
code/bridges/islamic.pyPont calendrier islamique (`convertdate`)idem
code/bridges/chinese.pyPont calendrier chinois (`lunardate`, tables HKO 1900–2100)idem
code/bridges/hindu.pyPont calendrier hindou (approximation panchanga régionale)idem
code/bridges/maya.pyPont Long Count mayaidem
docs/assets/js/ats.jsCœur JavaScript (navigateur + Node, ES modules)idem ats.py
docs/assets/js/ats-clock.jsWeb Component <ats-clock>analog-clock.fr.md

5. Statut des autres langages

6. Source Python complet

Inliné en direct depuis GitHub raw avec fallback local. Licence : MIT (GOVERNANCE.md §8.1).

Chargement…