Documentation des contributeurs¶
Ce guide s’adresse aux personnes qui modifient ou maintiennent auton. Pour l’installation, la configuration et l’usage quotidien, commencez par la documentation utilisateur.
Feuille de route¶
Consultez ROADMAP.md pour la feuille de route actuelle, notamment le TUI, le support multi-autond, l’exécution multi-cibles et le site dédié.
Développement¶
AUTON_PACKAGE=autond python -m pip install '.[auth,oidc,redis]' -r requirements-auton.txt
python .github/scripts/check-test-collection.py --runner unittest tests
python -m unittest discover -s tests -v
AUTON_PACKAGE=autond python -m pip wheel --no-deps . -w dist/server
AUTON_PACKAGE=auton python -m pip wheel --no-deps . -w dist/client
La suite comprend de vrais sous-processus et une intégration HTTP client/serveur avec authentification. La CI utilise Python 3.10, 3.11, 3.12 et 3.13 et construit l’image Docker. Les constructions Docker suivent le code extrait ; dépendances et image de base ne sont pas totalement verrouillées, donc les constructions ne sont pas encore reproductibles octet pour octet.
Services applicatifs et client distant¶
auton.classes.jobs.JobService gère l’admission, les ACL des points d’entrée, la propriété des tâches, la capacité, l’expiration des résultats terminés et les curseurs de sortie. Il reçoit les valeurs explicites d’une tâche et une identité authentifiée, ainsi que les correspondances de points d’entrée/files, l’horloge, le verrou et la fabrique d’objets injectés. Il n’importe ni module HTTP, ni CLI, ni DWho. L’identité doit provenir d’un adaptateur d’authentification de confiance ; ce n’est pas un champ accepté dans une charge utile distante. HTTP conserve routes, schémas, champs de réponse et codes d’état existants.
Les workers lisent JobObject.owner et get_payload(), revérifient l’ACL avant exécution et libèrent les données d’entrée à la fin. Les charges utiles sont copiées pour qu’une mutation ultérieure de la requête ne change pas une commande en file. Délais des commandes, nettoyage des groupes de processus, sortie bornée, conservation par défaut et curseurs historiques/explicites restent inchangés.
L’import historique auton.classes.plugins.AutonEPTObject, son constructeur et son callback restent disponibles. Pour les anciens plugins, get_request() renvoie un instantané détaché de compatibilité exposant payload_params(), get_server_vars() (valeur HTTP_AUTH_USER), get_headers() et query_params(). Ce n’est pas une requête HTTP active : accès socket, identité de requête et variables serveur arbitraires ne sont pas conservés. Les en-têtes et paramètres sont copiés lorsque l’ancien constructeur reçoit une requête ; les tâches créées par le service ne fournissent que les données d’exécution et l’identité. Les nouveaux plugins doivent utiliser owner et get_payload(). Les vues d’entrée sont effacées à la fin d’une tâche, comme l’ancienne référence de requête.
JobModule conserve ses noms de fonctions auxiliaires, son constructeur de résultats et ses attributs mutables de limites/objets comme délégations de compatibilité. Ses gestionnaires HTTP appellent désormais directement JobService ; remplacer une fonction privée n’intercepte plus l’admission. Personnalisez le service ou ses adaptateurs. Les appels directs à l’ancienne fonction de soumission imposent aussi la politique d’admission. Chaque module initialisé possède son verrou. Les noms d’environnement et décalages de sortie doivent correspondre à la valeur complète, en rejetant notamment un saut de ligne final.
Vérification des constructions¶
Auton 1.3.x prend en charge Python 3.10 à 3.13. La CI compare les octets des wheels produits dans deux répertoires séparés avec les mêmes sources, versions d’outils et SOURCE_DATE_EPOCH. Cela vérifie la reproductibilité dans cet environnement, sans prétendre à des fichiers identiques entre systèmes ou versions de dépendances arbitraires.
Règles de documentation¶
Séparez les instructions utilisateurs du contenu destiné aux contributeurs. Les exigences d’ingénierie du dépôt définissent les règles de revue et de validation. Conservez les conseils de compatibilité, sécurité et récupération utiles aux utilisateurs lorsque vous déplacez les explications internes.
