PyConFR 2025

Dev, cloud & sécu30 octobre – 2 novembre 2025Lyon, Campus René Cassin16e édition

Conférence gratuite de l'AFPy : sprints les 30 et 31 octobre, conférences et ateliers les 1er et 2 novembre (3 plénières, 16 conférences longues, 49 conférences courtes et ateliers au programme). Édition des 20 ans de l'AFPy. Environ 450 personnes selon le rapport de transparence (~390 le samedi selon Françoise Conil).

Une PyConFR communautaire, gratuite et très « libre » pour les 20 ans de l'AFPy : beaucoup d'outillage concret (tests, packaging, docs, htmx, lakehouses), une IA abordée avec prudence et esprit critique, et un fil rouge fort sur l'inclusion et le soin des personnes.

36 sessions résumées · 33 vidéos · mise à jour le lundi 28 septembre 2026 · synthèse à compléter

Sources lues et limites de cette synthèse

Corpus : Programme officiel complet (pycon.fr/2025), rapport de transparence du code de conduite (déc. 2025), 31 transcripts de vidéos Indymotion lus (ouverture, 3 plénières, 27 conférences, sur 56 vidéos publiées), une soixantaine de pouets Mastodon publiés du 28 octobre 2025 au 6 février 2026 (surtout le live-toot d'Ash_Crow, plus Julie, Django, FLOZz, Françoise Conil, Julien Maupetit…), et 5 billets de blog (Django Software Foundation, Martin Kirchgessner, Karen Jex, Hashbang, Le Calamar).

Limites : Corpus presque entièrement issu de Mastodon et de blogs de la communauté libre : aucun retour LinkedIn trouvé, et plusieurs sources viennent de speakers (Jex, Hashbang, Poulailleau, Kirchgessner). Les ateliers, les sprints hors Django et les lightning talks restent quasi non documentés, et une douzaine de sessions ne sont résumées qu'à partir de leur transcript, sans aucun retour participant. Les sous-titres automatiques Indymotion sont imparfaits (deux vidéos anglaises reconnues en finnois et en gallois, inexploitables).

Synthèse globale

1. Une conférence de la communauté, pas du marché

Tout rappelle que la PyConFR est d'abord une fête associative : les 20 ans de l'AFPy, un goûter d'anniversaire, l'assemblée générale le dimanche, la gratuité et le bénévolat (ouverture de Lucie Anglade). Le programme est dominé par des retours d'expérience de petites structures, de coopératives (Hashbang, Entr'ouvert), de la recherche publique (CNRS, Software Heritage, py-edu-fr) et de l'État (La Suite numérique de la DINUM). Les sponsors se présentent en deux minutes chrono. Solidaires Informatique en fait partie pour la première fois, et Entr'ouvert rappelle son procès gagné contre Orange pour contrefaçon d'un logiciel libre. Côté participants, Françoise Conil parle d'« une organisation parfaite » et d'environ 390 personnes le samedi, et Karen Jex d'un événement « accueillant, bien organisé » (speaker).

2. L'outillage du quotidien, mesuré plutôt que supposé

Le cœur technique de l'édition, c'est l'hygiène du développeur Python : tests plus rapides (Haasser et Vuillard), mocks utilisés en dernier recours (Lenormand), documentation avec Sphinx (Conil), dépendances et lockfiles avec uv (Bellin Salarin, Gatard), profilage du démarrage (Labelle), ORM mieux compris (Ordoquy, Jex). Le même réflexe revient partout : mesurer avant de conclure. Hyperfine montre que -n auto ne sert à rien. py-spy montre ce que cProfile ne voit pas. Et il faut compter ses requêtes SQL dans les tests. Formule du duo Hashbang : « Quand on ne sait pas, on fait de la science. »

3. Moins de JavaScript, plus de sobriété technique

Plusieurs talks défendent des stacks « ennuyeuses » et légères face aux architectures lourdes :

  • htmx dans un monolithe Django, avec un seul bug en trois ans (Martinet Sanchez) ;
  • JinjaX et Stimulus pour éviter une SPA (Mads) ;
  • DuckDB et Delta Lake plutôt que Spark pour des volumes moyens (Clement) ;
  • la « boring stack » Django de La Suite numérique ;
  • des slides en HTML/CSS/SVG sans JS (Ayoub).

Le compte Django s'en fait largement l'écho. L'argument est autant humain que technique : des équipes 100 % back-end restent autonomes (« ne pas faire de JS »).

4. L'IA, présente mais tenue à distance critique

L'IA n'est jamais la vedette, et quand elle apparaît, c'est avec des garde-fous :

  • l'IA outille, elle n'exécute pas : codemods plutôt que migration confiée à Cursor, qui a halluciné des attributs (Schindler) ;
  • le relecteur devient « gardien du code bizarre » face aux PR « vibe-codées » (Kellyer) ;
  • enseigner la lecture critique de code plutôt que la génération (Bayart) ;
  • l'IA pour trouver des glitchs dans Mario Kart, « pas à la place de jouer » (Ayoub).

Ash_Crow conteste l'idée d'un « savoir » des LLM, qui ont « juste absorbé des contenus ». Julien Maupetit défend le plaisir d'« échouer, tester des trucs » plutôt que d'attendre une réponse de la machine. Hors de Sentry, aucun talk ne présente d'usage industriel de l'IA générative.

5. Inclusion, droits et soin des personnes

C'est le fil le plus singulier de l'édition, porté à la fois par le programme et par l'organisation :

  • les trois plénières sont données par des femmes, par choix délibéré ;
  • la plénière de Morgane Rozenn Hauguel porte sur l'exclusion numérique et les cyberviolences ;
  • Michael Scherer plaide pour pouvoir changer de login sans créer un nouveau compte ;
  • Solidaires Informatique explique comment faire reconnaître un accident du travail ;
  • une lycéenne décrit l'écart entre les programmes et la réalité de Python au lycée ;
  • un atelier porte sur la mixité ;
  • côté logistique : déjeuner PyLadies, espace enfants, salle de repos, et un tuto pour poser des questions (« une question se termine par un point d'interrogation »).

Le financement revient aussi. La PSF a refusé une subvention américaine conditionnée à l'abandon de ses actions diversité (ouverture, Hammel). Augier juge Python sous-financé face à MATLAB. Textualize a fermé faute de soutien des entreprises utilisatrices (Chantier).

6. Tensions et critiques

Le rapport de transparence de l'AFPy note qu'aucun incident n'a été signalé. Le sondage de fin d'événement montre pourtant des « recadrages » et prises de parole d'hommes pendant les questions après des talks de femmes, des postures « patronisantes » et des « questions-remarques ». Trois personnes ont signalé des coupages de parole. La parité reste lointaine : 25 % d'oratrices en conférences et 9 % en sprints, même si la part progresse chaque année. Autres points faibles relevés :

  • la salle de repos était difficile à trouver ;
  • le wifi est tombé le dimanche matin, ce qui a limité les lightning talks (Ash_Crow) ;
  • Martin Kirchgessner s'étonne que les talks en anglais soient regroupés dans une seule salle plutôt que répartis par thème.

Dans les salles, les débats sont restés techniques et francs : faut-il arrêter un pipeline data sur une donnée invalide (Tiran-Cappello, « désaccord fondamental » avec un participant) ? ~= bloque-t-il aussi la version mineure (correction du public à Bellin Salarin) ? Faut-il vraiment préférer uv à Poetry ou PDM (intervention sur le talk de Gatard) ?

7. Biais du corpus

Les retours viennent presque tous du Fediverse (un live-toot détaillé d'Ash_Crow, plus une dizaine de comptes) et de 5 billets de blog, dont trois écrits par des speakers. Aucun post LinkedIn post-événement n'a été trouvé, ce qui colle au profil libriste de l'événement mais laisse de côté les participants venus d'entreprise. Beaucoup de sessions ne sont connues que par leur transcript automatique (sous-titres Indymotion imparfaits, deux inexploitables). Les ateliers, les sprints hors Django et les lightning talks restent dans l'ombre.

Actions concrètes citées

  1. Pour accélérer une suite de tests Django/pytest : ne pas hacher les mots de passe comme en prod (MD5 en test), couper le réseau pour débusquer les appels réels, désactiver la couverture en local, --reuse-db, et paralléliser un peu (2 à 4 workers, pas -n auto) (Haasser et Vuillard).
  2. Sur un gros refactoring, utiliser l'IA pour écrire l'outillage (codemods libcst), pas pour exécuter la migration : les assistants ont halluciné des attributs, les codemods non (Schindler, Sentry).
  3. Découper les grosses migrations en PR de ~5 fichiers par équipe propriétaire : 2 000 lignes sur 200 fichiers ne sont pas relisibles (Schindler).
  4. À l'ère de l'IA, être son propre premier relecteur et exiger que l'auteur d'une PR sache défendre chaque bout de code « bizarre » ; documenter le code bizarre au plus près du code (Kellyer).
  5. Côté enseignement, dire explicitement aux élèves quelle place l'IA a dans le cours et l'évaluation, et entraîner la lecture critique de code plutôt que la génération (Bayart).
  6. htmx dans un monolithe Django tient ses promesses après 3 ans ; tester avec BeautifulSoup et Syrupy, voir django-htmx et Slippers (Martinet Sanchez, via Ash_Crow et le blog Django).
  7. Sans être DBA, un dev doit connaître SQL, son SGBD, les bases de la performance et de la sauvegarde (Jex).
  8. Pour de la data de taille petite ou moyenne, Delta Lake ou Iceberg se manipulent en Python sans Spark (delta-rs, pyiceberg, DuckDB), avec voyage dans le temps sur les versions (Clement, via Kirchgessner).
  9. Pour profiler un démarrage Python, py-spy et speedscope plutôt que cProfile seul ; pour la confiance TLS, préférer truststore à un verify_ssl false (notes de Kirchgessner).
  10. Pour l'inclusion : formations accessibilité, recherche utilisateur sur la diversité des besoins, espaces en non-mixité choisie, soutien aux associations de médiation numérique (Hauguel).

Session par session

Vendredi 31 octobre

Session

Sprints Django

Sarah Abderemane, Thibaud Colas

Retours : Django Software Foundation (blog et Mastodon), Ash_Crow (Mastodon)

  • 27 contributeurs sur deux jours (blog Django ; 25 annoncés sur Mastodon) : admin, commandes, traductions, accessibilité, site djangoproject.com, marketing.
  • « La moitié de la salle était totalement novice en open source » (trad.), certains s'appuyant sur le tutoriel Django Girls.
  • Thibaud Colas y insiste sur l'importance de recueillir des témoignages d'utilisateurs de Django (Ash_Crow).
  • Autres sprints au programme : traduction de docs.python.org, Mercurial, py-edu-fr, Ansible, OneGeo Chat, FeretUI.

Samedi 1 novembre

Session▶ vidéo + transcript

Ouverture de la PyConFR 2025

Lucie Anglade — AFPy

  • 20 ans de l'AFPy : goûter d'anniversaire le samedi ; rappel des projets de l'association (forge, site d'exercices Genepi, traduction de la doc Python en français, Discourse et Discord relié à IRC).
  • Code de conduite présenté d'emblée, avec l'équipe de gestion des incidents, un numéro et une adresse dédiés, et un tuto « comment poser une question » : « une question se termine par un point d'interrogation », pas de « remarque déguisée », pas d'interruption sans accord.
  • Soutiens : PSF, qui a « refusé plus d'un million de subventions du gouvernement états-unien » pour ne pas abandonner ses actions diversité, et EuroPython Society ; sponsors (April, Elastic, Kraken, Scalingo, Navicat, Solidaires Informatique, Entr'ouvert, Kobalt, Alma, Botify…).
  • Entr'ouvert rappelle son procès gagné contre Orange pour contrefaçon d'un logiciel libre ; Solidaires Informatique sponsorise une PyCon pour la première fois.
  • Pratique : espace enfants, atelier MixTeen, salle de repos prêtée par Galactée, déjeuner PyLadies, soirée à La Cordée Valmy, AG le dimanche, lightning talks sur inscription.

▶ Voir la vidéo ↗

Keynote▶ vidéo + transcript

Être un.e allié.e du numérique pour toustes en environnement hostile

Morgane Rozenn Hauguel

  • Point de départ : le « backlash » de 2025 (patrons de la tech à l'investiture de Trump, appel à plus d'« énergie masculine »), lu avec Susan Faludi.
  • Déconstruire le cadrage « on n'arrête pas le progrès » : progrès technique n'égale pas progrès social, et le mot « technophobie » pathologise la critique (références : Jarrige, Ellul, Technologies partout, démocratie nulle part).
  • État des lieux : illectronisme chez 15 % des adultes (28 % avec les compétences faibles, INSEE 2021), dématérialisation des services publics qui exclut (alertes du Défenseur des droits), 94 % des pages du WebAIM Million avec des erreurs d'accessibilité.
  • Numérique et dominations : extractivisme et travail du clic (Madagascar), biais sexistes des IA génératives, continuum violences conjugales et cyberviolences (85 % des répondantes, rapport Hubertine Auclert).
  • Pistes concrètes : se former à l'accessibilité (Access42 cité), inclure tous les publics en conception, non-mixité choisie au travail, alternatives libres, aider son entourage et les associations de médiation, guides du collectif Échap.
  • Conclusion : moins un backlash qu'un « moment de clarté » qui dit l'urgence de ramener ces choix dans des espaces démocratiques. En réponse au public, elle juge la souveraineté numérique utile mais incomplète si l'on ne demande pas « pourquoi faire, pour qui ».

▶ Voir la vidéo ↗

Keynote▶ vidéo + transcript

Le rêve de tout enfant – devenir DBA ?

Karen Jex — Crunchy Data / Snowflake

Retours : Ash_Crow (Mastodon), Karen Jex (speaker, billet de blog)

  • Sondage à main levée d'ouverture : « le nombre de personnes voulant être DBA enfant est de : zéro » (Ash_Crow, qui y voit la loi de Betteridge). Elle-même l'est devenue par hasard, après des tests d'aptitude, et fait des bases depuis plus de 25 ans.
  • Constat sur scène : le rôle de DBA traditionnel décline et les devs gèrent souvent leur base eux-mêmes ; citation de Katie McLaughlin sur le dev Django à la fois DBA et sysadmin, « très sous-payé ».
  • Le minimum utile : sauvegarde et restauration (y compris vérifier celles d'un service managé), rôles et sécurité, lire un dashboard de monitoring, un modèle de données et un plan d'exécution, SQL même avec un ORM, protection des données.
  • Rappels de ses talks passés : 5 conseils pour une base « heureuse » (configuration, sauvegardes testées, haute disponibilité, bons utilisateurs, monitoring) ; Postgres a plus de 350 paramètres, une poignée suffit.
  • Refrain : « il n'y a pas besoin de tout savoir sur les bases de données », il suffit de savoir que les techniques existent et où chercher. En questions : base managée ou non selon les compétences de l'équipe ; Postgres et ses extensions couvrent la plupart des besoins.
  • Première PyConFR de la speaker, qui salue un événement « accueillant, bien organisé » (speaker).

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Est-on (juste) payé à écrire du code ?

Guillaume Ayoub — WeasyPrint

Retours : Julie (Mastodon), Ash_Crow (Mastodon)

  • Récit d'une journée, lancé par la question de son fils de 7 ans : « Papa, pourquoi tu prends pas une intelligence artificielle pour faire ton travail à ta place ? », et sa réponse : « Si tu pouvais prendre une IA pour jouer à ta place à Mario Kart, tu le ferais ? ».
  • Balade en plusieurs étapes : on est payé à prendre du plaisir, à comprendre (« je ne suis pas un chercheur, je suis un re-chercheur »), à construire, à inventer (pas de côté : AlphaGo, le premier site web, des slides en HTML/CSS/SVG sans JS).
  • Moment fort retenu par Julie : l'histoire de Katie Bouman et de la première image d'un trou noir, « le poids de 200 ans de recherche sur les épaules » ; et la phrase « on est payé à comprendre des choses ».
  • Chute sur l'IA (Ash_Crow) : elle peut être « cool » pour jouer à Mario Kart (trouver des glitchs), « juste, pas à la place de jouer normalement ».
  • Conclusion : au-delà de l'objectif, le chemin et le fait de le partager comptent, c'est aussi pour ça qu'on vient en conférence. Julie : « on rit, on pleure ! ».

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Développement de CPython

Victor Stinner — Red Hat

Retours : Martin Kirchgessner (blog)

  • Chiffres : ~1,5 million de lignes de Python et ~600 000 de C, 48 000 tests, des buildbots sur Windows, macOS, Linux, FreeBSD, Android, iOS et WebAssembly ; ~2 000 PR et plus de 7 000 tickets ouverts.
  • Critères de revue : utilité, PEP 7/8, doc et « What's New », tests des cas d'erreur, compatibilité ascendante ; « parfois, c'est une meilleure décision de ne pas merger une pull request ».
  • Gouvernance : Steering Council de 5 membres élus chaque année, 4 release managers, une centaine de core devs (la moitié actifs), groupes de travail C API, packaging, typing, sécurité, traductions.
  • Principe retenu par Kirchgessner et dit sur scène : « quand on merge du code, on devient responsable de ce code-là ».
  • En questions : de 24 h à jamais pour un merge selon le degré de conflit ; les bug triagers sont repérés et proposés par les core devs.

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Documenter son projet avec Sphinx

Françoise Conil — LIRIS/CNRS

Retours : Julie (Mastodon)

  • Démarrage : Sphinx dans un environnement virtuel, sphinx-quickstart, toctree, rôles de références croisées et intersphinx vers d'autres docs.
  • Publication sur Read the Docs (gratuit pour le libre, multi-versions et multi-langues), configuration .readthedocs.yaml.
  • Code : Pygments, docstrings reST ou Google/NumPy (Napoleon), autodoc ; extensions nbsphinx, Mermaid, Sphinx Gallery ; sphinx-lint ; thèmes Furo et PyData ; Markdown via MyST-Parser.
  • Conseil final : contribuer à la traduction de la doc Python pour maîtriser Sphinx.
  • Julie : « Superbe présentation de Sphinx, bien détaillée et pratique », avec une doc de démarrage téléchargeable ; partie sur MkDocs, elle se dit tentée.

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Le duo comique accélère une suite de tests Django/Pytest

Agnès Haasser — Hashbang, Arthur Vuillard — Hashbang

Retours : Ash_Crow (Mastodon), Martin Kirchgessner (blog), Agnès Haasser et Arthur Vuillard (speakers, billet et slides)

  • Résumé des speakers eux-mêmes : « tester c'est bien, mais quand c'est lent, c'est pas bien » ; « on peut paralléliser, mais pas trop » ; « soyons flemmard·es ».
  • Poste de dev : --durations pour trouver les tests lents ; couper le réseau pour débusquer les appels réels (une API publique était lue en entier à chaque run, découverte dans le TGV) puis mocker avec responses.
  • Gain principal : ne plus hacher les mots de passe comme en prod (hasher MD5 en fixture de test) : de 5 min 22 pour 369 tests à ~40 s pour 650 tests selon le billet d'Agnès Haasser.
  • Couverture calculée seulement en CI, --reuse-db, et mesure avec hyperfine : -n auto ne gagne presque rien, 2 à 4 workers suffisent.
  • CI GitLab : PostgreSQL permanent à côté du runner au lieu d'un service par job (-1 min 45 de pull), puis base template PostgreSQL pré-migrée : initialisation de ~32 s à ~5 s, ~1 s en réutilisant la base.
  • Réaction d'Ash_Crow sur les tests qui appellent des API tierces : « 😱😱😱😱 », prolongée par un échange sur le coût imposé à Wikipédia. Chute militante : « le problème des coopératives, c'est le capitalisme ».

▶ Voir la vidéo ↗

Conférence

Ansible at Scale

Daniel Gonçalves

Retours : Martin Kirchgessner (blog)

  • REX d'une plateforme Ansible partagée par plus d'une centaine d'équipes et plus de 800 000 jobs par mois (programme).
  • Notes de Kirchgessner : déploiement d'entreprise autour d'AWX, avec Django et FastAPI, génération de certificats SSH et intégration à Vault pour l'authentification.
  • Pas de vidéo publiée sur la chaîne Indymotion.

Conférence▶ vidéo + transcript

Vous n'étiez pas prêts pour les Design Systems

Mads

Retours : Django Software Foundation (blog et Mastodon)

  • REX : un design system dans une plateforme Django multi-app de près de 20 ans, pas API-first, avec une équipe back et infra et un seul dev front ; l'option FastAPI + SPA a été écartée.
  • Stack : JinjaX (composants façon JSX dans Jinja), Stimulus, CUBE CSS, Figma pour les design tokens, Vite et Storybook ; nouvelle app Django « ui » autonome, workspaces pnpm, assets versionnés publiés sur CDN.
  • Méthode : « on ne fera pas un big bang » ; première étape iso-fonctionnelle, invisible en prod. Durée réelle : 3 à 4 mois au lieu du mois annoncé.
  • Leçon : « c'est pas de se dire qu'est-ce que je vais utiliser, c'est de se dire comment je vais l'utiliser ». htmx jugé allant « un poil trop loin » pour ce cas.
  • Le compte Django a relayé la combinaison JinjaX, Stimulus et Cube CSS comme approche design system pour Django.

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Travailler avec des Data Lakehouses en Python, sans Spark

Romain Clement

Retours : Martin Kirchgessner (blog)

  • Du Data Warehouse au Data Lake qui finit en « marécage de données », puis au Lakehouse : formats ouverts Delta Lake, Iceberg, Hudi, DuckLake, avec ACID, time travel et branches.
  • Spark se justifie pour des centaines de Go ou des To ; en dessous, JVM, clusters et UDF compliquent tout. Alternatives : deltalake (Rust), PyIceberg, Polars, DuckDB (support Delta et Iceberg encore partiel en octobre 2025).
  • Démo : append, merge, historique puis voyage dans le temps par version ou timestamp, et combinaison deltalake + Arrow + DuckDB. Kirchgessner retient le load_as_version(i).
  • Conseil : « si vous n'avez pas nécessairement des besoins en big data, faites du Python, faites du DuckDB », puis passer à Spark si le volume l'exige, le stockage restant compatible.

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

htmx et Django : retour d'expérience 3 ans plus tard

Céline Martinet Sanchez

Retours : Ash_Crow (Mastodon), Django Software Foundation (blog et Mastodon)

  • Contexte : « Les emplois de l'inclusion », monolithe Django depuis 2019, équipe 100 % back-end ; htmx adopté en octobre 2022 face aux demandes d'interactivité.
  • Argument décisif : « ce qui a poussé les 7 développeurs à partir sur htmx, ça a été de ne pas faire de JS » (dit sur scène et relevé par Ash_Crow).
  • Tests sans end-to-end : un simulateur maison du comportement htmx avec pytest, BeautifulSoup et des snapshots Syrupy ; limites assumées (pas de vrai navigateur).
  • Bilan : un seul bug en 3 ans, vélocité stable sans dev front dédié. Outils cités : django-htmx, Slippers, factory_boy, l'essai Web Security Basics (with htmx).
  • Blog Django : « une expérience de dev joyeuse, quelques défis (résolus) côté tests » (trad.).

▶ Voir la vidéo ↗

Conférence▶ vidéo

How to solve a Python mystery

Aivars Kalvāns

Retours : Martin Kirchgessner (blog)

  • Traiter une appli Python bloquée comme une boîte noire avec les outils d'observabilité Linux, quand on n'a pas le temps de lire le code (programme).
  • Notes de Kirchgessner : inspection de /proc, strace ; astuce retenue : un fichier de log supprimé par erreur reste lisible via /proc/{pid}/fd/ tant que le processus tourne.
  • Sous-titres automatiques inexploitables (reconnus en finnois).

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Comment enseigner le Python à l'ère de l'intelligence artificielle générative ?

Pierre-Loïc Bayart — MIAI Grenoble

Retours : Ash_Crow (Mastodon)

  • Question préalable : pourquoi encore apprendre ? Réponse contre Jensen Huang (« nous devons arrêter de dire aux enfants qu'ils doivent apprendre à coder ») : une étude IRMf de 2020 montre que lire du code active les zones de résolution de problèmes complexes, pas celles du langage naturel. Point jugé « plus intéressant » par Ash_Crow.
  • Plus de la moitié des devs Python ont appris après ChatGPT (sondage JetBrains) ; citation d'Armin Ronacher : ce serait une erreur de les considérer comme de « faux programmeurs ».
  • Pistes : peu d'automatisation pour les débutants, lecture critique de code (faire expliquer ligne à ligne un code généré contenant une erreur), chatbot socratique type CS50 de Harvard, IA pour produire des supports (Manim, GIF Matplotlib, JupyterLite).
  • Conseil clé : chaque enseignant doit expliciter sa position sur l'IA pour le cours et l'évaluation.
  • Critique d'Ash_Crow sur la slide opposant « savoir » de la machine et connaissance humaine : « les LLM n'ont pas de savoir, elles ont juste absorbé des contenus ».

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Virtual Environments and Lockfiles, How Python Is Improving Reproducibility

Ivo Bellin Salarin

Retours : Martin Kirchgessner (blog)

  • 15 ans d'histoire : virtualenv, pip-tools (requirements.in / .txt), puis pyproject.toml, groupes de dépendances et marqueurs d'environnement.
  • Le format standard de lockfile (versions, URL par plateforme, hash) : « il a fallu quatre ans pour le définir » (trad.), encore peu adopté par les outils.
  • Suggestion, sans « guerre de religion » : uv (télécharge le bon Python, uv sync, uv run, dépendances en tête de script).
  • Sécurité : dépôt privé, uv sync --frozen en CI contre les versions mineures piégées sur PyPI, pas de secret dans le code.
  • Un participant l'a corrigé sur ~=, qui bloque aussi la version mineure.

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

La théorie et la réalité de l'apprentissage du Python à l'école

Luz (lycéenne)

  • Talk d'une lycéenne de terminale en Ardèche, appuyé sur un questionnaire rempli par 12 professeurs de sciences de son lycée (échantillon qu'elle dit biaisé).
  • Théorie : Python imposé au lycée depuis la réforme de 2019 ; des outils publics existent (Capytale, Basthon, France-IOI), mais Capytale n'est connu que des deux tiers des profs interrogés.
  • Réalité : manque de temps, programmes chargés, salles de 10 à 20 PC lents, devoirs impossibles sans ordinateur, profs non remplacés ; d'où des exercices réduits et « tout prêts ».
  • Côté élève : « on fait une fonction qui ajoute deux […] ce n'est pas très intéressant ». Besoins exprimés : temps, matériel, formation, demi-groupes, encadrement de l'IA.
  • Conclusion : des efforts réels, mais un accès inégal.

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Visualiser les réseaux sociaux à échelle planétaire, un milliard de pixels à la fois

Mathis Hammel

  • Cartographier des graphes de réseaux sociaux pour repérer comptes clés, communautés et campagnes : exemples de l'élection présidentielle roumaine annulée (commentaires TikTok) et d'un spam politique canadien.
  • Trois algorithmes : PageRank, Louvain, et ForceAtlas2, quadratique, rendu praticable par l'approximation de Barnes-Hut empruntée aux astrophysiciens.
  • Au-delà de ~10 millions de nœuds, passage au GPU avec l'équipe NVIDIA cuGraph (première implémentation GPU fidèle de ForceAtlas2), puis rendu en pyramide de tuiles : une carte de Wikipédia d'environ 10 milliards de pixels affichée avec ~132 Mo de RAM.
  • Garde-fou : « la carte, ça ne nous sert jamais à tirer des conclusions », seulement des intuitions.
  • Côté vie de l'événement : il promet de doubler les dons faits ce week-end à la PSF ou à l'AFPy.

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Bonnes pratiques de l'intégration d'OIDC et de SAML pour permettre le changement de login

Michael Scherer — Red Hat

  • Enjeu humain et légal : changements de nom et de prénom en hausse (INSEE), personnes trans, droit de rectification du RGPD (article 16).
  • Les normes le prévoient : NameID SAML opaque et stable, sub + iss immuables en OIDC, l'email et le pseudo pouvant changer.
  • Anti-patterns relevés dans les applis Fedora : login dans sub, login comme clé primaire, login dupliqué dans plusieurs tables ou dans l'URL.
  • Vie privée : savoir qu'une personne a changé de nom peut révéler une donnée sensible ; prévoir à la fois de garder et de couper le lien avec l'ancien nom.
  • Mot d'ordre : « tout ce que je veux, c'est que les gens qui veulent changer de nom puissent le faire sans avoir à créer un nouveau compte ».

▶ Voir la vidéo ↗

Dimanche 2 novembre

Keynote▶ vidéo + transcript

Embracing Weird Code

Ivana Kellyer — Sentry

  • Le code bizarre n'est pas forcément du mauvais code : c'est du code dont on ne comprend pas pourquoi il existe ou pourquoi il est écrit ainsi (hack « temporaire », correctif pour un OS exotique, architecture forcée).
  • Exemples tirés du SDK Python de Sentry, qui doit supporter de nombreuses versions de Python et de frameworks : monkey patching, code défensif qui échoue là où « rien ne peut échouer » (os.devnull, __getattr__ personnalisés, __class__ d'objets enveloppés).
  • Le mystère du début (import de Flask puis de Quart) s'explique par un paquet qui fait passer une app Quart pour une app Flask : tout code raconte une histoire, laisser le bénéfice du doute à son auteur.
  • Théorie de la vitre brisée : le code bizarre attire le code bizarre, donc tenir ses standards (tests, couverture).
  • À l'ère de l'IA, le bénéfice du doute ne tient plus : le relecteur doit être un « gardien du code bizarre » (trad.), et l'auteur « son premier relecteur » ; mettre l'explication (lien vers le ticket) au plus près du code.
  • En questions : pas de chiffre sur les PR « vibe-codées » refusées, mais les contributeurs sont réceptifs quand on les renvoie retravailler.

▶ Voir la vidéo ↗

Conférence

La suite numérique, la boîte à outils collaborative open source de l'État

Manuel Raynaud — DINUM, Virgile Deville — DINUM

Retours : Ash_Crow (Mastodon), Django Software Foundation (blog et Mastodon)

  • La DINUM présente sa suite collaborative libre (Docs, Fichiers), sur une « boring stack » Django, DRF et PostgreSQL, son workflow qualité et son dev handbook libre (programme).
  • Le compte Django parle d'un espace de travail de 11 applications propulsé par Django, porté aussi par l'Allemagne, les Pays-Bas et l'Italie : docs collaboratives, visio, assistant IA, messagerie.
  • Détail relevé par Ash_Crow : le guide de contribution de La Suite impose des messages de commit au présent, Django au passé, « #ContextSwitching ». Le wifi était en panne ce matin-là.
  • Pas de vidéo publiée sur la chaîne Indymotion.

Conférence▶ vidéo + transcript

What if You Became an Open Source Contributor in 2025?

Amanda Savluchinske

Retours : Django Software Foundation (blog et Mastodon)

  • Parcours : dans la tech depuis 2017, première contribution à un gros projet seulement en 2025, par peur d'être jugée. Message : « l'open source vous a réservé une place » (trad.).
  • Contexte : seul 1 codeur pro sur 4 contribue hors travail ; burn-out des mainteneurs.
  • Voies d'entrée : Google Summer of Code, Djangonaut Space (8 semaines, par équipes), ou partir d'un outil qu'on utilise déjà.
  • Conseils : good first issues, règles de contribution, conventional commits, questions sur les canaux publics, et un prompt IA pour clarifier sa question avant de la poser au mainteneur (retenu par le blog Django).

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Computer Vision Data Version Control and Reproducibility at Scale

Joe Pringle — lakeFS

Retours : Martin Kirchgessner (blog)

  • Présenté par Joe Pringle (lakeFS), et non par les speakers annoncés au programme (Tal Sofer, Itai Gilo).
  • lakeFS apporte « des opérations de type Git aux données » (trad.) : commits, branches « zero copy », merges avec hooks de contrôle.
  • Démo pré-enregistrée (wifi en panne) sur la détection de rétinopathie : la branche d'augmentation fait passer les faux négatifs de 14 à 3, la branche CLAHE fait moins bien ; lien bidirectionnel avec MLflow pour la traçabilité.
  • Argument réglementaire : AI Act, dispositifs médicaux, FDA. Face à DVC, lakeFS vise l'échelle du pétaoctet.

▶ Voir la vidéo ↗

Conférence▶ vidéo

Who Does Python Trust, and Why?

Dom Weldon

Retours : Martin Kirchgessner (blog)

  • Bases de la PKI, du DNS et des certificats x509, attaques de la chaîne d'approvisionnement, et promesse de ne plus jamais taper pip config set global.verify_ssl false (programme).
  • Kirchgessner retient l'usage de certifi et l'adoption de truststore comme alternative recommandée.
  • Sous-titres automatiques inexploitables (reconnus en gallois).

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Refactoring at Scale: Making Analytics Type-Safe with Codemods and AI

Fabian Schindler — Sentry

Retours : Martin Kirchgessner (blog)

  • Contexte : ~200 événements analytics du backend Sentry, typés par chaînes et enregistrés à la main, donc invisibles pour mypy ; cible : des dataclasses et un record() typé, héritage simple.
  • Premier essai avec Cursor en mode max : événements oubliés et surtout attributs hallucinés, commentaires supprimés, « ça a érodé toute notre confiance » (trad.).
  • Solution : des codemods libcst (qui préservent commentaires et espaces), l'IA servant à écrire le transformeur, pas à faire la migration. Kirchgessner : « des codemods fiables ont clairement surpassé les LLM » (trad.).
  • Écueil social : une PR de 200 fichiers et 2 000 lignes, impossible à faire relire ; découpage en 67 PR de ~5 fichiers, propriétaires trouvés via CODEOWNERS et git blame.
  • Leçons : « la certitude passe avant la vitesse » (trad.), mieux planifier, la relisibilité et le travail d'équipe comme facteurs décisifs ; bonus, de vieux bugs découverts au passage.

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Universal Python Extensions: Performance, Compatibility, Sustainability, and Less CO₂

Pierre Augier — CNRS

Retours : Martin Kirchgessner (blog)

  • Talk renommé sur scène « Python Native Interface (PyNI) ». Micro-benchmark : 66 itérations/s en 3.11, 72 en 3.14 (JIT un peu plus lent), ~1 000 pour PyPy et GraalPy.
  • Cause : l'API C de CPython (accès direct aux structures, comptage de références, adresses fixes) empêche JIT et interpréteurs alternatifs de briller avec NumPy.
  • HPy s'est enlisé faute d'implication et de financement ; PyNI, inspiré de HPy et destiné aux outils comme Cython, est porté par le groupe de travail C API, avec une PEP en rédaction et un horizon d'environ 5 ans.
  • Plaidoyer : Python est sous-financé (comparaison avec les licences MATLAB d'une université) ; appel concret à aider PyPy à supporter Python 3.12. Kirchgessner retient les régressions du JIT 3.14 et le manque de financement.

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Démarrage Python : mesurer avant d'optimiser

Florentin Labelle

Retours : Martin Kirchgessner (blog)

  • Contexte : stage chez Datadog, réduire le cold start de sa bibliothèque sur AWS Lambda.
  • cProfile + pstats + SnakeViz sur une démo Flask ; règle d'or : « si vous voulez rendre votre app un peu plus rapide au démarrage, vous ne faites rien au démarrage ».
  • Limites de cProfile : modifier le code, aveugle aux extensions natives, temps multiplié par 3.
  • Alternative : profilage par échantillonnage avec py-spy (--native pour descendre dans l'extension Rust) et Speedscope, recommandation que retient aussi Kirchgessner.

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Au secours, on vient auditer mon application

Thomas Cordival

Retours : Ash_Crow (Mastodon)

  • Une trentaine d'audits menés : un audit n'est pas un Sonar mais « un regard objectif et extérieur », déclenché par une cause (choix stratégique, incidents, nouveau dirigeant, exigence client).
  • Méthode : architecture, code (SonarQube plus « le flair de l'inspecteur »), git log, pratiques, organisation ; 1 à 2 mois, de 10 000 à 100 000 €.
  • Pour l'équipe auditée : doc à jour, recul, et surtout un canal vers les commanditaires, l'auditeur prêtant « sa cravate et son tampon » à ses bonnes idées.
  • Sondage de salle relevé par Ash_Crow : la moitié a déjà lu un rapport d'audit, un quart en a subi ou mené un, trois personnes en ont commandé un.

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Calamars et Pythons : créons un jeu 2D avec arcade

Vincent Poulailleau

Retours : Ash_Crow (Mastodon), Vincent Poulailleau (speaker, billet et slides)

  • arcade (OpenGL/pyglet, API typée) face à Pygame (SDL, supporte Android) : arcade tient mieux 60 images/s avec beaucoup de sprites.
  • Jeu démo « Calp » monté avec uv et importlib.resources : formes, sprites, clavier/souris, collisions, views, sons, shaders GLSL, puis distribution avec PyInstaller (compiler sur chaque OS).
  • Ton assumé : « On va faire un petit jeu, ça ne sera pas le jeu de l'année » ; Ash_Crow note l'alternance entre commandes uv et anecdotes sur les calamars.
  • Jeu lançable avec uvx calp, slides et code publiés (speaker).

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Quand le Terminal dévore la UI : TUI pour tout le monde !

Thierry Chantier

Retours : Julien Maupetit (Mastodon)

  • Une TUI maximise l'usage du terminal avec un peu d'interaction ; historique du métier Jacquard aux terminaux 80 colonnes.
  • Tour de 4 écosystèmes : Java (Picocli, Spring Shell), Python (Typer, Rich, Textual, Cyclopts), Go (Cobra, Bubble Tea, VHS), Rust (Ratatui), jugé le plus puissant aujourd'hui.
  • Mise en garde en questions : Textualize a fermé faute de financement par les entreprises utilisatrices, le projet ralentit ; l'accessibilité des TUI n'est pas mûre.
  • Retombée concrète : Julien Maupetit dit y avoir découvert VHS pour enregistrer des démos de CLI.

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Dompter les mocks

Julien Lenormand

  • Sondage d'ouverture : une vingtaine de personnes ont déjà eu du mal avec les mocks, une seule dit les maîtriser.
  • Live coding sur une API météo : écrasement brutal, Mock et return_value, puis patch en context manager pour isoler les tests ; spec, fixtures et monkeypatch de pytest.
  • Tout est affaire de frontière : moquer trop haut ne teste qu'un if, moquer requests.get oblige à reconstituer Response.
  • Limites : tests faux si le mock diverge du vrai service, fragilité (passer de requests à httpx casse tout). « Le mock, c'est souvent un peu le dernier recours ».
  • Alternatives : adaptateurs et inversion de dépendance, testcontainers, contract testing.

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

L'ORM de SQLAlchemy : trop intelligent pour être compréhensible ?

Xavier Ordoquy

  • Points de douleur d'un ancien mainteneur de Django REST Framework passé à FastAPI + SQLAlchemy.
  • Autoflush : des erreurs d'intégrité lors d'une simple lecture ; begin_nested force toujours un flush.
  • N+1 : deux joinedload sur des many-to-many font un produit cartésien (~1 million de lignes, des out-of-memory en prod) ; selectinload règle le problème. Conseil : compter les requêtes SQL dans les tests.
  • Le commit expire les objets chargés et relance des requêtes ; itérer sur une relation qu'on modifie n'en traite que la moitié, sans erreur.
  • Verdict : de bons choix de conception, mais moins de prédictibilité que Django ; « faites des conférences, ça vous apprend plein de choses ».

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Construire des logiciels fiables basés sur des API douteuses

Romain Dorgueil

  • Constat d'un infogérant partenaire : après l'erreur humaine, la défaillance des services externes est la deuxième cause de panne ; les API internes des clients posent souvent plus de problèmes que les externes.
  • Anecdotes : API passée de 100 ms à 30 s, service partagé qui a laissé des milliers de chauffeurs de camion sans itinéraire.
  • Les tests ne suffisent pas et le client juge le service final. Plutôt que des try/except et circuit breakers refaits à chaque projet, un proxy HTTP open source posé à côté des applis : sondes, circuit breaker, pools de secours, cache HTTP standard (Hishel).
  • « Je vends un service, il faut que ce service fonctionne ». En questions : le proxy se scale horizontalement pour ne pas devenir un point de défaillance unique.

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Du vrai TDD en data science en passant de Pandas à Polars avec Pelage !

Alix Tiran-Cappello

  • Refactoring Pandas sous test d'équivalence : groupby/agg au lieu de boucles (~1 s à ~0,2 s), fin de inplace=True, chaînage de méthodes.
  • Traduction pas à pas vers Polars (filter, pl.col, with_columns).
  • Pelage : tests de données chaînables via pipe, en lazy, inspirés de dbt et Great Expectations (plages, nulls, unicité, valeurs interdites).
  • Débat avec la salle : un participant voulait que le pipeline continue en journalisant les rejets ; l'orateur est « en désaccord fondamental », le pipeline doit s'arrêter, « c'est pour ça que je n'ai jamais vu un dashboard qui dit la vérité ».

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Les accidents du travail dans la tech

Camille Dupont — Solidaires Informatique, Camille Dupond — Solidaires Informatique

  • Deux défenseurs syndicaux, sous pseudonyme : un accident du travail est « un événement précis qu'on peut dater », y compris psychique (syndrome anxio-dépressif après un entretien d'évaluation, agression verbale, chute en télétravail).
  • Sondage de salle : environ 8 personnes ont déjà déclaré un accident, 4 y ont renoncé, 26 pensent qu'un·e collègue en a été victime.
  • Procédure : prévenir sous 24 h, l'employeur déclare sous 48 h et ne peut pas refuser ; à défaut, la victime a 2 ans pour déclarer elle-même.
  • Lecture de vrais courriers de réserves patronales (« prétendu accident »), motivées par le coût des cotisations.
  • Conclusion : « collectivement, c'est la seule manière qu'on a de se protéger » ; créer du lien avant l'accident, se faire accompagner par le CSE ou un syndicat.

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

py-edu-fr : formations modulaires à Python dans l'ESR

Jérémy Laforet

  • Constat : dans la recherche, presque tout le monde finit par faire du Python sans formation, et les ressources existantes sont peu réutilisées.
  • Projet soutenu par les réseaux Calcul et Devlog du CNRS : « pas tellement un cours, mais des kits pour faire des cours », sous forme de fiches Markdown/MyST avec métadonnées, assemblées par Jupyter Book et déployées via JupyterLite ou JupyterHub.
  • Un sprint py-edu-fr s'est aussi tenu pendant la PyConFR.
  • En questions, une chercheuse témoigne que les formations de 3 jours sont vite oubliées faute de pratique.

▶ Voir la vidéo ↗

Conférence▶ vidéo + transcript

Onzr : l'histoire du CLI Deezer un peu en retard

Julien Maupetit

Retours : Julien Maupetit (speaker, Mastodon et slides)

  • Genèse politique : quitter Spotify après son don à l'investiture de Trump, mais Deezer n'a pas de client Linux et son lecteur web dévore la RAM.
  • Technique : flux découpé en blocs dont un sur trois est chiffré, lecture via les bindings Python de VLC ; une première version en UDP multicast échoue, la seconde relaie le flux via un simple serveur HTTP.
  • Message : « ce qui est intéressant, c'est d'échouer, de tester des trucs, et pas forcément d'attendre qu'une machine nous crache une réponse toute faite ».
  • Le speaker regrette que la capture d'écran de sa démo n'ait pas fonctionné sur la vidéo (speaker).

▶ Voir la vidéo ↗

Sessions sans retour trouvé (37)

  • Empowering Science Education with Python (Okoro Nosakhare)
  • Tout ce dont votre package a besoin (Joseph Barbier, vidéo)
  • QuerySet.explain() : Make it Make Sense (Aivars Kalvāns)
  • SSO : mode d'emploi et pièges à éviter (Carmen Alvarez)
  • Doc Busters (Sarah Haïm-Lubczanski, Pauline Rambaud, vidéo)
  • From Fields to Code: Open-Source Python Tools for European Farmers (Felipe Arruda Pontes, vidéo)
  • Protéger les secrets de vos clients (David Rigaudie, vidéo)
  • Accro au café ? (Rémi Cardona, vidéo)
  • Running Every Street in Paris with Python and PostGIS (Vinayak Mehta, vidéo)
  • Comment gérer un changelog facilement quand on est plusieurs ? (Cyrille Pontvieux, vidéo)
  • Créer des cartes avec Python (Michaël Favel-Guidet, Emeline Lesmanne, vidéo)
  • The Elegant Dependency Injection Mechanism of FastAPI (Mohamed Rebai, vidéo)
  • Gérer ses dépendances Python sans douleur avec uv (Anaïs Gatard, vidéo)
  • Anxiété : peut-on monitorer sa santé mentale ? (Jeffd)
  • Construire un type frozendict (Antoine Rozo, vidéo)
  • MicroPython : programmation Python pour microcontrôleurs (Amine Bendahmane, vidéo)
  • Migrer l'annuaire LDAP d'un Nextcloud (Armando Femat Ortiz, vidéo)
  • Advanced Alchemy : surcouche de SQLAlchemy (Julien Courtès, vidéo)
  • Retour d'expérience : une base de projet réutilisable avec Litestar (Irina Mitiaieva, Cyril Monmouton, vidéo)
  • À la sauce Python : métaclasses, décorateurs et ORM fait maison (Pierre Verkest, vidéo)
  • Cartographier les dommages aux bâtiments avec Sentinel-1 (Frédéric Lamy, Pierre-Henri Dubois, vidéo)
  • Pas d'algo, pas de bug (Matthieu Sauboua-Beneluz, vidéo)
  • Du comportement humain au comportement du code : l'ABA (Ewa Kadziolka, vidéo)
  • swh-fuse (Martin Kirchgessner, vidéo)
  • Canaille, un fournisseur d'identité léger en Python (Éloi Rivard, vidéo)
  • REX de développeuse : comment j'ai changé de stack technique (Marjolaine Bouquet, vidéo)
  • Des structures de données qui vont vous étonner (Pascal Martin, vidéo)
  • Atelier « Et si on codait aussi la mixité ? » (Houleymatou Baldé)
  • Atelier CI/CD avec Nox (Michaël Favel-Guidet)
  • Atelier Python sans GIL et le GPU (Rostan Tabet)
  • Atelier Des Objets Élégants dans votre code (Yann Bouvet, Jérémy Chauvin)
  • Atelier Créer un petit site web statique avec Python et Jinja (Liam Collod)
  • Atelier de programmation pour les enfants (MixTeen et bénévoles)
  • Atelier Litestar (Irina Mitiaieva, Cyril Monmouton, Jérémie)
  • Atelier Scrapy : mission exploration du web (Mouna Sebti)
  • Atelier Build your own Real Time Voice Assistant (Ivo Bellin Salarin)
  • Lightning talks du dimanche

Sources