Un module plat par plateforme, pour les trois frontieres

interface/cocoa/overlay.py etait un sous-paquet quand systeme/macos.py et
moteur/mlx.py sont des modules plats. Rien n'expliquait la difference : la couche
Windows aurait eu a deviner lequel des deux motifs imiter, et aurait reproduit
l'incoherence dans un sens ou dans l'autre.

interface/cocoa.py est donc mis a plat, contenu inchange (diff vide), et la regle
est ecrite dans interface/__init__.py : un module plat par plateforme, sous-paquet
seulement le jour ou une plateforme exige plusieurs fichiers.

105 tests inchanges.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ralph Mayola 2026-08-23 18:33:35 +02:00
parent 7661cbce36
commit 5cf8f448ed
3 changed files with 9 additions and 2 deletions

View File

@ -1,4 +1,11 @@
"""Choisit l'implémentation d'overlay selon la plateforme.""" """Choisit l'implémentation d'overlay selon la plateforme.
Convention des trois frontières (`moteur/`, `interface/`, `systeme/`) : **un module
plat par plateforme** `interface/cocoa.py`, `systeme/macos.py`, `moteur/mlx.py`.
On ne passe à un sous-paquet que le jour une plateforme exige réellement
plusieurs fichiers. Sans cette règle écrite, la couche Windows aurait eu à deviner
lequel des deux motifs imiter.
"""
import sys import sys
@ -6,6 +13,6 @@ def classe_overlay_pour(plateforme=None):
"""Rend la CLASSE d'overlay (pas une instance : Cocoa exige `alloc().init()`).""" """Rend la CLASSE d'overlay (pas une instance : Cocoa exige `alloc().init()`)."""
plateforme = plateforme or sys.platform plateforme = plateforme or sys.platform
if plateforme.startswith("darwin"): if plateforme.startswith("darwin"):
from interface.cocoa.overlay import PulseWindow from interface.cocoa import PulseWindow
return PulseWindow return PulseWindow
raise NotImplementedError(f"Aucune interface pour : {plateforme}") raise NotImplementedError(f"Aucune interface pour : {plateforme}")