BEGIN:VCALENDAR
VERSION:2.0
NAME:PyConFR 2025
PRODID:-//PyConFR//NONSGML PyConFR//FR
BEGIN:VEVENT
UID:RNKPFC
DTSTART:20261031T085000
DTEND:20261031T093500
SUMMARY:Accueil / Welcome (Antoine Rozo)
DESCRIPTION:Session d'ouverture de PyConFR 2026.
	
	Opening talk for PyConFR 2026.
LOCATION:MARI/SUGGAR
END:VEVENT
BEGIN:VEVENT
UID:88J8YP
DTSTART:20261031T094000
DTEND:20261031T102500
SUMMARY:Le mot esquive, l'instrument tranche : autonomie stratégique, souveraineté numérique et l'épreuve de la cyber (Rayna Stamboliyska)
DESCRIPTION:« Autonomie stratégique » et « souveraineté numérique » sont devenus des mots-valises que le débat public traite en synonymes. Or, ils ne le sont pas. Le premier vient de la politique de défense et désigne une capacité d'agir dans un monde interdépendant, sans viser l'autarcie. Le second vient du marché et du réglementaire, et désigne un contrôle, sur les infrastructures comme sur les fournisseurs. Cette conférence part de ce brouillage pour en exposer les effets et la fonction, plutôt que pour arbitrer entre les définitions.
	
	Le flou est fonctionnel. Un vocabulaire vague permet à des projets incompatibles (politique industrielle nationale, agenda réglementaire européen, protection des droits, contrôle sécuritaire) de faire coalition sous une même bannière. Sous les deux mots se logent au moins cinq tensions distinctes, à commencer par celle qui sépare la capacité (pouvoir faire) du contrôle (pouvoir décider) : un État peut être souverain en droit et incapable en pratique.
	
	La cyber est le lieu où ce flou devient coûteux, parce que les dispositifs tranchent là où les mots esquivent : un produit est certifié ou il ne l'est pas, une vulnérabilité est divulguée ou retenue, un fournisseur est exclu ou maintenu. La révision du Cybersecurity Act (CSA2) sert de démonstration. Un seul texte se déploie sur trois axes qui ne disent pas la même chose (montée en capacité d'ENISA, pouvoir de certification, exclusion des fournisseurs à haut risque), ce qui explique que ceux qui le défendent défendent rarement la même chose.
LOCATION:MARI/SUGGAR
END:VEVENT
BEGIN:VEVENT
UID:3RR8U3
DTSTART:20261031T103000
DTEND:20261031T125500
SUMMARY:Intégration et usage du broker Lavinmq dans un projet django et monitoring d’infrastructures par Beszel (Bickel OLOUDE)
DESCRIPTION:Mon intervention portera sur la présentation et l’utilisation de Lavinmq dans un projet django et la mise en exploitation de l’outil de monitoring Beszel pour le monitoring de VPS ou des conteneurs docker. En effet, dans un premier temps, je vais aborder la notion de broker qui permettra de présenter Lavinmq. Ensuite, il va s’en suivre la partie pratique pour le test en public d’un projet django exemple pour l’envoi de mail ou de notification à partir d’une instance Lavinmq. 
	
	Dans un second temps, mon intervention va consister à présenter et utiliser Beszel pour le monitoring d’infrastructures telles des serveurs VPS, conteneurs docker et autres. Je vais présenter Beszel et expliciter sa mise en exploitation en insistant sur des fonctionnalités principales.
LOCATION:LANG8
END:VEVENT
BEGIN:VEVENT
UID:BE3RUH
DTSTART:20261031T103000
DTEND:20261031T125500
SUMMARY:Ready, Set, Publish! Write your first Python Package with uv (Linda Kolb)
DESCRIPTION:Packaging often feels like a mysterious art form - everyone talks about packages, but very few people have actually built one from scratch. In this 90‑minute workshop, we will walk through the whole process together: creating a small package, managing dependencies with uv, building it and publishing it so it can be reused in another project.
	
	Instead of copy‑pasting scripts and hoping all the right dependencies magically appear in your new environment, let’s create a reusable package.
	
	Packaging isn’t complicated - you just need a good starting point. You’ll leave with a small, working example you can reuse for your future projects.
	
	
	Target audience: Intermediate Python users. No packaging experience needed - curiosity is enough!
	
	Requirements:
	- Any Python‑friendly IDE (VS Code, Cursor, PyCharm, etc.)
	- Basic comfort with the command line
	- Basic understanding of Python environments
LOCATION:LANG7
END:VEVENT
BEGIN:VEVENT
UID:BVCLUF
DTSTART:20261031T103000
DTEND:20261031T105500
SUMMARY:Python et Emacs en 2026 (Julien Palard)
DESCRIPTION:Petite démo from scratch de configuration et d'utilisation d'Emacs pour faire du Python en 2026.
	
	On va tenter de configurer emacs progressivement, étape par étape, proprement, sans coder en elisp (on utilisera juste la syntaxe, comme toute autre syntaxe de configuration).
	
	#NOAI #notelemetry #NoGAFAM
LOCATION:BASENDERIE
END:VEVENT
BEGIN:VEVENT
UID:M9HWUS
DTSTART:20261031T103000
DTEND:20261031T105500
SUMMARY:Au secours on s'est fait hacker pendant un downtime de Claude (Nicolas Ledez)
DESCRIPTION:Un jour, une inconnue bienveillante nous signale des failles dans notre application open source. Je me mets en chasse pour comprendre l'origine du problème. Claude Code : en rade. Codex : refuse poliment de m'aider à « hacker ».
	
	Retour à l'ancienne — lecture de code, grep, doc, et pas mal de nerfs. Puis Anthropic sort les cafards de ses serveurs, on peut retravailler 😬 Résultat : le lendemain, patch, déploiement, communication, et 4 CVE publiées.
	
	Le récit de ces 12 heures, ce qu'on a trouvé, et une question qui pique : qu'est-ce qu'on a trouvé tout seuls — et qu'est-ce qu'on n'aurait pas trouvé sans ?
LOCATION:LANG5
END:VEVENT
BEGIN:VEVENT
UID:MN33AT
DTSTART:20261031T103000
DTEND:20261031T125500
SUMMARY:Atelier sur les impacts de l'IA générative pour la génération de code Python (Pierre-Loic Bayart)
DESCRIPTION:Cet atelier s'inspire de [La Bataille de l'IA](https://www.batailledelia.org/), un atelier conçu par l'association Latitudes pour sensibiliser aux enjeux de l'IA générative. Il en reprend la structure et les mécanismes d'animation, tout en les adaptant aux problématiques spécifiques des personnes utilisant l'IA pour produire du code.
	
	Au fil de l'atelier, les participants exploreront une chronologie de l'IA générative pour la génération de code, échangeront en petits groupes autour des principaux enjeux et construiront une réflexion prospective sur les usages à venir.
	
	Aucun ordinateur n'est nécessaire : il s'agit d'un atelier entièrement déconnecté, centré sur la réflexion collective, les échanges d'expériences et le partage de bonnes pratiques.
	
	L'objectif est de prendre du recul sur l'utilisation des agents de code basés sur l'IA générative, de mieux comprendre leurs impacts et de repartir avec des clés de réflexion ainsi que des retours d'expérience concrets issus des discussions entre participants.
LOCATION:LANG6
END:VEVENT
BEGIN:VEVENT
UID:
DTSTART:20261031T103000
DTEND:20261031T105500
SUMMARY:<i>To be confirmed</i> ()
DESCRIPTION:
LOCATION:PATUEK
END:VEVENT
BEGIN:VEVENT
UID:ZNQC9Y
DTSTART:20261031T103000
DTEND:20261031T105500
SUMMARY:Ma relation toxique avec Python (Julien Lenormand)
DESCRIPTION:Python a été mon premier amour (en termes de langage de programmation).
	Et les étapes se sont enchaînées naturellement (premier stage, premier CDI, première PyCon, ...).
	Mais au bout de 15 ans, je trouve qu'il a changé ; j'ai changé aussi. Je ne lui trouve plus les mêmes attraits. Il a même parfois des comportements que je désapprouve.
	Notre couple est en crise. Est-ce que je reste avec lui par confort ? Est-ce que notre relation peut être encore sauvée ?
	Venez vous assoir sur le divan avec moi, il faut qu'on parle ...
LOCATION:MARI/SUGGAR
END:VEVENT
BEGIN:VEVENT
UID:J8BJRA
DTSTART:20261031T110000
DTEND:20261031T115500
SUMMARY:Tests end-to-end en Python du gestionnaire de mail/agenda KDE : bindings, vrais serveurs et vrais bugs (Benjamin Port)
DESCRIPTION:Cette présentation porte sur la manière dont nous avons construit des tests de bout en bout pour Akonadi en python et pourquoi nous avons choisi cette approche plutôt que de rester sur du C++. 
	
	Akonadi est un framework développé par KDE qui sert de service de stockage centralisé pour les données de gestion des informations personnelles (email, calendrier, contact...)
	
	Nous parlerons de la mise en place de binding python autour des bibliothèques KDE afin d'intéragir avec composants internes d'Akonadi, et comment nous avons structuré la suite de tests pour qu'elle soit réellement utile.
	
	Nous testons vis à vis de vrais serveurs (pas des mocks) : Nextcloud, Radicale, Cyrus, Dovecot.
	Nous leur envoyons de vrais flux iTIP (anonymisés), du trafic IMAP et CalDAV. Il s'avère que chaque serveur se comporte légèrement différemment, et on ne s'en rend compte qu'en testant contre les implémentations réelles que les utilisateurs ont en production.
	
	Nous partagerons les difficultés rencontrées pour faire des tests d'un moteur totalement asynchrone,
	
	Et nous ferons un retour sur les bugs que nous avons pu découvrir et qui nous ont donc permis de fiabiliser Akonadi.
LOCATION:LANG5
END:VEVENT
BEGIN:VEVENT
UID:JKBDKT
DTSTART:20261031T110000
DTEND:20261031T115500
SUMMARY:C'est une bonne situation ça, auto-hébergeur ? (Matthieu Sauboua-Beneluz)
DESCRIPTION:Ça y est, l'heure est venue, vous en avez assez d'être tributaire des GAFAM et vous avez enfin trouvé la motivation pour passer à l'acte. Bravo ! Mais alors, par où commencer ? Tout un tas de questions se bousculent dans votre tête et vous êtes déjà découragé·e. Pas de panique !
	
	Grâce à deux années de tatonnements, j'ai pu répondre à un certain nombre d'interrogations. Je vous ferai un retour d'expérience de mes voyages dans le monde merveilleux de l'administration système et réseaux, venant moi-même d'une formation de développeur avec de simples bases en ligne de commande et docker. Dans un souci d'apprentissage, nous ne prendrons que très peu de solutions clé en main, privilégiant une approche bare-metal first.
	
	Mon objectif, que vous sortiez de cette conférence avec des réponses selon l'usage voulu:
	- Quel matériel est viable pour de l'auto-hébergement ? Comment l'obtenir sans se ruiner ? Faire son NAS maison, est-ce que ça vaut le coup ?
	- Ou trouver les services pour remplacer les GAFAM ? 
	- Quelles solutions de monitoring sont les plus adaptées ?
	- Comment gérer mes certificats facilement ?
	- Comment accéder simplement à mes services depuis l'extérieur ?
	- Comment provisioner des VMs pour plus de souplesse ?
	...
	
	Que vous ayez un raspberry pi qui prend la poussière ou l'intention de monter un rack maison, vous devriez sortir des ces 55 minutes avec des pistes concrètes.
LOCATION:MARI/SUGGAR
END:VEVENT
BEGIN:VEVENT
UID:STTTTG
DTSTART:20261031T110000
DTEND:20261031T115500
SUMMARY:Data Platform : 250 microservices, 7 To par jour… et pourtant tout est en Python (Emmanuel-Lin Toulemonde)
DESCRIPTION:Construire une Data Platform à l'échelle ne nécessite pas forcément une multitude d'outils. Notre plateforme traite 7 To de données et plus d'un million d'événements par jour, intègre 40 sources de données et expose plus de 250 objets de données... tout en reposant principalement sur Python.
	
	Dans ce retour d'expérience, je montrerai comment nous avons utilisé Python pour construire les briques d'une plateforme de données moderne :
	- une architecture orientée événements pour remplacer les traitements batch lorsque cela est pertinent ;
	- l'ensemble des transformations de données en python ;
	- le suivi de la qualité de données en python
	- un modèle de stockage garantissant l'organisation et la gouvernance des données dans le temps ;
	- des data contracts ; 
	- un catalogue de données custom développé en python ;
	- une anonymisation contextualisée permettant de préserver la valeur métier des données ;
	des composants techniques réutilisables qui imposent naturellement les bonnes pratiques aux équipes.
	
	L'objectif est de partager les choix d'architecture, les abstractions Python et les compromis qui nous ont permis de faire grandir une plateforme de données tout en restant simple à faire évoluer.
LOCATION:BASENDERIE
END:VEVENT
BEGIN:VEVENT
UID:V7SNPM
DTSTART:20261031T110000
DTEND:20261031T112500
SUMMARY:Easy to avoid mistakes in Open Source code contributions (Riccardo Magliocchetti)
DESCRIPTION:There are good chances that most of the third party code you interact with on a daily basis is Open Source. If you are lucky it’s also maintained. You may also have contributed to some Open Source projects or at least you tried: by the number of stale pull requests on Open Source repositories I guess it’s not a happy experience for a lot of people.
	
	Hopefully we can save some needless pain to some of you!
	
	Let’s go through a list of mistakes you can avoid to make Open Source maintainers life easier and your experience in contributing code to Open Source software more pleasant. One day you may be on the other side.
LOCATION:PATUEK
END:VEVENT
BEGIN:VEVENT
UID:
DTSTART:20261031T113000
DTEND:20261031T115500
SUMMARY:<i>To be confirmed</i> ()
DESCRIPTION:
LOCATION:PATUEK
END:VEVENT
BEGIN:VEVENT
UID:3CTQHM
DTSTART:20261031T120000
DTEND:20261031T122500
SUMMARY:Que devez vous prendre en compte lors du déploiement d’une application Django ? (Samir Akarioh)
DESCRIPTION:Dans cette présentation, nous passerons en revue les points essentiels dès que votre application commence à avoir de vrais utilisateurs : gérer les paramètres et les secrets de manière sécurisée, servir correctement les fichiers statiques et les fichiers médias, exécuter les migrations sans tout casser, et choisir la bonne configuration de serveur applicatif.
	
	Nous aborderons également les erreurs fréquentes liées aux connexions à la base de données, aux tâches en arrière-plan, à la mise en cache et aux délais d’expiration, ainsi que les bonnes pratiques pour les éviter.
	
	Il s’agit d’une checklist pratique, fondée sur des problèmes rencontrés lors de déploiements réels. Vous repartirez avec une vision plus claire du fonctionnement d’un déploiement et moins de mauvaises surprises lors de la mise en production de votre prochain site Django.
LOCATION:MARI/SUGGAR
END:VEVENT
BEGIN:VEVENT
UID:PKZPGE
DTSTART:20261031T120000
DTEND:20261031T122500
SUMMARY:Breaking down the Model Before It Breaks Decisions (Daniel Emakporuena)
DESCRIPTION:Often machine learning evaluation comes down to one question: “How accurate is the model?” However, accuracy is not the whole picture. All of these are areas where a model can perform well and yet still fail: have leaked features; poor performance on minority classes; be overfitted to historical patterns; have poor performance on key subgroups; or have hard to explain predictions that lead to real world decisions.
	
	This session not only focuses on model accuracy, but also on a pre-emptive forensic perspective to diagnose machine learning models in advance of break failures in decisions. We will explore practical approaches to investigate model reliability by using Python and scikit-learn, such as evaluating for data leakage, reviewing class balance, testing the validation strategy, analysing confusion matrices, comparing precision and recall, examining false positives and false negatives, examining feature importance, and finding where model errors are clustered.
	
	Instead of assuming that a good score is a sign of success, this talk demonstrates how to challenge the model, check the evidence and determine if the model is sufficiently reliable to make real decisions.
	
	Give us basic timings to demonstrate how you will reasonably deliver your presentation in 30 minutes including a Q&A
LOCATION:PATUEK
END:VEVENT
BEGIN:VEVENT
UID:VTNKYG
DTSTART:20261031T120000
DTEND:20261031T122500
SUMMARY:Du SQL au Graphe : Anatomie d'une migration Neo4j sur GCP (David Rigaudie)
DESCRIPTION:Peut-on vraiment tout modéliser en colonnes et en lignes ? Pour répondre à des problématiques de relations complexes, j'ai sauté le pas : intégrer Neo4j au cœur d'une application existante.
	
	Je vous propose un retour d'expérience sans filtre sur cette transition. 
	
	Nous aborderons quelques défis concrets comme mettre en place un ORM (on parle dans ce cas d'un OGM) ou encore comment mettre en place cette communication dans une infra GCP
	
	Venez découvrir ce qui a brillé par sa performance et les pièges que j'aurais aimé éviter avant de quitter le relationnel.
LOCATION:BASENDERIE
END:VEVENT
BEGIN:VEVENT
UID:YWTPV3
DTSTART:20261031T120000
DTEND:20261031T122500
SUMMARY:Faire de la collaboration temps réel avec Django-channels (Julie Rymer)
DESCRIPTION:Comment nous avons mis en place de l'édition collaborative avec des CRDT dans une application web Django + SPA Angular afin de proposer une expérience de co-écriture moderne à nos utilisateurs.
LOCATION:LANG5
END:VEVENT
BEGIN:VEVENT
UID:37LMDT
DTSTART:20261031T140000
DTEND:20261031T142500
SUMMARY:Python outside, Rust inside (Joseph Barbier)
DESCRIPTION:Difficile aujourd'hui de parler de l'écosystème Python sans croiser Rust. En quelques années, une grande partie des outils les plus innovants ont un point commun : ils sont écrits en Rust. De **uv** à **ruff**, en passant par **polars**, **pydantic**, **ty** ou **pyrefly**, Rust s'est imposé comme un allié de choix pour construire des outils toujours plus rapides, fiables et agréables à utiliser.
	
	Mais pourquoi ce changement ? Est-ce seulement une question de performances, ou cache-t-il une évolution plus profonde dans notre façon de concevoir les outils Python ? Pourquoi Rust s'est-il progressivement imposé face au C, à Cython ou au Python pur ?
	
	À travers plusieurs projets devenus incontournables, nous explorerons les raisons techniques qui ont conduit à cette adoption, les outils qui rendent la collaboration entre Python et Rust si naturelle, et ce que cette évolution nous dit de l'avenir de l'écosystème Python.
LOCATION:BASENDERIE
END:VEVENT
BEGIN:VEVENT
UID:97AJBB
DTSTART:20261031T140000
DTEND:20261031T162500
SUMMARY:Quitter l'Enfer des tests automatisés (Julien Lenormand)
DESCRIPTION:On sait qu'il faut écrire des tests automatisés. Mais trop souvent, c'est une véritable corvée : ils peuvent être lents, peu fiables, difficiles à exécuter, à maintenir, voire même à écrire ! Pourquoi est-ce si difficile ? Comment reprendre le contrôle ?
	
	Pour cela, vous allez travailler sur un projet réaliste : une application Python avec un backend FastAPI, une base de données PostgreSQL, des fichiers de configuration, des API tierces, ... et des tests exécrables.
	
	Vous allez passer en revue :
	
	* la culture qualité du projet
	* son architecture
	* les tests existants
	* et la qualité du code
	
	Puis vous préparerez le plan :
	
	* votre propre pyramide de tests / stratégie
	* les outils de test nécessaires
	* les scénarios essentiels
	* la CI pour vous couvrir
	
	Et vous vous mettrez à coder :
	
	* en mettant à jour les tests existants
	    en ajoutant de nouveaux tests avec de l'outillage puissant
	* en refactorant a minima pour rendre le code testable
	* en créant des fakes/mocks/simulateurs pour permettre les tests
	
	Vous repartirez mieux capable de :
	
	* diagnostiquer ce qui rend les tests lents ou alambiqués
	* concevoir une stratégie de tests pragmatique pour votre codebase
	* implémenter des tests fiables, avec des fakes et des testcontainers
	* refactorer juste ce qu'il faut pour rendre le code testable
	
	Ce sera environ 65% de pratique, et 35% d'analyse guidée. Les deux premières parties occuperont la première moitié de la session, afin que vous ayez largement le temps de mettre en œuvre concrètement la stratégie durant la seconde moitié. Le dépôt du code restera à votre disposition après l'atelier, ainsi qu'un exemple du résultat final.
	
	Prérequis :
	
	* uv (ou pip)
	* (optionnel, mais recommandé) docker ou podman, pour exécuter TestContainers
	* (optionnel) un compte GitHub ou GitLab, pour exécuter la CI
	
	Dépôt de l'atelier :
	
	* Version GitHub : https://github.com/jgaffiot/getting-out-testing-hell/
	* Version GitLab : https://gitlab.com/jgaffiot1/getting-out-testing-hell/
LOCATION:LANG7
END:VEVENT
BEGIN:VEVENT
UID:BMZCAP
DTSTART:20261031T140000
DTEND:20261031T142500
SUMMARY:How Python Tracked the Evolution of COVID-19 (GUSTAVO FERREIRA GITZEL)
DESCRIPTION:January 2020. A new virus appears, and no one knows where 
	it came from or where it's going. Within weeks, scientists 
	around the world are sequencing its genome and sharing the 
	data publicly. Within months, Python tools are helping 
	track the emergence of new variants in real time.
	
	This talk tells the story of how phylogenetics — the 
	science of building evolutionary trees — became one of the 
	most powerful tools against COVID-19, and how Python made 
	it accessible to researchers worldwide.
	
	We'll cover:
	- What phylogenetic trees are, explained for programmers 
	  (string comparison + graph traversal, no biology degree 
	  required)
	- The Python ecosystem behind the science: Biopython, 
	  MAFFT, ETE Toolkit
	- How Nextstrain used Python pipelines to process millions 
	  of sequences in real time
	- A live demo: taking real NCBI sequences and watching 
	  Alpha, Delta, and Omicron appear as distinct branches on 
	  a tree
	
	If you understand how to compare strings and traverse a 
	graph, you have everything you need to follow along.
LOCATION:PATUEK
END:VEVENT
BEGIN:VEVENT
UID:DSENUR
DTSTART:20261031T140000
DTEND:20261031T142500
SUMMARY:Du prompt à la chaleur : rendre visible l'impact de l'IA générative (Pierre-Loic Bayart)
DESCRIPTION:Lorsque nous utilisons une IA générative pour écrire du code, tout semble immatériel : un prompt, quelques secondes d'attente et la réponse apparaît. Pourtant, derrière cette simplicité se cachent beaucoup d'opérations, une consommation d'énergie et de la chaleur.
	
	Cette conférence présente une maquette pédagogique développée en Python pour rendre cette réalité visible. Trois Raspberry Pi 5 exécutent localement de petits modèles de langage via Ollama, chacun avec un système de refroidissement différent (passif à l'air, actif à l'air et actif à l'eau). Une interface web Python permet d'envoyer des prompts en parallèle sur les 3 Raspberry Pi et d'observer en direct la température des processeurs pendant la génération.
	
	À travers une série d'expériences interactives, vous verrez qu'une réponse plus longue ou qu'un modèle plus grand chauffe davantage le processeur et qu'un même prompt peut produire des réponses différentes illustrant la nature probabiliste des modèles de langage.
	
	En transformant l'IA en un phénomène mesurable et observable, cette démonstration fait le lien entre l'abstraction de la génération de code et la réalité physique des machines qui l'exécutent. Elle permet aussi de mieux comprendre pourquoi les centres de données adoptent massivement le refroidissement liquide.
	
	Au-delà de l'IA, cette conférence montre comment Python permet de construire rapidement une démonstration interactive mêlant inférence locale, mesures matérielles et visualisation en temps réel.
LOCATION:MARI/SUGGAR
END:VEVENT
BEGIN:VEVENT
UID:HAPPSS
DTSTART:20261031T140000
DTEND:20261031T162500
SUMMARY:The Experience Is the Community (Georgi Ker)
DESCRIPTION:Open source communities don’t grow because people contribute. They grow because contributors help create the next contributors.
	
	This interactive workshop introduces the POPCOM Framework (Participation, Ownership, Purpose, Connection, Opportunity, and Mentorship), a practical approach for understanding how communities create future contributors, organisers, mentors, and leaders.
	
	Who this workshop is for:
	
	Meetup organizers
	Conference organizers
	Open source maintainers
	Community managers
	Volunteer leaders
	Participants will evaluate their own communities, identify areas for improvement, and design concrete change that they can take back and apply.
	
	Each participant walks out with:
	
	- a practical assessment of their own community
	- a framework for identifying strengths and gaps
	- a concrete experiment to improve participation, retention, and leadership development
	The Experience Is the Community is one module in OCL (Open Community Leadership - https://opencommunityleadership.dev/). You can run this workshop yourself. Adapt the timing to your community. Free to use, adapt, and share with attribution.
	
	More details to the workshop can be found here: https://opencommunityleadership.dev/modules/01-experience-is-the-community/workshop/
	
	
	
	Note: Workshop could also be presented in French. current version in English
LOCATION:LANG6
END:VEVENT
BEGIN:VEVENT
UID:LRRCFR
DTSTART:20261031T140000
DTEND:20261031T142500
SUMMARY:Ce moment ou DRY devient créons un framework (Hana Burtin)
DESCRIPTION:Parlons un peu de ce moment de bascule un peu flou, quand une demande mineur de devient tellement commune que tout le monde fini par se dire "il faudrait en faire un framework et laisse les clés aux équipes qui s'occupe de cette partie du logicel".
	
	Comment réussir à obtenir les quelques semaines pour créer un outil au lieu de bêtement répliquer les mêmes 3 lignes pour la 40eme fois?
	
	Comment répartir les tâches?
	
	Comment les devs utilisant le framework à générer leur tests facilement?
LOCATION:LANG5
END:VEVENT
BEGIN:VEVENT
UID:87JHSB
DTSTART:20261031T143000
DTEND:20261031T152500
SUMMARY:What is happening with my microservices? (Israel Blancas Alvarez)
DESCRIPTION:Observability is the ability to gain insights into the internal state of a system by analyzing its external outputs. It provides developers and SREs with the necessary tools to understand how their applications behave in production and empowers them to detect and resolve issues more efficiently. In this talk, we will dive into the principles and best practices of observability and its impact on application development and operations.
	
	What will we talk about?
	* Introduction to Observability
	* The Three Pillars of Observability
	* Instrumentation and Data Collection
	* Tools and projects related to observability
	* Practical example
	
	By attending this talk, participants will gain a solid understanding of the principles of observability and its role in enhancing the quality, performance, and debuggability of their applications. They will walk away with practical knowledge and actionable insights to implement observability in their own projects and environments.
	
	This session is designed for medium-level developers and site reliability engineers (SREs) who want to gain a deeper understanding of observability and leverage its benefits in their projects.
LOCATION:PATUEK
END:VEVENT
BEGIN:VEVENT
UID:AQTXT9
DTSTART:20261031T143000
DTEND:20261031T152500
SUMMARY:Python et luttes des classes (Haikel Guemar)
DESCRIPTION:Et si Karl Marx avait été le premier architecte logiciel de l'histoire moderne ?
	
	Derrière une neutralité technique, la programmation orientée objet manipule des concepts qui résonne étrangement avec la théorie politique: structures de classes, rapports de force, propriété des ressources et privatisation de celles-ci.
	Dans une conférence atypique, nous allons explorer des concepts qui nous sont familiers de la POO en Python au travers d'un prisme marxiste (ok, à peu près marxiste). Ce parallèle pédagogique nous permettra de décortiquer les mécanismes de notre language préféré (on est à pyconfr, faites semblant au moins).
	
	Ensemble, nous analyserons «Infrastructure vs Superstructure», entre autre:
	* Comment l’allocation de mémoire matérielle (__new__) forge la réalité économique de l'objet avant son éducation idéologique (__init__).
	* La Propriété Privée en sursis : Pourquoi l'encapsulation et le Name Mangling (__attribut) ne sont que des illusions bourgeoises face à la réalité dynamique de Python.
	* La Lutte des Classes et l'arbitrage : Comment l’héritage multiple crée des conflits d'intérêts insolubles, finalement tranchés par la justice bourgeoise du Method Resolution Order (MRO).
	* Vers le Communisme du Code : Comment le Duck Typing réalise l'utopie marxiste «De chacun selon ses capacités, à chacun selon ses besoins.» en brisant les hiérarchies de classes au profit de l'action pure.
	
	Que vous soyez un aficionado des structures de données ou simplement curieux de voir du code Python analyser le Capital, cette session vous donnera les clés pour comprendre le fonctionnement profond du langage, tout en redécouvrant les dynamiques sociales qui se cachent derrière vos lignes de code.
	
	Développeurs de tous les pays, unissez-vous (et préparez vos terminaux) !
LOCATION:BASENDERIE
END:VEVENT
BEGIN:VEVENT
UID:DBEYXD
DTSTART:20261031T143000
DTEND:20261031T152500
SUMMARY:Partager et livrer une application Python avec fierté et sérénité (EricM)
DESCRIPTION:A l'âge de l'IA, écrire du code Python correct n'est plus une difficulté. En revanche, s'assurer que son collègue puisse utiliser ce petit outil interne facilement ou que le déploiement de la nouvelle version d'une API multi-dépôt se passe correctement pour des milliers d'utilisateurs demande de bonnes connaissances dans et autour de l'écosystème Python. Nous traiterons ces deux scénarios avec les mêmes thèmes : build et packaging de l'application, construction d'un environnement d'exécution répétable (avec ou sans Docker), gestion des secrets et de la sécurité, automatisation du tout via des pipelines de CI/CD. Le tout sera taillé à façon pour répondre aux spécificités de Python (en bien... et en moins bien !)
	
	Vous ajouterez alors un peu de "Ops" à vos qualités de "Dev" Python :)
LOCATION:LANG5
END:VEVENT
BEGIN:VEVENT
UID:JNWCMW
DTSTART:20261031T143000
DTEND:20261031T152500
SUMMARY:L’impact de l’IA générative sur les projets libres du point de vue d’une mainteneuse (Lucie Anglade)
DESCRIPTION:Depuis quelques années, les outils d’IA générative se développent et de plus en plus de personnes les utilisent pour contribuer à des projets libres.
	
	Mais quel est l’impact de cet usage sur les mainteneur·euses de projets libres ?
	
	Durant cette présentation, nous parlerons de l’évolution des contributions et de leurs impacts sur les mainteneur·euses en prenant comme exemple le logiciel libre WeasyPrint, sur lequel j’interviens en tant que mainteneuse.
	
	Nous verrons aussi des graphiques avec des données chiffrées, parce qu’ici, on aime les statistiques : évolution du nombre tickets, de pull requests…
	
	Enfin, nous finirons la présentation par les solutions que nous essayons de mettre en place et des pistes sur comment contribuer sainement.
LOCATION:MARI/SUGGAR
END:VEVENT
BEGIN:VEVENT
UID:7VUR7U
DTSTART:20261031T153000
DTEND:20261031T155500
SUMMARY:"Le DDD, 6 mois après" - retour d'expérience (Melcore)
DESCRIPTION:Je vous propose de revenir sur mes 6 derniers mois où j'ai découvert le Domain Driven Design. Ce que j'en ai compris, les aspects qui m'ont posé problème, les limites que j'ai trouvé. 
	J'essaierais d'expliquer l'utilité du DDD.
LOCATION:LANG5
END:VEVENT
BEGIN:VEVENT
UID:PZWG9Q
DTSTART:20261031T153000
DTEND:20261031T155500
SUMMARY:Linux with Python Super Powers (Alvaro Leiva)
DESCRIPTION:While Python has gained immense popularity in data science, AI, web frameworks, etc. Its somewhat forgotten that its roots were in system programming. Join me as we rediscover the often-overlooked realm of Python and Linux. From interacting with cgroups and namespaces to running parts of your code in lightweight containers and writing network filters, explore the limitless possibilities of Python system programming.
LOCATION:PATUEK
END:VEVENT
BEGIN:VEVENT
UID:U9KSMX
DTSTART:20261031T153000
DTEND:20261031T155500
SUMMARY:Créer un nouveau service libre en Python de nos jours, c'est facile ? (Arthur Vuillard)
DESCRIPTION:À l'ère de la startup nation, de Claude qui code?, du move fast, break fast and never repair, tu veux créer un nouveau service/projet/logiciel libre en Python mais tu ne sais pas comment t'y prendre ?
	
	Installe-toi, je vais t'expliquer (mes erreurs).
	
	À partir de l'expérience de LeBureau.coop, je vais raconter comment nous avons monté un bureau d'enregistrement de noms de domaine avec des moyens contraints, une concurrence féroce et installée, beaucoup de Python, de logiciels libres et de valeurs, et un probable trouble de l'attention.
LOCATION:BASENDERIE
END:VEVENT
BEGIN:VEVENT
UID:YQSUTG
DTSTART:20261031T153000
DTEND:20261031T155500
SUMMARY:Typage en python : état de l'art et nouveautés (Christophe Papazian)
DESCRIPTION:Le typage en Python a énormément mûri ces dernières années. 
	
	Ce qui n'était au départ qu'une simple aide pour les éditeurs de code est devenu un vrai levier de fiabilité, de documentation et de sérénité lors des refactorings. L'objectif de cette présentation est de montrer que le système de types de Python est à la fois utile et étonnamment puissant, tout en restant conscient de ses limites, car il demeure optionnel, parfois verbeux et incapable de tout garantir à l'exécution. 
	
	Côté outillage, l'écosystème est riche, avec des vérificateurs comme mypy et pyright, rejoints par une nouvelle génération d'outils ultra rapides écrits en Rust, comme ty et pyrefly. 
	
	Le langage lui même n'a cessé de progresser : la 3.10 a apporté les unions avec la barre verticale, la 3.11 le type Self et les génériques variadiques, et la 3.12 une syntaxe bien plus naturelle pour les génériques et les alias de type, ainsi que le décorateur override qui fiabilise l'héritage. Avec la 3.13 sont arrivés TypeIs et les valeurs par défaut pour les paramètres de type. La grande nouveauté de Python 3.14, c'est l'évaluation différée des annotations qui devient enfin le comportement par défaut, accompagnée du module annotationlib pour les inspecter proprement. Python 3.15 enrichit encore la boîte à outils avec TypeForm, les TypedDict fermés ou dotés d'éléments supplémentaires typés, et les bases disjointes pour mieux modéliser les hiérarchies. 
	
	Nous explorerons ces avancées, parmi d'autres présentées au fil de l'exposé, pour voir comment tirer le meilleur d'un système de types devenu puissant et agréable, sans jamais oublier ce qu'il ne sait pas encore faire.
LOCATION:MARI/SUGGAR
END:VEVENT
BEGIN:VEVENT
UID:F7PF7S
DTSTART:20261031T163000
DTEND:20261031T165500
SUMMARY:Graphs are Everywhere: so put them in your python (Dom Weldon)
DESCRIPTION:Graphs, pairwise relationships between entities (or networks, to distinguish these types of graphs from charts on a page), are everywhere, including in python! However, we often overlook these remarkably powerful data structures when writing code. This talk argues that we should start embracing graphs as fundamental data structures in python code, and in doing so  start to think more deeply and declaratively about the code we write and the business processes we manage.
	
	We'll start with a quick crash course on graphs theory, before moving on to tour the various graph related tools in python, from stdlib's graphlib, to networkx, and finally rustworkx. 
	
	We'll then see how you can use graphs to simplify your code across a variety of use cases, from automating database query construction to managing tasks and allocating resources efficiently.
	
	Accessible for complete beginners, but still providing insights for experienced developers, this talk will hopefully provide a refreshing insight into a data structure that can currently feel underused, but which I argue should be fundamental to our programming toolkit.
LOCATION:PATUEK
END:VEVENT
BEGIN:VEVENT
UID:VAKRYL
DTSTART:20261031T163000
DTEND:20261031T165500
SUMMARY:Parce que ton infrastructure mérite du vrai code en Python, pas une soupe de YAML (Loïc Tosser)
DESCRIPTION:Tu te souviens quand on parlait d’**"Infrastructure as Code"** ? Eh bien, l’industrie a entendu *"Infrastructure as YAML"* et s’y est engouffrée. Résultat : on se noie dans une mer de fichiers de configuration sensibles à l’indentation, bourrés de templates, maltraitant Jinja2 au point que même les administrateurs système les plus aguerris en viennent à pleurer dans leur clavier mécanique.
	
	Et puis, il y a **PyInfra** où ton infrastructure est *vraiment* du code. Du Python pur. Avec des boucles qui ne nécessitent pas d’apprendre un DSL. Avec des fonctions… attends-toi à ça… de *vraies* fonctions. Avec une gestion des erreurs qui ne consiste pas à supplier les dieux du YAML et sacrifier une virgule manquante.
	
	Dans cette présentation, tu découvriras comment :
	
	- Écrire de l’automatisation d’infrastructure que ton IDE comprend (littéralement)
	
	- Déboguer avec de vraies traces de pile au lieu de *"ERROR : La tâche inclut une option avec une variable non définie"*
	
	- Utiliser de vraies conditions Python au lieu de `when: ansible_os_family == "Debian" and not (ansible_distribution == "Ubuntu" and ansible_distribution_version is version('20.04', '>='))`
	
	- Importer et réutiliser du code comme un développeur civilisé, et non comme un dinosaure qui copy-paste des playbooks en 1999
	
	- Tester ton code d’infrastructure avec pytest, pas en espérant que ça ne plante pas en staging
	
	On est en **2026**, tes serveurs méritent mieux que du YAML. Ils méritent du Python.
LOCATION:MARI/SUGGAR
END:VEVENT
BEGIN:VEVENT
UID:XDRBZP
DTSTART:20261031T163000
DTEND:20261031T165500
SUMMARY:Comment une chute en ski a permis de tester nos pratiques de développement (Yuri Vital)
DESCRIPTION:Tout projet, repose sur une ou quelques personnes clefs et la **continuité** des contributeurs n'est jamais garantie. Alors comment assurer sa survie face aux départs soudains de contributeur clef ?
	
	Dans le monde du logiciel libre, les **méthodes de collaborations et de transmissions de savoir** sont des pratiques éprouvées. Mais elles ne sont pas toujours appliquées dans tous les projets FOSS et encore moins transposées en entreprise.
	
	Cette présentation est un retour d'expérience lors d'une prestation de développement où un accident a éprouvé nos pratiques de développement.
	
	Nous allons voir quels pratiques ont bien fonctionné dans un cas concret de **perte d'un contributeur clef** et ainsi montrer la force d'enseignements que possède le FOSS.
	
	Je suis développeur senior chez enioka Haute Couture et lors de mes missions, j'interviens pour accompagner et structurer les développements logiciels de nos clients.
	
	Cette expérience raconte l'histoire d'un projet pour lequel j'avais un rôle de Tech Lead, et qui été interrompue soudainement à cause d'un accident de ski conduisant à une hospitalisation et un arrêt de travail.
	
	Mon rôle est remplacé par un collègue qui devait être opérationnel rapidement, mais sans aucun contexte ou transmission préalable.
	
	Nous verrons ensemble comment cette situation initialement catastrophique, a été surmontée avec des documentations et par des bonnes pratiques de développement.
LOCATION:BASENDERIE
END:VEVENT
BEGIN:VEVENT
UID:ZZL8CZ
DTSTART:20261031T163000
DTEND:20261031T165500
SUMMARY:Claude, Copilot & Cie : ce que les LLM changent vraiment dans une base de code Python (Julian Maurin)
DESCRIPTION:Retour d’expérience, pas démo. On a laissé des LLM (Claude et autres) écrire, refactorer et tester du Python en production pendant un an. Cette conférence raconte concrètement ce que ça change.
	
	- Où les LLM sont réellement bons en Python (boilerplate, tests, migrations, refactors mécaniques) et où ils dérapent (typage subtil, effets de bord, dépendances, « hallucination » d’API).
	- L’effet sur la relecture : le goulot d’étranglement se déplace de « écrire » vers « vérifier ». Volume de PR en hausse, revue humaine sous pression.
	- Les garde-fous qui tiennent : typage strict, tests, CI solide, et une file de merge pour garder main vert quand le débit de PR explose.
	- Ce qu’on ferait différemment.
LOCATION:LANG5
END:VEVENT
BEGIN:VEVENT
UID:UKHWCG
DTSTART:20261031T170000
DTEND:20261031T174500
SUMMARY:Typographie et code (Amélie Dumont)
DESCRIPTION:Expérimentations pour la broderie et le tricot
LOCATION:MARI/SUGGAR
END:VEVENT
BEGIN:VEVENT
UID:VEGADS
DTSTART:20261101T090000
DTEND:20261101T100000
SUMMARY:Assemblée générale de l’AFPy (AFPy)
DESCRIPTION:Assemblée générale de l'Association Francophone Python, organisatrice de l'événement.
	
	Vous pouvez venir pour connaître le bilan de cette année et participer aux choix des prochaines éditions.
	
	Les membres à jour de cotisation peuvent également prendre part aux votes et candidater pour faire partie du comité de direction.
LOCATION:PATUEK
END:VEVENT
BEGIN:VEVENT
UID:SUW99X
DTSTART:20261101T100000
DTEND:20261101T104500
SUMMARY:Sustaining Open Source for the Future (Georgi Ker)
DESCRIPTION:Sustaining Open Source for the Future
LOCATION:MARI/SUGGAR
END:VEVENT
BEGIN:VEVENT
UID:K9RV3S
DTSTART:20261101T110000
DTEND:20261101T112500
SUMMARY:Made by community (Steve Yonkeu)
DESCRIPTION:Mes premiers ateliers Django, je les ai donnés à Bamenda, dans une région traversée par une crise sociopolitique. Des salles empruntées, un vidéoprojecteur qui marchait une fois sur deux, des sessions annulées pour des raisons qui n'avaient rien à voir avec la tech. Personne ne me l'avait demandé. Je partageais ce que je venais d'apprendre la semaine d'avant.
	
	Aujourd'hui je suis PSF Fellow, Microsoft MVP, membre de la Django Software Foundation, j'ai fondé Python Cameroun et Django Cameroun, et j'ai parlé à la PyCon US. Entre les deux, aucun plan de carrière. Des meetups, des talks ratés, des ateliers où trois personnes se présentent, et une communauté qui a continué à me faire confiance.
	
	Dans ce talk, je raconte ce chemin sans filtre. Ce que parler en public et animer des ateliers construit vraiment, en compétences comme en réseau, ce que ça coûte, et pourquoi il reste ouvert à n'importe qui dans cette salle.
	
	Je suis un produit de la communauté.
LOCATION:MARI/SUGGAR
END:VEVENT
BEGIN:VEVENT
UID:LWZU39
DTSTART:20261101T110000
DTEND:20261101T112500
SUMMARY:Comment modifier sa base de données sans interruption de service (Xavier Ordoquy)
DESCRIPTION:Les modifications des schémas des bases relationnelles peuvent être compliquées si l'on veut garder un service avec du traffic et sans interruption.
	La présentation a pour but d'expliquer ce qui peut causer des interruptions de service et ce que l'on peut mettre en place pour les éviter.
LOCATION:BASENDERIE
END:VEVENT
BEGIN:VEVENT
UID:VUEZJH
DTSTART:20261101T110000
DTEND:20261101T112500
SUMMARY:wtforms-htmx : des formulaires dynamiques avec htmx mais sans écrire de htmx (Éloi Rivard)
DESCRIPTION:Et si on écrivait des formulaires web dynamiques - comboboxes avec auto-complétion dynamique, champs qui se remplissent tout seuls, aperçu markdown en direct etc. - entièrement en Python, sans écrire de JavaScript, ni même de htmx ?
	
	wtforms-htmx rend ça possible en s'appuyant sur htmx, et WTForms, une vénérable et agnostique bibliothèque de formulaires agnostique.
	
	Je fais une démo de plusieurs cas d'usage concrets, puis on fait une courte présentation de WTForms, et on regarde comment génére ces interactions en quelques lignes avec wtforms-htmx, et comment elle garantit que tout fonctionne aussi sans JavaScript.
LOCATION:LANG5
END:VEVENT
BEGIN:VEVENT
UID:XREGEL
DTSTART:20261101T110000
DTEND:20261101T125500
SUMMARY:C’est vous qui choisissez ! / It’s up to You (Vous / You)
DESCRIPTION:# Qu’est-ce qu’un Lightning Talk ? / What is a Lightning Talk?
	
	Les Lightning Talks sont des formats de présentations très courts (5 / 10 min maximum), avec ou sans support, où les sujets sont libres.
	
	Lightning Talks are very short presentation formats (5 / 10 min maximum), with or without support, where subjects are free.
	
	# Qui peut présenter ? / Who can present?
	
	Tout le monde.
	
	Everyone.
	
	# Quoi présenter ? / What to present?
	
	Un outil que vous utilisez beaucoup trop cool, une bibliothèque que vous venez de découvrir, un projet que vous trouvez intéressant…
	
	A tool you use that's way too cool, a library you've just discovered, a project you find interesting...
	
	# Est-ce que j’ai besoin d’un support de présentation ? / Do I need a slideshow?
	
	C’est comme vous voulez. Vous pouvez préparer deux ou trois slides si vous avez envie. Mais n’oubliez pas, c’est un format court !
	
	It's up to you. You can prepare two or three slides if you like. But remember, it's a short format!
	
	# Je peux venir même si je ne veux rien présenter ? / Can I come if I don’t want to present something?
	
	Bien sûr :) Le format Lightning Talks permet d’aborder plein de sujets différents, ce qui permet de découvrir de nouveaux outils, projets et autre !
	
	Of course :) The Lightning Talks format allows us to tackle lots of different topics, which makes it easy to discover new tools, projects and more!
LOCATION:LANG6
END:VEVENT
BEGIN:VEVENT
UID:ZX7UCS
DTSTART:20261101T110000
DTEND:20261101T112500
SUMMARY:Python Polars for Practitioners: When to Drop Pandas (Tarun Jain)
DESCRIPTION:Pandas works until you hit memory limits, slow joins, or null coercion bugs. Polars fixes most of these by design: columnar memory layout, strict types, lazy evaluation, and real parallelism. 
	
	We will start with familiar Pandas-style analytics tasks, then showcase selected parts using Polars to show where lazy execution, query optimization, and memory-efficient execution become useful. The focus is not on replacing Pandas everywhere, but on recognizing the point where Polars gives clearer, faster, or more maintainable workflows. From there, we look at sandboxed execution: running Polars in an isolated environment to safely execute dynamically generated transformation code that can also be used as a tool for those building Agents for Data Analytics and Visualization Agentic workflow using LlamaIndex Python Framework. Furthermore, we will have the demo running on Python Streamlit.
	
	From there, we look at sandboxed execution: running Polars in an isolated environment to safely execute dynamically generated transformation code that can also be used as a tool for those building in Agents for Data Analytics and Visualization Agentic workflow.
LOCATION:PATUEK
END:VEVENT
BEGIN:VEVENT
UID:3KC8AJ
DTSTART:20261101T113000
DTEND:20261101T122500
SUMMARY:Construire une logique métier avec des opérateurs mathématiques : méthodes spéciales & métaclasses (Luc Sorel-Giffo)
DESCRIPTION:Vous connaissez sans doute le module natif [pathlib](https://docs.python.org/fr/3.14/library/pathlib.html) qui permet de décrire des chemins de fichiers avec l'opérateur de division "/". J'ai suivi cette approche pour élaborer une syntaxe à base d'opérateurs mathématiques permettant de naviguer dans une structure de données très arborescente combinant sous-dictionnaires, classes et diverses séquences de tout ça. Cette session est un retour d'expérience sur une petite plongée dans certains mécanismes propres à Python qui pourraient bien vous donner des idées.
	
	Dans un format de livecoding dans un notebook marimo, je vous parlerai :
	- des méthodes spéciales appelées sous le capot par Python
	- de celles impliquées lors de l'utilisation d'opérateurs
	- des règles de priorités des opérateurs
	- de l'utilisation de méta-classes pour définir des comportements sur des classes, quand `@classmethod` ne fonctionne plus
LOCATION:BASENDERIE
END:VEVENT
BEGIN:VEVENT
UID:83VKV3
DTSTART:20261101T113000
DTEND:20261101T122500
SUMMARY:Full-stack pour de vrai : Flask, HTMX et technologies frontend intégrées pour des sites backend-driven (Maxime Bouroumeau-Fuseau)
DESCRIPTION:« Full-stack » désigne souvent une application constituée de deux projets : une API côté serveur et une SPA côté navigateur. Deux systèmes de routage, deux modèles de données, deux chaînes de compilation et beaucoup de code chargé de faire communiquer l’ensemble.
	
	Hyperflask propose une autre approche : construire des applications web complètes en gardant Python et le serveur au centre, tout en intégrant les technologies frontend nécessaires à chaque niveau d’interactivité.
	
	Pendant cette présentation, nous découvrirons Hyperflask à travers la construction d’une application complète. Pages, données, composants, interactions et assets feront partie d’un même projet et d’une même architecture.
	
	Nous commencerons par les fondations d’Hyperflask : un routage basé sur les fichiers et un nouveau format réunissant Python et Jinja. Une page peut ainsi charger ses données, traiter une requête et produire son HTML au même endroit, tout en s’appuyant sur des fonctions et services Python classiques pour la logique métier.
	
	Nous verrons ensuite comment Hyperflask organise l’interface autour de composants réutilisables. Ces composants peuvent recevoir des propriétés, contenir d’autres composants, exécuter du code Python et répondre directement à des requêtes HTTP.
	
	HTMX permettra d’appeler ces composants et de remplacer uniquement les fragments de page concernés. Le serveur continuera à produire du HTML, sans imposer une API JSON ni reproduire l’état de l’application dans le navigateur.
	
	Mais backend-driven ne veut pas dire sans JavaScript.
	
	Lorsque l’interaction est purement locale, Alpine.js pourra gérer un menu, une fenêtre modale ou un état temporaire directement dans le navigateur. Pour un comportement plus autonome, nous utiliserons un Web Component. Une fonctionnalité particulièrement riche pourra même être intégrée sous forme d’îlot React, sans transformer l’ensemble du site en SPA.
	
	Ces technologies ne vivront pas dans des projets séparés. Hyperflask les réunit dans un même système de composants et prend en charge leurs scripts, leurs styles et leur intégration dans la chaîne d’assets.
	
	Au fil de la démonstration, nous verrons notamment comment :
	
	- définir des pages et leurs routes à partir de fichiers ;
	- réunir Python et Jinja dans un format adapté aux pages et aux composants ;
	- construire des composants côté serveur capables de répondre en HTTP ;
	- créer des interactions dynamiques avec HTMX ;
	- ajouter de petits comportements locaux avec Alpine.js ;
	- intégrer des composants frontend via des îlots issus d’un framework frontend ;
	- charger automatiquement les scripts et les styles nécessaires ;
	- déployer l’application comme un ensemble cohérent.
	
	Le serveur prend en charge la navigation, les données et l’état partagé. HTMX assure les échanges qui nécessitent un aller-retour avec le serveur. Le JavaScript local s’occupe des interactions qui n’ont aucune raison de quitter le navigateur. Les outils frontend plus complexes restent réservés aux fonctionnalités qui en ont réellement besoin.
	
	Nous examinerons également les limites de cette architecture. Une application backend-driven reste sensible à la latence réseau et n’est pas toujours adaptée aux expériences très riches, au fonctionnement hors connexion ou aux interfaces manipulant beaucoup d’état local. Faire cohabiter plusieurs technologies demande aussi des règles claires afin que l’application ne devienne pas un patchwork difficile à comprendre.
	
	Cette présentation ne cherchera donc pas à annoncer la mort des SPA. Elle montrera plutôt une autre manière de construire des applications full-stack : en intégrant progressivement les technologies frontend dans une architecture pilotée par Python.
LOCATION:LANG5
END:VEVENT
BEGIN:VEVENT
UID:MEAQWP
DTSTART:20261101T113000
DTEND:20261101T122500
SUMMARY:Python In Special Educational Needs and Disabilities Settings (Kayode Abiodun Oladapo, Oluwakemi Jacobs)
DESCRIPTION:Many individuals who are aspiring to learn how to code specifically Python, especially those with special educational needs or disabilities (SEND) and those from underrepresented communities, faces difficulties in learning as the available resources do not account for those with diverse learning needs, as a result this makes aspiring learners to struggle with complex syntax, information overload, lack of availability to special needs learning content, and no or low engagement due to abstract examples. 
	This session will explore how Python can be taught and used as a tool for inclusion, showing practical activities to create accessible resources and strategies that can be used in teaching Python to aspiring individuals with SEND, as these will make learning Python participative and encourage learning. 
	The attendees will leave with a clear understanding of inclusive design principles and resources that can be, and have been, built and identified in supporting the teaching of Python to SEND learners. 
	This talk is for educators, mentors, the Python community, and anyone interested in making Python education more inclusive.
LOCATION:PATUEK
END:VEVENT
BEGIN:VEVENT
UID:XK3CUF
DTSTART:20261101T113000
DTEND:20261101T122500
SUMMARY:Qu'est-ce qui se passe quand j'appuie sur Entrée ? (Denis Viviès)
DESCRIPTION:Qu'est-ce qui se passe entre le moment où je lance mon script et quand j'ai les résultats ? Comment est-ce que CPython passe d'un fichier py à du code machine ?
	Nous verrons la chaîne de compilation, en partant du tokenizer jusqu'à la génération et l'exécution du bytecode, en passant par les AST et Control Flow Graph. En décomposant étape par étape, nous verrons que c'est pas si compliqué et quelques applications de ces connaissances.
LOCATION:MARI/SUGGAR
END:VEVENT
BEGIN:VEVENT
UID:GPDP8U
DTSTART:20261101T123000
DTEND:20261101T125500
SUMMARY:One Prompt, Fifty Coroutines: What AI Agents Teach Us About Async Python (Aditi Gupta, Shuva Jyoti Kar)
DESCRIPTION:Large language models spend surprisingly little time executing Python code. Most of an AI agent's lifetime is spent waiting for model responses, tool calls, vector databases, APIs, and sometimes even humans. Modern AI applications are fundamentally I/O-bound systems, making Python's asynchronous runtime one of the most important tools for building responsive, scalable software.
	In this session, we'll build a functional AI agent and use it to explore the async programming patterns that power modern Python applications. As the agent evolves from making a single model call to coordinating multiple tools and concurrent workflows, we'll introduce practical techniques including asyncio. TaskGroup, structured concurrency, semaphores, cancellation, timeouts, streaming responses, and execution context with contextvars. Each concept will be demonstrated in the context of solving a real engineering problem rather than as an isolated language feature.
	Although AI agents provide the motivating example, this is fundamentally a talk about Python. The concurrency patterns we'll explore apply equally to FastAPI services, asynchronous APIs, background workers, data pipelines, and distributed applications. Along the way, we'll discuss common pitfalls, performance trade-offs, and practical techniques for writing concurrent code that is both responsive and maintainable.
	You'll leave with a practical mental model of Python's asynchronous runtime and a toolkit of reusable patterns you can immediately apply to any modern I/O-bound Python application, whether it uses AI or not.
LOCATION:PATUEK
END:VEVENT
BEGIN:VEVENT
UID:MDGWNH
DTSTART:20261101T123000
DTEND:20261101T125500
SUMMARY:Exécution Durable: à quoi ça sert et comment ça marche? (Laurent Direr)
DESCRIPTION:Envoyer un email, ça ne peut pas être bien compliqué.  
	Pourtant, dans une application web, garantir qu'un email est bien envoyé n'est pas si évident.
	
	C'est ce problème concret que nous étudierons en Python, avec en fil rouge un exemple classique de fonctionnalité web.
	On observera les limites d'une implémentation naïve - certains emails ne sont jamais envoyés! - avant d'introduire une solution robuste où les envois sont stockés en base de données puis traités de manière asynchrone ('Outbox pattern'). 
	Enfin, on reconstruira cette solution avec un framework d’exécution durable. Le résultat est très différent! 
	Comment ce code fonctionne-t-il? Quelles garanties apporte-t-il? 
	Et quelle place peut prendre l'exécution durable dans nos applications web classiques?
LOCATION:MARI/SUGGAR
END:VEVENT
BEGIN:VEVENT
UID:TXDUKE
DTSTART:20261101T123000
DTEND:20261101T125500
SUMMARY:Guide pour sécuriser la CI/CD Gitlab pour les Développeurs Python (Dorian Turba)
DESCRIPTION:Aujourd'hui, les cyber-attaques ciblent votre chaîne d'approvisionnement logicielle, pas seulement vos applications. Apprenez à vous défendre contre des attaques comme Shai-Hulud, Megalodon et le compromis de Trivy dans ce guide débutant pour sécuriser les pipelines CI/CD sur GitLab pour des projets Python. Aucune expérience en sécurité nécessaire, juste des bases en Python et Git. Construisez un logiciel plus sûr du dev à la prod.
LOCATION:BASENDERIE
END:VEVENT
BEGIN:VEVENT
UID:YSQLWF
DTSTART:20261101T123000
DTEND:20261101T125500
SUMMARY:Django Template Transpiler : Django templates dans le navigateur (Christophe Henry)
DESCRIPTION:Ces dernières années, la communauté Python a largement adopté Turbo de Hotwire ou HTMX comme frameworks front de prédilection. Leur principe consiste à utiliser des requêtes AJAX obtenir des morceaux de pages rendus par le backend. Cependant, il existe des situations où chaque requête HTTP a un coût. Que ce soit à cause d'une mauvais bande passante, une limitation par des quotas de données ou tout simplement une facturation au MB. Dans de telles situations, une application ne peut pas se permettre d'effectuer une requête HTTP, par exemple à ajout d'un formulaire dans un formset Django. 
	
	Après avoir rencontré cette situation à plusieurs reprises, j'ai décidé de commencer à travailler sur django-template-transpiler, un projet Rust pour transpiler les templates Django en fonctions de rendu JS de façon similaire à React ou Vue. L'objectif est de permettre aux développeurs de rendre une page dynamique en minimisant le coût en resources. DTT permet ainsi de rendre des templates Django suivant la situation, soit côté serveur, soit côté client, en utilisant les le même template Django comme source de vérité.
LOCATION:LANG5
END:VEVENT
BEGIN:VEVENT
UID:BEBNTM
DTSTART:20261101T140000
DTEND:20261101T145500
SUMMARY:Nous l'avons construit avant FastAPI : quand une bonne décision devient de la dette technique (Irina Mitiaieva, MONMOUTON)
DESCRIPTION:En 2017, il n'existait pas de framework performant pour construire des APIs avec validation automatique des entrées/sorties, génération d'un client asynchrone à partir d'un contrat Swagger, middlewares de logging/métriques/tracing, et outillage pour tester les services de bout en bout — nous avons construit notre propre framework ASGI pour couvrir ces besoins. Ce pari a été le bon pendant des années.
	 
	Près d'une décennie plus tard, cette même décision est devenue un frein : les développeurs qui l'ont conçu sont partis, la documentation n'a jamais suivi, et les mises à jour des composants internes ont pris du retard. Pendant ce temps, l'écosystème open source (Pydantic, FastAPI et ses générateurs de client, l'outillage de test associé) a rattrapé puis dépassé ce que nous avions construit sur mesure — sans qu'on l'intègre. Résultat : on maintient à prix fort un outil que le marché sait maintenant faire mieux, gratuitement.
	 
	Ce talk raconte comment repérer ce basculement — quand la maintenance d'un choix maison coûte plus cher que la migration vers l'écosystème — et propose une grille de lecture pour réévaluer ses décisions d'architecture avant que l'inertie ne devienne le vrai coût.
LOCATION:LANG5
END:VEVENT
BEGIN:VEVENT
UID:EP8TNP
DTSTART:20261101T140000
DTEND:20261101T162500
SUMMARY:Se questionner sur les datas en tant que traces d'une réalité (Julien Laymajoux, Sébastien PHILIPPOT)
DESCRIPTION:Bonjour, 
	Nous aimerions proposer un temps de réflexion et de discussion sur les datas avec une approche philosophique, à destination des développeur(se)s et data scientist(e)s, mais également de toute personne intéressée par la question des données et de leur rapport avec la réalité qu’elles sont censées représenter.
	Cet atelier, illustré par des cas concrets issus de l'EdTech, a pour objectif de se questionner collectivement sur la place donnée aux datas, vues comme des traces. Sans remettre en cause l’intérêt d’utiliser des données pour optimiser et cartographier des processus, il s’agira notamment de nous demander dans quelle mesure une trace est productrice d’une connaissance et quelles relations de pouvoir peuvent se dissimuler derrière l’interprétation d’une trace.
	Après avoir exposé les cas concrets qui nous ont amenés à nous poser ces questions, nous présenterons quelques concepts philosophiques qui nous semblent éclairants, et nous engagerons avec les participant(e)s des discussions sur ces thématiques. 
	
	Nous vous remercions d’avance pour l’attention que vous porterez à notre proposition de contribution.
	
	Bien cordialement,
	
	Sébastien Philippot et Julien Laymajoux
LOCATION:LANG7
END:VEVENT
BEGIN:VEVENT
UID:FNJZAV
DTSTART:20261101T140000
DTEND:20261101T145500
SUMMARY:Intégrer du C++ dans notre module Python : facile ou compliqué? (Amine Bendahmane)
DESCRIPTION:On pense souvent qu'introduire du C++ dans un projet Python est un casse-tête, surtout avec la réputation de ce langage qui en a fait pleurer plus d'un. Pourtant, beaucoup de modules Python exécutent du C ou du C++ en arrière plan (Numpy, Pandas, OpenCV, PyTorch..). L'hypothèse est donc que ça ne devrait pas être si difficile que ça, sauf si cette difficulté en vaut vraiment la peine!
	
	Vérifions ces hypothèses dans une session de live coding en partant de zéro.
	
	L'objectif est de créer en temps réel un wrapper Python au-dessus d'une couche C++, puis déployer ce wrapper en tant que module Python installable avec pip ou uv.
	
	Au programme:
	- Binding C++/Python.
	- Partage des objets en mémoire.
	- Génération de la Wheel.
	- Configuration d'uv et pytest pour la validation.
	- Choix de l'ABI et compatibilité de versions.
LOCATION:BASENDERIE
END:VEVENT
BEGIN:VEVENT
UID:KGCRHA
DTSTART:20261101T140000
DTEND:20261101T145500
SUMMARY:Migrer les données d'une application Web... sans que tout explose (Loïc Simon)
DESCRIPTION:Toute application Web se nourrit de données, qui sont généralement stockées dans une base de données relationnelle SQL.
	
	Lorsque l'application évolue, le schéma des données aussi, et déployer une nouvelle version nécessite de passer des migrations sur les systèmes de production. Faire cette opération sans interruption de service peut vite tourner au casse-tête, d'autant plus que les systèmes sont distribués et complexes ! Une migration mal écrite peut facilement faire tomber toute la prod, ou introduire des bugs subtils qui nous morderont des mois après...  
	
	Cette conférence vous propose d'explorer tous les aspects de ce problème, et leurs solutions : migration en deux temps, pattern *expand-contract*, vérification de la cohérence code-migrations...
	
	Des concepts théoriques seront présentés, ainsi que leur application pratique : écriture de migrations sur un système SQLAlchemy / Alembic, déploiement dans le cloud.
LOCATION:MARI/SUGGAR
END:VEVENT
BEGIN:VEVENT
UID:PCTMJU
DTSTART:20261101T140000
DTEND:20261101T162500
SUMMARY:Automatisez la qualité et le formatage de votre code Python avec Ruff (Malick BA)
DESCRIPTION:Marre des linters lents et des configurations complexes qui ralentissent votre flux de travail ? Découvrez Ruff, l'outil révolutionnaire écrit en Rust qui transforme la maintenance du code Python. Conçu pour remplacer simultanément Flake8, Black, isort et des dizaines d'autres extensions, Ruff analyse et corrige votre code à une vitesse fulgurante.Cet atelier pratique vous guidera dans la transition vers un outillage moderne, performant et unifié.
LOCATION:LANG6
END:VEVENT
BEGIN:VEVENT
UID:PRFTXS
DTSTART:20261101T140000
DTEND:20261101T145500
SUMMARY:while not done: From Prompt Engineering to Loop Engineering (Fasal Shah, Soham Dutta)
DESCRIPTION:Strip away the marketing and an AI agent is a plain Python loop: call a model, run a tool, look at the result, decide whether to go again. In 2026 that loop got a grand name, “loop engineering,” and a bold claim attached: stop writing prompts, start designing the loops that prompt your agents for you. Some very credible people say it changes how we build software. Others say it is a cron job wearing a hat.
	
	This talk treats that as an engineering question, not a hype cycle. Two of us argue it out: one builds the strongest case for stacking loops, the other plays the skeptic. Along the way we show, in plain standard-library Python with no framework, what each layer of a loop actually is: the agent loop, a verification loop that grades its own output, an event-driven trigger, and the “self-improving” loop that rewrites its own instructions. Then we count the cost. 
	
	The real payload of this talk is the three things the hype skips: runaway token bills, comprehension debt (code shipped faster than anyone can understand it), and rubrics that confidently make the agent worse. You’ll be able to decide when a loop earns its keep, and when one plain function call and a human review would have shipped sooner. And a demo to top it all up.
LOCATION:PATUEK
END:VEVENT
BEGIN:VEVENT
UID:DL3YR7
DTSTART:20261101T150000
DTEND:20261101T152500
SUMMARY:asyncio en prod pendant 5 ans : les pièges qu'on aurait aimé connaître (Mehdi Abaakouk)
DESCRIPTION:Cinq ans à faire tourner de l'asyncio en production, ça laisse des cicatrices et des leçons. Retour d'expérience très concret sur ce qui casse vraiment une fois qu'on a dépassé le tutoriel, et sur les patterns qu'on aurait aimé connaître dès le premier jour.
	
	Au menu, les pièges qui nous ont coûté cher :
	- Offloader les tâches bloquantes sans étrangler la boucle d'événements (le code « synchrone qui traîne » qui fige tout, run_in_executor, et quand ça ne suffit pas).
	- Timeouts des services périodiques : tâches de fond qui dérivent, se chevauchent ou meurent en silence.
	- Cancellation propre : annuler une tâche sans laisser des ressources à moitié ouvertes ni avaler des exceptions.
	- Deadlocks : les interblocages spécifiques à l'async, comment on les a diagnostiqués et évités.
	
	Format REX, orienté « voilà ce qu'on ferait différemment ». Peu de théorie, beaucoup de cas réels.
LOCATION:LANG5
END:VEVENT
BEGIN:VEVENT
UID:KWC73S
DTSTART:20261101T150000
DTEND:20261101T152500
SUMMARY:"Un modèle ne voit jamais personne. Lem, les universaux, et ce qu'un système apprend de nous" (Ewa Kadziolka)
DESCRIPTION:En 1971, Stanisław Lem publie une nouvelle où un vaisseau s'écrase sur Mars. L'enquête ne trouve aucune panne : le calculateur de bord fonctionnait parfaitement. Il vérifiait simplement tout, sans cesse, jusqu'à saturer sa propre capacité au pire moment. Il avait hérité du trouble obsessionnel de l'ingénieur qui l'avait entraîné — le mot est de Lem, cinquante ans avant le RLHF.
	
	Ce talk part de là pour poser une question très concrète : qu'apprend un modèle, au juste ? Jamais des individus. Uniquement des catégories — « profil senior », « contenu toxique », « candidat à risque ». Or savoir si ces catégories existent dans le monde ou seulement dans nos corpus est une question qui a occupé cinq siècles de philosophie européenne, sous le nom de querelle des universaux. Les trois réponses qui s'y affrontent sont, mot pour mot, les trois attitudes qu'on entend aujourd'hui devant un dataset.
	
	On verra pourquoi ça n'est pas qu'une curiosité : toute critique éthique d'un entraînement suppose déjà une position sur les universaux, et la plupart du temps on l'adopte sans le savoir. On finira par une définition de la personne datée du VIᵉ siècle, un texte publié en mai dernier, et trois questions à se poser devant son propre pipeline.
	
	Aucun code, aucun prérequis philosophique. Juste des outils anciens, étonnamment opérationnels quand on entraîne des systèmes qui décident du sort de gens réels.
LOCATION:BASENDERIE
END:VEVENT
BEGIN:VEVENT
UID:NTPRMY
DTSTART:20261101T150000
DTEND:20261101T152500
SUMMARY:pytest à l’échelle : de 100 à 10 000 à 1 000 000 de tests (remyduthu)
DESCRIPTION:Une suite de 100 tests et une suite d’un million de tests ne se pilotent pas pareil. Cette conférence parcourt les trois ordres de grandeur : ce qui casse à chaque palier, et les stratégies pytest pour tenir.
	À 100 tests, pytest « juste marche ». À 10 000, le temps de collection, les fixtures partagées et la parallélisation (pytest-xdist) deviennent des sujets. À 1 000 000, on change de monde : sharding, exécution distribuée, sélection de tests par impact, cache, et surtout la lutte contre les tests instables (« flaky ») qui, à cette échelle, rendent une suite verte statistiquement impossible sans détection ni quarantaine automatiques.
	Palier par palier :
	100 → bonnes fixtures, parametrize, structure de suite.
	10k → temps de collection, xdist, isolation, markers, temps de CI.
	1M → sharding, distribution, test selection, observabilité de la suite, détection et quarantaine des tests instables.
LOCATION:MARI/SUGGAR
END:VEVENT
BEGIN:VEVENT
UID:SPCWWD
DTSTART:20261101T150000
DTEND:20261101T152500
SUMMARY:How Python Speaks HTTP/3 (Palak Jain, Stuti Jain)
DESCRIPTION:HTTP/3 is no longer something that only browser vendors care about. Cloud providers, CDNs, APIs and application platforms are increasingly adopting it, yet many Python developers still think of HTTP as "TCP + TLS + requests".
	
	This talk focuses on what actually changes when an application starts communicating over HTTP/3.
	
	Rather than explaining the protocol from slides, I'll follow a real request through the stack and use that journey to introduce the major concepts. We'll compare the request path in HTTP/1.1, HTTP/2 and HTTP/3, look at where head-of-line blocking comes from and see how QUIC moves reliability, multiplexing and encryption into a new transport layer built on top of UDP.
	
	The session includes:
	- A brief history of why HTTP/3 was created
	- Understanding TCP-level head-of-line blocking
	- QUIC streams and multiplexing
	- TLS 1.3 inside QUIC
	- Connection establishment and 0-RTT
	- Exploring Python HTTP/3 libraries such as aioquic
	- Code demonstration of a Python HTTP/3 client and server
	
	The goal is not to turn attendees into protocol experts. Instead, they should leave with a practical mental model of what happens between a Python HTTP call and the network and a clearer understanding of the technologies that power modern web traffic.
LOCATION:PATUEK
END:VEVENT
BEGIN:VEVENT
UID:7WBTU7
DTSTART:20261101T153000
DTEND:20261101T162500
SUMMARY:Écrire un analyseur de types en Python (Antoine Rozo)
DESCRIPTION:Après un tour d'horizon des annotations de types en Python & des types génériques, nous verrons comment mettre en place une analyse dynamique de ceux-ci dans un programme Python, puis comment écrire un analyseur statique de types tel que mypy.
LOCATION:MARI/SUGGAR
END:VEVENT
BEGIN:VEVENT
UID:7X33NX
DTSTART:20261101T153000
DTEND:20261101T162500
SUMMARY:Gérer ses dépendances Python au-delà de PyPI - Environnement de dev Odoo tel un projet python (Pierre Verkest)
DESCRIPTION:Retour d'expérience avec uv et [uvault](https://uvault.apycod.com/) dans un écosystème géant : Odoo + Odoo Community Association (OCA).
	
	Comment gérez-vous vos dépendances Python lorsque votre projet dépend d'un écosystème de centaines de modules open source, où le besoin d'utiliser des Pull Requests (PR) non fusionnées est une réalité quotidienne ?
	
	Dans cette conférence, je vous propose un retour d'expérience concret sur la gestion d'un projet (Odoo) de la machine de dev jusqu'à la production. Nous verrons comment installer une instance Odoo tel qu’un projet python (ce qui sont passés par là connaissent les pièges).
	
	Nous passerons ensuite sur un défi universel : la sécurité et la stabilité des dépendances basées sur des dépôts VCS (Git) tiers. Lorsque vous épinglez une PR ouverte par un tiers dans votre fichier de dépendances, vous vous exposez à ce qu'elle soit modifiée, supprimée ou réécrite (force-push). Je vous présenterai [uvault](https://uvault.apycod.com/), un outil open source que j'ai conçu pour sécuriser, figer et valider ces références de PRs instables, tout en permettant aux développeurs de basculer instantanément dans un mode "prêt à coder" pour contribuer en retour.
LOCATION:LANG5
END:VEVENT
BEGIN:VEVENT
UID:
DTSTART:20261101T153000
DTEND:20261101T155500
SUMMARY:<i>To be confirmed</i> ()
DESCRIPTION:
LOCATION:PATUEK
END:VEVENT
BEGIN:VEVENT
UID:MV3FK9
DTSTART:20261101T153000
DTEND:20261101T162500
SUMMARY:Histoire secrète des bonnes pratiques : 70 ans de leçons pour coder mieux aujourd'hui (Vincent Poulailleau)
DESCRIPTION:Et si les problèmes que nous rencontrons aujourd'hui avaient déjà été résolus il y a 20, 30 ou 50 ans ?
	
	Cette conférence raconte, avec des exemples concrets en Python, ce que 70 ans de développement logiciel nous ont appris. Un grand secret sera même révélé à la fin de la conférence !
	
	On y parle refactoring, dette technique, architecture et testabilité, sans jargon inutile et sans dogmatisme.
	
	Chaque idée est illustrée par du code simple, des situations réelles d'équipe, et des erreurs que nous faisons tous.
	
	Le fil rouge est clair : les technologies changent vite, mais les fondamentaux qui rendent un code durable restent les mêmes.
	
	Le public repart avec des repères actionnables pour coder plus proprement, livrer plus sereinement et mieux collaborer. Une liste de ressources (livres, vidéos, podcasts…) sera également révélée.
	
	Le ton est dynamique, accessible et ponctué d'humour.
	
	Une session idéale pour développeurs et développeuses qui veulent progresser concrètement, quel que soit leur niveau, en particulier pour ceux qui n'ont jamais entendu parler de software craftsmanship, SOLID, clean architecture et autres gros mots.
LOCATION:BASENDERIE
END:VEVENT
BEGIN:VEVENT
UID:
DTSTART:20261101T160000
DTEND:20261101T162500
SUMMARY:<i>To be confirmed</i> ()
DESCRIPTION:
LOCATION:PATUEK
END:VEVENT
BEGIN:VEVENT
UID:MSLSVK
DTSTART:20261101T163000
DTEND:20261101T170000
SUMMARY:Clôture / Closing (Antoine Rozo)
DESCRIPTION:Session de clôture de la PyConFR 2026.
	
	Closing talk of PyConFR 2026.
LOCATION:MARI/SUGGAR
END:VEVENT
END:VCALENDAR