<?xml version='1.0' encoding='utf-8' ?>
<!-- Made with love by pretalx v2026.1.1. -->
<schedule>
    <generator name="pretalx" version="2026.1.1" />
    <version>0.23</version>
    <conference>
        <title>EuroPython 2026</title>
        <acronym>europython-2026</acronym>
        <start>2026-07-13</start>
        <end>2026-07-19</end>
        <days>7</days>
        <timeslot_duration>00:05</timeslot_duration>
        <base_url>https://programme.europython.eu</base_url>
        <logo>https://programme.europython.eu/media/europython-2026/img/logo_tulfAOz.webp</logo>
        <time_zone_name>Poland</time_zone_name>
        
        
        <track name="Python Core, Internals, Extensions" slug="6740-python-core-internals-extensions"  color="#151f37" />
        
        <track name="Web Development, Web APIs, Front-End Integration" slug="6741-web-development-web-apis-front-end-integration"  color="#000000" />
        
        <track name="DevOps, Cloud, Scalable Infrastructure" slug="6742-devops-cloud-scalable-infrastructure"  color="#000000" />
        
        <track name="IoT, Embedded Systems, Hardware Integration" slug="6743-iot-embedded-systems-hardware-integration"  color="#000000" />
        
        <track name="Tooling, Packaging, Developer Productivity" slug="6744-tooling-packaging-developer-productivity"  color="#000000" />
        
        <track name="Testing, Quality Assurance, Security" slug="6745-testing-quality-assurance-security"  color="#000000" />
        
        <track name="Community Building, Education, Outreach" slug="6746-community-building-education-outreach"  color="#000000" />
        
        <track name="Ethics, Social Responsibility, Sustainability, Legal" slug="6747-ethics-social-responsibility-sustainability-legal"  color="#000000" />
        
        <track name="Professional Development, Careers, Leadership" slug="6748-professional-development-careers-leadership"  color="#000000" />
        
        <track name="Python for Games, Art, Play and Expression" slug="6749-python-for-games-art-play-and-expression"  color="#000000" />
        
        <track name="Machine Learning: Research &amp; Applications" slug="6750-machine-learning-research-applications"  color="#000000" />
        
        <track name="Machine Learning, NLP and CV" slug="6751-machine-learning-nlp-and-cv"  color="#000000" />
        
        <track name="Data preparation and visualisation" slug="6752-data-preparation-and-visualisation"  color="#000000" />
        
        <track name="Jupyter and Scientific Python" slug="6753-jupyter-and-scientific-python"  color="#000000" />
        
        <track name="Data Engineering and MLOps" slug="6754-data-engineering-and-mlops"  color="#000000" />
        
        <track name="~ None of these topics" slug="6755-none-of-these-topics"  color="#000000" />
        
    </conference>
    <day index='1' date='2026-07-13' start='2026-07-13T04:00:00+02:00' end='2026-07-14T03:59:00+02:00'>
        <room name='S3A' guid='81adc7d4-7479-5204-bb50-171fe63c4b34'>
            <event guid='8dd1c270-735d-5cf8-8bfc-110bf82a9a34' id='97546' code='CSDM3D'>
                <room>S3A</room>
                <title>Monday Registration &amp; Welcome @ TBD Floor</title>
                <subtitle></subtitle>
                <type>Announcements</type>
                <date>2026-07-13T08:30:00+02:00</date>
                <start>08:30</start>
                <duration>01:00</duration>
                <abstract>Welcome to EuroPython 2026! Please notice the registration will happen on the TBD.
You can pick up your badges at any time during the week as long as we are open!
If you want to avoid the morning rush on Wednesday, come on Monday and Tuesday!
Enjoy the conference!</abstract>
                <slug>europython-2026-97546-monday-registration-welcome-tbd-floor</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/CSDM3D/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/CSDM3D/feedback/</feedback_url>
            </event>
            <event guid='97de00ad-bbdd-5e23-807c-08a16ebab991' id='89641' code='QWEJWT'>
                <room>S3A</room>
                <title>Crafting Your Own Compiler: From Python Logic to High-Speed WebAssembly</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-13T09:30:00+02:00</date>
                <start>09:30</start>
                <duration>01:30</duration>
                <abstract>Ever wondered how a computer actually understands your logic? While Python interprets code line-by-line, WebAssembly allows us to compile high-performance modules that run at near-native speed in the browser. This tutorial breaks open the black box of language design, showing you how to translate human-readable logic into raw, executable power. We will use Python to build a functional compiler from scratch, translating a simple language into **WebAssembly (Wasm)**: the industry standard for high-performance web and cloud computing.

### Why Build a Compiler? (It&#8217;s Not Just for Language Designers)

Learning compiler logic isn&#8217;t just about creating the next C++ or Rust; it&#8217;s about mastering **data transformation**. The patterns used in compilers (lexing, parsing, and code generation) are the exact same patterns used in:

* **Data Engineering:** Writing custom Extract, Transform, and Load (ETL) tools to transform massive datasets.
* **Domain Specific Languages (DSLs):** Creating custom internal tools for finance, science, or game logic.
* **Performance Optimization:** Understanding how code is &#8220;lowered&#8221; into machine instructions to write faster, leaner programs.
* **Security:** Auditing how code is executed to prevent injection attacks and vulnerabilities.

### The Project: *chiqui_forth* to Wasm

We will build a compiler for **chiqui_forth**, a tiny, stack-based language inspired by the legendary Forth (1970). Because both *chiqui_forth* and WebAssembly use **Reverse Polish Notation (RPN)**, they are a perfect match for a first-time compiler project. You&#8217;ll see exactly how high-level logic is mapped to the &#8220;bare metal&#8221; of a virtual machine.

### Outcomes

By the end of this session, you won&#8217;t just have a Wasm file; you&#8217;ll have a new mental model for software:

* **The Compiler Pipeline:** Implement the full flow from raw text to executable binary.
* **Wasm Mastery:** Gain a practical understanding of WebAssembly, the technology powering modern browser-based video editors, games, and serverless clouds.
* **Custom Tooling:** Leave with a working Python-based compiler that you can extend to your own custom syntax.

### Prerequisites

* **Python Proficiency:** Comfort with variables, loops, lists, dictionaries, and file I/O.
* **Terminal Basics:** Ability to navigate folders and run scripts from a command line.

*No prior knowledge of compiler design, Wasm, or web development is required.*</abstract>
                <slug>europython-2026-89641-0-crafting-your-own-compiler-from-python-logic-to-high-speed-webassembly</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='90048'>Ariel Ortiz</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/QWEJWT/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/QWEJWT/feedback/</feedback_url>
            </event>
            <event guid='ff9096b6-b976-5023-9daa-54d5d02ab742' id='89641' code='QWEJWT'>
                <room>S3A</room>
                <title>Crafting Your Own Compiler: From Python Logic to High-Speed WebAssembly</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-13T11:15:00+02:00</date>
                <start>11:15</start>
                <duration>01:30</duration>
                <abstract>Ever wondered how a computer actually understands your logic? While Python interprets code line-by-line, WebAssembly allows us to compile high-performance modules that run at near-native speed in the browser. This tutorial breaks open the black box of language design, showing you how to translate human-readable logic into raw, executable power. We will use Python to build a functional compiler from scratch, translating a simple language into **WebAssembly (Wasm)**: the industry standard for high-performance web and cloud computing.

### Why Build a Compiler? (It&#8217;s Not Just for Language Designers)

Learning compiler logic isn&#8217;t just about creating the next C++ or Rust; it&#8217;s about mastering **data transformation**. The patterns used in compilers (lexing, parsing, and code generation) are the exact same patterns used in:

* **Data Engineering:** Writing custom Extract, Transform, and Load (ETL) tools to transform massive datasets.
* **Domain Specific Languages (DSLs):** Creating custom internal tools for finance, science, or game logic.
* **Performance Optimization:** Understanding how code is &#8220;lowered&#8221; into machine instructions to write faster, leaner programs.
* **Security:** Auditing how code is executed to prevent injection attacks and vulnerabilities.

### The Project: *chiqui_forth* to Wasm

We will build a compiler for **chiqui_forth**, a tiny, stack-based language inspired by the legendary Forth (1970). Because both *chiqui_forth* and WebAssembly use **Reverse Polish Notation (RPN)**, they are a perfect match for a first-time compiler project. You&#8217;ll see exactly how high-level logic is mapped to the &#8220;bare metal&#8221; of a virtual machine.

### Outcomes

By the end of this session, you won&#8217;t just have a Wasm file; you&#8217;ll have a new mental model for software:

* **The Compiler Pipeline:** Implement the full flow from raw text to executable binary.
* **Wasm Mastery:** Gain a practical understanding of WebAssembly, the technology powering modern browser-based video editors, games, and serverless clouds.
* **Custom Tooling:** Leave with a working Python-based compiler that you can extend to your own custom syntax.

### Prerequisites

* **Python Proficiency:** Comfort with variables, loops, lists, dictionaries, and file I/O.
* **Terminal Basics:** Ability to navigate folders and run scripts from a command line.

*No prior knowledge of compiler design, Wasm, or web development is required.*</abstract>
                <slug>europython-2026-89641-1-crafting-your-own-compiler-from-python-logic-to-high-speed-webassembly</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='90048'>Ariel Ortiz</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/QWEJWT/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/QWEJWT/feedback/</feedback_url>
            </event>
            <event guid='ccb43efc-48cf-5633-860a-31857e9fe1b4' id='91357' code='RARRL7'>
                <room>S3A</room>
                <title>Fast Python Development with uv</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-13T13:45:00+02:00</date>
                <start>13:45</start>
                <duration>01:30</duration>
                <abstract>Learn how to use uv for fast, reliable Python development. Created by Astral (the makers of Ruff), uv is a modern Python package and project manager written in Rust that can replace pip, pip-tools, virtualenv, poetry, pyenv, and more&#8212;with dramatic speed improvements.

This hands-on tutorial teaches you how to use uv for managing Python projects, dependencies, and tools. uv is designed to be a drop-in replacement for pip while offering a complete development workflow: project management, dependency resolution, virtual environments, Python version management, and tool installation.

Key advantages of uv:

* **Speed**: 10-100x faster than pip for most operations
* **Compatibility**: Works with existing pip workflows and requirements.txt files
* **Complete workflow**: Replaces multiple tools with a single, unified interface
* **Reliability**: Deterministic dependency resolution with lock files

You will learn:

* How to replace pip with uv for faster package installation
* How to manage Python projects with `pyproject.toml` and `uv.lock`
* How to handle multiple Python versions without external tools
* How to manage workspaces for multi-package projects
* How to use `uvx` for running Python tools without installation
* How to run single-file scripts with inline dependencies
* How to build and publish Python packages
* Best practices for using uv in real-world projects

A brief comparison with Pixi and other dependency management tools is included.</abstract>
                <slug>europython-2026-91357-0-fast-python-development-with-uv</slug>
                <track>Tooling, Packaging, Developer Productivity</track>
                
                <persons>
                    <person id='91556'>Mike M&#252;ller</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/RARRL7/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/RARRL7/feedback/</feedback_url>
            </event>
            <event guid='466e689a-3df8-575c-a2bb-653f95f6a8a6' id='91357' code='RARRL7'>
                <room>S3A</room>
                <title>Fast Python Development with uv</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-13T15:30:00+02:00</date>
                <start>15:30</start>
                <duration>01:30</duration>
                <abstract>Learn how to use uv for fast, reliable Python development. Created by Astral (the makers of Ruff), uv is a modern Python package and project manager written in Rust that can replace pip, pip-tools, virtualenv, poetry, pyenv, and more&#8212;with dramatic speed improvements.

This hands-on tutorial teaches you how to use uv for managing Python projects, dependencies, and tools. uv is designed to be a drop-in replacement for pip while offering a complete development workflow: project management, dependency resolution, virtual environments, Python version management, and tool installation.

Key advantages of uv:

* **Speed**: 10-100x faster than pip for most operations
* **Compatibility**: Works with existing pip workflows and requirements.txt files
* **Complete workflow**: Replaces multiple tools with a single, unified interface
* **Reliability**: Deterministic dependency resolution with lock files

You will learn:

* How to replace pip with uv for faster package installation
* How to manage Python projects with `pyproject.toml` and `uv.lock`
* How to handle multiple Python versions without external tools
* How to manage workspaces for multi-package projects
* How to use `uvx` for running Python tools without installation
* How to run single-file scripts with inline dependencies
* How to build and publish Python packages
* Best practices for using uv in real-world projects

A brief comparison with Pixi and other dependency management tools is included.</abstract>
                <slug>europython-2026-91357-1-fast-python-development-with-uv</slug>
                <track>Tooling, Packaging, Developer Productivity</track>
                
                <persons>
                    <person id='91556'>Mike M&#252;ller</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/RARRL7/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/RARRL7/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='S3B' guid='8b2a7d87-e211-5bf0-aec1-50733db791b3'>
            <event guid='2df021d0-6bd8-50f2-88a8-b0c922f536fc' id='91785' code='WYBHCE'>
                <room>S3B</room>
                <title>Cooking with asyncio: an introduction to asynchronous programming</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-13T09:30:00+02:00</date>
                <start>09:30</start>
                <duration>01:30</duration>
                <abstract>Asynchronous programming is infamous for leading to confusing projects with non linear code paths and all sorts of nasty bugs&#8230;

But with the right mental models and a cooking analogy, you will find yourself writing async code with confidence.

Come to this tutorial if you&#8217;re prepared to challenge your understanding of how programs run, if you want to create a simple Human-to-Human asynchronous chat application, or ir you want to critique my culinary taste.</abstract>
                <slug>europython-2026-91785-0-cooking-with-asyncio-an-introduction-to-asynchronous-programming</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='89253'>Rodrigo Gir&#227;o Serr&#227;o</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/WYBHCE/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/WYBHCE/feedback/</feedback_url>
            </event>
            <event guid='0e5343b9-497c-5386-92b7-073f52a3826a' id='91785' code='WYBHCE'>
                <room>S3B</room>
                <title>Cooking with asyncio: an introduction to asynchronous programming</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-13T11:15:00+02:00</date>
                <start>11:15</start>
                <duration>01:30</duration>
                <abstract>Asynchronous programming is infamous for leading to confusing projects with non linear code paths and all sorts of nasty bugs&#8230;

But with the right mental models and a cooking analogy, you will find yourself writing async code with confidence.

Come to this tutorial if you&#8217;re prepared to challenge your understanding of how programs run, if you want to create a simple Human-to-Human asynchronous chat application, or ir you want to critique my culinary taste.</abstract>
                <slug>europython-2026-91785-1-cooking-with-asyncio-an-introduction-to-asynchronous-programming</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='89253'>Rodrigo Gir&#227;o Serr&#227;o</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/WYBHCE/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/WYBHCE/feedback/</feedback_url>
            </event>
            <event guid='fa0f860b-19c6-593f-8bef-5c13a7b7c78b' id='91428' code='JRMSZT'>
                <room>S3B</room>
                <title>Code organization for non-engineers</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-13T13:45:00+02:00</date>
                <start>13:45</start>
                <duration>01:30</duration>
                <abstract>Have you ever opened a piece of code that seems to break just by looking at it&#8212;and noticed that your coworker wrote it? You don&#8217;t want to be *that* person. While tangled, hard-to-maintain code can emerge for many reasons, it should never be by accident.

In this hands-on workshop, you will learn how to make code easier to maintain and to evolve. We will gradually refactor a messy Python web application into a well-organized, testable software. You will develop a mental model for organizing code effectively and understand how its structure impacts code quality. Ultimately, this will inform future decisions on design and code organization.

This workshop is specifically designed for people who don&apos;t identify as software engineers or don&apos;t perform typical software engineering tasks as part of their daily work. Participants should be familiar with basic Python programming and the concept of automated (unit) tests.</abstract>
                <slug>europython-2026-91428-0-code-organization-for-non-engineers</slug>
                <track>Testing, Quality Assurance, Security</track>
                
                <persons>
                    <person id='91610'>Michael Seifert</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/JRMSZT/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/JRMSZT/feedback/</feedback_url>
            </event>
            <event guid='cca7e9ad-56df-5731-8079-29f99840edd1' id='91428' code='JRMSZT'>
                <room>S3B</room>
                <title>Code organization for non-engineers</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-13T15:30:00+02:00</date>
                <start>15:30</start>
                <duration>01:30</duration>
                <abstract>Have you ever opened a piece of code that seems to break just by looking at it&#8212;and noticed that your coworker wrote it? You don&#8217;t want to be *that* person. While tangled, hard-to-maintain code can emerge for many reasons, it should never be by accident.

In this hands-on workshop, you will learn how to make code easier to maintain and to evolve. We will gradually refactor a messy Python web application into a well-organized, testable software. You will develop a mental model for organizing code effectively and understand how its structure impacts code quality. Ultimately, this will inform future decisions on design and code organization.

This workshop is specifically designed for people who don&apos;t identify as software engineers or don&apos;t perform typical software engineering tasks as part of their daily work. Participants should be familiar with basic Python programming and the concept of automated (unit) tests.</abstract>
                <slug>europython-2026-91428-1-code-organization-for-non-engineers</slug>
                <track>Testing, Quality Assurance, Security</track>
                
                <persons>
                    <person id='91610'>Michael Seifert</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/JRMSZT/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/JRMSZT/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='S4A' guid='3494dc59-027c-541c-9364-5779e972567d'>
            <event guid='9b024cfb-7fa9-5710-baec-8cd342ab0769' id='91591' code='NQGSY7'>
                <room>S4A</room>
                <title>Developing IoT sensors with MicroPython</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-13T09:30:00+02:00</date>
                <start>09:30</start>
                <duration>01:30</duration>
                <abstract>In this workshop, you will create practical internet-connected sensors with MicroPython. We will cover the basics of setting up the development environment, both for developing on PC and deploying/developing on a microcontroller device.

Targeted towards those that are already comfortable programming in Python, but that have little exposure to embedded/hardware/electronics.

We will provide some MicroPython-capable hardware to develop against, pre-flashed with MicroPython. You may need to sit together in pairs or small groups for the on-device part.

#### Prerequisites
Participants must bring:

- Laptop with Linux/MacOS/Windows Subsystem for Linux
- Have Python 3.12+ with virtualenv support installed
- USB-C to USB-C cable or USB Type A adapter (our kit only has Type A plug)</abstract>
                <slug>europython-2026-91591-0-developing-iot-sensors-with-micropython</slug>
                <track>IoT, Embedded Systems, Hardware Integration</track>
                
                <persons>
                    <person id='90797'>Jon Nordby</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/NQGSY7/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/NQGSY7/feedback/</feedback_url>
            </event>
            <event guid='9b6164a1-46ea-5eba-bb9f-a832a2c22f4c' id='91591' code='NQGSY7'>
                <room>S4A</room>
                <title>Developing IoT sensors with MicroPython</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-13T11:15:00+02:00</date>
                <start>11:15</start>
                <duration>01:30</duration>
                <abstract>In this workshop, you will create practical internet-connected sensors with MicroPython. We will cover the basics of setting up the development environment, both for developing on PC and deploying/developing on a microcontroller device.

Targeted towards those that are already comfortable programming in Python, but that have little exposure to embedded/hardware/electronics.

We will provide some MicroPython-capable hardware to develop against, pre-flashed with MicroPython. You may need to sit together in pairs or small groups for the on-device part.

#### Prerequisites
Participants must bring:

- Laptop with Linux/MacOS/Windows Subsystem for Linux
- Have Python 3.12+ with virtualenv support installed
- USB-C to USB-C cable or USB Type A adapter (our kit only has Type A plug)</abstract>
                <slug>europython-2026-91591-1-developing-iot-sensors-with-micropython</slug>
                <track>IoT, Embedded Systems, Hardware Integration</track>
                
                <persons>
                    <person id='90797'>Jon Nordby</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/NQGSY7/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/NQGSY7/feedback/</feedback_url>
            </event>
            <event guid='5ee29715-7a2b-548c-9de0-22d778567e65' id='91171' code='SNKUW7'>
                <room>S4A</room>
                <title>Deconstructing the tenets of Planet Scale Systems with Python</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-13T13:45:00+02:00</date>
                <start>13:45</start>
                <duration>01:30</duration>
                <abstract>&gt; *&quot;There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery&quot;*

If this made you curious, this tutorial is the right place to dive deeper into the interesting (sometimes weird) world of Distributed Systems. 

When you think of constructing systems that can scale to billions of people, you have to think beyond single node programming patterns. This introduces a couple of intriguing challenges like how do you make thousands of nodes agree? Or jargons like *CAP Theorem*.  To make matters even more complicated, most of the material on this subject is highly theoretical &amp; geared towards advanced learners. This quickly discourages a lot of programmers who tend to learn better by doing rather than just reading about things.

Python has always been a great vehicle to learn complex technologies efficiently. It enables a programmer to cut through the weeds to focus on the core concepts. This was recently exemplified when Andrej Karpathy taught a way to train a GPT in pure python with [microgpt.py](https://gist.github.com/karpathy/8627fe009c40f57531cb18360106ce95). 
Similarly, it can be an efficient vehicle to deconstruct the fundamentals of large scale systems, which are essential for a holistic view of modern day applications.

In this tutorial, we will have several hands on exercises to dive deeper into the tenets of reliability, availability &amp; scalability. By simulating a Distributed Cluster with pure python code we&apos;ll poke the system, make it fail &amp; closely study the perils of planet scale systems &amp; how to overcome them.

Towards the end of the tutorial, you&apos;ll have a clear mental model of some of the most confusing concepts (Consistency, Consensus, Clocks etc) in distributed systems. The ultimate goal is to give you enough knowledge, curiosity &amp; tooling so that you can explore this field on your own &amp; be confident about building the next planet scale system.</abstract>
                <slug>europython-2026-91171-0-deconstructing-the-tenets-of-planet-scale-systems-with-python</slug>
                <track>DevOps, Cloud, Scalable Infrastructure</track>
                
                <persons>
                    <person id='91418'>Abhimanyu Singh Shekhawat</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/SNKUW7/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/SNKUW7/feedback/</feedback_url>
            </event>
            <event guid='aa3a5a07-b67a-567c-b618-d066044b4797' id='91171' code='SNKUW7'>
                <room>S4A</room>
                <title>Deconstructing the tenets of Planet Scale Systems with Python</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-13T15:30:00+02:00</date>
                <start>15:30</start>
                <duration>01:30</duration>
                <abstract>&gt; *&quot;There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery&quot;*

If this made you curious, this tutorial is the right place to dive deeper into the interesting (sometimes weird) world of Distributed Systems. 

When you think of constructing systems that can scale to billions of people, you have to think beyond single node programming patterns. This introduces a couple of intriguing challenges like how do you make thousands of nodes agree? Or jargons like *CAP Theorem*.  To make matters even more complicated, most of the material on this subject is highly theoretical &amp; geared towards advanced learners. This quickly discourages a lot of programmers who tend to learn better by doing rather than just reading about things.

Python has always been a great vehicle to learn complex technologies efficiently. It enables a programmer to cut through the weeds to focus on the core concepts. This was recently exemplified when Andrej Karpathy taught a way to train a GPT in pure python with [microgpt.py](https://gist.github.com/karpathy/8627fe009c40f57531cb18360106ce95). 
Similarly, it can be an efficient vehicle to deconstruct the fundamentals of large scale systems, which are essential for a holistic view of modern day applications.

In this tutorial, we will have several hands on exercises to dive deeper into the tenets of reliability, availability &amp; scalability. By simulating a Distributed Cluster with pure python code we&apos;ll poke the system, make it fail &amp; closely study the perils of planet scale systems &amp; how to overcome them.

Towards the end of the tutorial, you&apos;ll have a clear mental model of some of the most confusing concepts (Consistency, Consensus, Clocks etc) in distributed systems. The ultimate goal is to give you enough knowledge, curiosity &amp; tooling so that you can explore this field on your own &amp; be confident about building the next planet scale system.</abstract>
                <slug>europython-2026-91171-1-deconstructing-the-tenets-of-planet-scale-systems-with-python</slug>
                <track>DevOps, Cloud, Scalable Infrastructure</track>
                
                <persons>
                    <person id='91418'>Abhimanyu Singh Shekhawat</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/SNKUW7/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/SNKUW7/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='S4B' guid='9c299f12-447d-549f-92be-3d747135683f'>
            <event guid='00e2b729-2660-5b83-b324-f33bb1efaa86' id='89372' code='GCWCEU'>
                <room>S4B</room>
                <title>Getting out of the testing hell</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-13T09:30:00+02:00</date>
                <start>09:30</start>
                <duration>01:30</duration>
                <abstract>We know we should write automated tests. But too often, it is a real chore: they may be slow, unreliable, difficult to run, to maintain, even to write! Why is it so hard? How to take back control?

For that, you will work on a realistic project: a Python app with FastAPI backend, a PostgreSQL database, configuration files, third-party APIs, ... and tests that are awful.

You will review:
- the quality culture of the project
- how it is architectured
- the existing tests
- and the code quality

Then you will prepare the plan:
- your own test pyramid / strategy
- testing tools needed
- essential scenarios
- the CI to have your back

And start coding:
- updating the existing tests
- adding new tests using powerful tooling
- minimal refactoring to enable testing
- creating fakes/mocks/simulators to enable testing

You&apos;ll leave able to:
* diagnose what makes tests slow or convoluted
* design a pragmatic test strategy for your codebase
* implement reliable tests, with fakes and testcontainers
* refactor just enough to make code testable

It will be around 65% hands-on, and 35% guided analysis. The first two parts will take the first half of the session, so that you have plenty of time to actually implement the strategy during the second half.
The code repository will stay available to you after the workshop, along with an example of the end-result.

Setup :
* [`uv`](https://docs.astral.sh/uv/)
* (optional) docker or podman, to run TestContainers
* (optional) a GitHub or GitLab account, to run CI</abstract>
                <slug>europython-2026-89372-0-getting-out-of-the-testing-hell</slug>
                <track>Testing, Quality Assurance, Security</track>
                
                <persons>
                    <person id='89822'>Julien Lenormand</person><person id='89860'>GAFFIOT Jonathan</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/GCWCEU/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/GCWCEU/feedback/</feedback_url>
            </event>
            <event guid='331a2e7a-1138-5e05-99dc-e786881df192' id='89372' code='GCWCEU'>
                <room>S4B</room>
                <title>Getting out of the testing hell</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-13T11:15:00+02:00</date>
                <start>11:15</start>
                <duration>01:30</duration>
                <abstract>We know we should write automated tests. But too often, it is a real chore: they may be slow, unreliable, difficult to run, to maintain, even to write! Why is it so hard? How to take back control?

For that, you will work on a realistic project: a Python app with FastAPI backend, a PostgreSQL database, configuration files, third-party APIs, ... and tests that are awful.

You will review:
- the quality culture of the project
- how it is architectured
- the existing tests
- and the code quality

Then you will prepare the plan:
- your own test pyramid / strategy
- testing tools needed
- essential scenarios
- the CI to have your back

And start coding:
- updating the existing tests
- adding new tests using powerful tooling
- minimal refactoring to enable testing
- creating fakes/mocks/simulators to enable testing

You&apos;ll leave able to:
* diagnose what makes tests slow or convoluted
* design a pragmatic test strategy for your codebase
* implement reliable tests, with fakes and testcontainers
* refactor just enough to make code testable

It will be around 65% hands-on, and 35% guided analysis. The first two parts will take the first half of the session, so that you have plenty of time to actually implement the strategy during the second half.
The code repository will stay available to you after the workshop, along with an example of the end-result.

Setup :
* [`uv`](https://docs.astral.sh/uv/)
* (optional) docker or podman, to run TestContainers
* (optional) a GitHub or GitLab account, to run CI</abstract>
                <slug>europython-2026-89372-1-getting-out-of-the-testing-hell</slug>
                <track>Testing, Quality Assurance, Security</track>
                
                <persons>
                    <person id='89822'>Julien Lenormand</person><person id='89860'>GAFFIOT Jonathan</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/GCWCEU/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/GCWCEU/feedback/</feedback_url>
            </event>
            <event guid='3a4b902e-f524-5e1f-bcb3-656a53324e0e' id='91712' code='K7XNTF'>
                <room>S4B</room>
                <title>Understand and expand Python: a hands-on experience on Python internals</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-13T13:45:00+02:00</date>
                <start>13:45</start>
                <duration>01:30</duration>
                <abstract>The majority of the new modules that we see out there including the word &quot;performance&quot; in their campaigns are Python modules with extensions in other languages. This has been very clear with languages like Rust, and C++, which has been the core of many popular modules in the recent years.

But how difficult is to extend CPython? and more importantly, what are the steps of doing it with other languages?

This tutorial aims to be a good starting point for people that wants to familiarize themselves with the CPython internal, and how to do extensions with languages like C, C++, Rust, and Zig, by developing a series of small exercises that will enable you to get more familiar with the processes.

On this tutorial you will learn to:

- Explore the core of the standard Python implementation
- Modify the interpreter by adding new functions
- Extend Python with C, Rust, and Zig.

The session will be a combination of a theoretical introduction of the topics, followed by a hand-on experience on each step.

Some knowledge with C, C++, Rust or Zig is encouraged, but not required.</abstract>
                <slug>europython-2026-91712-0-understand-and-expand-python-a-hands-on-experience-on-python-internals</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='91799'>Cristi&#225;n Maureira-Fredes</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/K7XNTF/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/K7XNTF/feedback/</feedback_url>
            </event>
            <event guid='0d6449ef-88f1-5545-9e0e-5ebd0e82660c' id='91712' code='K7XNTF'>
                <room>S4B</room>
                <title>Understand and expand Python: a hands-on experience on Python internals</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-13T15:30:00+02:00</date>
                <start>15:30</start>
                <duration>01:30</duration>
                <abstract>The majority of the new modules that we see out there including the word &quot;performance&quot; in their campaigns are Python modules with extensions in other languages. This has been very clear with languages like Rust, and C++, which has been the core of many popular modules in the recent years.

But how difficult is to extend CPython? and more importantly, what are the steps of doing it with other languages?

This tutorial aims to be a good starting point for people that wants to familiarize themselves with the CPython internal, and how to do extensions with languages like C, C++, Rust, and Zig, by developing a series of small exercises that will enable you to get more familiar with the processes.

On this tutorial you will learn to:

- Explore the core of the standard Python implementation
- Modify the interpreter by adding new functions
- Extend Python with C, Rust, and Zig.

The session will be a combination of a theoretical introduction of the topics, followed by a hand-on experience on each step.

Some knowledge with C, C++, Rust or Zig is encouraged, but not required.</abstract>
                <slug>europython-2026-91712-1-understand-and-expand-python-a-hands-on-experience-on-python-internals</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='91799'>Cristi&#225;n Maureira-Fredes</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/K7XNTF/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/K7XNTF/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='2.017/2.018' guid='0ea76991-27eb-54e8-a71c-ee5c986ce53c'>
            <event guid='f6ecce28-1998-547b-97c8-e0214b1cf056' id='99349' code='SBREFN'>
                <room>2.017/2.018</room>
                <title>Packaging Summit</title>
                <subtitle></subtitle>
                <type>Summit</type>
                <date>2026-07-13T09:30:00+02:00</date>
                <start>09:30</start>
                <duration>01:30</duration>
                <abstract>## Important links:

- Request to attend (required): https://forms.gle/cNZU3NnbeFY1aiqw6
- Propose a topic (optional): https://forms.gle/GCBvWQW25QxKJLZu5
- Summary Notes: [2026 (this year)](https://hackmd.io/@jezdez/europython2026-packaging-summit), [2025 (previous year)](https://hackmd.io/@jezdez/europython2025-packaging-summit)

## About the Packaging Summit

Co-Chairs: Pradyun Gedam and Jannis Leidel

Following the great success of the Packaging Summit at PyCon US we&apos;re looking to bring the same event again to EuroPython.

Python packaging is a rapidly changing (and hopefully improving) landscape, historically and currently plagued by many problems. Solving these problems requires a high degree of coordination between various stakeholders; to name a few:

- Creators of packaging tools (e.g., Setuptools, pip, conda, Poetry, uv)
- Maintainers of Python libraries
- Developers of Python applications
- Distributors of downstream packages (e.g., Fedora, Debian)
- Consumers of Python packages (e.g., end-users, corporate developers)

The goal of this summit is to try to take advantage of the fact that, at EuroPython we can get a high concentration of these stakeholders in one room at the same time. This allows us to sync up on current and future best practices and to quickly come to agreements that would take months or even years over higher-latency media of discussion (e.g., mailing lists, forums, issue tickets).

## Request to attend

Are you involved in Python packaging in some capacity, have a unique perspective to share, and ready to participate in intense discussions helping continue to hash out the present and future of Python packaging? If so, you&apos;re a great candidate to attend!

### Go here to request to attend: https://forms.gle/cNZU3NnbeFY1aiqw6

_The registration will close on [Monday June 29 2026, AoE](https://www.timeanddate.com/worldclock/fixedtime.html?msg=EuroPython+2026+-+Python+Packaging+Summit+Attendance+Request+Deadline&amp;iso=20260629T2359&amp;p1=3399), and selected attendees will be notified by email._

We will be evaluating all requests on a rolling basis, and aim to confirm your attendance by July 4. 

## Propose a topic

Do you have a particular topic in mind you want to share or discuss? Great! Keep in mind that time allows for a limited number of topics, and we&apos;ll need to select those that pose the broadest interest and applicability to the community and would benefit most from a hands-on, interactive discussion. Submitting multiple topics is allowed (and encouraged, within reason), and you don&apos;t have to be selected to attend to have your topic discussed.

### Go here to submit a topic (optional): https://forms.gle/GCBvWQW25QxKJLZu5

_You can submit your topic until [Monday June 29 2026, AoE](https://www.timeanddate.com/worldclock/fixedtime.html?msg=EuroPython+2026+-+Python+Packaging+Summit+Topic+Proposal+Deadline&amp;iso=20260629T2359&amp;p1=3399). We&apos;ll email out and publish a final schedule within about a week or so thereafter, before the opening of the conference. We&apos;re looking forward to hearing your ideas!_

## Schedule

Please start arriving at 9:25 am.

NOTE: **The schedule will be published here on July 6, 2026.**

## Code of Conduct

The [EuroPython Society Code of Conduct](https://www.europython-society.org/coc/) applies and will be enforced.

If you have any questions, the [Packaging Category](https://discuss.python.org/c/packaging) section of the [Python Discourse](https://discuss.python.org/) is the best place to ask. You may also reach out to the organizers privately if needed. Thanks!</abstract>
                <slug>europython-2026-99349-0-packaging-summit</slug>
                <track>Tooling, Packaging, Developer Productivity</track>
                
                <persons>
                    <person id='98807'>Jannis Leidel</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/SBREFN/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/SBREFN/feedback/</feedback_url>
            </event>
            <event guid='43a19d64-60d6-5055-bd0b-84cc497d4981' id='99349' code='SBREFN'>
                <room>2.017/2.018</room>
                <title>Packaging Summit</title>
                <subtitle></subtitle>
                <type>Summit</type>
                <date>2026-07-13T11:15:00+02:00</date>
                <start>11:15</start>
                <duration>01:30</duration>
                <abstract>## Important links:

- Request to attend (required): https://forms.gle/cNZU3NnbeFY1aiqw6
- Propose a topic (optional): https://forms.gle/GCBvWQW25QxKJLZu5
- Summary Notes: [2026 (this year)](https://hackmd.io/@jezdez/europython2026-packaging-summit), [2025 (previous year)](https://hackmd.io/@jezdez/europython2025-packaging-summit)

## About the Packaging Summit

Co-Chairs: Pradyun Gedam and Jannis Leidel

Following the great success of the Packaging Summit at PyCon US we&apos;re looking to bring the same event again to EuroPython.

Python packaging is a rapidly changing (and hopefully improving) landscape, historically and currently plagued by many problems. Solving these problems requires a high degree of coordination between various stakeholders; to name a few:

- Creators of packaging tools (e.g., Setuptools, pip, conda, Poetry, uv)
- Maintainers of Python libraries
- Developers of Python applications
- Distributors of downstream packages (e.g., Fedora, Debian)
- Consumers of Python packages (e.g., end-users, corporate developers)

The goal of this summit is to try to take advantage of the fact that, at EuroPython we can get a high concentration of these stakeholders in one room at the same time. This allows us to sync up on current and future best practices and to quickly come to agreements that would take months or even years over higher-latency media of discussion (e.g., mailing lists, forums, issue tickets).

## Request to attend

Are you involved in Python packaging in some capacity, have a unique perspective to share, and ready to participate in intense discussions helping continue to hash out the present and future of Python packaging? If so, you&apos;re a great candidate to attend!

### Go here to request to attend: https://forms.gle/cNZU3NnbeFY1aiqw6

_The registration will close on [Monday June 29 2026, AoE](https://www.timeanddate.com/worldclock/fixedtime.html?msg=EuroPython+2026+-+Python+Packaging+Summit+Attendance+Request+Deadline&amp;iso=20260629T2359&amp;p1=3399), and selected attendees will be notified by email._

We will be evaluating all requests on a rolling basis, and aim to confirm your attendance by July 4. 

## Propose a topic

Do you have a particular topic in mind you want to share or discuss? Great! Keep in mind that time allows for a limited number of topics, and we&apos;ll need to select those that pose the broadest interest and applicability to the community and would benefit most from a hands-on, interactive discussion. Submitting multiple topics is allowed (and encouraged, within reason), and you don&apos;t have to be selected to attend to have your topic discussed.

### Go here to submit a topic (optional): https://forms.gle/GCBvWQW25QxKJLZu5

_You can submit your topic until [Monday June 29 2026, AoE](https://www.timeanddate.com/worldclock/fixedtime.html?msg=EuroPython+2026+-+Python+Packaging+Summit+Topic+Proposal+Deadline&amp;iso=20260629T2359&amp;p1=3399). We&apos;ll email out and publish a final schedule within about a week or so thereafter, before the opening of the conference. We&apos;re looking forward to hearing your ideas!_

## Schedule

Please start arriving at 9:25 am.

NOTE: **The schedule will be published here on July 6, 2026.**

## Code of Conduct

The [EuroPython Society Code of Conduct](https://www.europython-society.org/coc/) applies and will be enforced.

If you have any questions, the [Packaging Category](https://discuss.python.org/c/packaging) section of the [Python Discourse](https://discuss.python.org/) is the best place to ask. You may also reach out to the organizers privately if needed. Thanks!</abstract>
                <slug>europython-2026-99349-1-packaging-summit</slug>
                <track>Tooling, Packaging, Developer Productivity</track>
                
                <persons>
                    <person id='98807'>Jannis Leidel</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/SBREFN/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/SBREFN/feedback/</feedback_url>
            </event>
            <event guid='751beddc-1bcc-508a-b742-009dfa7dcbde' id='99349' code='SBREFN'>
                <room>2.017/2.018</room>
                <title>Packaging Summit</title>
                <subtitle></subtitle>
                <type>Summit</type>
                <date>2026-07-13T13:45:00+02:00</date>
                <start>13:45</start>
                <duration>01:30</duration>
                <abstract>## Important links:

- Request to attend (required): https://forms.gle/cNZU3NnbeFY1aiqw6
- Propose a topic (optional): https://forms.gle/GCBvWQW25QxKJLZu5
- Summary Notes: [2026 (this year)](https://hackmd.io/@jezdez/europython2026-packaging-summit), [2025 (previous year)](https://hackmd.io/@jezdez/europython2025-packaging-summit)

## About the Packaging Summit

Co-Chairs: Pradyun Gedam and Jannis Leidel

Following the great success of the Packaging Summit at PyCon US we&apos;re looking to bring the same event again to EuroPython.

Python packaging is a rapidly changing (and hopefully improving) landscape, historically and currently plagued by many problems. Solving these problems requires a high degree of coordination between various stakeholders; to name a few:

- Creators of packaging tools (e.g., Setuptools, pip, conda, Poetry, uv)
- Maintainers of Python libraries
- Developers of Python applications
- Distributors of downstream packages (e.g., Fedora, Debian)
- Consumers of Python packages (e.g., end-users, corporate developers)

The goal of this summit is to try to take advantage of the fact that, at EuroPython we can get a high concentration of these stakeholders in one room at the same time. This allows us to sync up on current and future best practices and to quickly come to agreements that would take months or even years over higher-latency media of discussion (e.g., mailing lists, forums, issue tickets).

## Request to attend

Are you involved in Python packaging in some capacity, have a unique perspective to share, and ready to participate in intense discussions helping continue to hash out the present and future of Python packaging? If so, you&apos;re a great candidate to attend!

### Go here to request to attend: https://forms.gle/cNZU3NnbeFY1aiqw6

_The registration will close on [Monday June 29 2026, AoE](https://www.timeanddate.com/worldclock/fixedtime.html?msg=EuroPython+2026+-+Python+Packaging+Summit+Attendance+Request+Deadline&amp;iso=20260629T2359&amp;p1=3399), and selected attendees will be notified by email._

We will be evaluating all requests on a rolling basis, and aim to confirm your attendance by July 4. 

## Propose a topic

Do you have a particular topic in mind you want to share or discuss? Great! Keep in mind that time allows for a limited number of topics, and we&apos;ll need to select those that pose the broadest interest and applicability to the community and would benefit most from a hands-on, interactive discussion. Submitting multiple topics is allowed (and encouraged, within reason), and you don&apos;t have to be selected to attend to have your topic discussed.

### Go here to submit a topic (optional): https://forms.gle/GCBvWQW25QxKJLZu5

_You can submit your topic until [Monday June 29 2026, AoE](https://www.timeanddate.com/worldclock/fixedtime.html?msg=EuroPython+2026+-+Python+Packaging+Summit+Topic+Proposal+Deadline&amp;iso=20260629T2359&amp;p1=3399). We&apos;ll email out and publish a final schedule within about a week or so thereafter, before the opening of the conference. We&apos;re looking forward to hearing your ideas!_

## Schedule

Please start arriving at 9:25 am.

NOTE: **The schedule will be published here on July 6, 2026.**

## Code of Conduct

The [EuroPython Society Code of Conduct](https://www.europython-society.org/coc/) applies and will be enforced.

If you have any questions, the [Packaging Category](https://discuss.python.org/c/packaging) section of the [Python Discourse](https://discuss.python.org/) is the best place to ask. You may also reach out to the organizers privately if needed. Thanks!</abstract>
                <slug>europython-2026-99349-2-packaging-summit</slug>
                <track>Tooling, Packaging, Developer Productivity</track>
                
                <persons>
                    <person id='98807'>Jannis Leidel</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/SBREFN/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/SBREFN/feedback/</feedback_url>
            </event>
            <event guid='2306b653-982f-5d5c-872d-6b9a1fd6a531' id='99349' code='SBREFN'>
                <room>2.017/2.018</room>
                <title>Packaging Summit</title>
                <subtitle></subtitle>
                <type>Summit</type>
                <date>2026-07-13T15:30:00+02:00</date>
                <start>15:30</start>
                <duration>01:30</duration>
                <abstract>## Important links:

- Request to attend (required): https://forms.gle/cNZU3NnbeFY1aiqw6
- Propose a topic (optional): https://forms.gle/GCBvWQW25QxKJLZu5
- Summary Notes: [2026 (this year)](https://hackmd.io/@jezdez/europython2026-packaging-summit), [2025 (previous year)](https://hackmd.io/@jezdez/europython2025-packaging-summit)

## About the Packaging Summit

Co-Chairs: Pradyun Gedam and Jannis Leidel

Following the great success of the Packaging Summit at PyCon US we&apos;re looking to bring the same event again to EuroPython.

Python packaging is a rapidly changing (and hopefully improving) landscape, historically and currently plagued by many problems. Solving these problems requires a high degree of coordination between various stakeholders; to name a few:

- Creators of packaging tools (e.g., Setuptools, pip, conda, Poetry, uv)
- Maintainers of Python libraries
- Developers of Python applications
- Distributors of downstream packages (e.g., Fedora, Debian)
- Consumers of Python packages (e.g., end-users, corporate developers)

The goal of this summit is to try to take advantage of the fact that, at EuroPython we can get a high concentration of these stakeholders in one room at the same time. This allows us to sync up on current and future best practices and to quickly come to agreements that would take months or even years over higher-latency media of discussion (e.g., mailing lists, forums, issue tickets).

## Request to attend

Are you involved in Python packaging in some capacity, have a unique perspective to share, and ready to participate in intense discussions helping continue to hash out the present and future of Python packaging? If so, you&apos;re a great candidate to attend!

### Go here to request to attend: https://forms.gle/cNZU3NnbeFY1aiqw6

_The registration will close on [Monday June 29 2026, AoE](https://www.timeanddate.com/worldclock/fixedtime.html?msg=EuroPython+2026+-+Python+Packaging+Summit+Attendance+Request+Deadline&amp;iso=20260629T2359&amp;p1=3399), and selected attendees will be notified by email._

We will be evaluating all requests on a rolling basis, and aim to confirm your attendance by July 4. 

## Propose a topic

Do you have a particular topic in mind you want to share or discuss? Great! Keep in mind that time allows for a limited number of topics, and we&apos;ll need to select those that pose the broadest interest and applicability to the community and would benefit most from a hands-on, interactive discussion. Submitting multiple topics is allowed (and encouraged, within reason), and you don&apos;t have to be selected to attend to have your topic discussed.

### Go here to submit a topic (optional): https://forms.gle/GCBvWQW25QxKJLZu5

_You can submit your topic until [Monday June 29 2026, AoE](https://www.timeanddate.com/worldclock/fixedtime.html?msg=EuroPython+2026+-+Python+Packaging+Summit+Topic+Proposal+Deadline&amp;iso=20260629T2359&amp;p1=3399). We&apos;ll email out and publish a final schedule within about a week or so thereafter, before the opening of the conference. We&apos;re looking forward to hearing your ideas!_

## Schedule

Please start arriving at 9:25 am.

NOTE: **The schedule will be published here on July 6, 2026.**

## Code of Conduct

The [EuroPython Society Code of Conduct](https://www.europython-society.org/coc/) applies and will be enforced.

If you have any questions, the [Packaging Category](https://discuss.python.org/c/packaging) section of the [Python Discourse](https://discuss.python.org/) is the best place to ask. You may also reach out to the organizers privately if needed. Thanks!</abstract>
                <slug>europython-2026-99349-3-packaging-summit</slug>
                <track>Tooling, Packaging, Developer Productivity</track>
                
                <persons>
                    <person id='98807'>Jannis Leidel</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/SBREFN/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/SBREFN/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Fishbowl' guid='75afb1f2-f364-5661-922b-fcf7cd27727a'>
            <event guid='9c3d40b8-4ae9-5921-9214-7e609bdfbef1' id='93918' code='VYUNHG'>
                <room>Fishbowl</room>
                <title>Rust Summit at EuroPython</title>
                <subtitle></subtitle>
                <type>Summit</type>
                <date>2026-07-13T09:30:00+02:00</date>
                <start>09:30</start>
                <duration>01:30</duration>
                <abstract>## Rust in Python: Deep Dive and Experience Sharing

This full-day summit is dedicated to exploring the intersection of Rust and the Python ecosystem. Attendees can expect an intensive schedule built around in-depth discussions, collaborative problem-solving, and practical experience sharing focused specifically on integrating Rust into Python projects and the development of high-performance Python tools (e.g., using technologies like PyO3, Maturin, or writing performant native extensions). The goal is to move beyond introductory concepts to tackle real-world challenges, performance optimizations, and best practices in production environments. This summit is designed for developers who already possess some practical experience in these topics and are looking to deepen their expertise, share lessons learned, and contribute to the community&apos;s collective knowledge.

# Registration and Participation

Participation in the Rust Summit is by invitation only to ensure a focused and high-value experience for all attendees.

1. **Sign-Up Form:** Individuals interested in attending must first complete the [sign-up form](https://forms.gle/bh2WKoUFYBJ6YzibA).  
2. **Topic Submission:** This form also provides the opportunity for prospective attendees to suggest talks and/or discussion topics they would like to contribute or see covered during the summit.  
3. **Invitation:** After the sign-up period closes, the organizers will review submissions. Successful applicants will receive an official email invitation confirming their attendance in advance of the event.  
4. **EuroPython Ticket Requirement:** Please note that all participants *must* also be registered ticket holders for the main EuroPython conference. Holding a EuroPython ticket is a mandatory prerequisite for attending the Rust Summit.</abstract>
                <slug>europython-2026-93918-0-rust-summit-at-europython</slug>
                <track>~ None of these topics</track>
                
                <persons>
                    <person id='89498'>Cheuk Ting Ho</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/VYUNHG/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/VYUNHG/feedback/</feedback_url>
            </event>
            <event guid='2f753e58-329c-55c0-b3e8-70365eef674e' id='93918' code='VYUNHG'>
                <room>Fishbowl</room>
                <title>Rust Summit at EuroPython</title>
                <subtitle></subtitle>
                <type>Summit</type>
                <date>2026-07-13T11:15:00+02:00</date>
                <start>11:15</start>
                <duration>01:30</duration>
                <abstract>## Rust in Python: Deep Dive and Experience Sharing

This full-day summit is dedicated to exploring the intersection of Rust and the Python ecosystem. Attendees can expect an intensive schedule built around in-depth discussions, collaborative problem-solving, and practical experience sharing focused specifically on integrating Rust into Python projects and the development of high-performance Python tools (e.g., using technologies like PyO3, Maturin, or writing performant native extensions). The goal is to move beyond introductory concepts to tackle real-world challenges, performance optimizations, and best practices in production environments. This summit is designed for developers who already possess some practical experience in these topics and are looking to deepen their expertise, share lessons learned, and contribute to the community&apos;s collective knowledge.

# Registration and Participation

Participation in the Rust Summit is by invitation only to ensure a focused and high-value experience for all attendees.

1. **Sign-Up Form:** Individuals interested in attending must first complete the [sign-up form](https://forms.gle/bh2WKoUFYBJ6YzibA).  
2. **Topic Submission:** This form also provides the opportunity for prospective attendees to suggest talks and/or discussion topics they would like to contribute or see covered during the summit.  
3. **Invitation:** After the sign-up period closes, the organizers will review submissions. Successful applicants will receive an official email invitation confirming their attendance in advance of the event.  
4. **EuroPython Ticket Requirement:** Please note that all participants *must* also be registered ticket holders for the main EuroPython conference. Holding a EuroPython ticket is a mandatory prerequisite for attending the Rust Summit.</abstract>
                <slug>europython-2026-93918-1-rust-summit-at-europython</slug>
                <track>~ None of these topics</track>
                
                <persons>
                    <person id='89498'>Cheuk Ting Ho</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/VYUNHG/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/VYUNHG/feedback/</feedback_url>
            </event>
            <event guid='3eedc695-f8bb-52be-9543-b18528adebc8' id='93918' code='VYUNHG'>
                <room>Fishbowl</room>
                <title>Rust Summit at EuroPython</title>
                <subtitle></subtitle>
                <type>Summit</type>
                <date>2026-07-13T13:45:00+02:00</date>
                <start>13:45</start>
                <duration>01:30</duration>
                <abstract>## Rust in Python: Deep Dive and Experience Sharing

This full-day summit is dedicated to exploring the intersection of Rust and the Python ecosystem. Attendees can expect an intensive schedule built around in-depth discussions, collaborative problem-solving, and practical experience sharing focused specifically on integrating Rust into Python projects and the development of high-performance Python tools (e.g., using technologies like PyO3, Maturin, or writing performant native extensions). The goal is to move beyond introductory concepts to tackle real-world challenges, performance optimizations, and best practices in production environments. This summit is designed for developers who already possess some practical experience in these topics and are looking to deepen their expertise, share lessons learned, and contribute to the community&apos;s collective knowledge.

# Registration and Participation

Participation in the Rust Summit is by invitation only to ensure a focused and high-value experience for all attendees.

1. **Sign-Up Form:** Individuals interested in attending must first complete the [sign-up form](https://forms.gle/bh2WKoUFYBJ6YzibA).  
2. **Topic Submission:** This form also provides the opportunity for prospective attendees to suggest talks and/or discussion topics they would like to contribute or see covered during the summit.  
3. **Invitation:** After the sign-up period closes, the organizers will review submissions. Successful applicants will receive an official email invitation confirming their attendance in advance of the event.  
4. **EuroPython Ticket Requirement:** Please note that all participants *must* also be registered ticket holders for the main EuroPython conference. Holding a EuroPython ticket is a mandatory prerequisite for attending the Rust Summit.</abstract>
                <slug>europython-2026-93918-2-rust-summit-at-europython</slug>
                <track>~ None of these topics</track>
                
                <persons>
                    <person id='89498'>Cheuk Ting Ho</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/VYUNHG/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/VYUNHG/feedback/</feedback_url>
            </event>
            <event guid='5e483651-789c-565e-9331-a5cd597a933a' id='93918' code='VYUNHG'>
                <room>Fishbowl</room>
                <title>Rust Summit at EuroPython</title>
                <subtitle></subtitle>
                <type>Summit</type>
                <date>2026-07-13T15:30:00+02:00</date>
                <start>15:30</start>
                <duration>01:30</duration>
                <abstract>## Rust in Python: Deep Dive and Experience Sharing

This full-day summit is dedicated to exploring the intersection of Rust and the Python ecosystem. Attendees can expect an intensive schedule built around in-depth discussions, collaborative problem-solving, and practical experience sharing focused specifically on integrating Rust into Python projects and the development of high-performance Python tools (e.g., using technologies like PyO3, Maturin, or writing performant native extensions). The goal is to move beyond introductory concepts to tackle real-world challenges, performance optimizations, and best practices in production environments. This summit is designed for developers who already possess some practical experience in these topics and are looking to deepen their expertise, share lessons learned, and contribute to the community&apos;s collective knowledge.

# Registration and Participation

Participation in the Rust Summit is by invitation only to ensure a focused and high-value experience for all attendees.

1. **Sign-Up Form:** Individuals interested in attending must first complete the [sign-up form](https://forms.gle/bh2WKoUFYBJ6YzibA).  
2. **Topic Submission:** This form also provides the opportunity for prospective attendees to suggest talks and/or discussion topics they would like to contribute or see covered during the summit.  
3. **Invitation:** After the sign-up period closes, the organizers will review submissions. Successful applicants will receive an official email invitation confirming their attendance in advance of the event.  
4. **EuroPython Ticket Requirement:** Please note that all participants *must* also be registered ticket holders for the main EuroPython conference. Holding a EuroPython ticket is a mandatory prerequisite for attending the Rust Summit.</abstract>
                <slug>europython-2026-93918-3-rust-summit-at-europython</slug>
                <track>~ None of these topics</track>
                
                <persons>
                    <person id='89498'>Cheuk Ting Ho</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/VYUNHG/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/VYUNHG/feedback/</feedback_url>
            </event>
            
        </room>
        
    </day>
    <day index='2' date='2026-07-14' start='2026-07-14T04:00:00+02:00' end='2026-07-15T03:59:00+02:00'>
        <room name='S3A' guid='81adc7d4-7479-5204-bb50-171fe63c4b34'>
            <event guid='a93f78cf-3c12-571e-998f-04c3c9776441' id='97547' code='EKE78F'>
                <room>S3A</room>
                <title>Tuesday Registration &amp; Welcome @ TBD</title>
                <subtitle></subtitle>
                <type>Announcements</type>
                <date>2026-07-14T08:30:00+02:00</date>
                <start>08:30</start>
                <duration>01:00</duration>
                <abstract>Welcome to EuroPython 2026! Please notice the registration will happen on the TBD
You can pick up your badges at any time during the week as long as we are open!
If you want to avoid the morning rush on Wednesday, come on Monday and Tuesday!
Enjoy the conference!</abstract>
                <slug>europython-2026-97547-tuesday-registration-welcome-tbd</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/EKE78F/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/EKE78F/feedback/</feedback_url>
            </event>
            <event guid='ba89283f-4424-5534-bcdb-8e7332d682a2' id='91791' code='3FDLUS'>
                <room>S3A</room>
                <title>Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-14T09:30:00+02:00</date>
                <start>09:30</start>
                <duration>01:30</duration>
                <abstract>Quantum computing is often introduced either through high-level circuit abstractions or through heavy theoretical formalism. Developers frequently struggle to bridge the gap between textbook concepts, real algorithms, and hardware-aware execution. This tutorial provides a practical, hands-on introduction to quantum computing using QiliSDK, a Python framework designed to support both digital and analog workflows in a unified and modular way.

The session begins with the foundations: qubits, quantum states, gates, and measurement. Participants will implement basic circuits and understand how quantum programs are constructed, simulated, and executed. From there, we move to algorithmic patterns such as variational circuits and Hamiltonian-based workflows, demonstrating how quantum programs can be expressed in a clean and composable API.

The core value of the tutorial is depth without unnecessary abstraction. Attendees will not only build and simulate quantum circuits, but also explore time evolution, noise models, and backend selection. We will demonstrate how the same high-level program can target different execution layers, including simulators and hardware-oriented backends. For advanced participants, we will introduce pulse-level programming concepts, showing how quantum operations map to control-level primitives and how pulse-based experiments can be expressed in the SDK.

By the end of the tutorial, participants will have:

- A clear understanding of core quantum computing concepts.
- Hands-on experience building and simulating quantum circuits.
- Exposure to variational and Hamiltonian-based workflows.
- Insight into noise modeling and realistic execution.
- An understanding of how circuit-level abstractions connect to pulse-level control.

This tutorial is designed for developers and researchers who want a practical entry point into quantum computing without sacrificing architectural clarity. Prior experience with Python is required. No prior quantum computing knowledge is assumed, though basic linear algebra familiarity is helpful.</abstract>
                <slug>europython-2026-91791-0-learn-quantum-computing-with-qilisdk-from-circuits-to-pulse-level-control</slug>
                <track>Jupyter and Scientific Python</track>
                
                <persons>
                    <person id='91842'>Vyron Vasileiadis</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/3FDLUS/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/3FDLUS/feedback/</feedback_url>
            </event>
            <event guid='9d375ca1-af58-589a-830f-0ef6078c7f76' id='91791' code='3FDLUS'>
                <room>S3A</room>
                <title>Learn Quantum Computing with QiliSDK: From Circuits to Pulse-Level Control</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-14T11:15:00+02:00</date>
                <start>11:15</start>
                <duration>01:30</duration>
                <abstract>Quantum computing is often introduced either through high-level circuit abstractions or through heavy theoretical formalism. Developers frequently struggle to bridge the gap between textbook concepts, real algorithms, and hardware-aware execution. This tutorial provides a practical, hands-on introduction to quantum computing using QiliSDK, a Python framework designed to support both digital and analog workflows in a unified and modular way.

The session begins with the foundations: qubits, quantum states, gates, and measurement. Participants will implement basic circuits and understand how quantum programs are constructed, simulated, and executed. From there, we move to algorithmic patterns such as variational circuits and Hamiltonian-based workflows, demonstrating how quantum programs can be expressed in a clean and composable API.

The core value of the tutorial is depth without unnecessary abstraction. Attendees will not only build and simulate quantum circuits, but also explore time evolution, noise models, and backend selection. We will demonstrate how the same high-level program can target different execution layers, including simulators and hardware-oriented backends. For advanced participants, we will introduce pulse-level programming concepts, showing how quantum operations map to control-level primitives and how pulse-based experiments can be expressed in the SDK.

By the end of the tutorial, participants will have:

- A clear understanding of core quantum computing concepts.
- Hands-on experience building and simulating quantum circuits.
- Exposure to variational and Hamiltonian-based workflows.
- Insight into noise modeling and realistic execution.
- An understanding of how circuit-level abstractions connect to pulse-level control.

This tutorial is designed for developers and researchers who want a practical entry point into quantum computing without sacrificing architectural clarity. Prior experience with Python is required. No prior quantum computing knowledge is assumed, though basic linear algebra familiarity is helpful.</abstract>
                <slug>europython-2026-91791-1-learn-quantum-computing-with-qilisdk-from-circuits-to-pulse-level-control</slug>
                <track>Jupyter and Scientific Python</track>
                
                <persons>
                    <person id='91842'>Vyron Vasileiadis</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/3FDLUS/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/3FDLUS/feedback/</feedback_url>
            </event>
            <event guid='203a771a-77af-5b53-982c-30b5d519a8b2' id='89760' code='3TZHB9'>
                <room>S3A</room>
                <title>Process, Analyze, and Transform Python Code with ASTs</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-14T13:45:00+02:00</date>
                <start>13:45</start>
                <duration>01:30</duration>
                <abstract>You&#8217;ve likely used a tool like black, flake8, or ruff to lint or format your code, or a tool like sphinx to document it, but you probably do not know how they accomplish their tasks. These tools and many more use **Abstract Syntax Trees (ASTs)** to analyze and extract information from Python code. An AST is a representation of your code&apos;s structure that enables you to access and manipulate its different components, which is what makes it possible to automate tasks like code migrations, linting, and docstring extraction.

In this workshop, you&#8217;ll learn how to use the Python standard library&#8217;s ast module to parse and analyze code. Using just the standard library, we will implement a couple of common checks from scratch, which will give you an idea of how these tools work and help you build the skills and confidence to use ASTs in your own projects.</abstract>
                <slug>europython-2026-89760-0-process-analyze-and-transform-python-code-with-asts</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='90152'>Stefanie Molin</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/3TZHB9/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/3TZHB9/feedback/</feedback_url>
            </event>
            <event guid='47f9d86e-8530-58b8-8422-ba7624a25070' id='89760' code='3TZHB9'>
                <room>S3A</room>
                <title>Process, Analyze, and Transform Python Code with ASTs</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-14T15:30:00+02:00</date>
                <start>15:30</start>
                <duration>01:30</duration>
                <abstract>You&#8217;ve likely used a tool like black, flake8, or ruff to lint or format your code, or a tool like sphinx to document it, but you probably do not know how they accomplish their tasks. These tools and many more use **Abstract Syntax Trees (ASTs)** to analyze and extract information from Python code. An AST is a representation of your code&apos;s structure that enables you to access and manipulate its different components, which is what makes it possible to automate tasks like code migrations, linting, and docstring extraction.

In this workshop, you&#8217;ll learn how to use the Python standard library&#8217;s ast module to parse and analyze code. Using just the standard library, we will implement a couple of common checks from scratch, which will give you an idea of how these tools work and help you build the skills and confidence to use ASTs in your own projects.</abstract>
                <slug>europython-2026-89760-1-process-analyze-and-transform-python-code-with-asts</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='90152'>Stefanie Molin</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/3TZHB9/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/3TZHB9/feedback/</feedback_url>
            </event>
            <event guid='64fb0388-6573-59e5-8add-f6ebcf2ea8f1' id='97548' code='3APM9B'>
                <room>S3A</room>
                <title>Beginner&apos;s Orientation</title>
                <subtitle></subtitle>
                <type>Announcements</type>
                <date>2026-07-14T17:00:00+02:00</date>
                <start>17:00</start>
                <duration>01:00</duration>
                <abstract>Are you new to EuroPython? Or perhaps you&apos;re feeling overwhelmed by all the activities, sessions, and networking opportunities happening at EuroPython 2026? Whether you&apos;re a first-time attendee or a returning participant looking to make the most of your conference experience, this session is designed for you. Join us to discover essential tips and strategies for navigating the conference smoothly and efficiently. We&apos;ll cover everything from understanding the schedule and choosing the right sessions to attend, to making meaningful connections with fellow developers and speakers. You&apos;ll learn insider tricks for managing your time effectively, finding the best networking opportunities, and ensuring you don&apos;t miss out on the most valuable experiences the conference has to offer. By the end of this session, you&apos;ll feel confident and prepared to dive into EuroPython 2026 with a clear plan for maximizing your learning and networking potential.</abstract>
                <slug>europython-2026-97548-beginner-s-orientation</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/3APM9B/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/3APM9B/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='S3B' guid='8b2a7d87-e211-5bf0-aec1-50733db791b3'>
            <event guid='06d0feb4-1615-5fe4-8472-a35928efa777' id='90832' code='MENRZG'>
                <room>S3B</room>
                <title>Let&apos;s write some decorators!</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-14T09:30:00+02:00</date>
                <start>09:30</start>
                <duration>01:30</duration>
                <abstract>Decorators are one of Python&apos;s most powerful features. But for many developers, they remain somewhat mysterious and intimidating, because they combine a number of complex ideas -- among them, functions as objects, and nested function definitions. In this tutorial, you&apos;ll learn what decorators are, how they work, how to write them, and when you should use them. Along the way, you&apos;ll write a bunch of decorators that will demonstrate their power and practical use cases.

This is a highly interactive, learn-by-doing tutorial in which you&apos;ll be actively encouraged to ask questions, challenge the instructor, and share your code (including code that doesn&apos;t work), to maximize everyone&apos;s learning.</abstract>
                <slug>europython-2026-90832-0-let-s-write-some-decorators</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='91114'>Reuven M. Lerner</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/MENRZG/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/MENRZG/feedback/</feedback_url>
            </event>
            <event guid='9a46517c-08d9-5ced-a9dc-f3bac3f5ac85' id='90832' code='MENRZG'>
                <room>S3B</room>
                <title>Let&apos;s write some decorators!</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-14T11:15:00+02:00</date>
                <start>11:15</start>
                <duration>01:30</duration>
                <abstract>Decorators are one of Python&apos;s most powerful features. But for many developers, they remain somewhat mysterious and intimidating, because they combine a number of complex ideas -- among them, functions as objects, and nested function definitions. In this tutorial, you&apos;ll learn what decorators are, how they work, how to write them, and when you should use them. Along the way, you&apos;ll write a bunch of decorators that will demonstrate their power and practical use cases.

This is a highly interactive, learn-by-doing tutorial in which you&apos;ll be actively encouraged to ask questions, challenge the instructor, and share your code (including code that doesn&apos;t work), to maximize everyone&apos;s learning.</abstract>
                <slug>europython-2026-90832-1-let-s-write-some-decorators</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='91114'>Reuven M. Lerner</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/MENRZG/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/MENRZG/feedback/</feedback_url>
            </event>
            <event guid='092792b3-f452-5a2d-b518-4183ba6a4c43' id='89389' code='NELACW'>
                <room>S3B</room>
                <title>Build a Synthesizer with Python</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-14T13:45:00+02:00</date>
                <start>13:45</start>
                <duration>01:30</duration>
                <abstract>In this tutorial, we&apos;ll discuss how to build the basic components that make up a modern digital synth from scratch using Python. In the process, learn some DSP and audio programming concepts. By the end, you&#8217;ll be able to define your own synthesizer make music with code!!

This tutorial aims to break down the abstractions that make up a synthesizer by building one using Python, its scientific computing libraries, &amp; Librosa. We will discuss how to build the basic components that make up a modern digital synth from scratch! In the process, learn some DSP and audio programming concepts! By the end, you&#8217;ll be able to make your own tunes with Python! We will start with theory, then work through Jupyter notebooks both individually and as a group.</abstract>
                <slug>europython-2026-89389-0-build-a-synthesizer-with-python</slug>
                <track>Python for Games, Art, Play and Expression</track>
                
                <persons>
                    <person id='89836'>Sangarshanan</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/NELACW/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/NELACW/feedback/</feedback_url>
            </event>
            <event guid='6ac8da94-ae91-59d7-8e69-5b976ae3c900' id='89389' code='NELACW'>
                <room>S3B</room>
                <title>Build a Synthesizer with Python</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-14T15:30:00+02:00</date>
                <start>15:30</start>
                <duration>01:30</duration>
                <abstract>In this tutorial, we&apos;ll discuss how to build the basic components that make up a modern digital synth from scratch using Python. In the process, learn some DSP and audio programming concepts. By the end, you&#8217;ll be able to define your own synthesizer make music with code!!

This tutorial aims to break down the abstractions that make up a synthesizer by building one using Python, its scientific computing libraries, &amp; Librosa. We will discuss how to build the basic components that make up a modern digital synth from scratch! In the process, learn some DSP and audio programming concepts! By the end, you&#8217;ll be able to make your own tunes with Python! We will start with theory, then work through Jupyter notebooks both individually and as a group.</abstract>
                <slug>europython-2026-89389-1-build-a-synthesizer-with-python</slug>
                <track>Python for Games, Art, Play and Expression</track>
                
                <persons>
                    <person id='89836'>Sangarshanan</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/NELACW/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/NELACW/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='S4A' guid='3494dc59-027c-541c-9364-5779e972567d'>
            <event guid='9e7c1eef-116b-58bc-8871-0751233e665c' id='91739' code='TGGHKC'>
                <room>S4A</room>
                <title>gRPC for Beginners</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-14T09:30:00+02:00</date>
                <start>09:30</start>
                <duration>01:30</duration>
                <abstract>This hands-on workshop introduces gRPC, a modern RPC framework for building microservices. Learn Protocol Buffers, implement gRPC services from scratch, and explore communication patterns in Python. Discover how gRPC compares to REST APIs and use pre-configured Docker environments to test, benchmark, and monitor your services. By the end, you&apos;ll have practical knowledge to build microservices with gRPC. Basic Python knowledge required. All tools and infrastructure provided&#8212;bring a laptop with Docker installed.</abstract>
                <slug>europython-2026-91739-0-grpc-for-beginners</slug>
                <track>~ None of these topics</track>
                
                <persons>
                    <person id='91819'>Kamil Kulig</person><person id='95495'>Adam Gorgo&#324;</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/TGGHKC/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/TGGHKC/feedback/</feedback_url>
            </event>
            <event guid='5017f43a-515a-5a9c-bca5-be89ef57cdba' id='91739' code='TGGHKC'>
                <room>S4A</room>
                <title>gRPC for Beginners</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-14T11:15:00+02:00</date>
                <start>11:15</start>
                <duration>01:30</duration>
                <abstract>This hands-on workshop introduces gRPC, a modern RPC framework for building microservices. Learn Protocol Buffers, implement gRPC services from scratch, and explore communication patterns in Python. Discover how gRPC compares to REST APIs and use pre-configured Docker environments to test, benchmark, and monitor your services. By the end, you&apos;ll have practical knowledge to build microservices with gRPC. Basic Python knowledge required. All tools and infrastructure provided&#8212;bring a laptop with Docker installed.</abstract>
                <slug>europython-2026-91739-1-grpc-for-beginners</slug>
                <track>~ None of these topics</track>
                
                <persons>
                    <person id='91819'>Kamil Kulig</person><person id='95495'>Adam Gorgo&#324;</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/TGGHKC/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/TGGHKC/feedback/</feedback_url>
            </event>
            <event guid='0fa2cf91-dfdc-5001-8f7a-26142933312b' id='89392' code='N39TFS'>
                <room>S4A</room>
                <title>Load testing 1-on-1: discovering the limits of your system</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-14T13:45:00+02:00</date>
                <start>13:45</start>
                <duration>01:30</duration>
                <abstract>Benchmarking is hard. Ever wondered how reliable is your system? How many requests per second can it handle? How about the average response time: what do you do to measure that? How does the system behave during events like black friday, christmas sales, or any other important date that may cause an outage? Have no idea where to start answering these questions? Fear not, because you are in the right place!

In this tutorial I will introduce you to locust: probably the most awesome pythonic tool to perform load tests against websites, REST APIs, GQL, and many other ways of contacting and using systems. You&apos;ll be able to understand how to structure your stress tests projects, and get your hands dirty in creating tests against a REST API, while visually being able to tell where is the threshold point and what happens after that.

This tutorial is targeted for intermediate Pythonistas. Some recommended requirements (or things that will not be covered in a greater level of details) include: basics of git, simple Docker commands (to get a container up and running), classes in Python, some understanding of REST APIs. Will do my best to make it possible so anyone/any level of knowledge can join. After this presentation, participants will be able to create tests that benchmark applications in the most realistic way: exactly how users would use a system - and with that, answer the initial questions proposed, as well as create reports to display anywhere necessary (such as your job).</abstract>
                <slug>europython-2026-89392-0-load-testing-1-on-1-discovering-the-limits-of-your-system</slug>
                <track>Testing, Quality Assurance, Security</track>
                
                <persons>
                    <person id='89840'>Vin&#237;cius Gubiani Ferreira</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/N39TFS/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/N39TFS/feedback/</feedback_url>
            </event>
            <event guid='3f02dbb9-fd3e-5e50-b236-957741bec544' id='89392' code='N39TFS'>
                <room>S4A</room>
                <title>Load testing 1-on-1: discovering the limits of your system</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-14T15:30:00+02:00</date>
                <start>15:30</start>
                <duration>01:30</duration>
                <abstract>Benchmarking is hard. Ever wondered how reliable is your system? How many requests per second can it handle? How about the average response time: what do you do to measure that? How does the system behave during events like black friday, christmas sales, or any other important date that may cause an outage? Have no idea where to start answering these questions? Fear not, because you are in the right place!

In this tutorial I will introduce you to locust: probably the most awesome pythonic tool to perform load tests against websites, REST APIs, GQL, and many other ways of contacting and using systems. You&apos;ll be able to understand how to structure your stress tests projects, and get your hands dirty in creating tests against a REST API, while visually being able to tell where is the threshold point and what happens after that.

This tutorial is targeted for intermediate Pythonistas. Some recommended requirements (or things that will not be covered in a greater level of details) include: basics of git, simple Docker commands (to get a container up and running), classes in Python, some understanding of REST APIs. Will do my best to make it possible so anyone/any level of knowledge can join. After this presentation, participants will be able to create tests that benchmark applications in the most realistic way: exactly how users would use a system - and with that, answer the initial questions proposed, as well as create reports to display anywhere necessary (such as your job).</abstract>
                <slug>europython-2026-89392-1-load-testing-1-on-1-discovering-the-limits-of-your-system</slug>
                <track>Testing, Quality Assurance, Security</track>
                
                <persons>
                    <person id='89840'>Vin&#237;cius Gubiani Ferreira</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/N39TFS/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/N39TFS/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='S4B' guid='9c299f12-447d-549f-92be-3d747135683f'>
            <event guid='f36e9da1-2842-53b0-af01-179ebbb7a646' id='91653' code='ZPCDKE'>
                <room>S4B</room>
                <title>Let it rip a diffusion tutorial</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-14T09:30:00+02:00</date>
                <start>09:30</start>
                <duration>01:30</duration>
                <abstract>Implementing high-performance deep learning models often feels like a struggle between readable Python code and the low-level optimizations required for modern GPUs and TPUs. JAX bridges this gap by treating neural networks as pure mathematical transformations. In this session, we will move beyond the abstractions of high-level frameworks to build a Denoising Diffusion Probabilistic Model (DDPM) from the ground up.

We will explore how JAX&#8217;s functional programming paradigm is uniquely suited for the stochastic nature of diffusion. You will learn how to:

- Master the JIT (Just-In-Time) compilation: See how @jax.jit transforms Python functions into optimized XLA kernels for massive speedups.
- Leverage Vectorized Mapping: Use @jax.vmap to handle data parallelism across batches without the overhead of manual loops.
- Dissect the Diffusion Pipeline: Step through the forward noise process (SDEs) and the reverse denoising process (Score-matching).
- Manage State and PRNGs: Navigate JAX&#8217;s unique, explicit handling of random number generation and stateless transformations.

This tutorial is designed for Python developers and ML engineers who want to understand the &quot;how&quot; and &quot;why&quot; behind state-of-the-art text-to-image models. You will leave with a deep understanding of the diffusion objective and the practical skills to deploy high-performance model architectures using the JAX ecosystem.</abstract>
                <slug>europython-2026-91653-0-let-it-rip-a-diffusion-tutorial</slug>
                <track>Machine Learning, NLP and CV</track>
                
                <persons>
                    <person id='91765'>Mai Gim&#233;nez</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/ZPCDKE/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/ZPCDKE/feedback/</feedback_url>
            </event>
            <event guid='0e48382f-da4c-56f2-a410-21e69899308f' id='91653' code='ZPCDKE'>
                <room>S4B</room>
                <title>Let it rip a diffusion tutorial</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-14T11:15:00+02:00</date>
                <start>11:15</start>
                <duration>01:30</duration>
                <abstract>Implementing high-performance deep learning models often feels like a struggle between readable Python code and the low-level optimizations required for modern GPUs and TPUs. JAX bridges this gap by treating neural networks as pure mathematical transformations. In this session, we will move beyond the abstractions of high-level frameworks to build a Denoising Diffusion Probabilistic Model (DDPM) from the ground up.

We will explore how JAX&#8217;s functional programming paradigm is uniquely suited for the stochastic nature of diffusion. You will learn how to:

- Master the JIT (Just-In-Time) compilation: See how @jax.jit transforms Python functions into optimized XLA kernels for massive speedups.
- Leverage Vectorized Mapping: Use @jax.vmap to handle data parallelism across batches without the overhead of manual loops.
- Dissect the Diffusion Pipeline: Step through the forward noise process (SDEs) and the reverse denoising process (Score-matching).
- Manage State and PRNGs: Navigate JAX&#8217;s unique, explicit handling of random number generation and stateless transformations.

This tutorial is designed for Python developers and ML engineers who want to understand the &quot;how&quot; and &quot;why&quot; behind state-of-the-art text-to-image models. You will leave with a deep understanding of the diffusion objective and the practical skills to deploy high-performance model architectures using the JAX ecosystem.</abstract>
                <slug>europython-2026-91653-1-let-it-rip-a-diffusion-tutorial</slug>
                <track>Machine Learning, NLP and CV</track>
                
                <persons>
                    <person id='91765'>Mai Gim&#233;nez</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/ZPCDKE/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/ZPCDKE/feedback/</feedback_url>
            </event>
            <event guid='c0dffe39-3f68-535f-a626-59e6440b25a4' id='90395' code='ZSRZPC'>
                <room>S4B</room>
                <title>Introduction to security research. Find a CVE with CodeQL.</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-14T13:45:00+02:00</date>
                <start>13:45</start>
                <duration>01:30</duration>
                <abstract>This tutorial will introduce fundamentals of security research and CodeQL when looking for security vulnerabilities in software. We&apos;ll share how to look for vulnerabilities in code and how to use static analysis to help us find sources, sinks and vulnerabilities.

Using an example of a vulnerability in an open source project that the speaker has found, CVE-2024-32022, we will walk through how we could detect it manually by reading code, learn how to write CodeQL, and by the end write a CodeQL query to find this vulnerability and its variants.</abstract>
                <slug>europython-2026-90395-0-introduction-to-security-research-find-a-cve-with-codeql</slug>
                <track>Testing, Quality Assurance, Security</track>
                
                <persons>
                    <person id='90750'>Sylwia Budzynska</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/ZSRZPC/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/ZSRZPC/feedback/</feedback_url>
            </event>
            <event guid='00373ce4-0cff-592d-93c9-f6238761c520' id='90395' code='ZSRZPC'>
                <room>S4B</room>
                <title>Introduction to security research. Find a CVE with CodeQL.</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-14T15:30:00+02:00</date>
                <start>15:30</start>
                <duration>01:30</duration>
                <abstract>This tutorial will introduce fundamentals of security research and CodeQL when looking for security vulnerabilities in software. We&apos;ll share how to look for vulnerabilities in code and how to use static analysis to help us find sources, sinks and vulnerabilities.

Using an example of a vulnerability in an open source project that the speaker has found, CVE-2024-32022, we will walk through how we could detect it manually by reading code, learn how to write CodeQL, and by the end write a CodeQL query to find this vulnerability and its variants.</abstract>
                <slug>europython-2026-90395-1-introduction-to-security-research-find-a-cve-with-codeql</slug>
                <track>Testing, Quality Assurance, Security</track>
                
                <persons>
                    <person id='90750'>Sylwia Budzynska</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/ZSRZPC/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/ZSRZPC/feedback/</feedback_url>
            </event>
            
        </room>
        
    </day>
    <day index='3' date='2026-07-15' start='2026-07-15T04:00:00+02:00' end='2026-07-16T03:59:00+02:00'>
        <room name='S1' guid='69560a5f-0132-5ac8-99b7-5a62a108ff23'>
            <event guid='18b29163-427b-5641-b37f-de2a938ab879' id='96933' code='9V77RU'>
                <room>S1</room>
                <title>Wednesday Registration &amp; Welcome @ TBD</title>
                <subtitle></subtitle>
                <type>Announcements</type>
                <date>2026-07-15T08:00:00+02:00</date>
                <start>08:00</start>
                <duration>01:00</duration>
                <abstract>Welcome to EuroPython 2026! Please notice the registration will happen on the TBD.
You can pick up your badges at any time during the week as long as we are open!
If you want to avoid the morning rush on Wednesday, come on Monday and Tuesday!

We hope to see you around!</abstract>
                <slug>europython-2026-96933-wednesday-registration-welcome-tbd</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/9V77RU/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/9V77RU/feedback/</feedback_url>
            </event>
            <event guid='c99a8544-a99c-5f9f-9bca-1fff8f44bc9a' id='96935' code='R7PTVB'>
                <room>S1</room>
                <title>Conference Opening &#127881;</title>
                <subtitle></subtitle>
                <type>Announcements</type>
                <date>2026-07-15T09:00:00+02:00</date>
                <start>09:00</start>
                <duration>00:30</duration>
                <abstract>Welcome to EuroPython 2026!

Join us on the opening session, where we will kick-off the conference days, and tell you what&apos;s going to happen in the following days.
You will have three days filled with Keynotes, talks, panels, and open spaces, lightning talks, and a weekend full of sprints and other events for people attending the conference.</abstract>
                <slug>europython-2026-96935-conference-opening</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/R7PTVB/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/R7PTVB/feedback/</feedback_url>
            </event>
            <event guid='f0d21ca3-9fdf-53f6-87ec-808b7fde1065' id='100638' code='JZYBA3'>
                <room>S1</room>
                <title>How Complex Systems Taught Me To Fail</title>
                <subtitle></subtitle>
                <type>Keynote</type>
                <date>2026-07-15T09:30:00+02:00</date>
                <start>09:30</start>
                <duration>00:45</duration>
                <abstract>This talk traces a meandering story of twenty years of invention, triumph and disaster, touching on theoretical physics, cloud computing, viral genetics, pandemic responses, and nearly dying in an NHS A&amp;E queue. You&apos;ll pick up four generally applicable laws of complex systems, gain some superpowers for averting an apocalypse, and hopefully laugh a bit along the way. This isn&apos;t much of a technical talk and it is neither sanitised nor triumphant &#8212; expect sarcasm, most of all during the rough patches. My hope is that you&apos;ll leave seeing your own work differently, especially if it&apos;s quiet and unglamorous. Resilience is a property of systems, not their components, and it&apos;s the people who notice small changes and tend locally who make the biggest differences of all.</abstract>
                <slug>europython-2026-100638-how-complex-systems-taught-me-to-fail</slug>
                <track>Professional Development, Careers, Leadership</track>
                
                <persons>
                    <person id='99929'>Imogen Wright</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/JZYBA3/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/JZYBA3/feedback/</feedback_url>
            </event>
            <event guid='a05be092-d43a-532b-bd2c-9137f2e603b4' id='90914' code='Y8QAUA'>
                <room>S1</room>
                <title>Free-threaded Python: past, present and future</title>
                <subtitle></subtitle>
                <type>Talk (long session)</type>
                <date>2026-07-15T10:45:00+02:00</date>
                <start>10:45</start>
                <duration>00:45</duration>
                <abstract>Free-threaded Python, the effort to remove the Global Interpreter Lock from CPython, is one of the biggest and most exciting changes to Python in many years. However, It can be hard to follow what that means, what effect it will have on you and your code, and how this isn&apos;t yet another Python 2 to 3 migration.

This overview will explain what free-threading is, why it&apos;s a big deal, how it differs from other ways to deal with the GIL, and what the plan is for ensuring a smooth migration. We&apos;ll explain the basics of thread safety, data races, and concurrent designs, how those apply to Python code, and how this will and won&apos;t change when the GIL is disabled. And yes, we&apos;ll show some threads go _brrr_.

Although we&apos;ll mention some complex, deeply technical problems, this is not a technical deep dive and any experience level is welcome.</abstract>
                <slug>europython-2026-90914-free-threaded-python-past-present-and-future</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='91206'>Thomas Wouters</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/Y8QAUA/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/Y8QAUA/feedback/</feedback_url>
            </event>
            <event guid='2d20d3db-6365-568f-900e-e157a8c3a2b4' id='91364' code='KRMBWS'>
                <room>S1</room>
                <title>Inside Python 3.15&apos;s JIT Optimizer</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T11:40:00+02:00</date>
                <start>11:40</start>
                <duration>00:30</duration>
                <abstract>Python 3.15&apos;s JIT is finally starting to see real speedups on benchmarks. Core to that is a revamped JIT optimizer. *What* the JIT selects to compile and *how* it optimizes code has seen significant improvements thanks to the work of many contributors. In this talk, I will cover in-depth how the Python JIT optimizes your Python code, and how this was an amazing community team effort spanning multiple continents.</abstract>
                <slug>europython-2026-91364-inside-python-3-15-s-jit-optimizer</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='91562'>Ken Jin</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/KRMBWS/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/KRMBWS/feedback/</feedback_url>
            </event>
            <event guid='4e45c9b6-8186-52d3-a8c0-a6570e35fb3a' id='90696' code='W9NLXV'>
                <room>S1</room>
                <title>Update on the CPython JIT: What to expect in 3.15</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T12:20:00+02:00</date>
                <start>12:20</start>
                <duration>00:30</duration>
                <abstract>This talk is a follow-up to my EuroPython 2025 session on the foundations of the CPython JIT compiler. It looks at how the JIT has evolved since Python 3.14 and where it stands as Python 3.15 approaches release. We cover the transition of the JIT from an experimental feature towards a supported part of CPython, how it fits into the runtime today, and what that means in practice for users and distributors. The talk also explores how the JIT interacts with free-threaded builds, the current status of integration with external debuggers, and how these constraints shape real-world usage. Finally, we examine how the JIT performs today, where it already delivers substantial speedups, where it does not, and what realistic performance expectations look like for Python 3.15.</abstract>
                <slug>europython-2026-90696-update-on-the-cpython-jit-what-to-expect-in-3-15</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='91013'>Diego Russo</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/W9NLXV/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/W9NLXV/feedback/</feedback_url>
            </event>
            <event guid='13aaaf57-bbd5-5a9c-9f8e-5a246a941afb' id='90690' code='US3W8J'>
                <room>S1</room>
                <title>Rethinking AsyncIO from scratch for free-threaded Python</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T13:50:00+02:00</date>
                <start>13:50</start>
                <duration>00:30</duration>
                <abstract>AsyncIO was designed with the Global Interpreter Lock (GIL) in mind: the event loop runs all of your async in a single thread, regardless of the GIL presence. Projects like trio focused on better ergonomics, but with a noticeable disadvantage in performance.
What if we can have both?

In this talk we&#8217;ll explore an alternative approach to async code in Python, redesigning the whole thing from the ground up, looking at what it takes &#8211; spoiler: way less than you think &#8211; to have simpler interfaces and multi-threaded support from day zero in a single package: TonIO.</abstract>
                <slug>europython-2026-90690-rethinking-asyncio-from-scratch-for-free-threaded-python</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='91011'>Giovanni Barillari</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/US3W8J/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/US3W8J/feedback/</feedback_url>
            </event>
            <event guid='c40e75ed-6aa1-5c20-8b1e-a1f48c6341bc' id='90643' code='ENK9EF'>
                <room>S1</room>
                <title>What every Python developer should know about the CPython ABI</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>Most developers interact with the CPython interpreter by writing code in the Python language and executing it with the bytecode interpreter. However, any native extensions and any code that runs alongside or embeds the interpreter needs to communicate with CPython via the CPython C API. This API corresponds to an application binary interface (ABI) that native code written in C, C++, Rust, Zig, or any other low-level programming language needs to use to directly interact with the CPython interpreter runtime. Understanding the ABI allows Python developers to make informed trade-offs when they distribute or depend on packages that contain native extensions.

In this talk, I will explain what the CPython ABI is, how it differs from the CPython C API, and how it determines whether a package from PyPI is installable with a given installation of CPython. I will discuss how CPython&apos;s stable ABI and limited C API enable substantially reduced distribution overhead at the cost of some performance overhead. I&apos;ll show how maintainers of projects that distribute compiled code in binary wheels can choose to ship wheels using the stable ABI to trade off peak performance with ease of distribution and support for new platforms.

I&apos;ll finish by explaining how the ABI is evolving to enable improvements like the free-threaded interpreter. I will share real-world experience of introducing the new free-threaded ABI to the community with the perspective available to a maintainer of open source projects that are core components of the Python ecosystem.

Python 3.15 will enable a new stable ABI that allows distributing one extension per platform for any interpreter newer than Python 3.15. I&apos;ll describe work done by myself and others in the community to enable end-to-end testing of the next-generation stable ABI.</abstract>
                <slug>europython-2026-90643-what-every-python-developer-should-know-about-the-cpython-abi</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='90964'>Nathan Goldbaum</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/ENK9EF/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/ENK9EF/feedback/</feedback_url>
            </event>
            <event guid='c4a8c63b-0075-5bb1-a5ae-327dc230f70d' id='91138' code='WKBHZW'>
                <room>S1</room>
                <title>Rust for High Performance Computing (HPC) in Python</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T15:25:00+02:00</date>
                <start>15:25</start>
                <duration>00:30</duration>
                <abstract>Python has become the most widely used language in scientific computing and data science due to its approachable syntax, vast ecosystem of libraries, and rapid prototyping capabilities. However, its interpreted nature often poses a performance bottleneck for computationally intensive tasks common in High Performance Computing (HPC) used in scientific and data work, such as large-scale simulations, complex data analysis, and machine learning model training. 

Enhancing Python&apos;s performance, therefore, is critical for scientific computing: it allows researchers and engineers to maintain the productivity and flexibility of the Python environment while achieving the necessary speed and scalability to tackle demanding, real-world HPC problems without needing to switch to lower-level languages entirely.

In this talk, we will review the current state of Python in HPC, examine the role of key libraries like NumPy and Dask, and see how to use PyO3 to create robust Rust bindings for Python in a way that simplifies the process of building and distributing packages. We&#8217;ll explore how Rust brings specific advantages to HPC, including guaranteed memory safety without garbage collection, zero-cost abstractions, and true parallelism.

Attendees will leave with a clear understanding of the &apos;why&apos; and &apos;how&apos; of leveraging Rust in their Python-based HPC workflows, positioning them to develop faster, safer, and more scalable computational code.</abstract>
                <slug>europython-2026-91138-rust-for-high-performance-computing-hpc-in-python</slug>
                <track>Jupyter and Scientific Python</track>
                
                <persons>
                    <person id='89498'>Cheuk Ting Ho</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/WKBHZW/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/WKBHZW/feedback/</feedback_url>
            </event>
            <event guid='7ab99dad-c714-5626-b19f-4e0ac4ae0be8' id='91611' code='Y3DGWB'>
                <room>S1</room>
                <title>Demystifying CRA for the community</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T16:05:00+02:00</date>
                <start>16:05</start>
                <duration>00:30</duration>
                <abstract>September 2026, a month after Euro Python, the first wave of legal obligations for the EU Cyber Resilience Act (CRA) will wash over the software world. For us in the open-source community, CRA has been a source of major confusion, dilemma, and anxiety 
- &apos;Will my hobby project make me liable?&apos;
- &apos;Is my Python package &quot;commercial activity&quot;?&apos;
- &apos;Will PSF be liable for your code?&apos;
- &apos;Do I really need an SBOM for a Python library?&apos;
In this talk I, a lawyer, engineer, and FOSS alumni, will cut through the legal jargon to explain what the CRA actually is, why it exists, and how it changes the &quot;manufacturer&quot; relationship with open-source code. We will walk through the new legal roles&#8212;from Manufacturers to the newly defined &quot;Stewards&quot;&#8212;and provide a clear &quot;To-Do and Not-To-Do&quot; list for community maintainers. Whether you are a solo contributor or part of a major foundation, this session will help you navigate the 2026&#8211;2027 transition period with confidence.</abstract>
                <slug>europython-2026-91611-demystifying-cra-for-the-community</slug>
                <track>Ethics, Social Responsibility, Sustainability, Legal</track>
                
                <persons>
                    <person id='91734'>Anwesha Das</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/Y3DGWB/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/Y3DGWB/feedback/</feedback_url>
            </event>
            <event guid='aa7bdbde-0261-597a-a771-1a10b9a34cb3' id='96939' code='PKMSSL'>
                <room>S1</room>
                <title>Keynote 2 - Placeholder</title>
                <subtitle></subtitle>
                <type>Keynote</type>
                <date>2026-07-15T16:45:00+02:00</date>
                <start>16:45</start>
                <duration>00:45</duration>
                <abstract>&quot;TBD: Keynote Speaker&quot;
Details coming soon. This prime session will feature an inspiring keynote address to set the tone for the entire event. Our team is finalizing an exceptional speaker whose insights and vision will leave a lasting impression. Check back shortly for the full announcement, topic, and speaker biography.</abstract>
                <slug>europython-2026-96939-keynote-2-placeholder</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/PKMSSL/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/PKMSSL/feedback/</feedback_url>
            </event>
            <event guid='f7249939-a540-5ef6-af3e-92642f485136' id='101788' code='G9QJBU'>
                <room>S1</room>
                <title>EuroPython 25th anniversary</title>
                <subtitle></subtitle>
                <type>Announcements</type>
                <date>2026-07-15T17:30:00+02:00</date>
                <start>17:30</start>
                <duration>00:10</duration>
                <abstract>Join us for a special informative session as we celebrate EuroPython&apos;s 25th anniversary &#8212; a milestone worth marking together! We have some exciting surprises in store that you won&apos;t want to miss, so make sure to stick around after the keynote and be part of this memorable occasion.</abstract>
                <slug>europython-2026-101788-europython-25th-anniversary</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/G9QJBU/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/G9QJBU/feedback/</feedback_url>
            </event>
            <event guid='b252e0f1-5ce3-51b2-9786-85aa5dcbb18b' id='97559' code='FMNUSD'>
                <room>S1</room>
                <title>Python Quiz &#128221;</title>
                <subtitle></subtitle>
                <type>Announcements</type>
                <date>2026-07-15T17:40:00+02:00</date>
                <start>17:40</start>
                <duration>00:15</duration>
                <abstract>Join us for a fast, fun, and brain-twisting quiz all about Python, the tools, and the community.

Test your knowledge, race against the clock, and compete with fellow EuroPython attendees for a shot at some awesome prizes. 

Whether you&#8217;re a seasoned developer or just love a good challenge, this showdown is your time to shine.</abstract>
                <slug>europython-2026-97559-python-quiz</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/FMNUSD/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/FMNUSD/feedback/</feedback_url>
            </event>
            <event guid='3d5ba3a6-02d6-5915-b9bb-04901b2a3fc1' id='97560' code='PRFYJA'>
                <room>S1</room>
                <title>Lightning talks &#9889; Wednesday</title>
                <subtitle></subtitle>
                <type>Lightning Talk</type>
                <date>2026-07-15T17:55:00+02:00</date>
                <start>17:55</start>
                <duration>00:45</duration>
                <abstract>Enjoy Wednesday&apos;s lightning talks! Short talks about everything by everyone. 

Lightning talks are 5 minute talks that anyone participating at the conference can submit.
If that talk gets selected, you will have the chance to jump into the main stage and show us your project, your ideas, something you have learned, something you are proud of that&apos;s helping and contributing to our conference and community, or something else!

Lightning talks last a maximum of 5 minutes. You can use less time, but not more.
This time limit is strictly enforced!

If you get accepted, you will be notified by email on the day of your talk by 1pm.
Reply to the acceptance email by 3pm to confirm your spot.
(If you don&apos;t, you lose your spot!)

You can submit your lightning talk on this form: TBD
Note that there&apos;s a limit of one submission per person.

Community/conference announcement submissions are done through the same form before 1pm Thursday.</abstract>
                <slug>europython-2026-97560-lightning-talks-wednesday</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/PRFYJA/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/PRFYJA/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='S2' guid='d3c8c403-7131-5705-ad97-7cd3d40cef9b'>
            <event guid='ecaefb80-7b6b-5f5d-8763-bee5581ec27e' id='91718' code='DWBGJ9'>
                <room>S2</room>
                <title>How CPythons Errors keep getting better</title>
                <subtitle></subtitle>
                <type>Talk (long session)</type>
                <date>2026-07-15T10:45:00+02:00</date>
                <start>10:45</start>
                <duration>00:45</duration>
                <abstract>The upcoming Python 3.15 keeps improving error messages, which will be the fourth out of the last five releases to establish this most recent tradition. Good errors help developers debug faster and keep beginners from giving up in frustration

In this talk we go all the way back to 2008 and explore how error messages evolved from Python 3.0 to today. Along the way we will also go into what makes up a good error message and why they are often so hard to get right. We&apos;ll also touch on how academia and research let us down and why good errors remain an art more than an exact science. I will also talk about my personal experience and the ~~bad~~ _unfortunate_ error message I encountered during my first teaching job that fueled my passion for compiler and language development.

Finally, I will also argue why you not only don&apos;t have to be a compiler engineer to contribute to python errors but why not being one might be an actual advantage.

By the end, you will have learned what makes a good error message, how to spot a bad one and how to fix them.</abstract>
                <slug>europython-2026-91718-how-cpythons-errors-keep-getting-better</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='91805'>Florian Freitag</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/DWBGJ9/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/DWBGJ9/feedback/</feedback_url>
            </event>
            <event guid='f4bb9da8-fec5-54ec-9699-b7d26aced555' id='91688' code='CBA98V'>
                <room>S2</room>
                <title>Designing and Building Custom Keyboards &#9000;&#65039; with Python</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T11:40:00+02:00</date>
                <start>11:40</start>
                <duration>00:30</duration>
                <abstract>Programmers spend countless hours typing, yet we rarely question how keyboard design affects our comfort and productivity. Standard QWERTY layouts and one-size-fits-all hardware often contribute to strain and inefficiency. This talk explores how Python can help you design, build, and optimize your own custom keyboard; from analyzing your typing habits to generating the PCB.

We start with a brief history of keyboard design and the limitations of QWERTY, then introduce alternative layouts (ortholinear, split, and more) and explain why they can reduce strain and improve speed. Next, we use Python to make data-driven decisions: we&#8217;ll look at scripts that analyze your codebases or IDE usage to find your most-used characters and symbols, so you can place keys where they matter most for your workflow and favorite languages.

We then move on to PCB design with KidCad and GDSFactory, a Python-based tool for creating keyboard PCBs and exporting Gerber or GDS files for manufacturing. You&#8217;ll see how to arrange keys around your hand shape and generate production-ready files. After that, we cover basic assembly and programming your layout with open-source firmware. Finally, we discuss trade-offs: the benefits of a tailored setup (better posture, less finger travel, DIY satisfaction) it can also be a meaningful accessibility solution for users with special needs, limited mobility, or other conditions where standard keyboards become a uncomfortable or unusable. Some of the barriers (cost, time, learning a new layout), plus strategies for gradual adoption and practice tools.

**What you will learn:**  
- Why keyboard layout and ergonomics matter for long-term comfort and productivity.  
- How to use Python to analyze your typing patterns and inform layout choices.  
- How to use KidCad or GDSFactory (Python) to design hardware and generate manufacturing files.  
- How to go from design to assembly and firmware, and how to ease the transition to a new layout.

No prior experience with keyboard building or PCB design is required; just curiosity and a desire to create a custom typing experience. By the end, you&#8217;ll know how to question your current keyboard and how to start building your own with Python.</abstract>
                <slug>europython-2026-91688-designing-and-building-custom-keyboards-with-python</slug>
                <track>Python for Games, Art, Play and Expression</track>
                
                <persons>
                    <person id='91585'>Carlos A Aranibar</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/CBA98V/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/CBA98V/feedback/</feedback_url>
            </event>
            <event guid='ae92d699-9792-5a05-b54b-08cfdd2a4776' id='89571' code='UPELCT'>
                <room>S2</room>
                <title>Friendly Borders: Graph algorithms reveal Eurovision voting patterns</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T12:20:00+02:00</date>
                <start>12:20</start>
                <duration>00:30</duration>
                <abstract>&lt;b&gt;Graphs&lt;/b&gt; offer a powerful tool for uncovering relationships and hidden patterns between entities. This presentation provides an introduction to &lt;b&gt;graph theory&lt;/b&gt;, and demonstrates how graphs are applied across various business domains - from social network analysis and recommendation systems to fraud detection and supply chain optimization. Through an overview of core concepts and algorithmic approaches, the goal is to show how graphs can reveal underlying structures in complex systems.

As a real-world case study, the presentation focuses on &lt;b&gt;Eurovision voting&lt;/b&gt; - an area long suspected of regional bias and neighbourly favoritism. Using graph-based analysis and community detection techniques, we explore voting patterns between countries to better understand how geography, history, and politics influence the distribution of points. Through visualizations and data-driven insights, the talk demonstrates how graph theory uncovers hidden alliances and behavioral trends within the seemingly light-hearted spectacle of a music contest.</abstract>
                <slug>europython-2026-89571-friendly-borders-graph-algorithms-reveal-eurovision-voting-patterns</slug>
                <track>Data preparation and visualisation</track>
                
                <persons>
                    <person id='89994'>Domagoj Mari&#263;</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/UPELCT/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/UPELCT/feedback/</feedback_url>
            </event>
            <event guid='90b07acc-ce03-5342-9697-d7df61559ce1' id='89608' code='NWLBJC'>
                <room>S2</room>
                <title>Why doing difficult things is good for you and good for your team</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T13:50:00+02:00</date>
                <start>13:50</start>
                <duration>00:30</duration>
                <abstract>This talk shares my experience in my first ever role as a junior engineer after switching careers. I picked up a ticket involving tools and concepts I&#8217;d never used before (OpenTelemetry and Honeycomb), hoping to spend a day learning a bit about how we implement observability and monitoring of our Django app. Spoiler alert: it took three weeks of learning, debugging and asking for help to complete this work.

I learned some valuable lessons along the way, not just technical stuff, but about how to problem-solve, collaborate effectively, and keep going in the face of *seemingly unending* challenges.

Through this talk, I want junior engineers in the audience to know:

- You can do difficult things, even if you think you lack the experience or knowledge required. If you&#8217;re willing to learn, and have a supportive team around you, you have everything you need.
- Doing difficult things is daunting, but also incredibly rewarding. You often learn 10x more than you expected, and when you finally merge your work into main, it feels like winning the lottery.
- Taking on hard things benefits the whole team&#8212;others might learn something new, or strengthen their own understanding by helping you out.
- There&#8217;s a lot you can do to support yourself: reach out early, reach out often, and learn how to communicate problems clearly.
- The value of your work cannot be measured by lines of code, it&#8217;s so much greater than that.

This talk also offers a reminder to seniors, and leaders or managers, about how tough it can be to be new. Juniors don&#8217;t just lack experience, we don&apos;t know what we don&apos;t know and it&apos;s *really* easy (for others and ourselves!) to underestimate this. When things break or go wrong, we might not understand where or why, and even if we find a bug or an error, knowing how to fix it is another challenge altogether. I&#8217;ll share how my team&#8217;s support made all the difference, and offer some practical ideas for how others can support their junior colleagues, too.

This isn&#8217;t a super technical talk. It&#8217;s more about the human experience of being a beginner, the value of persistence, why asking for help is a great thing to do, and the power of supportive teams; there&apos;s hopefully something useful and/or interesting in this for everyone.</abstract>
                <slug>europython-2026-89608-why-doing-difficult-things-is-good-for-you-and-good-for-your-team</slug>
                <track>Community Building, Education, Outreach</track>
                
                <persons>
                    <person id='90029'>Katie Bickford</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/NWLBJC/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/NWLBJC/feedback/</feedback_url>
            </event>
            <event guid='52195466-e65e-52d6-8886-54ca41f4c66e' id='91592' code='8CDAWL'>
                <room>S2</room>
                <title>Hacking Truth: Python and the Limits of Mathematics</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>Are mathematics a reliable way to explain reality? Can we trust them? And more importantly: what role could Python play in such profound questions?

G&#246;del&#8217;s Incompleteness Theorems are pillars of mathematics and computer science, revealing inherent limits in our ability to formalize truth and reason about the world. Their implications reach far beyond logic, touching philosophy, the foundations of computing, and the limits of machine reasoning. Despite their importance, understanding _why_ these results hold can feel inaccessible and abstract.

In this talk, we tackle that difficulty directly. Python will be used not only as a programming language, but as a conceptual tool to understand G&#246;del&#8217;s First Incompleteness Theorem through algorithmic thinking.

We will see how computational ideas make abstract concepts tangible, exploring the intellectual journey from Hilbert&#8217;s dream of a complete mathematics to the breakthroughs of G&#246;del, Church, and Turing. Through this lens, Python helps illuminate the boundaries of logic and computation, offering a new perspective on how mathematics works... and where its limits lie.</abstract>
                <slug>europython-2026-91592-hacking-truth-python-and-the-limits-of-mathematics</slug>
                <track>Community Building, Education, Outreach</track>
                
                <persons>
                    <person id='91708'>Miguel &#193;ngel Fern&#225;ndez Guti&#233;rrez</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/8CDAWL/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/8CDAWL/feedback/</feedback_url>
            </event>
            <event guid='b9082e60-2cab-504c-8ed4-43e0b9c8b9ac' id='91651' code='CKXUGV'>
                <room>S2</room>
                <title>Python Profiling &#8211; The Hitchhiker&apos;s Guide to Profiling</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T15:25:00+02:00</date>
                <start>15:25</start>
                <duration>00:30</duration>
                <abstract>Want to know what makes your data pipeline slow? How much memory does it use? In this talk, we&apos;ll guide you through the landscape of Python profilers &#8211; from classics like Scalene, py-spy and memray to newer tools like Tachyon and eBPF profiling &#8211; and show you how to choose the right one for your needs.

We&apos;ll cover timing and memory profiling methodologies, compare tools across accuracy and overhead, walk through real usage examples, and explore continuous profiling. Whether you&apos;re optimizing a single script or debugging production systems, you&apos;ll leave with a practical framework for profiling smarter.</abstract>
                <slug>europython-2026-91651-python-profiling-the-hitchhiker-s-guide-to-profiling</slug>
                <track>Data Engineering and MLOps</track>
                
                <persons>
                    <person id='91762'>Jonathan Striebel</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/CKXUGV/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/CKXUGV/feedback/</feedback_url>
            </event>
            <event guid='6ad7f385-b0ab-5ed5-8110-539f9b4116ff' id='91588' code='TWBDVZ'>
                <room>S2</room>
                <title>The hardest test suite I ever built - a pytest case study</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T16:05:00+02:00</date>
                <start>16:05</start>
                <duration>00:30</duration>
                <abstract>For years, this real-time video system had no tests. Every change produced unpredictable side effects. Accuracy drifted. Production incidents and escalations followed. The only &#8220;verification&#8221; was manual inspection and hope.

When I joined the project, this was the reality - and building a proper integration test suite became my first priority.

In this talk, I&#8217;ll share how I designed and evolved the hardest integration test suite of my career using pytest - and kept it readable.

The system processed live streams in production. It was non-deterministic. Individual detections were only 80&#8211;90% accurate. For testing, we replayed recorded scenarios to make system behavior observable and comparable across runs. But binary assertions were not enough. A single failed event did not mean the whole system was broken - but we needed a way to measure when it actually was.

Instead of writing one massive test, I built a layered architecture:

- dual parametrization - recording scope and event scope
- orchestration in fixtures - assertions in tiny, single-purpose tests
- statistics collection during execution
- end-of-run aggregation that summarizes system accuracy

The result was a suite that could detect regressions in model changes and produce reproducible evidence - HTML reports, structured dumps, and a summary statistics file.

This talk explores how far pytest can be stretched beyond unit tests - into a framework for architecting complex integration systems.</abstract>
                <slug>europython-2026-91588-the-hardest-test-suite-i-ever-built-a-pytest-case-study</slug>
                <track>Testing, Quality Assurance, Security</track>
                
                <persons>
                    <person id='91719'>Grzegorz Kocjan</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/TWBDVZ/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/TWBDVZ/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='S4' guid='f458b6fb-5c85-511c-870e-76b00bae6031'>
            <event guid='998f909d-2e1a-5e59-995f-f5b6fb4c7ded' id='91517' code='QT97WA'>
                <room>S4</room>
                <title>Scaling Python Systems by Designing Team-Aware Architecture</title>
                <subtitle></subtitle>
                <type>Talk (long session)</type>
                <date>2026-07-15T10:45:00+02:00</date>
                <start>10:45</start>
                <duration>00:45</duration>
                <abstract>Python systems rarely fail because of raw performance limits.

They fail because the architecture does not scale with the team.

As services grow, coordination overhead increases. Shared databases create implicit coupling. API contracts become political boundaries. Async workflows leak across domains. Meetings multiply to compensate for structural flaws.

Instead of adding process, we should redesign architecture.

This talk explores how Python system design directly determines team scalability.

Using real-world backend systems built with FastAPI, asyncio, gRPC (grpcio), PostgreSQL, Redis, Docker, we will examine how architectural decisions shape organizational complexity.

Topics include:
	&#8226;	Domain boundaries in Python services and their impact on ownership
	&#8226;	Database-per-service vs shared schemas
	&#8226;	REST vs gRPC as team contracts
	&#8226;	Monorepo vs polyrepo trade-offs in multi-service Python ecosystems
	&#8226;	Contract testing and schema evolution
	&#8226;	Observability as an interface between teams
	&#8226;	Async workloads and cross-service backpressure
	&#8226;	When microservices increase coordination cost instead of reducing it

Rather than promoting a single architecture style, this session introduces a framework for evaluating whether a design reduces or amplifies team cognitive load.

Attendees will leave with:
	&#8226;	Criteria for defining service boundaries that align with ownership
	&#8226;	Patterns for reducing cross-team friction through architectural design
	&#8226;	Warning signs that architecture is becoming a coordination bottleneck
	&#8226;	Practical techniques for evolving Python systems without multiplying process

This talk is intended for experienced Python engineers, architects, and technical leaders responsible for systems that must scale both technically and organizationally.</abstract>
                <slug>europython-2026-91517-scaling-python-systems-by-designing-team-aware-architecture</slug>
                <track>Professional Development, Careers, Leadership</track>
                
                <persons>
                    <person id='91671'>Ivan Markeev</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/QT97WA/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/QT97WA/feedback/</feedback_url>
            </event>
            <event guid='a68f82ec-6c24-5991-9d81-4301180b1496' id='100244' code='D899EP'>
                <room>S4</room>
                <title>Write async. Get sync for free</title>
                <subtitle></subtitle>
                <type>Sponsored</type>
                <date>2026-07-15T12:20:00+02:00</date>
                <start>12:20</start>
                <duration>00:30</duration>
                <abstract>When you write a Python library, you have a dilemma. Ship
async-only? Ship blocking-only? Or write everything twice and watch both copies drift?

[Synchronicity](https://github.com/modal-labs/synchronicity) removes this dilemma. Write your library once (in async) and get a blocking
interface for free, while avoiding the boilerplate and limitations of `asyncio.run()` wrappers. We&#8217;ll talk through how to handle persistent connections, async generators, clean tracebacks, type hints and more.

We&apos;ve used it in production at Modal for years, and it&apos;s fully open source.
We hope it can save you from writing your own library twice!</abstract>
                <slug>europython-2026-100244-write-async-get-sync-for-free</slug>
                <track>Tooling, Packaging, Developer Productivity</track>
                
                <persons>
                    <person id='99548'>Thom Lane</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/D899EP/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/D899EP/feedback/</feedback_url>
            </event>
            <event guid='b38dd2da-eeb6-5595-8df4-effea3170a28' id='91439' code='3HBWHB'>
                <room>S4</room>
                <title>How to blend Python, physics, and art to create (hopefully) pretty pictures</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T13:50:00+02:00</date>
                <start>13:50</start>
                <duration>00:30</duration>
                <abstract>Sometimes, one writes code to answer an important scientific question. On other occasions, code is developed with some economic interest in mind, legitimate or otherwise. And then there are situations where something else is going on. This work, which I call _June Gloom_, is just that: something else. Specifically, it is about producing pretty pictures, inspired by very real analog art and executed by using a somewhat abstract toy model for magnetism from statistical mechanics. In my presentation, I will show how we can use Monte Carlo techniques to perform physically accurate computer simulations. The results obtained from these simulations are then turned into both static as well as interactive visualizations using Matplotlib.</abstract>
                <slug>europython-2026-91439-how-to-blend-python-physics-and-art-to-create-hopefully-pretty-pictures</slug>
                <track>Python for Games, Art, Play and Expression</track>
                
                <persons>
                    <person id='91619'>Christian Leitold</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/3HBWHB/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/3HBWHB/feedback/</feedback_url>
            </event>
            <event guid='2d3c54f3-cc0e-50b2-a167-b8dadee18338' id='90791' code='7VKQQM'>
                <room>S4</room>
                <title>Beyond `Optional` in Real-World Projects: Missing, `None`, and Unset</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>Have you ever merged a config file, applied an input that says &quot;update only these fields&quot;, or handled an API payload, only to overwrite data because &quot;missing&quot;, `None`, and &quot;unset&quot; were treated as the same thing?

In real-world projects, &quot;no value&quot; has at least three meanings:

- a missing key (the field is absent),
- an explicit `None` (the value is present and intentionally null),
- an unset input (the caller didn&apos;t specify the field, so you must not touch it).

When we collapse these into `T | None` (a nullable type) or fall back to `dict[str, Any]`, type checking becomes noisy, branching becomes fragile, and refactors get risky. Every field nullable, every check defensive, every change scary.

This is a practical talk about using typing to model and safely consume real-world data with `TypedDict` and `dataclasses`, not a typing tutorial or a framework pitch. We&apos;ll walk through one end-to-end example (payload -&gt; normalization -&gt; domain model -&gt; safe updates) with before/after code and focus on patterns you can apply immediately:

- Use `Required` / `NotRequired` to model missing keys instead of abusing `T | None`.
- Use `T | None` only when `None` is a meaningful value.
- Represent unset inputs with a sentinel pattern (starting from `UNSET = object()` and optionally evolving to `typing_extensions.Sentinel`) so partial updates don&apos;t silently overwrite data and the type checker can distinguish unset from `None`.
- Keep extraction code honest with type aliases, `TypeIs`, and (optionally) small `match` cases for readability.

After this session, you&apos;ll be able to define stricter data models, write safer extraction code, and make schema changes less painful, because your types will reflect what your data actually means. This talk is for intermediate Python developers who already use type hints in production.</abstract>
                <slug>europython-2026-90791-beyond-optional-in-real-world-projects-missing-none-and-unset</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='91092'>Koudai Aono</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/7VKQQM/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/7VKQQM/feedback/</feedback_url>
            </event>
            <event guid='181c8bd1-6c37-54c0-9249-b9672707c025' id='90763' code='H7KGU3'>
                <room>S4</room>
                <title>DuckLake - Take Python and DuckDB for a swim in your data lake</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T15:25:00+02:00</date>
                <start>15:25</start>
                <duration>00:30</duration>
                <abstract>*Pitch*

With DuckDB and DuckLake, managing and analyzing huge data sets is no longer limited to complex cloud infrastructure setups. You can literally run these tasks on your notebook now and at comparable speeds. This talk will show you how.

*Description*

**DuckDB** is an embedded relational analytics database (OLAP) which can be added to a Python project with a simple `uv add duckdb` or `pip install duckdb`. It is both fast and powerful for processing analytical data warehouse workloads, using the well-known PostgreSQL SQL dialect. Data can be stored in memory and persisted on disk. DuckDB is well integrated with Polars via zero copy Apache Arrow data structures, making it a great choice for complex data science and engineering tasks.

**DuckLake** is a extension which comes with DuckDB to add data lake features, meaning that huge data sets can be managed using Parquet files stored on disk or in an object store such as S3. It uses a novel approach to data lakes in that the management structures are stored in a database (DuckDB), instead of complex file and directory structures, as many other data lake systems do. This provides great advantages for implementing smart features such as snapshots, schema evolution or time travel.

Again, installation of the extension is just a simple `INSTALL ducklake` command away, making this a really easy way to configure your own personal &quot;lake house&quot; - the ideal combination of a data warehouse with a data lake.

The talk will give a short introduction to the database terminology, explain what is novel about the DuckLake approach and then showcase a typical use case for lake houses: storing historical weather data and making this available for analytics to Python applications.

Both DuckDB and DuckLake are MIT licensed.

*Resources:*
- [Python.org](https://www.python.org/)
- [DuckDB &#8211; An in-process SQL OLAP database management system](https://duckdb.org/)
- [DuckLake is an integrated data lake and catalog format &#8211; DuckLake](https://ducklake.select/)</abstract>
                <slug>europython-2026-90763-ducklake-take-python-and-duckdb-for-a-swim-in-your-data-lake</slug>
                <track>Data Engineering and MLOps</track>
                
                <persons>
                    <person id='91070'>Marc-Andr&#233; Lemburg</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/H7KGU3/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/H7KGU3/feedback/</feedback_url>
            </event>
            <event guid='2bff7c24-8589-5abb-b030-a82c41b99612' id='91007' code='JEN7WA'>
                <room>S4</room>
                <title>Fast Multi-Version ETL Pipelines in Python with Generators and functools</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T16:05:00+02:00</date>
                <start>16:05</start>
                <duration>00:30</duration>
                <abstract>Modern data systems rarely stay unchanged. Schemas evolve, search indices are rebuilt, and for some period of time, multiple versions of the same dataset need to be kept in sync. A typical example is a zero-downtime migration, where several versions of the same data must be synchronised in parallel while the system remains live. This creates a subtle but important challenge: how to keep each version consistent without duplicating extraction work or increasing database load.

In this talk, I&#8217;ll describe a production ETL architecture built in Python that processes multiple data versions in parallel using a single streaming pipeline. The system synchronises data from PostgreSQL into OpenSearch, keeps each version independently consistent, and guarantees that no version ever moves backwards &#8212; while querying the database only once per batch. The talk is based on a real production system and explains the design decisions and tradeoffs behind it.

The design is based on generator pipelines and functional composition using the functools module. Instead of relying on threads or async frameworks, the ETL flow is expressed as a sequence of small, composable functions: page extraction, DTO normalisation, version-aware filtering, transformation, bulk loading, and dead-letter handling. The reference implementation uses Django as the ORM layer and Celery for orchestration, but the core design is not framework-specific and can be applied equally with SQLAlchemy or raw SQL.

I&#8217;ll show how this design makes it possible to:
1. Synchronise multiple versions efficiently without duplicate database queries
2. Process large datasets in a streaming, memory-efficient way
3. Build extensible pipelines from protocol-defined functional stages
4. Maintain a clear separation of concerns with strong typing and isolated tests
5. handle failures safely using bulk retries and dead-letter queues

Attendees will leave with concrete patterns for building fast and maintainable ETL pipelines in Python, and with a clearer understanding of how generators and functional composition can be used to model complex data flows &#8212; borrowing ideas from Go-style concurrency while staying entirely within the Python ecosystem. While the examples focus on ETL pipelines, the patterns discussed apply to any Python system that processes large streams of data and needs to balance performance, correctness, and extensibility.

Audience: Intermediate to advanced Python developers. Familiarity with generators and basic ETL concepts is helpful; interest in functional design patterns and backend data systems will be beneficial.</abstract>
                <slug>europython-2026-91007-fast-multi-version-etl-pipelines-in-python-with-generators-and-functools</slug>
                <track>Data Engineering and MLOps</track>
                
                <persons>
                    <person id='91279'>Nikita Smirnov</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/JEN7WA/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/JEN7WA/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='S3A' guid='81adc7d4-7479-5204-bb50-171fe63c4b34'>
            <event guid='bb5c4ece-1dcc-5ac9-a011-83ae2152bdd7' id='90692' code='9EFAJS'>
                <room>S3A</room>
                <title>How to Talk With Your Legal Department About Open Source</title>
                <subtitle></subtitle>
                <type>Talk (long session)</type>
                <date>2026-07-15T10:45:00+02:00</date>
                <start>10:45</start>
                <duration>00:45</duration>
                <abstract>Open source software (OSS) is today an integral part of software solutions and the software industry as a whole. However, it is often the case that not all parts of an organization are equally familiar with the OSS ecosystem and the specific licenses upon which it relies. Since this ecosystem is built on intellectual property, discussions about using OSS, patching existing OSS projects, or publishing one&apos;s own software as an OSS project inevitably involve conversations with the legal department at some point. In this talk, we will discuss some of the fundamentals of intellectual property, OSS licenses, how lawyers tend to think about software in general, and how to convince them that OSS is a good idea.</abstract>
                <slug>europython-2026-90692-how-to-talk-with-your-legal-department-about-open-source</slug>
                <track>Ethics, Social Responsibility, Sustainability, Legal</track>
                
                <persons>
                    <person id='90998'>Vladimir Slavov</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/9EFAJS/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/9EFAJS/feedback/</feedback_url>
            </event>
            <event guid='82bc874c-b17c-54bc-a117-bf3455673200' id='91546' code='HJ8KPY'>
                <room>S3A</room>
                <title>The Human-in-the-Loop is Tired</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T11:40:00+02:00</date>
                <start>11:40</start>
                <duration>00:30</duration>
                <abstract>A few nights ago I was up to 2am obsessively crafting an LLM plan. (_&quot;Just one more prompt!&quot;_ - famous last words). Yet it still did something inexplicably stupid. &#129760; So yeah: LLMs are both genuinely useful and genuinely destabilising. Focusing on the first and ignoring the second is how people burn out.

This talk is an honest account of what it feels like to be a developer right now, from someone inside it, and some thoughts on what might actually help. My thesis: we&apos;ve been optimising for _model output_ when we need to be optimising for _human experience_.

I&apos;ll share observations from my work, peers and colleagues. The peculiar fatigue of machine supervision: holding the intent in your head while the machine generates volumes of mostly-correct output that still needs your eyes, your judgment, and your taste. The way the satisfying part of the work shrank while the exhausting part grew. The isolation of pair-programming with a machine, and the loss of real human learning, interconnection and collaboration. And underneath all of it: uncertainty. About market conditions, about employability, about whether the skills we&apos;ve spent years building will still matter.

The second half is about what&apos;s been working for me, and what hasn&apos;t. On the human side: encouraging pairing and teamwork even when the tools push you toward isolation, sharing the pain openly, naming the uncomfortable thing. On the technical side: structuring your environment to collaborate with LLMs more deliberately &#8212; writing plans, configuring project-specific rules. Learning when to stop prompting and just write code. And critically: rebalancing the push and pull of information so that you&apos;re directing your attention, not feeling at the mercy of the model&apos;s output. More Star Trek, less Black Mirror.

Leave with concrete strategies for recalibrating your workflow, challenges to discuss and the reassurance that if you&apos;re finding this hard, you&apos;re not broken. The feedback loop is. And we can start fixing that.</abstract>
                <slug>europython-2026-91546-the-human-in-the-loop-is-tired</slug>
                <track>Professional Development, Careers, Leadership</track>
                
                <persons>
                    <person id='91685'>Laura Summers</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/HJ8KPY/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/HJ8KPY/feedback/</feedback_url>
            </event>
            <event guid='98571f48-1a26-5bc1-a3ae-faea1c6df28e' id='91169' code='WHHAQK'>
                <room>S3A</room>
                <title>From Code Hero to Team Leader: Learning to Let Go</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T12:20:00+02:00</date>
                <start>12:20</start>
                <duration>00:30</duration>
                <abstract>As engineers grow in their careers, many of us try to support our teams by writing more code, reviewing every pull request, and stepping in to fix the hardest problems. It feels helpful and responsible. Over time though, this approach can unintentionally create too much dependency on one person.

This talk explores the shift from being the person who solves everything to becoming someone who helps the whole team succeed.

Drawing from lessons learned through experience(often the hard way :)) and from colleagues and mentors along the way, I will share practical shifts that make a difference: creating clearer technical direction, improving design conversations, sharing context early, mentoring thoughtfully and building systems that reduce reliance on any single &#8220;hero.&#8221;

If you are a mid or senior engineer who is always busy but still feels that too much depends on you, this talk aims to offer useful ideas for your own journey.</abstract>
                <slug>europython-2026-91169-from-code-hero-to-team-leader-learning-to-let-go</slug>
                <track>Professional Development, Careers, Leadership</track>
                
                <persons>
                    <person id='91415'>Manivannan Selvaraj</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/WHHAQK/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/WHHAQK/feedback/</feedback_url>
            </event>
            <event guid='ea332370-1a99-5664-9354-9d8ccd6a533f' id='101792' code='N9HKQN'>
                <room>S3A</room>
                <title>AI Discussion Panel</title>
                <subtitle></subtitle>
                <type>Panel</type>
                <date>2026-07-15T13:50:00+02:00</date>
                <start>13:50</start>
                <duration>01:00</duration>
                <abstract>In this one-hour panel session, AI experts will explore the rapidly evolving impact of these technologies on our society. The discussion will address pressing questions across key domains being transformed by AI: privacy and regulation, environmental implications, economic and labor shifts, and the impact of AI on media and art. 

Beyond hearing insightful perspectives from our panelists, you&apos;ll have the opportunity to submit your own questions throughout the session. Whether you&apos;re an AI enthusiast, industry professional, or simply curious about how these technologies will shape our world, join us to find out more about this complex area and have your burning questions answered.</abstract>
                <slug>europython-2026-101792-ai-discussion-panel</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/N9HKQN/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/N9HKQN/feedback/</feedback_url>
            </event>
            <event guid='a88cfc1b-8006-58b6-9bde-f37cfec54e0b' id='89072' code='ZRWENU'>
                <room>S3A</room>
                <title>Designing Performant APIs with Litestar</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T15:25:00+02:00</date>
                <start>15:25</start>
                <duration>00:30</duration>
                <abstract>APIs development start simple, feel fast, and ship quickly. Then the API grows: more endpoints, more traffic, more data, and suddenly performance becomes unpredictable. Latency creeps in, async code blocks without anyone noticing, and every new feature feels a little riskier to add.

This talk is about building Python APIs that stay fast *as they evolve*.

We&#8217;ll look at where performance issues really come from in real-world APIs: request lifecycle overhead, hidden blocking calls, dependency injection costs, serialization, and poorly scoped middleware. Instead of chasing micro-optimizations or benchmark numbers, we&#8217;ll focus on design decisions that make performance predictable.

Using Litestar as a concrete example, you&#8217;ll see how explicit control over routing, dependencies, and async execution helps avoid common performance traps. We&#8217;ll walk through realistic API patterns and show how to structure handlers and dependencies so performance problems don&#8217;t slowly accumulate.

You&#8217;ll leave with practical techniques you can apply immediately, whether you&#8217;re building a new API or maintaining one in production. Even if you don&#8217;t use Litestar today, the design principles in this talk will help you reason more clearly about performance in any Python API.</abstract>
                <slug>europython-2026-89072-designing-performant-apis-with-litestar</slug>
                <track>Web Development, Web APIs, Front-End Integration</track>
                
                <persons>
                    <person id='90114'>Julien Court&#232;s</person><person id='98254'>Cody Fincher</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/ZRWENU/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/ZRWENU/feedback/</feedback_url>
            </event>
            <event guid='d8bb0608-aba0-5a60-a582-2bc6c9049b57' id='89563' code='H7DVRJ'>
                <room>S3A</room>
                <title>How to Maintain 60 Integrations and Not Go Bananas</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T16:05:00+02:00</date>
                <start>16:05</start>
                <duration>00:30</duration>
                <abstract>Say you&apos;ve built a library whose main value is providing built-in integrations with a considerable number (say 60+) of different Python packages. That&apos;s cool, and your users are loving the out-of-the-box experience. (Being blissfully unaware of the lengths you had to go to in the background to make things work &quot;seamlessly&quot; helps.) Everything seems to be working fine, you get the odd bug report or feature request, the usual.

Then one day you wake up and your otherwise fairly chill issue tracker is drowning in folks experiencing an issue with your library that breaks their app. Your first thought is, why is this coming up now, when your last release was two weeks ago? And then you realize: It&apos;s not your release that broke the library.

All the third party code you&apos;re integrating with? It&apos;s become *your* code by extension. You need to react if something changes upstream and breaks your integration in unexpected ways. You can write your integrations so defensively that no one will ever want to read them again, but it&apos;s not enough: you can&apos;t anticipate every single change each of the 60+ packages will ever make.

Let&apos;s assume having your users act as a release monitoring system by notifying you on your issue tracker is not what you want. How do you go about this? You&apos;ll want somehow to detect breakage early, so you can go fix things before your users are hit by them. And ideally you&apos;d do it in a way that maintaining it is not a nightmare.

This talk will take you through one such journey, from recognizing the problem, to various attempts at making it better, to eventually arriving at a solution that&apos;s good enough for now (tm).

You might like this talk if you:
- Have to deal with integrations in some shape or form
- Are relying on third-party packages heavily
- Don&apos;t like maintaining things by hand
- Like to have that &quot;this can be automated with a script&quot; itch scratched
- Are intrigued that there&apos;s a talk that has the word &quot;bananas&quot; in the title</abstract>
                <slug>europython-2026-89563-how-to-maintain-60-integrations-and-not-go-bananas</slug>
                <track>Testing, Quality Assurance, Security</track>
                
                <persons>
                    <person id='89986'>Ivana Kellyer</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/H7DVRJ/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/H7DVRJ/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='S3B' guid='8b2a7d87-e211-5bf0-aec1-50733db791b3'>
            <event guid='dc2f2652-e3f9-5080-9e71-afebce1d0038' id='91603' code='M8Q77Z'>
                <room>S3B</room>
                <title>Should you trust Trusted Publishing?</title>
                <subtitle></subtitle>
                <type>Talk (long session)</type>
                <date>2026-07-15T10:45:00+02:00</date>
                <start>10:45</start>
                <duration>00:45</duration>
                <abstract>In 2023, PyPI started supporting Trusted Publishers: A way to publish Python packages to PyPI without relying on insecure password and short-lived tokens. Three years later, this approach has become the default answer to package registries&apos; security, as it found its way into NPM, crates.io, and RubyGems. But does it actually offer the benefits we hoped it would? Can you really trust the green checkmark, and if you can&apos;t, what&apos;s the point?

In this talk, I want to look closely at what Trusted Publishers are, and what we _might_ think they are; who they do and do not protect. We&apos;ll explore the potential centralization problem of relying on Big Tech, US-based CI providers, leaving little room for smaller players like Codeberg and Sourcehut, as well as self-hosted Git forges and CI engines.

But even when using GitHub, Trusted Publisher may be tricky to get right, exposing different backdoors for the attacker to exploit. I want to discuss the illusion of security Trusted Publishers may give the inexperienced PyPI user; that is, if they actually decide to look at the hidden details of the published artifacts. How can we safeguard our Python projects, and should it be us who safeguards it? I will propose some solutions to this issue, including how the package managers and the PyPI registry itself can help us in this task.

Lastly, we&apos;ll reminisce about the past in search of answer. Maybe OpenPGP &#8216;Web of Trust&#8217; wasn&apos;t such a bad idea after all? Can we regain our independence in deciding who we do and don&apos;t trust?</abstract>
                <slug>europython-2026-91603-should-you-trust-trusted-publishing</slug>
                <track>Testing, Quality Assurance, Security</track>
                
                <persons>
                    <person id='91742'>Nikita Karamov</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/M8Q77Z/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/M8Q77Z/feedback/</feedback_url>
            </event>
            <event guid='fbb405e4-c3c8-5288-a768-501d949cb068' id='90735' code='VXDYGX'>
                <room>S3B</room>
                <title>When the Sun Breaks Your GPS: Building an Explainable Early Warning System</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T11:40:00+02:00</date>
                <start>11:40</start>
                <duration>00:30</duration>
                <abstract>**Space Weather** doesn&#8217;t just produce beautiful auroras: it can silently disrupt navigation systems, radio links, and satellite-based technologies we rely on every day.

Travelling Ionospheric Disturbances (TIDs) are wave-like structures in the ionosphere that affect GNSS accuracy and HF communications. From an ML perspective, forecasting TIDs is a challenging rare-event prediction problem involving imbalanced data and heterogeneous physical inputs.

In this talk, I will present an operational machine learning approach developed within the T-FORS project to forecast TID occurrence over Europe. The model is built using **CatBoost** and integrates data from space- and ground-based observations.

The talk focuses on **model design and evaluation choices**. In particular, I will show how **SHAP** can be used to debug model behaviour, validate feature relevance, and build trust in predictions in a high-risk operational context.

Along the way, I&#8217;ll share practical engineering lessons on:
- handling class imbalance,
- incorporating domain knowledge into ML pipelines,
- producing **uncertainty-aware outputs** via **Conformal Prediction**, and
- running **interpretable models in real-time forecasting systems**.

The talk is aimed at data scientists and ML practitioners interested in applied forecasting, interpretable models, uncertainty quantification and ML at the boundary between data and physics.

---

**Talk outline**
- 0-4: What is Space Weather and why should we care
- 4-7: Framing TID forecasting as an ML problem
- 7-10: Model design with CatBoost
- 10-13: Explainability with SHAP
- 13-18: Uncertainty quantification with Conformal Prediction
- 18-22: Cost-sensitive learning and real-time operations
- 22-25: Lessons learned
- 25-30: Q&amp;A</abstract>
                <slug>europython-2026-90735-when-the-sun-breaks-your-gps-building-an-explainable-early-warning-system</slug>
                <track>Machine Learning: Research &amp; Applications</track>
                
                <persons>
                    <person id='91050'>Vincenzo Ventriglia</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/VXDYGX/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/VXDYGX/feedback/</feedback_url>
            </event>
            <event guid='86ef3a63-5656-520b-a117-8b43d4c1ca2d' id='89705' code='NEH7RE'>
                <room>S3B</room>
                <title>Property based testing with Hypothesis</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T12:20:00+02:00</date>
                <start>12:20</start>
                <duration>00:30</duration>
                <abstract>The [website](https://hypothesis.works) of the Hypothesis project used to boldly assert: *&quot;Normal &apos;automated&apos; software testing is surprisingly manual. Every scenario the computer runs, someone had to write by hand. Hypothesis can fix this.&quot;*

While it&apos;s debatable whether property-based testing should fully replace the manual parametrization of tests with different inputs and outputs, there&apos;s no doubt that Hypothesis is a powerful tool for uncovering bugs nobody would even have considered looking for. In fact, during its development, the authors of Hypothesis accidentally discovered countless bugs in CPython and libraries, thus coining the term *&quot;The Curse of Hypothesis&quot;*.

The framework, although incredibly powerful, might seem overwhelming at first. In this talk, I will demonstrate how even simply throwing random strings at functions can reveal surprising bugs. From there, we&apos;ll progress towards generating more complex data, which will be less daunting than it initially appears. You&apos;ll also see how Hypothesis seamlessly integrates with various ecosystems and can be a valuable tool in any developer&apos;s toolkit.</abstract>
                <slug>europython-2026-89705-property-based-testing-with-hypothesis</slug>
                <track>Testing, Quality Assurance, Security</track>
                
                <persons>
                    <person id='90098'>Freya Bruhin</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/NEH7RE/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/NEH7RE/feedback/</feedback_url>
            </event>
            <event guid='c1f749eb-ecab-5a03-bc14-6c03b9765f61' id='91384' code='DRXC3E'>
                <room>S3B</room>
                <title>Python and HTTP/3: feel the difference in performance</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T13:50:00+02:00</date>
                <start>13:50</start>
                <duration>00:30</duration>
                <abstract># Python and HTTP/3: feel the difference in performance

## Abstract

Building real-time Python applications, from live dashboards to multiplayer games, often feels like a battle against an invisible lag. While we focus on optimizing our async code, the underlying transport protocol often sabotages us: `TCP` guarantees ordering at the absolute cost of responsiveness.

In this session, I will show that the standard choice of using Websocket over `HTTP/1.1` or `HTTP/2` can make the application perform horribly, due to the &quot;head-of-line blocking&quot; problem that is visible when the network is unstable.
Then I will present how `HTTP/3` and `WebTransport` eliminate transport-layer bottlenecks and enable seamless connection migration for network switching users.
The audience will experience the difference between protocols performance firsthand through a live three-round multiplayer snake game demo. 

## Description

### The Problem

Application performance is a complex challenge. Users often complain about lag, and regardless of how well we optimize our business logic, the issue persists. All too often, the blame is shifted to the client for having a &quot;spotty network.&quot; However, even under ideal conditions, users experience disruptions simply by being mobile, due to switching between Wi-Fi access points or cellular towers. The core problem is that many developers are unaware of the limitations of `HTTP/1.1` and `HTTP/2`, or that implementing `HTTP/3` might be a solution.

### Why This is Interesting to the Python Community

As Python applications become more real-time and data-intensive, traditional networking stacks are reaching their limits. There are important advances in technology that the audience should get familiar with, like `HTTP/3`, `QUIC`, and `WebTransport`. What is also important, is to be aware of how the Python ecosystem is still fragmented when it comes to supporting `HTTP/3`. 
Despite that, a solution is achievable, and by using a combination of `Starlette` and `aioquic` code across three generations of transport protocols, the audience will experience and learn how protocol choice dictates application reliability on imperfect networks.

### Key takeaways:
- Witness an app suffering from transport-layer head-of-line blocking.
- Understand the Python `HTTP/3` ecosystem, including `aioquic`, `Hypercorn`, and `Starlette`.
- Deploy a `HTTP/3` server handling `WebTransport` datagrams for real-time data.
- Learn how to use Linux traffic control (`tc`) to inject some chaos to the network
- Play multiplayer Snake!</abstract>
                <slug>europython-2026-91384-python-and-http-3-feel-the-difference-in-performance</slug>
                <track>Web Development, Web APIs, Front-End Integration</track>
                
                <persons>
                    <person id='91579'>Daniel Vahla</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://programme.europython.eu/media/europython-2026/submissions/DRXC3E/resources/Screenshot_8RyiRGg.png">Game demo screenshot</attachment>
                </attachments>

                <url>https://programme.europython.eu/europython-2026/talk/DRXC3E/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/DRXC3E/feedback/</feedback_url>
            </event>
            <event guid='b2198258-d332-5ee8-b4f2-99412e1dc7dd' id='90676' code='HVTSPC'>
                <room>S3B</room>
                <title>I Am a Sucker for Conventions. Why Django&#8217;s Defaults Work, Until They Don&#8217;t</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>Conventions are one of Django&#8217;s greatest strengths.

They simplify our day-to-day work, reduce cognitive load, and let teams move fast with confidence. By following well-established defaults, we spend less time debating structure and more time solving real problems.

But every convention is also a decision - and every decision has trade-offs.

Who decided these conventions? Why were they chosen? And what happens when your problem doesn&#8217;t quite fit the &#8220;Django way&#8221;?

In this talk, we&#8217;ll explore Django&#8217;s conventions as both a feature and a constraint. We&#8217;ll look at where they shine, where they leak, and how experienced developers can respectfully bend (or break) them without fighting the framework. This is a talk for anyone who loves Django &#8212; especially when they disagree with it.</abstract>
                <slug>europython-2026-90676-i-am-a-sucker-for-conventions-why-django-s-defaults-work-until-they-don-t</slug>
                <track>Web Development, Web APIs, Front-End Integration</track>
                
                <persons>
                    <person id='90996'>David Vaz</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/HVTSPC/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/HVTSPC/feedback/</feedback_url>
            </event>
            <event guid='9d807c4a-ac69-57e1-9603-52cb830029dc' id='91599' code='PCMBVT'>
                <room>S3B</room>
                <title>How many spoons does your environment cost: Broken demos &amp; human element</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T15:25:00+02:00</date>
                <start>15:25</start>
                <duration>00:30</duration>
                <abstract>This talk is one part technology dance and one part walk through of Python environment best practices. In under 30 minutes, you&apos;ll see me load up some of the most gnarly environments and watch them fail. This isn&apos;t just another talk about dependency management. It&apos;s about the hidden cost of environment friction: the cognitive load, the lost spoons, the brilliant developers who almost quit tech because they felt &quot;too stupid&quot; to make pip work. It&apos;s about recognizing that setup barriers aren&apos;t just inconvenient&#8212;they&apos;re accessibility barriers that determine who gets to write Python.

In this talk we&apos;ll cover:
- Several environment failures (with dramatic audience participation): GPU-enabled errors, OS errors, mounted systems, CI/CD and virtual environments
- The human side of technical frustration: spoon theory, burnout
- Patterns about how environments break
- What the Python community is doing to lower these barriers.

Content note: This talk discusses mental health, burnout, and the emotional impact of technical barriers with care and intention.</abstract>
                <slug>europython-2026-91599-how-many-spoons-does-your-environment-cost-broken-demos-human-element</slug>
                <track>Tooling, Packaging, Developer Productivity</track>
                
                <persons>
                    <person id='91724'>Dawn Wages</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/PCMBVT/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/PCMBVT/feedback/</feedback_url>
            </event>
            <event guid='7f68274b-f3b2-58cb-a6ac-bb2a577f71bb' id='91663' code='X3ENDU'>
                <room>S3B</room>
                <title>How much do you really need to know about Databases?</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-15T16:05:00+02:00</date>
                <start>16:05</start>
                <duration>00:30</duration>
                <abstract>Most developers have to interact with databases at some point, and therefore need to know at least a little bit about them, but probably don&apos;t have much training or experience in that area. I&apos;ve worked with databases for over 25 years because I love them so much, but I&apos;m aware that most people don&apos;t feel the same way! 

As a Python developer, you probably just want the database to quietly do its thing in the background so you can concentrate on coding. That seems like a reasonable request. But the world of databases is changing. The traditional DBA role is becoming less common, and developers are increasingly expected to manage their own databases. 

So let&apos;s talk about what you actually need to know about databases. You should come away reassured that, although it helps to have a smattering of database knowledge, you don&apos;t need to be a database expert. We&apos;ll explore the minimum that you *do* need to know, and look at where you can find more information or help when you need it.

I don&apos;t expect to turn everyone into a database enthusiast, but I hope I can share some of my love of databases with you along the way.</abstract>
                <slug>europython-2026-91663-how-much-do-you-really-need-to-know-about-databases</slug>
                <track>~ None of these topics</track>
                
                <persons>
                    <person id='91776'>Karen Jex</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/X3ENDU/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/X3ENDU/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Poster Hall A' guid='e8af958f-628b-5e5d-95e1-a6c40c2b8afa'>
            <event guid='6cefb363-40fc-5577-85eb-c56a8f33959f' id='88675' code='PRGGNW'>
                <room>Poster Hall A</room>
                <title>A tour of the module `itertools`</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2026-07-15T12:50:00+02:00</date>
                <start>12:50</start>
                <duration>01:00</duration>
                <abstract>This poster will take you on a tour of the 20 functions available in the module `itertools`, showing you how they work, how they interact with each other, and how they relate to each other.

By the time you&apos;re done reading the poster, you&apos;ll have an increased understanding of how to use the module `itertools` efficiently and effectively.</abstract>
                <slug>europython-2026-88675-a-tour-of-the-module-itertools</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='89253'>Rodrigo Gir&#227;o Serr&#227;o</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/PRGGNW/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/PRGGNW/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Poster Hall B' guid='3d4ca438-5ac7-5979-a7a3-20cdbf3dafd1'>
            <event guid='a19b46dc-daa1-5c1e-a481-d3ce8f8a732a' id='91607' code='LNVDY3'>
                <room>Poster Hall B</room>
                <title>Django TDD Patterns: A Visual Field Guide</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2026-07-15T12:50:00+02:00</date>
                <start>12:50</start>
                <duration>01:00</duration>
                <abstract>Most Django testing tutorials stop at &quot;write a test, make it pass, refactor.&quot; But real-world Django applications have complex model relationships, permission systems, third-party API integrations, and asynchronous task chains that demand more sophisticated testing strategies. After delivering a hands-on TDD workshop at DjangoCon US 2023 and applying these patterns across multiple production Django codebases, I&apos;ve identified a set of recurring testing patterns and anti-patterns that significantly impact both test reliability and developer productivity.

This poster presents a visual field guide to practical TDD patterns in Django, organized as a decision-tree poster that developers can reference when writing tests for their own projects.

**Section 1 &#8212; The Factory Pattern Taxonomy.** A visual decision tree for choosing the right `factory_boy` strategy based on your model structure. When to use `SubFactory` vs. `RelatedFactory` vs. `LazyAttribute` for foreign keys, how to handle circular relationships without creating test data explosions, and the `create` vs. `build` vs. `build_batch` decision that controls whether you hit the database. Annotated with `faker` provider selection for generating realistic test data that keeps test failure messages readable.

**Section 2 &#8212; Testing Permission Layers Without Drowning in Fixtures.** Django apps often have three or more permission layers: model-level, view-level, and object-level (via packages like `django-guardian` or row-level security). This section shows a visual matrix for structuring permission tests: one axis for user roles, one for resources, and a clear pattern for generating all combinations using parameterized tests with `pytest.mark.parametrize` and factory traits. Instead of writing 30 separate test functions, you write one parameterized test with a role-resource matrix.

**Section 3 &#8212; The Mock Boundary Diagram.** A flowchart showing where to place mocking boundaries in a Django request lifecycle. The poster illustrates the difference between mocking at the view level, the service layer, and the adapter/client level &#8212; and why mocking too deep creates brittle tests while mocking too shallow creates slow ones. Includes a decision rule: &quot;Mock at the boundary where your code meets code you don&apos;t own.&quot;

**Section 4 &#8212; Common Anti-Patterns and Fixes.** A visual rogues&apos; gallery of the five most common Django testing anti-patterns with before/after code comparisons: test database leaks from missing `TransactionTestCase`, over-mocking that tests implementation instead of behavior, fixture files that nobody can maintain, test ordering dependencies, and the &quot;God factory&quot; that creates half the database for every test.

Visitors will gain a practical decision framework for structuring Django tests, rather than just knowledge of individual testing tools. The patterns are tool-agnostic at their core (though examples use `pytest-django`, `factory_boy`, and `faker`) and apply to any Django project.</abstract>
                <slug>europython-2026-91607-django-tdd-patterns-a-visual-field-guide</slug>
                <track>Testing, Quality Assurance, Security</track>
                
                <persons>
                    <person id='91728'>Kuldeep Pisda</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/LNVDY3/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/LNVDY3/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Poster Hall C' guid='a2ed4948-2605-5bec-8374-42596e7a73a6'>
            <event guid='62587e02-22dc-5627-ba28-9a2cffe940fa' id='90066' code='33RGZA'>
                <room>Poster Hall C</room>
                <title>Heuristic-Rule Based Model for Packet Loss Inference in IIoT Networks</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2026-07-15T12:50:00+02:00</date>
                <start>12:50</start>
                <duration>01:00</duration>
                <abstract>IIoT Networks&apos; performance is significantly impacted by packet losses in the network, which is the failure of data packets in reaching their intended destination within the network. Most of the transmission control protocol versions reduce the rate of transmission during the detection of packet losses, assuming network congestion and interference, thus resulting in operational disruption, reduced efficiency, data integrity failure and economic impact.
However, not all packet losses are due to congestions and interference, some happen based on link issues from wireless which are seen as non-congestive packet losses as most transmission control protocol (TCP) modifications reduce the rate of transmission when these losses are detected while assuming network congestion, so TCP could not at present distinguish among these types of packet losses and reduces the rate of transmission irrespective of the types thus resulting in lower throughput for IIoT networks clients.   
In addressing this issue, a heuristic-rule-based machine learning model was used for packet loss identification, classification, and prediction to differentiate between the types of packet losses at the IIoT network hosts&#8217; end. The result shows that Random Forest performs better based on the rule, giving a hopeful resolution to an enhanced IIoT network&apos;s performance.</abstract>
                <slug>europython-2026-90066-heuristic-rule-based-model-for-packet-loss-inference-in-iiot-networks</slug>
                <track>Machine Learning: Research &amp; Applications</track>
                
                <persons>
                    <person id='90403'>Oladapo Kayode Abiodun</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/33RGZA/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/33RGZA/feedback/</feedback_url>
            </event>
            
        </room>
        
    </day>
    <day index='4' date='2026-07-16' start='2026-07-16T04:00:00+02:00' end='2026-07-17T03:59:00+02:00'>
        <room name='S1' guid='69560a5f-0132-5ac8-99b7-5a62a108ff23'>
            <event guid='e5e8fee8-121c-54d1-a29c-20908e1b0f5e' id='97550' code='QDCP3K'>
                <room>S1</room>
                <title>Thursday Registration &amp; Welcome @ TBD</title>
                <subtitle></subtitle>
                <type>Announcements</type>
                <date>2026-07-16T08:00:00+02:00</date>
                <start>08:00</start>
                <duration>01:00</duration>
                <abstract>Welcome to EuroPython 2026! Please notice the registration will happen on the TBD.
You can pick up your badges at any time during the week as long as we are open!
If you want to avoid the morning rush on Wednesday, come on Monday and Tuesday!

We hope to see you around!</abstract>
                <slug>europython-2026-97550-thursday-registration-welcome-tbd</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/QDCP3K/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/QDCP3K/feedback/</feedback_url>
            </event>
            <event guid='4144e431-c80a-5a90-a0cd-c671331b86ba' id='97551' code='DSHNXM'>
                <room>S1</room>
                <title>Thursday&apos;s Morning Announcement &#9200;</title>
                <subtitle></subtitle>
                <type>Announcements</type>
                <date>2026-07-16T09:00:00+02:00</date>
                <start>09:00</start>
                <duration>00:15</duration>
                <abstract>Welcome to the second day of conference!
Yesterday was an amazing day, but for sure you don&apos;t remember all the things that were mentioned during the opening.
Join us to get an update and few more announcements. Come by and find out what is going to happen today.</abstract>
                <slug>europython-2026-97551-thursday-s-morning-announcement</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/DSHNXM/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/DSHNXM/feedback/</feedback_url>
            </event>
            <event guid='837d12ad-7d51-54db-86a5-eff409d90673' id='100189' code='PEJ9RY'>
                <room>S1</room>
                <title>The Pursuit Of Purity (The Right Way To Do AI)</title>
                <subtitle></subtitle>
                <type>Keynote</type>
                <date>2026-07-16T09:20:00+02:00</date>
                <start>09:20</start>
                <duration>00:45</duration>
                <abstract>Python now powers nearly half of all new AI repositories (State of the Octoverse Report 2025.) It is the most used language for Applied AI work, from training and inference to orchestration and deployment. Regardless of its popularity in the space, AI has caused a significant divide within the Python community. Many Pythonistas believe it should not be used at all, while others are excited about its potential to increase their output. As developers, we also find ourselves reluctantly at the frontier, being told our jobs are at risk, while simultaneously being pushed to use AI to make us more productive. In this talk we&apos;ll explore all of these themes and try to understand the &apos;right way&apos; to do AI.</abstract>
                <slug>europython-2026-100189-the-pursuit-of-purity-the-right-way-to-do-ai</slug>
                <track>~ None of these topics</track>
                
                <persons>
                    <person id='99559'>Marlene Mhangami</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/PEJ9RY/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/PEJ9RY/feedback/</feedback_url>
            </event>
            <event guid='2bfeaf93-613f-56cf-b592-09475c552b4a' id='100641' code='YUGHSW'>
                <room>S1</room>
                <title>Python Steering Council Update</title>
                <subtitle></subtitle>
                <type>Panel</type>
                <date>2026-07-16T10:05:00+02:00</date>
                <start>10:05</start>
                <duration>00:25</duration>
                <abstract>The Python Steering Council is a 5-person elected committee that assumes a mandate to maintain the quality and stability of the Python language and CPython interpreter, improve the contributor experience, formalize and maintain a relationship between the Python core team and the PSF, establish decision making processes for Python Enhancement Proposals, seek consensus among contributors and the Python core team, and resolve decisions and disputes in decision making among the language.</abstract>
                <slug>europython-2026-100641-python-steering-council-update</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/YUGHSW/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/YUGHSW/feedback/</feedback_url>
            </event>
            <event guid='c9d7952b-4eb3-51b6-b68f-795b1d129e1a' id='91042' code='TZHTEE'>
                <room>S1</room>
                <title>Navigating waters of background jobs and queues in Python as of 2026</title>
                <subtitle></subtitle>
                <type>Talk (long session)</type>
                <date>2026-07-16T10:50:00+02:00</date>
                <start>10:50</start>
                <duration>00:45</duration>
                <abstract>Should you use Kafka or RabbitMQ? Which Python library is the right fit? Is Celery still alive and kicking in 2026, or has Temporal taken over the world while we weren&apos;t watching? Perhaps we should all migrate to FastStream&#8212;or are the native background tasks in your web framework all you really need?

There have never been so many possibilities when choosing how to queue and distribute work. This talk provides a comprehensive comparison of the modern Python ecosystem. We will explore where each tool shines, how they perform under pressure, and&#8212;crucially&#8212;when a specific tool is a poor match and should be avoided.

Using two real-world case studies, we will showcase the capabilities of each library. You will be able to evaluate the developer experience and how debugging works for each solution. You&#8217;ll walk out with an ultimate decision chart, equipped to choose the perfect stack for your next project.</abstract>
                <slug>europython-2026-91042-navigating-waters-of-background-jobs-and-queues-in-python-as-of-2026</slug>
                <track>Web Development, Web APIs, Front-End Integration</track>
                
                <persons>
                    <person id='90974'>Sebastian Buczy&#324;ski</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/TZHTEE/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/TZHTEE/feedback/</feedback_url>
            </event>
            <event guid='8635f666-200b-55eb-b692-3b9dba9bb711' id='90788' code='G9FDRY'>
                <room>S1</room>
                <title>Args: Amazing or Approaching?</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T11:45:00+02:00</date>
                <start>11:45</start>
                <duration>00:30</duration>
                <abstract>From default args, to `**kwargs`, and everything in-between, Python&apos;s comprehensive argument system lends itself to some of the most effective code, through encouraging readability, reuse, and easy refactoring.

But is that really true? Why, and why not?
What could we learn from other languages?
And what else could lie in their future?

---

In this session, we&apos;ll give a rundown of Python&apos;s comprehensive function argument system and how its features allow for safety, conciseness, and expressiveness (whether you&apos;re calling or writing functions).

We&apos;ll then give examples for where that system lacks, where it could bite you, and give suggestions for what more could be done on Python code to fix those limitations.</abstract>
                <slug>europython-2026-90788-args-amazing-or-approaching</slug>
                <track>Tooling, Packaging, Developer Productivity</track>
                
                <persons>
                    <person id='90989'>Evan Kohilas</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/G9FDRY/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/G9FDRY/feedback/</feedback_url>
            </event>
            <event guid='3d85365d-e38c-5187-90cc-947eed83a24d' id='91116' code='GEJAQW'>
                <room>S1</room>
                <title>Immutability: Fast and Safe sharing of Data across Subinterpreters</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T12:25:00+02:00</date>
                <start>12:25</start>
                <duration>00:30</duration>
                <abstract>Python supports parallelism through multiple sub-interpreters. Parallelism though sub-interpreters avoid the restrictions of a single GIL, and isolating parallel processes from each other is safe from data-races. The downside is that subinterpreter isolation comes with a high cost: sending objects across sub-interpreters typically involves pickling and copying which has negative impact on performance with both CPU and memory overheads. This talk is about [PEP795](https://pep-previews--4468.org.readthedocs.build/pep-0795/) which adds immutability to Python, which permits sub-interpreters to transfer and share immutable objects directly by reference. 

We will present the design and rationale for immutability in Python, the API for creating and managing immutable state, decorators for communicating immutability in code, as well as opting out of immutability where necessary. We will also discuss our prototype implementation on-top of Python 3.15, and demonstrate how immutable sharing across sub-interpreters improves performance, and compare the speed of freezing (the act of making objects immutable) to pickling and unpickling. 

Attendees will learn:

* About the semantics of immutability in Python, and what are the challenges of designing immutability to support sharing across sub-interpreters.
* When immutability can improve performance and predictability in concurrent Python.
* How freezing works for built-in types, user&#8209;defined types and functions, and how it interacts with sub-interpreters.
* Performance of pickling vs. immutable sharing, with numbers and failure modes.
* Current limitations of immutability, risks, and what would need to land in CPython for this to be widely usable. Target audience: programmers interested in concurrent programming in Python.
    

Note: This PEP is not yet accepted; the talk focuses on design, prototype results, and open questions.</abstract>
                <slug>europython-2026-91116-immutability-fast-and-safe-sharing-of-data-across-subinterpreters</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='91366'>Fridtjof Stoldt</person><person id='91450'>Tobias Wrigstad</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/GEJAQW/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/GEJAQW/feedback/</feedback_url>
            </event>
            <event guid='4a99e13b-6bbe-5941-93f1-5e4be321721e' id='91444' code='VKURLV'>
                <room>S1</room>
                <title>Python Dicts: Past, Present, and Free-Threaded Future</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T13:05:00+02:00</date>
                <start>13:05</start>
                <duration>00:30</duration>
                <abstract>Python dicts are everywhere! They back module namespaces, instance attributes, **kwargs, and of course actual dictionaries. But have you ever wondered how they work under the hood? And more importantly, what happens to them now that free-threaded Python is here?

In this talk, we&apos;ll start by exploring the internals of CPython&apos;s dict implementation: how hashing works, the compact table layout that gives you insertion order, and how lookups, insertions, and deletions actually play out in memory. Then we&apos;ll see what had to change for free-threading: how reads remain fast without acquiring locks, what the per-object lock is and when it kicks in, and why making a dict thread-safe is harder than it sounds.

Finally, we&apos;ll look at the ongoing effort to document CPython&apos;s thread-safety guarantees for built-in types and what the resulting documentation means for a Python developer writing concurrent code.

The audience will leave with a deep understanding of how Python&apos;s most important data structure works, how it&apos;s been adapted for a free-threaded world, and what they can (or can&apos;t) safely do with dicts across threads.</abstract>
                <slug>europython-2026-91444-python-dicts-past-present-and-free-threaded-future</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='91542'>Lysandros Nikolaou</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/VKURLV/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/VKURLV/feedback/</feedback_url>
            </event>
            <event guid='cf66ff00-79b0-5dc1-800a-692cf45f9857' id='90769' code='NXNHSB'>
                <room>S1</room>
                <title>Anatomy of a Phishing Campaign</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>In July 2025, PyPI users received emails directing them to pypj.org&#8212;a near-perfect clone transparently proxying requests to pypi.org. Within hours, attackers compromised four accounts and uploaded malicious releases of the popular num2words package.

This talk dissects the complete attack chain: how attackers harvested email addresses from public package metadata, built a transparent proxy that relayed TOTP codes in real-time, and why traditional 2FA failed while WebAuthn-based authentication stopped the attack cold.

The session covers the incident response timeline, challenges getting malicious infrastructure taken down (including initial rejection of abuse reports), and defensive measures deployed afterward&#8212;including new email verification for TOTP logins from unrecognized devices.

Attendees will learn exactly how modern phishing attacks work against package repositories, the critical difference between &quot;phishable&quot; and &quot;phishing-resistant&quot; 2FA, and practical steps to protect accounts and packages from the next campaign. The talk also examines the September 2025 follow-up campaign targeting pypi-mirror.org and patterns across these ongoing attacks.</abstract>
                <slug>europython-2026-90769-anatomy-of-a-phishing-campaign</slug>
                <track>Testing, Quality Assurance, Security</track>
                
                <persons>
                    <person id='91075'>Mike Fiedler</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/NXNHSB/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/NXNHSB/feedback/</feedback_url>
            </event>
            <event guid='ef78356a-4860-5258-a991-cfc475dc5669' id='90952' code='TAZHCD'>
                <room>S1</room>
                <title>Climbing the Pyramid: Behind the Scenes of the Python Package Index</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T15:10:00+02:00</date>
                <start>15:10</start>
                <duration>00:30</duration>
                <abstract>The Python Packaging Index or PyPI, is used by over a million users. But what is behind the scenes of PyPI? PyPI is currently powered by Warehouse, a software built using Pyramid, a Python web framework. This talk explores Pyramid through the lens of a beginner&#8217;s mindset and will lead the audience through the ins and outs of this Python web framework, its utility, and why it still holds its own and stands strong (like a pyramid!) among other comparable web frameworks.</abstract>
                <slug>europython-2026-90952-climbing-the-pyramid-behind-the-scenes-of-the-python-package-index</slug>
                <track>Web Development, Web APIs, Front-End Integration</track>
                
                <persons>
                    <person id='91232'>Maria Ashna</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/TAZHCD/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/TAZHCD/feedback/</feedback_url>
            </event>
            <event guid='3c42533e-b004-54f6-984f-b98ac48bb1c1' id='89990' code='9JALSN'>
                <room>S1</room>
                <title>Learning from the not-so-secret Python security &quot;cabal&quot;</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>00:30</duration>
                <abstract>The CPython runtime is some of the most-used software in the world. Part of maintaining a secure software project like CPython is participating in coordinated vulnerability disclosure (CVD). This process allows security researchers and maintainers of projects to work together to fix vulnerabilities and alert the public, keeping all Python programmers and users safe.

In this talk attendees will learn about how the Python language organizes its security team, how to balance security and open source contribution in coordinated vulnerability disclosure, and the latest in how open source projects can maintain a sustainable vulnerability disclosure program. Attendees that aren&#8217;t currently contributing to open source projects, but have an interest in their dependencies being secure, will learn ways they can contribute meaningfully to the security of open source projects they depend on.</abstract>
                <slug>europython-2026-89990-learning-from-the-not-so-secret-python-security-cabal</slug>
                <track>Testing, Quality Assurance, Security</track>
                
                <persons>
                    <person id='90115'>Seth Michael Larson</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/9JALSN/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/9JALSN/feedback/</feedback_url>
            </event>
            <event guid='5f88d0ba-2585-5021-9af5-968dfcde17f1' id='96941' code='BDUAKE'>
                <room>S1</room>
                <title>Keynote 4 - Placeholder</title>
                <subtitle></subtitle>
                <type>Keynote</type>
                <date>2026-07-16T16:40:00+02:00</date>
                <start>16:40</start>
                <duration>00:45</duration>
                <abstract>&quot;TBD: Keynote Speaker&quot;
Details coming soon. This prime session will feature an inspiring keynote address to set the tone for the entire event. Our team is finalizing an exceptional speaker whose insights and vision will leave a lasting impression. Check back shortly for the full announcement, topic, and speaker biography.</abstract>
                <slug>europython-2026-96941-keynote-4-placeholder</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/BDUAKE/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/BDUAKE/feedback/</feedback_url>
            </event>
            <event guid='0014970b-4a19-5c1e-8674-994026de34d9' id='97553' code='DJU8GK'>
                <room>S1</room>
                <title>Lightning talks &#9889; Thursday</title>
                <subtitle></subtitle>
                <type>Lightning Talk</type>
                <date>2026-07-16T17:25:00+02:00</date>
                <start>17:25</start>
                <duration>00:45</duration>
                <abstract>Enjoy Thursday&apos;s lightning talks!
A series of short community/conference announcements followed by short talks about everything by everyone. 

Lightning talks are 5 minute talks that anyone participating at the conference can submit.
If that talk gets selected, you will have the chance to jump into the main stage and show us your project, your ideas, something you have learned, something you are proud of that&apos;s helping and contributing to our conference and community, or something else!

Lightning talks last a maximum of 5 minutes. You can use less time, but not more.
This time limit is strictly enforced!

If you get accepted, you will be notified by email on the day of your talk by 1pm.
Reply to the acceptance email by 3pm to confirm your spot.
(If you don&apos;t, you lose your spot!)

You can submit your lightning talk on this form: TBD
Note that there&apos;s a limit of one submission per person.

Community/conference announcement submissions are done through the same form before 1pm Thursday.</abstract>
                <slug>europython-2026-97553-lightning-talks-thursday</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/DJU8GK/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/DJU8GK/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='S2' guid='d3c8c403-7131-5705-ad97-7cd3d40cef9b'>
            <event guid='a0a5c51b-07aa-5d7c-9cba-2f45a95177d6' id='91610' code='UGM7F8'>
                <room>S2</room>
                <title>The Hidden Cost of Complexity: Reducing Cognitive Load in Python</title>
                <subtitle></subtitle>
                <type>Talk (long session)</type>
                <date>2026-07-16T10:50:00+02:00</date>
                <start>10:50</start>
                <duration>00:45</duration>
                <abstract>Some codebases let you ship a change in minutes. Others turn a one-line fix into weeks of investigation.

The difference is often not skill, tooling, or even architecture&#8212;it&#8217;s cognitive load.

In this talk, we&#8217;ll look at real examples from long-lived Python systems to understand how inheritance, deep nesting, excessive abstraction, microservices, and over-applied DRY silently increase the cost of change.

You&#8217;ll learn practical heuristics to recognize high cognitive load early and concrete strategies to reduce it&#8212;so your team can move faster without rewriting everything.

This is a pragmatic engineering talk for developers who work in real production code, not greenfield demos.</abstract>
                <slug>europython-2026-91610-the-hidden-cost-of-complexity-reducing-cognitive-load-in-python</slug>
                <track>Tooling, Packaging, Developer Productivity</track>
                
                <persons>
                    <person id='91729'>Jaros&#322;aw &#346;mietanka</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/UGM7F8/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/UGM7F8/feedback/</feedback_url>
            </event>
            <event guid='b3f7c433-65e4-5a57-a298-94aadcf6609f' id='89197' code='DWGSFA'>
                <room>S2</room>
                <title>From Pixels to Insights: Python for Earth Observation</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T11:45:00+02:00</date>
                <start>11:45</start>
                <duration>00:30</duration>
                <abstract>Due to climate change, **large wildfires** continue affecting all continents of the Earth, leading to forest loss and exacerbating environmental impacts. Even more, current changing weather conditions associated with global warming will further increase fire danger to a global extent. Investigating these phenomena in a data-driven manner helps in decision making in pre-intervention and post-restoration following wildfire events. **Satellites** orbiting Earth can offer critical insights by capturing detailed images of the planet&#8217;s surface. Utilizing this data, environmental scientists perform detailed assessments to monitor an ecosystem&#8217;s loss and post-restoration progress. However, data from satellites arrive in the form of millions of raw pixels and turning them into analysis ready products is a **time-consuming** task full of **multi-step** and **error-prone** processes.

This talk introduces an end-to-end Python workflow to automate the processing of **Earth Observation (EO) data**. The presentation walks through pixels to insights showcasing a real example and highlighting both the power of automation in the field of remote sensing and the importance of EO data in **climate change monitoring**. After the session, the audience will understand how utilizing open Python packages such as **Rasterio** and **NumPy** with openly distributed data from the [European Space Agency&#8217;s Sentinel-2 mission](https://dataspace.copernicus.eu/data-collections/copernicus-sentinel-missions/sentinel-2) can lead us quickly into crucial and spatially meaningful information. Although the demonstration focuses on wildfire events, the automated workflow is broadly applicable to other environmental fields such as land cover change detection, hydrological assessments and coastal studies.

**No prior knowledge is required**! The **goal** is not to delve into complex mathematical equations, but to showcase the power of automation in remote sensing with Python.</abstract>
                <slug>europython-2026-89197-from-pixels-to-insights-python-for-earth-observation</slug>
                <track>Jupyter and Scientific Python</track>
                
                <persons>
                    <person id='89684'>ELENI TOKMAKTSI</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/DWGSFA/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/DWGSFA/feedback/</feedback_url>
            </event>
            <event guid='12406aa9-62ce-51ed-9a74-2eff3ba22854' id='91463' code='LN7EF3'>
                <room>S2</room>
                <title>Python Games in the Browser: Teaching with WebAssembly</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T12:25:00+02:00</date>
                <start>12:25</start>
                <duration>00:30</duration>
                <abstract>This talk explores how **Python games can run entirely in the browser using WebAssembly (WASM)** and how they can also be **written and modified directly in the browser using Python itself**.

Rather than treating the browser as a mere deployment target, this talk presents it as the **primary learning environment**. Learners interact with a browser-embedded code editor where they write Python code that directly controls and modifies a game, which is also implemented in Python. This creates a zero-install, highly interactive learning experience where Python concepts are introduced through familiar game mechanics instead of traditional REPLs or slide-based instruction.

The focus of this talk is **not on building a game engine**, but on how **educators and instructors** can leverage **WASM to safely run Python in the browser for teaching purposes**. The talk introduces a tool I built that enables instructors to design browser-based Python tutorials using common game concepts such as scenery, sprites, and swatches, making it easier to create engaging, game-driven learning content.

The talk covers:
- How Python can be executed in the browser using WebAssembly
- A comparison of **Pyodide vs. pyscript**, highlighting their benefits and limitations in educational contexts
- How browser-based execution changes assumptions around security, isolation, and infrastructure
In the latter part of the talk, this approach is packaged as an **XBlock**, the modular unit used to build courses in **Open edX**. This demonstrates how WASM-based Python execution can be integrated into large-scale learning platforms and how it compares to traditional server-side execution models such as **CodeJail**, highlighting improvements in safety, reduced infrastructure complexity, and an improved learner experience.

**WebAssembly enables a new class of interactive, game-based Python learning experiences** that run securely and entirely in the browser, without requiring local setup or server-side code execution.</abstract>
                <slug>europython-2026-91463-python-games-in-the-browser-teaching-with-webassembly</slug>
                <track>Community Building, Education, Outreach</track>
                
                <persons>
                    <person id='90836'>Farhaan Bukhsh</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/LN7EF3/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/LN7EF3/feedback/</feedback_url>
            </event>
            <event guid='b5229348-8d81-5eca-a656-3c84a8d43b53' id='91351' code='BMQP7J'>
                <room>S2</room>
                <title>Building a Smart Home Device with MicroPython</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T13:05:00+02:00</date>
                <start>13:05</start>
                <duration>00:30</duration>
                <abstract>Your smart home is a wireless network of connected devices which all talk to each other by sending messages into a central hub. If you control the hub&apos;s messaging queue, you can control and monitor the network and even create your own custom devices that end up visible in services like Apple or Google Home.

In this talk I will show you what it takes to create such a custom device using an affordable ESP32 microcontroller running MicroPython. We&apos;ll briefly look at the capabilities of the ESP32 family and why it is a good choice for WiFi-enabled projects. We&apos;ll talk about the tooling that makes development a pleasure, from flashing firmware to interacting with the board using WebREPL, installing lightweight dependencies with mip, testing, logging, and more.

We will also discuss the MQTT protocol, how our custom devices can send and receive messages, how to integrate third-party Zigbee devices, and how to use Home Assistant as a bridge between our MQTT server and Apple or Google Home. We&apos;ll see how to use the Mosquitto broker and client tools such as  paho.mqtt and how Zigbee2MQTT allows remote sensors to join the same messaging layer.

My goal is to give a practical overview of the hardware and software pieces involved: ESP32, MicroPython tooling, MQTT infrastructure, Zigbee integration, and Home Assistant bridging. If you are comfortable with Python and curious about embedded systems, this talk is for you.</abstract>
                <slug>europython-2026-91351-building-a-smart-home-device-with-micropython</slug>
                <track>IoT, Embedded Systems, Hardware Integration</track>
                
                <persons>
                    <person id='91739'>Micha&#322; Karzy&#324;ski</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/BMQP7J/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/BMQP7J/feedback/</feedback_url>
            </event>
            <event guid='9f83dcda-aa55-5a24-9d7a-9ecabfeeea33' id='101791' code='GRCJRZ'>
                <room>S2</room>
                <title>CPython Panel</title>
                <subtitle></subtitle>
                <type>Panel</type>
                <date>2026-07-16T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>01:00</duration>
                <abstract>Python has been evolving very rapidly in the last few years, and this is because new ideas have been taking over the Core Development. New ideas require new people, a new background and lots of energy.

This panel aims for the people to be aware of the changes that are coming in 3.15 and future versions, as well as ways people can contribute by testing features, fixing issues, or even sharing their own ideas.

* Hosts: TBD
* Panelists:
    * TBD</abstract>
                <slug>europython-2026-101791-cpython-panel</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/GRCJRZ/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/GRCJRZ/feedback/</feedback_url>
            </event>
            <event guid='f0c234ca-5867-52f4-8bd6-cb110aa693be' id='91516' code='UY9UAG'>
                <room>S2</room>
                <title>Binary Dependencies: Identifying the Hidden Packages We All Depend On</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>00:30</duration>
                <abstract>Package manifests like `pyproject.toml` record source-level dependencies: _pandas_ depends on _numpy_&apos;s code. The story is different for binary dependencies, which exist whenever compiled code, like C code, is called from Python. _numpy_ depends on _OpenBLAS_&apos;s binaries, but this dependency relationship is not recorded anywhere. This makes _OpenBLAS_ a _[phantom](https://www.endorlabs.com/learn/dependency-resolution-in-python-beware-the-phantom-dependency) binary dependency_.

Phantom dependencies are therefore hidden from programmers and researchers, which is bad for at least two reasons.

First, security. If one of your binary dependencies has a vulnerability, this means your project is probably also vulnerable &#8212; but you won&apos;t reliably find out about this, since your dependency is invisible.

Secondly, sustainability. If we can&apos;t keep track of our binary dependencies, we can&apos;t keep track of their maintainers either, which means we can&apos;t credit and [financially support](https://opensourcepledge.com/) them. This can lead to [maintainer burnout](https://opensourcepledge.com/blog/burnout-in-open-source-a-structural-problem-we-can-fix-together/), which has already created serious supply chain issues.

Python is not only tremendously popular, but also valued for its ability to easily interface with compiled libraries. According to my research, around 20% of Python packages have binary dependencies.

This means that the problem of phantom binary dependencies is widespread, and puts the public at risk of harm, eg if critical infrastructure like hospitals or transportation is compromised by exploiting the aforementioned weaknesses.

I aim to describe how the problem of phantom binary dependencies can be fixed within the Python ecosystem, and demo some of my preliminary work.

First, binary dependencies must be identified. Tools like _[auditwheel](https://github.com/pypa/auditwheel/)_ and _[elfdeps](https://github.com/python-wheel-build/elfdeps/)_ are able to identify a project&apos;s [required dynamic libraries](https://vlad.website/how-binary-dependencies-work/). If we create better APIs for these tools, and integrate them with package managers such as _pip_ and _uv_, we can give developers and researchers visibility into binary dependencies, dispelling the phantom.

Beyond this, standards like [PEP 725](https://peps.python.org/pep-0725/), [PEP 770](https://peps.python.org/pep-0770/) and [PEP 804](https://peps.python.org/pep-0804/) specify how we might record binary dependency relationships in an easily accessible way. I&apos;ll explain how we can build on these standards to create tools that will allow users and researchers to explore binary dependencies and identify security issues by default.

Lastly, I want to talk about the road towards the ultimate aim of having binary dependencies be managed not by Python package managers, but by system package managers, as they should be. This will require interoperation between package managers, and I&apos;ll explain how this might work.</abstract>
                <slug>europython-2026-91516-binary-dependencies-identifying-the-hidden-packages-we-all-depend-on</slug>
                <track>Tooling, Packaging, Developer Productivity</track>
                
                <persons>
                    <person id='91670'>Vlad-Stefan Harbuz</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/UY9UAG/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/UY9UAG/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='S4' guid='f458b6fb-5c85-511c-870e-76b00bae6031'>
            <event guid='c181a655-27cb-5422-9be5-5157b1493bdf' id='90755' code='788XZA'>
                <room>S4</room>
                <title>From one to 1 million packet/second: scaling global Internet monitoring</title>
                <subtitle></subtitle>
                <type>Talk (long session)</type>
                <date>2026-07-16T10:50:00+02:00</date>
                <start>10:50</start>
                <duration>00:45</duration>
                <abstract>This is the real story about the design, benchmark, tuning and operation of a 24x7 multi-tenant network monitoring platform, that started out at only 1 packet/second, but then with the power of Python it scaled to 1 million packet/second.

It is like an high performance version of ICMP ping and mtr/traceroute, supports dualstack IP v4/v6, and runs 24x7 on a set of probing nodes distributed Worldwide.

Each ICMP packet needs to be scheduled, crafted, sent, analyzed and stored for query in near-time.

To make things harder, the probing platform has been designed and tuned to use the least amount of resources as CPU, memory and storage, in order to run on cheap burstable cloud instances.

Python is used everywhere: packet scheduling, generate randomized ICMP packets, send them via RAW sockets, and match results from probing.

Probing results are then pushed to ClickHouse in near-time, and visualized via Grafana.

And rest assured that every packet counts.

Some of the concept explored during the talk:
- ICMP protocol, BGP protocol, routing table
- ping, mtr/traceroute
- RAW socket in Python, crafting ICMP packets
- tcpdump, PCAP dump file
- msgpack, zstd compression
- object storage
- Apache Parquet as optimized data storage format
- near-time batch and streaming data workflow
- performance profiling and tuning
- Python vs PyPy performance comparison
- monitoring of the monitor: probing node performance monitoring</abstract>
                <slug>europython-2026-90755-from-one-to-1-million-packet-second-scaling-global-internet-monitoring</slug>
                <track>DevOps, Cloud, Scalable Infrastructure</track>
                
                <persons>
                    <person id='91055'>Marco Grossi</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/788XZA/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/788XZA/feedback/</feedback_url>
            </event>
            <event guid='39c3bb06-03c8-5763-bc3b-7681a3b28bd7' id='91619' code='RC7ALD'>
                <room>S4</room>
                <title>No More &#8220;It Works on My Notebook&#8221;!: From Notebook to Production-Ready Model</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T11:45:00+02:00</date>
                <start>11:45</start>
                <duration>00:30</duration>
                <abstract>Deploying machine learning models should be predictable, repeatable, and auditable&#8212;not a leap of faith. This talk breaks the deployment lifecycle into clear, actionable steps and demonstrates pragmatic choices for containerization, serverless and platform-based deployments, monitoring, and scaling. It also introduces the Model Context Protocol MCP as a practical pattern for giving deployed models secure, auditable access to external data and tools. Attendees will leave with concrete patterns, a checklist to avoid common pitfalls, and reproducible workflows they can apply the next day to move models from experimentation into reliable production services.</abstract>
                <slug>europython-2026-91619-no-more-it-works-on-my-notebook-from-notebook-to-production-ready-model</slug>
                <track>DevOps, Cloud, Scalable Infrastructure</track>
                
                <persons>
                    <person id='91735'>Ariane Djeupang</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/RC7ALD/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/RC7ALD/feedback/</feedback_url>
            </event>
            <event guid='ed0255b4-762e-5f46-9721-07675485fc8a' id='90882' code='9MRVPM'>
                <room>S4</room>
                <title>Stop firefighting: practical observability for Python APIs, workers &amp; jobs</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T12:25:00+02:00</date>
                <start>12:25</start>
                <duration>00:30</duration>
                <abstract>Production has a special talent for turning &#8220;seems fine&#8221; into &#8220;why is everything on fire?&#8221; &#8212; usually because we&#8217;re missing signals. A service restarts and never becomes ready, a background worker silently stops consuming tasks, or a database gets overloaded and latency creeps up until downstream services (or customers) notice it first. These situations aren&#8217;t unsolvable &#8212; they&#8217;re preventable with the right signals in place.

I&#8217;ve seen how stressful this gets when a system is already in production, but there&#8217;s no clear guidance or shared &#8220;where to look first&#8221; playbook; so every incident starts with guesswork. Over time, we turned those lessons into a lightweight standard that replaces panic mode with a predictable investigation flow.

In this talk, I&#8217;ll share a practical, vendor-agnostic observability checklist for a Python setup with three cooperating workloads: an HTTP API, an event-driven worker, and a scheduled daily job. Each workload fails differently, so each requires a different set of signals to stay observable.

We&#8217;ll cover what &#8220;good enough&#8221; looks like for logging, metrics, tracing, and alerting: what to instrument first, what pitfalls to avoid, and how to design alerts that catch problems early without creating noise. You&#8217;ll leave with a concrete checklist and a phased rollout order you can apply to your own Python services &#8212; without rewriting your system or committing to a specific monitoring vendor.

## **Takeaways**
- A baseline observability checklist every service should have: health/readiness, logging with consistent context, core metrics, and alert routing
- Workload-specific signals: what to watch in APIs vs background workers vs scheduled jobs, and why one size doesn&#8217;t fit all
- Structured logging that works in production: a minimal event schema + contextual fields that speed up debugging
- Must-have alerts that prevent silent failures: service never becomes ready, worker stalls, scheduled job misses its run, sustained latency increase
- Where tracing adds value: when it&#8217;s worth the effort, what &#8220;minimal viable tracing&#8221; looks like, and what&#8217;s optional at the beginning
- A rollout sequence you can apply incrementally: what to do first, what to add later</abstract>
                <slug>europython-2026-90882-stop-firefighting-practical-observability-for-python-apis-workers-jobs</slug>
                <track>DevOps, Cloud, Scalable Infrastructure</track>
                
                <persons>
                    <person id='91184'>Daria Korsakova</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/9MRVPM/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/9MRVPM/feedback/</feedback_url>
            </event>
            <event guid='eb4deee7-6284-5e21-97a0-919a9846cac3' id='91376' code='MJTZ7A'>
                <room>S4</room>
                <title>The hidden cost of vibe coding</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T13:05:00+02:00</date>
                <start>13:05</start>
                <duration>00:30</duration>
                <abstract>Artificial intelligence has become deeply embedded in modern Python development workflows. From generating backend services to refactoring production systems, large language models now influence how software is designed, implemented, and shipped. While these tools offer significant productivity gains, many teams are discovering a less visible cost: code is increasingly produced faster than architectural decisions can be reviewed, validated, and governed.

In real production environments, particularly those built on distributed services, data pipelines, and cloud infrastructure, unstructured AI-driven development often leads to predictable outcomes. Teams encounter rising defect rates, fragile integrations, unclear system ownership, security regressions, and access control mistakes introduced by AI-generated code. Over time, these issues surface as service outages, compliance risks, lost clients, and escalating maintenance costs. The problem is not AI itself, but the absence of engineering structure around how it is used.

This talk examines why unsupervised &#8220;vibe coding&#8221; fails at scale and how development teams can adopt a disciplined, AI-assisted development model that improves both velocity and reliability. Drawing from real-world backend systems, I will present practical techniques for embedding AI across the Software Development Life Cycle &#8212; including structured design inputs, architecture validation, automated reviews, testing strategies, and continuous quality controls.

To ground the discussion in reality, the session includes a concrete production case study from a rapidly developed, AI-assisted Python system. Starting from access to a single project, I was able to traverse service boundaries and gain visibility into multiple cloud environments and internal repositories across both AWS and GCP. The root cause was not a single vulnerability, but a chain of small, AI-generated decisions: overly broad permissions, copied infrastructure patterns, missing ownership boundaries, and unreviewed assumptions propagated across services. The result was a system that appeared to move quickly, but ultimately required emergency remediation, delayed releases, and loss of trust.

The talk concludes by addressing a common misconception: a 50% increase in coding speed does not translate into 50% faster product delivery. Without governance, the opposite is often true.

The session is aimed at Python developers, technical leads, and architects responsible for production systems. Familiarity with Python backend development is recommended, but no prior experience with AI tooling is required.</abstract>
                <slug>europython-2026-91376-the-hidden-cost-of-vibe-coding</slug>
                <track>Community Building, Education, Outreach</track>
                
                <persons>
                    <person id='91571'>Sebastian Burzy&#324;ski</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/MJTZ7A/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/MJTZ7A/feedback/</feedback_url>
            </event>
            <event guid='766e5aec-7f25-5d7a-93fc-c7b337710af4' id='88756' code='PPQ3KE'>
                <room>S4</room>
                <title>Python on Serverless: Strategies for Peak Performance</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>We deployed Python in serverless environments and quickly saw the performance limits. Serverless systems suffer from startup latency, memory overhead, and repeated object creation as their executions start almost from scratch. Those extra seconds made our user experience painfully slow&#8212;and we couldn&#8217;t afford it.

We looked into the performance of our flight search engine, ran profilers, and applied optimizations. We found real gains when **tuning Python&#8217;s GC**, reducing **stop-the-world pauses**, and introducing an **asynchronous post-execution process** that runs after the handler returns. We reduced execution time from **1.2 seconds to 300 milliseconds&#8212;a 4&#215; speedup** with just a few tweaks.

Understanding **Python&#8217;s memory model** and its runtime behavior was essential, and it&#8217;s something we&#8217;ll dive into during the talk. What we share is based on **AWS Lambda**, but it can be applied to any short-lived Python system&#8212;whether serverless or containerized.

Another big gain came from replacing `Pydantic` with `TypedDict` for faster parsing, using **Redis** strategically to distribute operations, and restructuring code to eliminate duplicated transformations. Our web API processes thousands of flight offers&#8212;deserialize, enrich, transform&#8212;and every millisecond counts.

While covering optimization techniques, when they matter, and how we measured their impact, the main idea is that you will walk away with tactics that help your system stay fast while it grows.</abstract>
                <slug>europython-2026-88756-python-on-serverless-strategies-for-peak-performance</slug>
                <track>DevOps, Cloud, Scalable Infrastructure</track>
                
                <persons>
                    <person id='89336'>Alejandro Cabello Jim&#233;nez</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/PPQ3KE/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/PPQ3KE/feedback/</feedback_url>
            </event>
            <event guid='8d4f44de-5f68-5818-8e1a-4909d4f2a355' id='91575' code='NS8QQA'>
                <room>S4</room>
                <title>The Unseen Pull Request: The Crisis We Don&#8217;t Measure</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T15:10:00+02:00</date>
                <start>15:10</start>
                <duration>00:30</duration>
                <abstract>What holds open source together when the code is done? Recent research paints a worrying picture: 58% of open source maintainers have considered stepping back, and over two-thirds of OSS work is non-code labor: conflict mediation, mentoring, documentation, governance, and emotional labor.Most of it unpaid, invisible, and unrewarded. These pressures are disproportionately carried by community leads and underrepresented contributors.
As open source scales across companies, foundations, and global teams, outdated governance models built to manage code is today being asked to manage humans, and they&#8217;re failing or buckling under the weight of human complexity. We continue to optimise for commits while ignoring emotional load, collaboration friction, and psychological safety, the very factors that determine sustainability.

I&#8217;ve lived this tension as a Service Delivery Manager and community leader. I&#8217;ve helped build and sustain communities, but I&#8217;ve also reached the point of emotional exhaustion, questioning whether my unseen contributions mattered at all.

This talk argues that ignoring emotional labor is no longer neutral , it is actively harmful. We&#8217;ll explore how modern governance approaches, supported by AI-driven tooling such as sentiment analysis, workload dashboards, and governance bots, can surface invisible work, distribute responsibility more fairly, and prevent burnout before it becomes exit.If open source is to survive its own success, we must start treating its human systems with the same rigor as its technical ones.</abstract>
                <slug>europython-2026-91575-the-unseen-pull-request-the-crisis-we-don-t-measure</slug>
                <track>Community Building, Education, Outreach</track>
                
                <persons>
                    <person id='90078'>Lokko Joyce Dzifa</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/NS8QQA/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/NS8QQA/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='S3A' guid='81adc7d4-7479-5204-bb50-171fe63c4b34'>
            <event guid='f94fd158-e423-55a8-b6ea-40622fed61a4' id='91700' code='ETBPVR'>
                <room>S3A</room>
                <title>Localization Made Easy: A Pythonic Approach to Global Applications</title>
                <subtitle></subtitle>
                <type>Talk (long session)</type>
                <date>2026-07-16T10:50:00+02:00</date>
                <start>10:50</start>
                <duration>00:45</duration>
                <abstract>Scaling an application to a global audience often hits a bottleneck: the manual translation of thousands of strings. While machine translation exists, developers need a reliable way to integrate it into their codebases without breaking JSON structures or losing placeholders.

In this talk, we will explore a streamlined workflow to optimize the localization (l10n) process using Python and the DeepL API. We will walk through a real-world journey of transforming a single-language platform into a multi-language product, focusing on:

    The Localization Workflow: Designing a pipeline that extracts, translates, and reintegrates content automatically.

    Structure Preservation: Strategies to handle nested JSON files and complex data structures, ensuring that keys and code logic remain untouched while values are translated.

    Variable &amp; Context Integrity: How to protect placeholders and dynamic segments (like {count} or {date}) so they survive the translation process intact.

    Automated Batch Processing: Using Python scripts to iterate through entire project directories, enabling the translation of multiple files in a single execution.

Attendees will learn how to build a robust localization engine that acts as a &quot;first draft&quot; generator, allowing developers to focus on validating quality rather than managing strings.</abstract>
                <slug>europython-2026-91700-localization-made-easy-a-pythonic-approach-to-global-applications</slug>
                <track>Web Development, Web APIs, Front-End Integration</track>
                
                <persons>
                    <person id='91681'>Mario Garc&#237;a</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/ETBPVR/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/ETBPVR/feedback/</feedback_url>
            </event>
            <event guid='837a2eed-b0d0-513e-a91f-6778ee853be4' id='91576' code='JQSQBB'>
                <room>S3A</room>
                <title>An Introduction to Writing Fast GPU Code in Python</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T11:45:00+02:00</date>
                <start>11:45</start>
                <duration>00:30</duration>
                <abstract>GPUs power almost every modern Python workload in machine learning, vision, and scientific computing. Yet most Python developers treat GPUs like &#8220;faster CPUs&#8221; and hope frameworks will handle performance automatically.
That mental model is wrong and it is the main reason Python GPU code underperforms by orders of magnitude.

This introductory talk builds the correct mental model for writing fast GPU code in Python. We will explore how modern GPUs are structured, why global memory dominates execution time, and how to determine whether a kernel is compute-bound or memory-bound using the roofline model. Through concrete examples, attendees will see why naive parallel kernels fail to scale and which hardware-aware patterns; tiling, data reuse, and kernel fusion actually lead to speedups.

The session concludes with a practical look at how Python can express these ideas using Triton, showing how high-level code is compiled into PTX and how Python can approach near-CUDA performance when it respects hardware constraints.</abstract>
                <slug>europython-2026-91576-an-introduction-to-writing-fast-gpu-code-in-python</slug>
                <track>Machine Learning: Research &amp; Applications</track>
                
                <persons>
                    <person id='91710'>Abhik Sarkar</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/JQSQBB/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/JQSQBB/feedback/</feedback_url>
            </event>
            <event guid='de646717-df31-56f6-8382-50c3d88207e9' id='91569' code='JSLSHM'>
                <room>S3A</room>
                <title>GPU Programming in Pure Python</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T12:25:00+02:00</date>
                <start>12:25</start>
                <duration>00:30</duration>
                <abstract>GPU programming can be scary, but doesn&apos;t need to be! Did you know you can access the full performance of CUDA purely in Python? With the full CUDA Python stack, you have a friendly interface to get you started with GPU acceleration.

In this example-driven talk, we&apos;ll begin with a general discussion of the CUDA model and how to manage accelerator devices in Python with cuda.core. Next, we&apos;ll teach you how to create arrays and launch work with CuPy. Then, you&apos;ll learn how to customize parallel algorithms with cuda.compute and write your own kernels that leverage cooperative algorithms with cuda.coop, and integrate seamlessly with accelerated libraries such as cuBLAS and cuDNN.

We&apos;ll look at a variety of parallel examples, from counting words, to implementing softmax and row-wise reductions.

By the time the talk is over, you&apos;ll be ready to start accelerating your Python code with GPUs!</abstract>
                <slug>europython-2026-91569-gpu-programming-in-pure-python</slug>
                <track>~ None of these topics</track>
                
                <persons>
                    <person id='91706'>Bryce Adelstein Lelbach</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/JSLSHM/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/JSLSHM/feedback/</feedback_url>
            </event>
            <event guid='f79d8fec-c5c4-5d45-93a0-dbe745a63386' id='98198' code='FB93DB'>
                <room>S3A</room>
                <title>Python Stings Your Ego: Finding Pride in Community, Not Just Code</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T13:05:00+02:00</date>
                <start>13:05</start>
                <duration>00:30</duration>
                <abstract>In tech, it&#8217;s easy to get caught up in ego. Chasing the smartest solutions, writing the most complex code, or proving who&#8217;s the best in the room. But Python has a funny way of humbling us. Its simplicity reminds us that good code isn&#8217;t about showing off; it&#8217;s about making things clear, accessible, and collaborative.

This talk is about what happens after that sting of humility. Python doesn&#8217;t just strip away ego, it builds communities that make you feel proud to belong. I&#8217;ll share stories from my journey with Black Python Devs and other Python groups, showing how people from all walks of life come together, support one another, and create space for growth.

By the end, you&#8217;ll see that the real magic of Python isn&#8217;t just the language. It&#8217;s the people, the openness, and the sense of pride that comes from being part of something bigger than yourself.</abstract>
                <slug>europython-2026-98198-python-stings-your-ego-finding-pride-in-community-not-just-code</slug>
                <track>Community Building, Education, Outreach</track>
                
                <persons>
                    <person id='91280'>Emmanuel Ugwu</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/FB93DB/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/FB93DB/feedback/</feedback_url>
            </event>
            <event guid='e6fa3c40-2397-578d-aa88-ed30177e4080' id='91667' code='VNR377'>
                <room>S3A</room>
                <title>From Molecules to Models: A Guide to AI Drug Discovery with Python</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>Developing a single drug takes 12 years with only a 12% chance of success. AI is changing this dramatically: the first AI designed drug have reached human trials, Alphafold won a Nobel Prize and pharmaceutical companies have committed billions to AI partnerships. The best part? The Python ecosystem you already know is powering this revolution. This talk introduces AI drug discovery to Python developers with no biology or chemistry background required. We&apos;ll start with the key insight that makes this field accessible: molecules are data structures, proteins are strings, and drug target binding is just API matching. Through a demo, attendees will see how to represent and visualize molecules with RDKit, convert chemical structures into ML ready vectors, predict drug properties like toxicity and solubility using graph neural networks with DeepChem and predict 3D protein structures in seconds using the ESMFold API.</abstract>
                <slug>europython-2026-91667-from-molecules-to-models-a-guide-to-ai-drug-discovery-with-python</slug>
                <track>Machine Learning: Research &amp; Applications</track>
                
                <persons>
                    <person id='91768'>Jenny Vega</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/VNR377/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/VNR377/feedback/</feedback_url>
            </event>
            <event guid='a3624731-78be-51d9-8a5d-02b13e67d205' id='91115' code='BFK3JK'>
                <room>S3A</room>
                <title>Faster Django ORM queries for everybody</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T15:10:00+02:00</date>
                <start>15:10</start>
                <duration>00:30</duration>
                <abstract>Nobody likes a slow application or a website. Not only can it frustrate your users, but it can also directly affect your business metrics, such as conversion rates. Without proper care, your application can easily slow down as your project grows.

One of the most common sources of slowdowns is your database. Django ORM makes it easy to work with databases, but it also makes it easy to forget how to use it properly.

In this talk, you will learn how to measure and diagnose database operations in your Django app, fix common issues, and leverage your database engine&apos;s features to unleash its full potential. We will cover topics such as N+1 queries, creating and using database views from Django, database indices and EXPLAINing queries (I&#8217;ll keep it easy to understand, I promise!).

While the session focuses on Django apps, most of the topics also apply to SQLAlchemy and other libraries.

After the talk, you will know how to diagnose database query performance and have a good understanding of how to fix common performance bottlenecks.

You&#8217;ll need basic knowledge of the Django ORM or a similar tool like SQLAlchemy, as well as general database concepts.</abstract>
                <slug>europython-2026-91115-faster-django-orm-queries-for-everybody</slug>
                <track>Web Development, Web APIs, Front-End Integration</track>
                
                <persons>
                    <person id='91369'>Jan Smitka</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/BFK3JK/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/BFK3JK/feedback/</feedback_url>
            </event>
            <event guid='17b6bddc-6f2e-51bf-8f68-e56930bfe07b' id='91081' code='QHFXXA'>
                <room>S3A</room>
                <title>Python Everywhere: The State of Python on WebAssembly</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>00:30</duration>
                <abstract>Pyodide is a CPython distribution for JavaScript runtimes. It powers browser-based CPython environments like PyScript, Jupyterlite, and Marimo. Pyodide uses the Emscripten compiler to compile CPython to JavaScript + WebAssembly. Since the fall of 2024, Emscripten has been a tier 3 supported platform of CPython. 

We will give demos showing how Pyodide is used in a variety of applications such as interactive notebooks, client side computing, safe code execution for AI, and edge computing.

We will describe our work to standardize the Pyodide ecosystem:
* to upstream most of the Pyodide runtime into CPython, and
* to allow Pyodide-compatible packages to be uploaded to PyPI.
We will also describe our long goals for the ecosystem.

We will discuss recent progress in closing the large gap between the performance of the Python interpreter on WebAssembly and the performance on native platforms.</abstract>
                <slug>europython-2026-91081-python-everywhere-the-state-of-python-on-webassembly</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='91336'>Hood Chatham</person><person id='91344'>Gyeongjae Choi</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/QHFXXA/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/QHFXXA/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='S3B' guid='8b2a7d87-e211-5bf0-aec1-50733db791b3'>
            <event guid='fdfa2e2d-fec9-5a08-af7c-0006f3845c78' id='91383' code='CWBA3L'>
                <room>S3B</room>
                <title>Self-Hosted Small Models: From OpenAI Lock-In to Open Models</title>
                <subtitle></subtitle>
                <type>Talk (long session)</type>
                <date>2026-07-16T10:50:00+02:00</date>
                <start>10:50</start>
                <duration>00:45</duration>
                <abstract>OpenAI&apos;s embedding API is the default for most Python RAG applications, but it creates real problems at scale: data privacy (every document leaves your network), cost (per-token pricing compounds fast), no customization (cannot fine-tune or swap models), and no quality validation. Most teams have never measured whether text-embedding-3-large actually works well for their domain.

Open embedding models like BGE-M3, GTE-Qwen2, and E5 now match or beat OpenAI on MTEB benchmarks. The problem is not model quality anymore, it is infrastructure: running these models with proper batching, memory management, and quality assurance.

This talk walks through a practical migration. We start from a typical LangChain app calling OpenAI, switch to self-hosted open models using SIE (an open-source inference server with an OpenAI-compatible endpoint), validate that retrieval quality is maintained using MTEB, and then go beyond what OpenAI offers by adding sparse embeddings for keyword, recall, and cross-encoder reranking for precision.

The talk is aimed at Python developers who currently use OpenAI embeddings and models and want to understand their options. No prior experience with model serving is required.</abstract>
                <slug>europython-2026-91383-self-hosted-small-models-from-openai-lock-in-to-open-models</slug>
                <track>Machine Learning, NLP and CV</track>
                
                <persons>
                    <person id='91576'>Filip Makraduli</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/CWBA3L/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/CWBA3L/feedback/</feedback_url>
            </event>
            <event guid='694554ee-d0a6-5591-a62d-489d2f00bf73' id='89176' code='AGX8D9'>
                <room>S3B</room>
                <title>Deploying Python Web Apps in 2026</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T11:45:00+02:00</date>
                <start>11:45</start>
                <duration>00:30</duration>
                <abstract>Deploying a Python web app is deeply confusing for newcomers, but it doesn&apos;t have to be! In this talk, I&apos;ll provide an overview of the entire process, with visuals and code, to demystify it and share hard-won lessons along the way.

We will start with a high-level overview of the architecture underpinning deployment: web servers vs. app servers, queues, security considerations, databases, caching, environment variables, and more. Then we will discuss Python-specific aspects, such as how WSGI (PEP 333) standardized the process across all frameworks. Finally, we will review a deployment checklist for Django, Flask, and FastAPI, highlighting where they overlap and where they differ.

The goal of this talk is to explain how web deployments work under the hood, highlighting the Python-specific technical underpinnings that enable a knowledgeable developer to quickly deploy any Python web app, whether using FastAPI, Django, or Flask.</abstract>
                <slug>europython-2026-89176-deploying-python-web-apps-in-2026</slug>
                <track>Web Development, Web APIs, Front-End Integration</track>
                
                <persons>
                    <person id='89664'>Will Vincent</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/AGX8D9/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/AGX8D9/feedback/</feedback_url>
            </event>
            <event guid='1f5d900e-bc86-5659-b1d1-c92e10d1d46a' id='90910' code='YKWMBZ'>
                <room>S3B</room>
                <title>Django&#8217;s Magic, FastAPI&#8217;s Reality: Test Isolation at Scale</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T12:25:00+02:00</date>
                <start>12:25</start>
                <duration>00:30</duration>
                <abstract>Your FastAPI + SQLAlchemy tests pass alone but fail together. Data leaks between tests, and cleanup becomes slower. Meanwhile, it seems effortless in Django. Why?

This isn&apos;t a framework war - we&apos;ll dig into what Django actually does behind the scenes to keep the database clean between tests and why that approach isn&#8217;t straightforward to replicate in a typical SQLAlchemy setup.

We&apos;ll explore common cleanup strategies like recreating schema, truncating, transaction wrapping or template databases and benchmark how they scale as your test suite grows. 

You&apos;ll leave with a clear understanding of why this problem exists and practical, benchmarked options to keep your test suite fast and data isolated.

Aimed at intermediate Python developers comfortable with writing tests and familiar with basic database concepts like transactions.</abstract>
                <slug>europython-2026-90910-django-s-magic-fastapi-s-reality-test-isolation-at-scale</slug>
                <track>Web Development, Web APIs, Front-End Integration</track>
                
                <persons>
                    <person id='91203'>Maciej Sobczak</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/YKWMBZ/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/YKWMBZ/feedback/</feedback_url>
            </event>
            <event guid='9b5e5eb5-9ea5-5377-a9c5-a6ed60eafdf8' id='91008' code='E3GVVR'>
                <room>S3B</room>
                <title>Surviving LLM Traffic Spikes: Routing, Rate Limits, and Failover in Python</title>
                <subtitle></subtitle>
                <type>Sponsored</type>
                <date>2026-07-16T13:05:00+02:00</date>
                <start>13:05</start>
                <duration>00:30</duration>
                <abstract>Your team ships an AI feature and users love it. Then one viral post turns &quot;normal load&quot; into hundreds of LLM requests per second.

LLM calls don&apos;t behave like traditional API requests. They&apos;re slow (sometimes seconds), expensive, rate-limited by providers, and a single provider outage can take your entire feature down. You can&apos;t just &quot;add more servers.&quot; You need a routing layer that knows where to send traffic, when to back off, and how to fail without taking everything with it.

In this talk, we&apos;ll walk through the LLM traffic routing architecture we built in Python at Manychat, where we serve AI-powered automation to thousands of Instagram and messaging accounts. Everything we&apos;ll show is running in production.

We&apos;ll cover the core gateway patterns for multi-provider LLM traffic, implemented using LiteLLM Router as a reference design.

By the end, you&apos;ll walk away with:

- A weighted routing blueprint you can adapt to your own provider mix
- Fallback and cooldown rules designed to survive real outages
- Practical rate limiting (requests and tokens) with retry backoff
- The monitoring baseline (latency, tokens, errors by provider, weight drift) to catch issues before they cascade
- A checklist for rolling this out safely, incrementally</abstract>
                <slug>europython-2026-91008-surviving-llm-traffic-spikes-routing-rate-limits-and-failover-in-python</slug>
                <track>DevOps, Cloud, Scalable Infrastructure</track>
                
                <persons>
                    <person id='91242'>Sergi Porta</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/E3GVVR/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/E3GVVR/feedback/</feedback_url>
            </event>
            <event guid='7c878163-8c46-54f7-b58d-38d435741dc0' id='91786' code='93XE3S'>
                <room>S3B</room>
                <title>What is this footgun called unittest.mock, and how to avoid misusing it</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>00:30</duration>
                <abstract>Has this ever happened to you? You&apos;re happily coding a new feature in your Python project, and at some point, you make a hasty call:

```
self._thing.do_someting(rnicro_meters=10)
```

You&apos;ve written unit tests for it, including an assertion line:

```
mock_do_someting.assret_called_once_with(rnicro_meters=10)`
```

The tests pass, the CI is green, the PR is reviewed and merged. But some time later, the service crashes because the real method does not have the `rnicro_meters` keyword argument in the first place. What happened? And more importantly, did you notice any of the mistakes above? This is a problem we&apos;ve faced more than a few times over the past few years, and that&apos;s a few too many.

Unit tests are crucial in any sort of Python development, from small libraries to large distributed systems. `unittest.mock` is used to isolate dependencies and mock external calls in order to keep the tests simple and focused. But mistakes can slip by (e.g.: attribute typos, wrong keyword arguments, wrong patch locations), just like the three mistakes above, leading to false positive tests and a false sense of confidence in our code quality. This can happen because `Mock` and `MagicMock` silently auto-creates attributes on the fly, even when those attributes do not exist on the real object. These issues become even more pronounced as dependencies change and projects evolve.

In this session, we&#8217;ll look at why these false positives happen, and how to avoid them. Topics include:

- Understand how `Mock` and `MagicMock` allow invalid attributes and calls.
- Common pitfalls and anti-patterns with `Mock`, `MagicMock`, and `patch`.
- Using `spec`, `spec_set`, and `autospec` to force mocks to match real objects.
- Ensuring patched functions and methods have their signatures validated.
- How to avoid patching the wrong import path.
- Introducing guardrails in existing projects (e.g. OpenStack&#8217;s approach) without rewriting the entire test suite.</abstract>
                <slug>europython-2026-91786-what-is-this-footgun-called-unittest-mock-and-how-to-avoid-misusing-it</slug>
                <track>Testing, Quality Assurance, Security</track>
                
                <persons>
                    <person id='91854'>Claudiu Belu</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/93XE3S/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/93XE3S/feedback/</feedback_url>
            </event>
            <event guid='e2bc6045-a4a6-5a11-bd27-4b0b62a17413' id='91687' code='SASJQU'>
                <room>S3B</room>
                <title>Flying in Formation - with Python Threading and ROS2 Parallelism</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T15:10:00+02:00</date>
                <start>15:10</start>
                <duration>00:30</duration>
                <abstract>Coordinating a swarm of drones to autonomously allocate tasks,
bid on them in real time, and execute multi-robot formations
sounds like science fiction &#8212; but it is entirely possible
with Python, a handful of threading primitives, and ROS2&apos;s
MultiThreadedExecutor.

This talk walks through the concrete implementation challenges
of building a decentralised auction-based task allocation
system for a swarm of four Crazyflie UAVs. The focus is on
a problem that trips up almost every robotics engineer who
graduates from tutorials to real deployments: what happens
when your system has to wait for external, asynchronous
events &#8212; bids from four robots, assignment confirmations,
formation completion signals &#8212; without blocking the entire
node and without introducing race conditions or deadlocks?

We will explore how Python&apos;s threading.Event and Lock
primitives were used alongside ROS2&apos;s MultiThreadedExecutor
and ReentrantCallbackGroup to implement a synchronized
bid-collation protocol, a global assignment barrier, and
a concurrent multi-goal formation controller &#8212; all running
in parallel on a single laptop while communicating with
physical drones over radio.

You will leave with a clear, transferable mental model
for combining Python threading with ROS2 callback groups,
practical patterns for synchronizing distributed asynchronous
events in real-time systems, and an honest account of what
breaks in the real world (and why).</abstract>
                <slug>europython-2026-91687-flying-in-formation-with-python-threading-and-ros2-parallelism</slug>
                <track>~ None of these topics</track>
                
                <persons>
                    <person id='91787'>DEBORAH E DANJUMA</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/SASJQU/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/SASJQU/feedback/</feedback_url>
            </event>
            <event guid='1dbd6886-0276-536a-bc7d-2985b4729330' id='91399' code='3FW7UF'>
                <room>S3B</room>
                <title>Python Learning that fits Teen Life</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-16T16:00:00+02:00</date>
                <start>16:00</start>
                <duration>00:30</duration>
                <abstract>Coding often looks boring or challenging at the beginning, but the more we code, the more it becomes interesting, and we hope to be better in it. From my background, schools don&#8217;t always teach the exciting ways for us to learn coding, which makes many teenagers of my age not realise how simple Python programming can assist them in real life and day-to-day activities. Also, the adults within the Python community don&#8217;t know that the future of Python programming depends on bringing new and young beginners like me into the community at an early stage, so this session discusses how teenagers can use their communication interests in learning Python.

Learning Python at a young age can expose us to various skills and help us develop our reasoning, as teenagers face a lot of distractions today through social media chats. Showing how Python can be learned through simple chat interactions makes Python programming more accessible and friendly.

As a teenager and beginner myself, I have an idea of how teenagers chat regularly on phones and applications, so chatting can also be a way of learning Python, so schools and communities like Python can discover this method to introduce Python to teenagers as a beginner. Python doesn&#8217;t need to be scary; it can feel like chatting with a friend who explains things step by step. By combining Python with conversational learning, we can remove fear, build confidence, and make coding a normal part of teenage life.

This session will expose how teenagers can use simple conversation in WhatsApp to ask questions and learn Python as a chat. The audience will understand the tools and techniques for introducing Python to young people in a way that fits their communication style and how conversational learning makes Python more fun and less intimidating.</abstract>
                <slug>europython-2026-91399-python-learning-that-fits-teen-life</slug>
                <track>Community Building, Education, Outreach</track>
                
                <persons>
                    <person id='91587'>Oladapo Jesusemilore Jael</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/3FW7UF/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/3FW7UF/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Glass room' guid='a1bb95b4-9783-5d3e-8c40-335f0556a714'>
            <event guid='e306f578-ad72-515e-9a92-7cdcafe19f93' id='101493' code='3VEJRA'>
                <room>Glass room</room>
                <title>Create your own musical instrument with custom gesture control</title>
                <subtitle></subtitle>
                <type>Tutorial</type>
                <date>2026-07-16T10:50:00+02:00</date>
                <start>10:50</start>
                <duration>02:30</duration>
                <abstract>This will be a hands-on workshop during which we will build a digital musical instrument controlled by personalised gestures.

We will make a standalone desktop application with a web UI which embeds an existing machine learning model for timbre transfer. We will look at an example of a meaningful control of the model for creative use in interactive, real-time sound generation. 

Finally, we will use interactive machine learning to define a personalised way of controlling the instrument based on a few examples provided on the fly.

Workshop goals:

- Demonstrate a practical example of creating a musical instrument with custom gesture control.
- Walk you through a typical architecture of a real-time system with interactive control.
- Show you how to run an existing machine learning model for timbre transfer on your computer and embed it in a desktop application.
- Discuss ways for incorporating interactive methods for augmenting user interactions.</abstract>
                <slug>europython-2026-101493-create-your-own-musical-instrument-with-custom-gesture-control</slug>
                <track>Python for Games, Art, Play and Expression</track>
                
                <persons>
                    <person id='100686'>Anna Wszeborowska</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/3VEJRA/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/3VEJRA/feedback/</feedback_url>
            </event>
            <event guid='559f06b9-31f9-59dd-830a-c13674a75ef2' id='101789' code='PXRCR9'>
                <room>Glass room</room>
                <title>PyLadies Lunch</title>
                <subtitle></subtitle>
                <type>Coffee Break</type>
                <date>2026-07-16T13:20:00+02:00</date>
                <start>13:20</start>
                <duration>01:00</duration>
                <abstract>We&#8217;re excited to announce a range of events for underrepresented groups in computing this year! &#127881; Whether you&#8217;re new to PyLadies or a long-time supporter, we warmly welcome you to join us and be part of our supportive community.

Join us for a special lunch event aimed at fostering community and empowerment in tech. Enjoy meaningful conversations and networking opportunities.

    Location: Red Carpet (Second Floor)
    Time: Thursday 16th of July at 13:15</abstract>
                <slug>europython-2026-101789-pyladies-lunch</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/PXRCR9/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/PXRCR9/feedback/</feedback_url>
            </event>
            <event guid='12220bb9-91d7-5e97-ad60-1c4625af3bb0' id='101696' code='CERV3F'>
                <room>Glass room</room>
                <title>Leading Under Pressure</title>
                <subtitle></subtitle>
                <type>Conference Workshop</type>
                <date>2026-07-16T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>02:00</duration>
                <abstract>Teams are getting leaner, context switching is constant, and expectations stay high even when clarity is low. Under that pressure, many of us start reacting instead of leading: stepping in too often, firefighting instead of thinking, and quietly carrying load that was never ours to hold.

You do not need a title for any of this to apply. Leadership shows up in how you respond when things get tense, how you support the people around you, and where you choose to spend your finite energy.

This workshop is a space to notice what pressure does to your leadership, and to practise doing something different. 

## Designed for

- Engineers and ICs who find themselves leading without a formal title
- People who care about their teammates and want to stay effective over time
- Anyone in a lean, fast-moving environment who keeps ending up as the one who absorbs the pressure
- Folks who are often the only one like them in the room, and carry extra invisible load because of it

No management experience required.

## What we will explore

Leading yourself under pressure: how urgency and ambiguity shape your default responses. Learning to slow down enough to create space to think, and noticing when a question helps more than jumping in with an answer.

Supporting others without taking over: helping a teammate without rescuing them or quietly absorbing their work. Framing problems as shared instead of solving them alone. Building trust when clarity is low.

Staying strategic under pressure: understanding where your influence actually flows, with or without authority. Connecting day-to-day reality to the bigger picture, and choosing where to put your energy instead of trying to hold everything.

## What you will take away

Clearer insight into how pressure shapes your leadership. Practical experience using questions and framing to grow agency in the people around you. A better sense of where to focus next: on yourself, the people around you, or the wider system. And one concrete move to try in the next two weeks.

## Format

A two-hour interactive workshop. Short input bursts, hands-on exercises, solo reflection, and peer learning, using the group as a space to think together about real leadership challenges.</abstract>
                <slug>europython-2026-101696-leading-under-pressure</slug>
                <track>Professional Development, Careers, Leadership</track>
                
                <persons>
                    <person id='91860'>Tereza Iofciu</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/CERV3F/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/CERV3F/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Poster Hall A' guid='e8af958f-628b-5e5d-95e1-a6c40c2b8afa'>
            <event guid='e7cf5b8f-4462-5daf-9ac8-671de5bbb82f' id='91425' code='9URK9U'>
                <room>Poster Hall A</room>
                <title>How we write unit test in my team in Openchip</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2026-07-16T13:15:00+02:00</date>
                <start>13:15</start>
                <duration>01:00</duration>
                <abstract>Have you ever wondered how to write good unit tests?
Do you know the best practices for unit testing?
Or maybe you&#8217;re already using unit tests in your project and want to see how others approach them?

If the answer to any of these questions is yes, this talk is for you. During the session, you&#8217;ll learn how to write proper unit tests, discover good testing practices, learn to distinguish mocks from stubs, see examples of using dependency injection to improve testability, and find out what pure functions are and why they&#8217;re easier to test.</abstract>
                <slug>europython-2026-91425-how-we-write-unit-test-in-my-team-in-openchip</slug>
                <track>Testing, Quality Assurance, Security</track>
                
                <persons>
                    <person id='91608'>Jan Koprowski</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/9URK9U/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/9URK9U/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Poster Hall B' guid='3d4ca438-5ac7-5979-a7a3-20cdbf3dafd1'>
            <event guid='580b7a1f-ecdb-5a01-9fab-7e721683bbd1' id='100248' code='SEJYRG'>
                <room>Poster Hall B</room>
                <title>Write async. Get sync for free.</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2026-07-16T13:15:00+02:00</date>
                <start>13:15</start>
                <duration>01:00</duration>
                <abstract>When you write a Python library, you have a dilemma. Ship
async-only? Ship blocking-only? Or write everything twice and watch both copies drift?

[Synchronicity](https://github.com/modal-labs/synchronicity) removes this dilemma. Write your library once (in async) and get a blocking
interface for free, while avoiding the boilerplate and limitations of `asyncio.run()` wrappers. We&#8217;ll talk through how to handle persistent connections, async generators, clean tracebacks, type hints and more.

We&apos;ve used it in production at Modal for years, and it&apos;s fully open source.
We hope it can save you from writing your own library twice!</abstract>
                <slug>europython-2026-100248-write-async-get-sync-for-free</slug>
                <track>Tooling, Packaging, Developer Productivity</track>
                
                <persons>
                    <person id='99548'>Thom Lane</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/SEJYRG/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/SEJYRG/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Poster Hall C' guid='a2ed4948-2605-5bec-8374-42596e7a73a6'>
            <event guid='69648640-f770-5d19-9736-62fb0c79ccdb' id='91004' code='8HBEYS'>
                <room>Poster Hall C</room>
                <title>Python Syntax Diagram</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2026-07-16T13:15:00+02:00</date>
                <start>13:15</start>
                <duration>01:00</duration>
                <abstract>The poster shows a [railroad diagram](https://en.wikipedia.org/wiki/Syntax_diagram) of the entire [Python grammar](https://docs.python.org/3/reference/grammar.html).

It allows exploring subtle details of the language, like when parentheses are required around generator expressions, tuples or &#8220;walrus&#8221; assignment operations; what&apos;s the precedence of various operators; or what kinds of arguments are possible in function definitions and calls.</abstract>
                <slug>europython-2026-91004-python-syntax-diagram</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='91278'>Petr Viktorin</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/8HBEYS/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/8HBEYS/feedback/</feedback_url>
            </event>
            
        </room>
        
    </day>
    <day index='5' date='2026-07-17' start='2026-07-17T04:00:00+02:00' end='2026-07-18T03:59:00+02:00'>
        <room name='S1' guid='69560a5f-0132-5ac8-99b7-5a62a108ff23'>
            <event guid='1af18a3b-6d3c-5427-8bf3-c05df305f897' id='97554' code='JGBFDF'>
                <room>S1</room>
                <title>Friday Registration &amp; Welcome @ TBD</title>
                <subtitle></subtitle>
                <type>Announcements</type>
                <date>2026-07-17T08:00:00+02:00</date>
                <start>08:00</start>
                <duration>00:45</duration>
                <abstract>Welcome to EuroPython 2026! Please notice the registration will happen on the TBD.
You can pick up your badges at any time during the week as long as we are open!
If you want to avoid the morning rush on Wednesday, come on Monday and Tuesday!
Enjoy the conference!</abstract>
                <slug>europython-2026-97554-friday-registration-welcome-tbd</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/JGBFDF/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/JGBFDF/feedback/</feedback_url>
            </event>
            <event guid='5895d01b-bd5f-506b-ab3a-4fde62300f51' id='97555' code='SXBNNA'>
                <room>S1</room>
                <title>Friday&apos;s Morning Announcement &#9200;</title>
                <subtitle></subtitle>
                <type>Announcements</type>
                <date>2026-07-17T08:45:00+02:00</date>
                <start>08:45</start>
                <duration>00:15</duration>
                <abstract>Welcome to the third day of conference!
Yesterday was an amazing day, but for sure you don&apos;t remember all the things that were mentioned during the opening.
Join us to get an update and few more announcements. Come by and find out what is going to happen today.</abstract>
                <slug>europython-2026-97555-friday-s-morning-announcement</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/SXBNNA/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/SXBNNA/feedback/</feedback_url>
            </event>
            <event guid='2b70aa30-e54c-5f3b-9645-9f00ab8a0687' id='98027' code='KH9EQN'>
                <room>S1</room>
                <title>Securing Python for the next decade</title>
                <subtitle></subtitle>
                <type>Keynote</type>
                <date>2026-07-17T09:00:00+02:00</date>
                <start>09:00</start>
                <duration>00:45</duration>
                <abstract>The world of open source is undergoing numerous seismic changes, and Python is no exception. This keynote will focus on security: we&apos;ll extrapolate (and speculate) on the task of securing Python for the next decade of usage by open source maintainers, corporations, tinkerers, vibe coders, and everyone in between. We&apos;ll also cover how we expect attacker behaviors to shift, and how those shifts will require us to discard traditional assumptions as defenders.</abstract>
                <slug>europython-2026-98027-securing-python-for-the-next-decade</slug>
                <track>~ None of these topics</track>
                
                <persons>
                    <person id='97589'>William Woodruff</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/KH9EQN/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/KH9EQN/feedback/</feedback_url>
            </event>
            <event guid='221ca5f5-6e16-5ddb-b6f6-4b191ac976d8' id='88905' code='KFQN3X'>
                <room>S1</room>
                <title>The coolest feature in Python 3.14: sys.remote_exec()</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T10:10:00+02:00</date>
                <start>10:10</start>
                <duration>00:30</duration>
                <abstract>Have you ever needed to debug a live Python process but couldn&apos;t restart it? Didn&apos;t want to redeploy with debug flags or manage sidecar containers just to debug your application?

In this talk, I&apos;ll show you why `sys.remote_exec()` is one of the coolest features of Python 3.14! I&apos;ll cover the basics of Python&apos;s new remote debugging capabilities and demonstrate how `sys.remote_exec()` can be combined with debugpy (an implementation of the Debug Adapter Protocol) to provide full IDE debugging experiences for live processes. I&apos;ll share what I learned building a tool that uses these primitives to attach debuggers to FastAPI applications running in local Kubernetes clusters.

Beyond debugging, we&apos;ll explore other use cases for `sys.remote_exec()` and how you can apply the feature to solve problems in your own work!</abstract>
                <slug>europython-2026-88905-the-coolest-feature-in-python-3-14-sys-remoteexec</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='89451'>Savannah Ostrowski</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/KFQN3X/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/KFQN3X/feedback/</feedback_url>
            </event>
            <event guid='d864f5fa-f469-557f-b8b1-624fb1d540da' id='91397' code='ARRMQR'>
                <room>S1</room>
                <title>Pointers, Objects, and References - How Python Manages Memory</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T11:05:00+02:00</date>
                <start>11:05</start>
                <duration>00:30</duration>
                <abstract>Most Pythonistas handle Python objects every day, but sometimes, the bugs and performance surprises we encounter happen because we misunderstand how Python actually manages memory. 
Variables are not just containers(which I previously thought), objects are not copied by default, and references behave differently than what many developers expect &#8212; especially as the codebases we work with grow.
In this talk, we will build an accurate mental model of how Python handles objects, references, and memory at runtime; we will look at what really happens when objects are created, passed to functions, mutated, and destroyed. 
We will also look at how reference counting works at a high level, why mutability matters, and how these fundamental concepts come up when we examine debugging and performance in our Python code.
After this session, developers will be more confident about their understanding of Python behaviour, avoid common pitfalls, and better understand what the profilers and debuggers are really saying.</abstract>
                <slug>europython-2026-91397-pointers-objects-and-references-how-python-manages-memory</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='91588'>Abigail Afi Gbadago</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/ARRMQR/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/ARRMQR/feedback/</feedback_url>
            </event>
            <event guid='5414a161-92c0-53e2-95dd-427a4c63566c' id='90895' code='B7CMBD'>
                <room>S1</room>
                <title>Become a Python Core Developer in 3 Easy Steps</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T11:45:00+02:00</date>
                <start>11:45</start>
                <duration>00:30</duration>
                <abstract>Step 1: Fix a bug
Step 2: ???
Step 3: Core developer

Ok, it&apos;s not that simple but it&apos;s also not as mysterious as it might seem!

About three years ago I fixed an obscure bug in the unittest module. Today, I&apos;m a core developer. This talk is about what happened in between, and how you can start contributing too!

Over the years, I got to work on many different areas of Python. I&apos;ve fixed bugs in the parser, added import autocomplete to the REPL, worked on gettext tooling, and eventually found my way to the JIT compiler, all things I knew little about before diving in.

Getting started contributing to Python can be intimidating, so I&apos;ll share some practical things I learned along the way such as:

- How is the CPython project organized?
- How do you find something to work on? (and why it doesn&apos;t have to be code!)
- What happens after you submit a PR?
- How do you navigate a 30 year old codebase without getting lost?

If you&apos;ve ever wanted to contribute to Python but weren&apos;t sure where to start, this talk is for you.</abstract>
                <slug>europython-2026-90895-become-a-python-core-developer-in-3-easy-steps</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='91207'>Tomas Roun</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/B7CMBD/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/B7CMBD/feedback/</feedback_url>
            </event>
            <event guid='dad3cd9a-b101-5436-b2bb-228f25295acb' id='91593' code='PWGSJQ'>
                <room>S1</room>
                <title>Speeding Up Python with Free Threading and Mypyc</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T12:25:00+02:00</date>
                <start>12:25</start>
                <duration>00:30</duration>
                <abstract>It&#8217;s common to hear complaints about Python being slow. In this talk, I will show how to make _some_ Python programs dramatically faster by using Python 3.14&#8217;s free threading and ahead-of-time compilation to C extensions using the mypyc compiler, while staying entirely in Python (and CPython). 

Free threading can deliver large speedups for CPU-bound code that can be adapted for parallel execution, while mypyc speeds up workloads that benefit from reduced interpreter overhead and that can use static typing. If each can give a 10x speedup in an ideal use case, can we get a &#8220;holy grail&#8221; 100x speedup by using both?

I&#8217;ll introduce several small examples inspired by real-world workloads, measuring and explaining what happens when you apply free threading, mypyc, or both. In practice, relatively few programs are perfect fits for both techniques at once, but when they are, you can get substantial gains. Having both tools available gives you options for attacking a wide range of performance problems.

Along the way, I&#8217;ll cover various bottlenecks you are likely to encounter while optimizing real-world workloads. These often limit performance scaling. I&apos;ll explain how to diagnose and improve allocation-heavy code and thread contention caused by reference counting, in particular.</abstract>
                <slug>europython-2026-91593-speeding-up-python-with-free-threading-and-mypyc</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='91720'>Jukka Lehtosalo</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/PWGSJQ/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/PWGSJQ/feedback/</feedback_url>
            </event>
            <event guid='ee7cedd9-ce49-5cc8-96b9-9aab05f3ad54' id='92016' code='RGBSS8'>
                <room>S1</room>
                <title>Lazy imports and the art of interpreter procrastination</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T13:55:00+02:00</date>
                <start>13:55</start>
                <duration>00:30</duration>
                <abstract>From CLI developers to maintainers of large applications, many Python developers have been bitten by the high overhead of eagerly loading imports. Long start-up times can make it prohibitively costly to run simple commands like --help, and the memory overhead from loading every imported module eagerly can trigger Out-Of-Memory errors in production.

After the most discussed PEP thread in the history of discuss.python.org, with hundreds of messages and fierce debate, Python 3.15 finally brings Explicit Lazy Imports to the language. With a simple new keyword, you can now defer module loading until the moment you actually need it. This is one of the most requested performance features in Python&apos;s history, and finally it&apos;s here.

This presentation will take you through how we got here and where we&apos;re going. We&apos;ll look at why existing workarounds never quite worked, and how an earlier proposal (PEP 690) tried to make all imports lazy by default but was rejected. Then PEP 810 emerged with a different approach: explicit, opt-in syntax that the community accepted.

The heart of this talk is discovering how lazy imports actually work inside the interpreter. We&apos;ll trace through the bytecode, see how proxy objects stand in for unloaded modules, and watch the moment when your code first touches a lazy import and the real module snaps into place. You&apos;ll also learn about the future tooling that we are baking that will help you adopt this safely in your own projects.

Whether you&apos;re a beginner curious about Python&apos;s future, someone looking to speed up your CLI tools, or you just want to understand what&apos;s happening under the hood, this talk will give you everything you need to start using lazy imports with confidence.</abstract>
                <slug>europython-2026-92016-lazy-imports-and-the-art-of-interpreter-procrastination</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='92271'>Pablo Galindo Salgado</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/RGBSS8/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/RGBSS8/feedback/</feedback_url>
            </event>
            <event guid='11810f0f-e5ed-50bf-a6fe-8914f8dcefb6' id='91380' code='QY7PFR'>
                <room>S1</room>
                <title>Conquer multithreaded Python with Blanket</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T14:35:00+02:00</date>
                <start>14:35</start>
                <duration>00:30</duration>
                <abstract>Debugging and testing multithreaded code in Python is so challenging.  How do you create reproducible tests of multithreaded code, when the order of execution changes from run to run?  How do you achieve 100% coverage, when you ship code only called to handle rare, obscure race conditions?  And if you think it&apos;s a problem now... just imagine how much worse it&apos;s going to become as adoption of &quot;nogil&quot; Python grows!

Blanket is here to help.  Come learn how Blanket gives you back control over the order of execution in multithreaded code, enabling you to write deterministic multithreaded tests.  Restore blessed order and determinism to your unit test suite--use Blanket!</abstract>
                <slug>europython-2026-91380-conquer-multithreaded-python-with-blanket</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='91574'>Larry Hastings</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/QY7PFR/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/QY7PFR/feedback/</feedback_url>
            </event>
            <event guid='c489b85f-538e-5025-b363-11ed7bef770c' id='91752' code='ZHCNDY'>
                <room>S1</room>
                <title>Defending Open Source from &quot;AI&quot; Slop: A Maintainer&apos;s Practical Guide</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T15:30:00+02:00</date>
                <start>15:30</start>
                <duration>00:30</duration>
                <abstract>Open source maintainers are drowning in a new kind of noise. &quot;AI&quot;-generated pull requests &#8212; superficial, poorly reasoned, and submitted without genuine understanding of the codebase &#8212; are consuming review bandwidth that was already scarce. These contributions range from cosmetic &quot;improvements&quot; that introduce subtle bugs to elaborate refactorings that no one asked for, all bearing telltale signs of LLM output: confident tone, plausible-looking code, and zero awareness of project conventions.

This talk presents a practical, battle-tested framework for combating &quot;AI&quot; slop without discouraging legitimate contributors. Drawing from real experiences maintaining pip-tools, aiohttp, ansible-core, CherryPy, and other Python projects, I&apos;ll share concrete strategies that work today.

First, we&apos;ll dissect the anatomy of &quot;AI&quot; slop PRs &#8212; what they look like, why they pass superficial review, and the hidden costs beyond wasted review time: CI compute waste, security risks from plausible-but-wrong code, and the demoralizing effect on genuine contributors who see low-effort submissions getting attention.

Then I&apos;ll walk through a defense-in-depth approach being developed across my projects: updating `CONTRIBUTING.md` with explicit expectations about understanding the codebase before submitting changes; crafting repository-level LLM instruction files (like `AGENTS.md`/`CLAUDE.md`) that steer &quot;AI&quot; tools toward project-specific conventions; configuring PR templates to require evidence of human reasoning; and establishing community norms that set quality expectations without being hostile to newcomers.

We&apos;ll also tackle the harder questions: Where is the line between &quot;AI&quot;-assisted (the human drives and understands the change) and &quot;AI&quot;-generated (the human clicks &quot;submit&quot; on LLM output)? How do we preserve the welcoming culture that makes open source special while defending against low-effort spam? What should platforms like GitHub improve for maintainers?

You&apos;ll leave with a ready-to-adapt policy template and configuration files for your own projects.</abstract>
                <slug>europython-2026-91752-defending-open-source-from-ai-slop-a-maintainer-s-practical-guide</slug>
                <track>Ethics, Social Responsibility, Sustainability, Legal</track>
                
                <persons>
                    <person id='91766'>Sviatoslav Sydorenko (&#1057;&#1074;&#1103;&#1090;&#1086;&#1089;&#1083;&#1072;&#1074; &#1057;&#1080;&#1076;&#1086;&#1088;&#1077;&#1085;&#1082;&#1086;)</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/ZHCNDY/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/ZHCNDY/feedback/</feedback_url>
            </event>
            <event guid='e0ce07cb-3fc8-56fa-a73a-edde1cc5745f' id='96943' code='8XMJGZ'>
                <room>S1</room>
                <title>Keynote 6 - Placeholder</title>
                <subtitle></subtitle>
                <type>Keynote</type>
                <date>2026-07-17T16:10:00+02:00</date>
                <start>16:10</start>
                <duration>00:45</duration>
                <abstract>&quot;TBD: Keynote Speaker&quot;
Details coming soon. This prime session will feature an inspiring keynote address to set the tone for the entire event. Our team is finalizing an exceptional speaker whose insights and vision will leave a lasting impression. Check back shortly for the full announcement, topic, and speaker biography.</abstract>
                <slug>europython-2026-96943-keynote-6-placeholder</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/8XMJGZ/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/8XMJGZ/feedback/</feedback_url>
            </event>
            <event guid='afb9059f-e139-5e34-8d0d-6248ea07c554' id='97556' code='YUECR3'>
                <room>S1</room>
                <title>Lightning talks &#9889; Friday</title>
                <subtitle></subtitle>
                <type>Lightning Talk</type>
                <date>2026-07-17T16:55:00+02:00</date>
                <start>16:55</start>
                <duration>00:30</duration>
                <abstract>Enjoy Friday&apos;s lightning talks! Short talks about everything by everyone. 

Lightning talks are 5 minute talks that anyone participating at the conference can submit.
If that talk gets selected, you will have the chance to jump into the main stage and show us your project, your ideas, something you have learned, something you are proud of that&apos;s helping and contributing to our conference and community, or something else!

Lightning talks last a maximum of 5 minutes. You can use less time, but not more.
This time limit is strictly enforced!

If you get accepted, you will be notified by email on the day of your talk by 1pm.
Reply to the acceptance email by 3pm to confirm your spot.
(If you don&apos;t, you lose your spot!)

You can submit your lightning talk on this form: TBD
Note that there&apos;s a limit of one submission per person.</abstract>
                <slug>europython-2026-97556-lightning-talks-friday</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/YUECR3/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/YUECR3/feedback/</feedback_url>
            </event>
            <event guid='39d00100-c480-57d4-9eff-b250b1a3847b' id='97557' code='UALU9S'>
                <room>S1</room>
                <title>Conference Closing &#128013;</title>
                <subtitle></subtitle>
                <type>Announcements</type>
                <date>2026-07-17T17:25:00+02:00</date>
                <start>17:25</start>
                <duration>00:30</duration>
                <abstract>What an amazing week!
We had two tutorials days and three talks days filled with amazing topics, but more important, amazing people!

Our community is thankful, and want to close the main conference days.
Join us to get a nice summary of what was EuroPython 2026.</abstract>
                <slug>europython-2026-97557-conference-closing</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/UALU9S/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/UALU9S/feedback/</feedback_url>
            </event>
            <event guid='71faf36d-7266-5e14-8d0f-40a40f81a9ca' id='97558' code='3QHVK3'>
                <room>S1</room>
                <title>Sprint Orientation &#127939;</title>
                <subtitle></subtitle>
                <type>Announcements</type>
                <date>2026-07-17T17:55:00+02:00</date>
                <start>17:55</start>
                <duration>00:30</duration>
                <abstract>Do you know what is a sprint?

The sprints are activities that will happen during the weekend on a different location.
Do you know if you can join? and how can you join?
Do you know all the projects that are participating?

Let us answer these questions and a few more in the Sprint orientation.</abstract>
                <slug>europython-2026-97558-sprint-orientation</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/3QHVK3/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/3QHVK3/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='S2' guid='d3c8c403-7131-5705-ad97-7cd3d40cef9b'>
            <event guid='91e99c67-584f-5c1a-9253-cdd71f2af184' id='90861' code='899VGG'>
                <room>S2</room>
                <title>AI Architecture Katas: Learning by Building Small Models in Plain Python</title>
                <subtitle></subtitle>
                <type>Talk (long session)</type>
                <date>2026-07-17T10:10:00+02:00</date>
                <start>10:10</start>
                <duration>00:45</duration>
                <abstract>Deep learning is often taught through large frameworks and large models, which is great for getting real projects out of the door, but not always great for learning. This talk is about a different practice: building tiny, runnable versions of various modern architectures with minimal dependencies (mostly Python and NumPy) to learn about the ideas through application.

We&#8217;ll get our feet wet by building a small Transformer end-to-end and learn about the model architecture that started the craze. Then we  switch perspectives, and learn about other architectures, always staying small and nimble, focusing on applying the math and breathing life into formulas. We will look look at multi-scale modelling (in a simplified version of Renormalizing Generative Models), State Spaces, and other scary concepts, until they are not scary at all anymore.

You&#8217;ll leave with a model for turning papers into little prototypes that stay true to ideas and the starting point for your own little lab to build models yourself.

Prerequisites: a basic understanding of NumPy and a willingness to look at Greek letters. No deep learning framework knowledge required.</abstract>
                <slug>europython-2026-90861-ai-architecture-katas-learning-by-building-small-models-in-plain-python</slug>
                <track>Machine Learning: Research &amp; Applications</track>
                
                <persons>
                    <person id='91161'>hellerve</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/899VGG/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/899VGG/feedback/</feedback_url>
            </event>
            <event guid='e7cc3966-2c0a-50d7-a3aa-b24e1a1f8fe7' id='91520' code='7SSS93'>
                <room>S2</room>
                <title>How Music Generation Actually Works</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T11:05:00+02:00</date>
                <start>11:05</start>
                <duration>00:30</duration>
                <abstract>Music generation has gone from a research curiosity to something you can try in a browser. Commercial platforms and open source models can produce full songs from a text prompt. Between the hype and the technical papers, it&#8217;s hard to get a straight answer about what&#8217;s actually going on  under the hood. **This talk is a clear, honest walkthrough of how music generation systems work, in simple language**, no deep machine learning knowledge needed.

We start with the core challenge: how do you turn a continuous audio signal into something a generative model can work with? Neural audio codecs solve this by compressing waveforms into sequences of discrete tokens, and this idea is the foundation everything else builds on. From there, we look at the two main modeling strategies: token prediction and diffusion. We compare what each does well, where it struggles, and why the choice between them matters.

On the practical side, we walk through the open source models and Python tools available today, and what you can build with them. Then we  get into evaluation, one of the most important open problems in the field. Current metrics only tell part of the story, and there is no standard benchmark for comparing systems. This has real consequences for how research moves forward and how models get used.

We close with a discussion that often gets skipped: how artists and musicians see these tools, what legal questions remain around training data and copyright, and why these conversations matter for the future of the field.&#8203;&#8203;&#8203;&#8203;&#8203;&#8203;&#8203;&#8203;&#8203;&#8203;&#8203;&#8203;&#8203;&#8203;&#8203;&#8203;</abstract>
                <slug>europython-2026-91520-how-music-generation-actually-works</slug>
                <track>Python for Games, Art, Play and Expression</track>
                
                <persons>
                    <person id='91673'>Mateusz Modrzejewski</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/7SSS93/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/7SSS93/feedback/</feedback_url>
            </event>
            <event guid='ebff0f1f-2c09-5194-a697-7e409206266f' id='91711' code='PQCHT3'>
                <room>S2</room>
                <title>Python in the Service of Justice: Modern Analysis Tools in Forensics</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T11:45:00+02:00</date>
                <start>11:45</start>
                <duration>00:30</duration>
                <abstract>The presentation will discuss practical applications of Python in technologies used in forensic science. In an era of growing cybercrime and digitalization of evidence, Python has become an essential tool for forensics specialists, offering powerful libraries for data analysis, process automation and processing complex information structures. Participants will gain insights into spanning multiple domains of forensic investigation, including:

- mobile device analysis, 
- network traffic examination,
- memory forensics,
- automated report generation.

We will analyze how Python libraries parse SQLite databases in messaging applications like WhatsApp and iMessage, also examine tools for analyzing iOS file formats including PLIST and XML structures and techniques for extracting data from disk images using pytsk3 or libewf. Network analysis will showcase Scapy for packet analysis and Dpkt for parsing capture files, demonstrating how Python analyzes Windows Event Logs and Linux syslog to reconstruct activity timelines.

Memory forensics will be explored through the Volatility Framework for analyzing RAM dumps and recovering volatile data. We will discuss recovering deleted files, extracting metadata, and analyzing browser artifacts. Cryptographic analysis using hashlib will demonstrate integrity verification, encrypted file analysis, and cipher breaking techniques essential for maintaining chain of custody.
Data visualization using Matplotlib, Seaborn, and NetworkX will show how to create compelling visual representations of timelines and connection networks. Automated report generation with ReportLab and python-docx streamlines professional expert report creation.

The presentation emphasizes real-world applications with dusscussion about Python scripts processing realistic datasets, illustrating how multiple Python tools integrate into comprehensive investigation workflows, demonstrating the synergistic effects of combining different analytical approaches for actionable forensic intelligence.</abstract>
                <slug>europython-2026-91711-python-in-the-service-of-justice-modern-analysis-tools-in-forensics</slug>
                <track>Ethics, Social Responsibility, Sustainability, Legal</track>
                
                <persons>
                    <person id='91802'>Aleksander</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/PQCHT3/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/PQCHT3/feedback/</feedback_url>
            </event>
            <event guid='79201e8b-05ab-5dd2-bec1-21e09efeee5c' id='90927' code='SQRYJA'>
                <room>S2</room>
                <title>International Open Source &#8211; Your Best Choice in Interesting Times</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T12:25:00+02:00</date>
                <start>12:25</start>
                <duration>00:30</duration>
                <abstract>We&#8217;re living in weird times. The lines and connections that hold allies and trusted partners together are changing. New barriers to trade, to travel, to collaboration are affecting everything we do. Python is not immune to these shifts, but internationally stewarded open source is still the best choice if you are looking for software that does what it says it does and doesn&#8217;t do a lot of things that you don&#8217;t want it to do. 

Large open source projects are vetted by multiple stakeholders in different counties, using that software for different purposes and running on all different hardware around the world. Increasingly, large projects like Python come with a Software Bill of Materials and massive new patches coming from brand new contributors are looked at with a little more skepticism than they would&#8217;ve been a few years ago. This talk will discuss what&#8217;s changed about international collaboration and how Python and other community driven projects are looking at security and collaboration these days.</abstract>
                <slug>europython-2026-90927-international-open-source-your-best-choice-in-interesting-times</slug>
                <track>Ethics, Social Responsibility, Sustainability, Legal</track>
                
                <persons>
                    <person id='91216'>Deb Nicholson</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/SQRYJA/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/SQRYJA/feedback/</feedback_url>
            </event>
            <event guid='d5a06714-3588-57d8-8350-7f03b97cb915' id='91184' code='PBTPJR'>
                <room>S2</room>
                <title>How to tackle complex authorization logic (and don&apos;t go crazy)</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T13:55:00+02:00</date>
                <start>13:55</start>
                <duration>00:30</duration>
                <abstract>Managing complex authorization logic can be a nightmare. Without a framework to help you,
it can soon end up in a mess of if-else statements and partial solutions that will only
give you a headache.

One day, I found myself in that exact situation. I decided to tackle the problem, and
that&apos;s how I came across the concept of &quot;policy-based authorization&quot; or ABAC. While
there are available libraries for this, I found them of little help for a large, legacy
codebase that is monolithic at its core.

In my talk, I will share my experience in thinking about this problem and how to use
ABAC to implement a custom solution that fits your needs. I will outline the main
components of my solution and show how it can be applied to Django views and
FastAPI endpoints.</abstract>
                <slug>europython-2026-91184-how-to-tackle-complex-authorization-logic-and-don-t-go-crazy</slug>
                <track>Web Development, Web APIs, Front-End Integration</track>
                
                <persons>
                    <person id='91426'>Maria Lowas-Rzechonek</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/PBTPJR/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/PBTPJR/feedback/</feedback_url>
            </event>
            <event guid='444258c3-e267-5f0c-bca4-c6a75f73c200' id='91690' code='T7ATVM'>
                <room>S2</room>
                <title>How Python is Democratising Agritech for Farmers Across Europe</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T14:35:00+02:00</date>
                <start>14:35</start>
                <duration>00:30</duration>
                <abstract>How can you create open digital tools that run on both the Cloud and the Edge for small/medium farms across Greek vineyards, French cattle ranches, and Belgian potato fields? The OpenAgri project, funded by the EU Horizon program and now part of the Linux Foundation&apos;s AgStack, has developed reusable Python tools for this purpose. These building blocks, using Python Web frameworks such as Django and FastAPI, are already being tested in 14 real-world sustainability pilots across Europe.

In this presentation, we will show how Python is helping farmers, from camera-based scouting in vineyards to UHF RFID cattle monitoring, UAV pest detection, IoT smart irrigation, and compost production monitoring. We will talk about what works across different countries, the challenges that arise when your &quot;data centre is a barn&quot;, and what still needs improvement.

Join us to hear farming stories from across Europe and learn practical lessons on deploying Python microservices on Edge devices to build a more democratised agritech landscape in Europe.</abstract>
                <slug>europython-2026-91690-how-python-is-democratising-agritech-for-farmers-across-europe</slug>
                <track>Ethics, Social Responsibility, Sustainability, Legal</track>
                
                <persons>
                    <person id='91789'>Felipe Arruda Pontes</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/T7ATVM/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/T7ATVM/feedback/</feedback_url>
            </event>
            <event guid='c5637783-4f6d-5d62-a9ed-300231bc4a5a' id='91158' code='BPJHWT'>
                <room>S2</room>
                <title>You Don&apos;t Need to Solve It: What Actually Gets You Hired in Tech</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T15:30:00+02:00</date>
                <start>15:30</start>
                <duration>00:30</duration>
                <abstract>Here&apos;s a secret from someone who&apos;s been on every side of the hiring table &#8212; as a candidate who&apos;s passed 80%+ of technical processes (including Google and Meta), as a hiring manager who&apos;s interviewed hundreds of engineers, and as the former CTO of Codility, the platform that powers technical assessments at thousands of companies worldwide: the interview is not about solving the problem.
Most candidates walk into coding interviews laser-focused on getting to the correct solution. They grind LeetCode, memorize algorithm patterns, and panic when they hit a wall. But here&apos;s what they miss &#8212; interviewers aren&apos;t scoring your answer. They&apos;re evaluating how you think, how you communicate, and how you handle uncertainty. The candidates who get offers aren&apos;t always the ones who solve the problem. They&apos;re the ones who make the interviewer want to work with them.
In this talk, I&apos;ll pull back the curtain on what technical interviews &#8212; both coding and system design &#8212; actually measure. You&apos;ll learn why talking through a wrong approach can score higher than silently arriving at the right one, why system design interviews aren&apos;t looking for the &quot;correct&quot; architecture, and why the soft skills you think are secondary are actually the main event.
Drawing from nearly 20 years of real-world experience on both sides of the table, I&apos;ll share a practical framework for approaching any technical interview with the right mindset. You&apos;ll walk away with concrete strategies you can apply at your next interview &#8212; not more algorithm flashcards, but a fundamentally different understanding of what the process is actually testing.</abstract>
                <slug>europython-2026-91158-you-don-t-need-to-solve-it-what-actually-gets-you-hired-in-tech</slug>
                <track>Professional Development, Careers, Leadership</track>
                
                <persons>
                    <person id='91398'>Wojtek Erbetowski</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/BPJHWT/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/BPJHWT/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='S4' guid='f458b6fb-5c85-511c-870e-76b00bae6031'>
            <event guid='48f3c32d-3566-5f7f-94cc-782082d5e9a5' id='91648' code='SGM9SV'>
                <room>S4</room>
                <title>Plugins in python - how it is done</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T10:10:00+02:00</date>
                <start>10:10</start>
                <duration>00:30</duration>
                <abstract>Have you ever wondered how popular tools like pytest or tox are able to discover and use plugins? 
In this talk we will learn about entry-points in Python package metadata and how they enable plugin discovery. 
We will review how some popular projects are using this mechanism to create their plugin systems.
After a walkthrough of the basics, we will explore how you can use this to create a plugin mechanism for your own project. 
We will explore possible hook implementations and their advantages and disadvantages. 
Finally we will learn how to make plugins discoverable on PyPi.</abstract>
                <slug>europython-2026-91648-plugins-in-python-how-it-is-done</slug>
                <track>Tooling, Packaging, Developer Productivity</track>
                
                <persons>
                    <person id='91747'>Grzegorz Bokota</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/SGM9SV/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/SGM9SV/feedback/</feedback_url>
            </event>
            <event guid='f67f5f20-fdca-5266-bdfb-fb474c5b8d27' id='88895' code='TG7YMS'>
                <room>S4</room>
                <title>Refactor, Optimize, and Test: Crafting Cleaner Python Code</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T11:05:00+02:00</date>
                <start>11:05</start>
                <duration>00:30</duration>
                <abstract>In software development, messy, outdated, or inefficient code is inevitable. We have to deal daily with old code that has not been touched for years, refactoring allows us to keep the code maintainable and easy to extend without altering its functionality, and it plays a crucial role in enhancing maintainability, readability, and performance.

This session explores the how, when, and why of code refactoring with code smell examples, coupled with practical insights on performance profiling techniques, tools and how it affects Refactoring. Also exploring how testing is very crucial when it comes to Refactoring.

Whether you&apos;re dealing with legacy code or looking to enhance your development workflows, this talk equips you with the tools and techniques to write cleaner, more efficient Python code.  

This session is inspired by Martin Fowler&apos;s seminal works on refactoring and Python-specific insights shared at EuroPython 2024.</abstract>
                <slug>europython-2026-88895-refactor-optimize-and-test-crafting-cleaner-python-code</slug>
                <track>~ None of these topics</track>
                
                <persons>
                    <person id='89443'>Mohamed Elmaghraby</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/TG7YMS/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/TG7YMS/feedback/</feedback_url>
            </event>
            <event guid='9d8c7d56-6db7-529b-8a04-7ed76a34a458' id='98322' code='QXZMP8'>
                <room>S4</room>
                <title>Python on Windows on Arm: Ecosystem Enablement Update</title>
                <subtitle></subtitle>
                <type>Sponsored</type>
                <date>2026-07-17T11:45:00+02:00</date>
                <start>11:45</start>
                <duration>00:30</duration>
                <abstract>Running Python natively on Windows on Arm requires more than a working interpreter. To have the best developer experience, it depends on compilers, packaging, binary wheels, CI infrastructure, and support from the wider library ecosystem.

This talk provides a status update of the Python ecosystem on Windows on Arm in 2026, based on ongoing collaboration between the open-source community, Microsoft, and Arm. We will cover CPython support, packaging, wheels, tooling, and CI availability, with a focus on what developers can realistically use today.

Using widely adopted libraries such as PyTorch as examples, we will show how native Arm support is being enabled and creating better capabilities across the ecosystem, what remaining challenges projects face when supporting Windows on Arm.

The talk will also cover the developer and CI story enabled by native Arm runners and Windows 11 Arm images on GitHub Actions, and how this infrastructure lowers the barrier for projects to add and maintain Windows on Arm support.

The goal is to give a snapshot of the current state, highlight the remaining gaps, and explain how contributors and maintainers can participate to the ongoing effort.</abstract>
                <slug>europython-2026-98322-python-on-windows-on-arm-ecosystem-enablement-update</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='91013'>Diego Russo</person><person id='91317'>Gleb Khmyznikov</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/QXZMP8/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/QXZMP8/feedback/</feedback_url>
            </event>
            <event guid='6fbc1c88-2714-5be7-ad06-90e13c7b563c' id='91682' code='BJBKRM'>
                <room>S4</room>
                <title>What I&apos;ve Learned Maintaining the MCP Python SDK</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T12:25:00+02:00</date>
                <start>12:25</start>
                <duration>00:30</duration>
                <abstract>After months of maintaining the MCP Python SDK and reviewing many community contributions, I&apos;ve seen some architectural hiccups in repeat. Developers struggle with questions that seem simple but have nuanced answers: When should one tool become three? When does a server need to split into two? How do you test an MCP server without spinning up a full client? When should you use resources or prompts instead?

In this talk, we will explore my learnings and understand how to design tool boundaries that scale with your server&apos;s complexity, structure your codebase for long-term maintainability, and build a testing strategy for your MCP server that works. I&apos;ll share real examples from the wild, both the antipatterns to run away from and the implementations worth adopting.

In 2026, the MCP Python SDK v2 will bring improved typing, a refined API, and better testing primitives. The architectural decisions you make today will determine whether that migration takes a day or a month.

Whether you&apos;re maintaining an internal tool or publishing to the community, you&apos;ll leave with a clear framework for evaluating your own server&apos;s design and concrete next steps to improve it.</abstract>
                <slug>europython-2026-91682-what-i-ve-learned-maintaining-the-mcp-python-sdk</slug>
                <track>Machine Learning, NLP and CV</track>
                
                <persons>
                    <person id='91783'>Marcelo Trylesinski</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/BJBKRM/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/BJBKRM/feedback/</feedback_url>
            </event>
            <event guid='9e6fcd1a-e66e-59b0-a23a-4e2974eeec74' id='88818' code='UGLF7Q'>
                <room>S4</room>
                <title>Everything you always wanted to know about pandas*</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T13:55:00+02:00</date>
                <start>13:55</start>
                <duration>00:30</duration>
                <abstract>*but were too afraid to ask!

`pandas`, the data wrangling workhorse, will celebrate its *18th year of existence* in 2026. You rely on it daily, but are you truly confident in your code?

This session is dedicated to the unwritten rules and hidden mechanics that separate a confident user from one who constantly battles warnings and unexpected outputs. We will confront the infamous `SettingWithCopyWarning` that haunts chained operations, clarify the critical differences in *deep vs. shallow copies* and the true cost of using `inplace=True`. We&#8217;ll also demystify the complex handling of missing data (`NaN`s) and much more!

Crucially, we will look to the future. `pandas` is engaged in a `DataFrame` library race with newer, high-performance libraries like `polars` and `duckdb`. The latest advancements&#8212;`pandas` 2.0 and the new and shiny 3.0, with features like *Copy-on-Write* and *Apache Arrow* integration&#8212;are the direct response, promising a future of dramatically improved speed, memory efficiency, and data types.

Join me to master the crucial concepts of the past and prepare for the performance gains and new behaviors of the future, ensuring your skills stay ahead of the curve. Stop guessing and start mastering `pandas`!</abstract>
                <slug>europython-2026-88818-everything-you-always-wanted-to-know-about-pandas</slug>
                <track>Data Engineering and MLOps</track>
                
                <persons>
                    <person id='89392'>Francesco Lucantoni</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/UGLF7Q/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/UGLF7Q/feedback/</feedback_url>
            </event>
            <event guid='ecf38aa9-80eb-54e7-a1e5-caf6fb92abe1' id='90626' code='NTZ7DG'>
                <room>S4</room>
                <title>From Ticket Taker to Problem Solver: Discovery for Senior Thinking</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T14:35:00+02:00</date>
                <start>14:35</start>
                <duration>00:30</duration>
                <abstract>Have you ever built a feature perfectly, only to discover it solved the wrong problem? Or made architectural decisions that seemed right in isolation but fell apart when business needs changed? You were missing context.

Discovery workshops give developers what tickets can&apos;t: the full picture. This talk explores how proper discovery phase work transforms developers from ticket executors into empowered problem solvers who make better decisions and have more fun doing it.
Developers with discovery artifacts like Business Model Canvas summaries, entity relation diagrams, and mapped user segments write better code. They understand why revenue streams demand certain performance characteristics, how customer segments shape feature priorities, and how key partnerships affect API design.

This talk walks through the discovery process from a developer perspective. You&apos;ll see what artifacts actually help us code, how business requirements map to technical architecture, and why understanding the problem space before touching code prevents costly rework. We&apos;ll cover epics, user stories, service architecture, and wireframes, but more importantly, how they connect to real business value.
Discovery workshops reduce surprises, empower confident decisions, and accelerate your growth from developer to senior engineer by teaching you to think beyond tickets. Learn how to work smarter by knowing the WHY, not just the WHAT.</abstract>
                <slug>europython-2026-90626-from-ticket-taker-to-problem-solver-discovery-for-senior-thinking</slug>
                <track>Professional Development, Careers, Leadership</track>
                
                <persons>
                    <person id='89546'>Damian Wysocki</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/NTZ7DG/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/NTZ7DG/feedback/</feedback_url>
            </event>
            <event guid='41e3a861-c46f-5746-b9ab-b753359810a3' id='90871' code='LRVCYU'>
                <room>S4</room>
                <title>Modern TUI with Textual in Python: Building Monokl</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T15:30:00+02:00</date>
                <start>15:30</start>
                <duration>00:30</duration>
                <abstract>As developers, our daily workflow is scattered across dozens of platforms: GitHub for PRs and issues, Jira or Linear for tasks, GitLab for CI/CD, and Todoist for personal focus. Constant &quot;context switching&quot; between browser tabs is a productivity killer. To solve this, I built **Monokl** - a unified terminal dashboard that aggregates these services into a single, high-performance interface.

In this talk, we explore how to build complex, API-driven applications using **Textual**, the rapid application development framework for Python. We will dive into the real-world challenges of building Monokl, including:

* **Async integration:** How to fetch data from multiple APIs (GitHub, Atlassian, GitLab, Linear) without freezing the UI.
* **Component architecture:** Designing reusable widgets for task lists, progress bars, and status feeds.
* **Reactive UI:** Using Textual&#8217;s reactive traits to ensure your dashboard updates not long after a PR is approved or a task is completed.
* **The TUI advantage:** Why a terminal interface is often faster and more focused than a web-based aggregator.

Attendees will walk away with a clear blueprint for building their own interactive terminal tools and a deep understanding of the Textual framework.

## **Learning Outcomes**

* **Learning Textual:** Understand the core architecture of `App`, `Screen`, and `Widget`.
* **Managing async data:** Learn patterns for integrating multiple external APIs/CLIs into a single event loop.
* **Modern layouts:** How to use **TCSS** (Textual CSS) to create beautiful, responsive terminal layouts.
* **State &amp; reactivity:** How to use `@reactive` attributes to create a UI that stays in sync with background data.</abstract>
                <slug>europython-2026-90871-modern-tui-with-textual-in-python-building-monokl</slug>
                <track>Tooling, Packaging, Developer Productivity</track>
                
                <persons>
                    <person id='91067'>Piotr Gr&#281;dowski</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/LRVCYU/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/LRVCYU/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='S3A' guid='81adc7d4-7479-5204-bb50-171fe63c4b34'>
            <event guid='742970df-19a8-539b-9b40-81a4103e38df' id='91650' code='LFSJYL'>
                <room>S3A</room>
                <title>Robot Holmes and the Silenced Witness: A Noir Guide to Real-Time Voice AI</title>
                <subtitle></subtitle>
                <type>Talk (long session)</type>
                <date>2026-07-17T10:10:00+02:00</date>
                <start>10:10</start>
                <duration>00:45</duration>
                <abstract>*The hardships of building End-to-End Voice Assistants in the Wild*

Robot Holmes is back in the mist-choked streets of MLington, but he isn&#8217;t working solo.

Meet Zintia, an intern from the Voice Assistant district. She&#8217;s helpful, hyper-efficient, and incredibly annoying, providing Holmes with data before he can lift a finger. But Zintia has a secret. The longer she&#8217;s on the case, the more of her &quot;dark side&quot; emerges. She&#8217;s not just hearing the truth; she&#8217;s deciding which parts Holmes is allowed to hear.

This is a story-driven, practical session for anyone tired of &quot;Hello World&quot; chatbots. We will move past the hype to look at what it actually take to make End-to-End Voice Assistants work in the real world.

Our Investigation Includes:

- The Gear: How to use E2E speech models like gpt-realtime and integrate them into a production voice interface using FreeSWITCH and Pipecat.
- The Interrogation: Navigating the hardships of instruction-following, ensuring underlying LLMs stay on path through defined states and agentic flow.
- The Double-Cross: Identifying and mitigating &quot;hidden agendas&quot; - the hallucinations and safety guardrails that can make a voice assistant turn on its user.

Expect live demos, hard-won production lessons, a detective noir story and a blueprint for building voice agents that are fast, fluid, and (mostly) law-abiding.</abstract>
                <slug>europython-2026-91650-robot-holmes-and-the-silenced-witness-a-noir-guide-to-real-time-voice-ai</slug>
                <track>Machine Learning, NLP and CV</track>
                
                <persons>
                    <person id='91732'>Johannes Kolbe</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/LFSJYL/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/LFSJYL/feedback/</feedback_url>
            </event>
            <event guid='753941fb-0272-53cf-9b01-894ddc61b329' id='91308' code='FBQQXS'>
                <room>S3A</room>
                <title>Breaking changes &#8211; not great, not terrible</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T11:05:00+02:00</date>
                <start>11:05</start>
                <duration>00:30</duration>
                <abstract>Do you maintain a Python library, REST API or any other user-facing interface? Breaking changes are frowned upon, but from a a certain project size, they become unavoidable.

How do you make the breaking changes manageable? How should you version your package / API? Should you put an upper bound on your dependencies?

We&apos;ll discuss deprecation, forward and backward compatibility, upgrade strategies and more, illustrated on real-world examples. Our main focus will be on API changes of Python libraries, but the principles are widely applicable.</abstract>
                <slug>europython-2026-91308-breaking-changes-not-great-not-terrible</slug>
                <track>Tooling, Packaging, Developer Productivity</track>
                
                <persons>
                    <person id='91520'>Jan Mus&#237;lek</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/FBQQXS/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/FBQQXS/feedback/</feedback_url>
            </event>
            <event guid='a5460a6d-27ea-531f-bb25-25c11df2cd7d' id='100293' code='BMX7VR'>
                <room>S3A</room>
                <title>Sponsor Highlight &amp; Recruitment Fair</title>
                <subtitle></subtitle>
                <type>Sponsored</type>
                <date>2026-07-17T11:45:00+02:00</date>
                <start>11:45</start>
                <duration>01:00</duration>
                <abstract>Many of our sponsors are looking for people from a wide range of backgrounds and experience levels to join their teams. This session is a chance to hear directly from companies about what they are building, the kinds of people they epare looking for, and what it&#8217;s like to work with them.

Throughout the session, sponsors will give short introductions, followed by time for questions and conversations. If something sparks your interest, you can continue chatting with the teams at their booths afterwards. We hope you, like many folks in past years, will discover new opportunities and make valuable connections through the conversations started here.</abstract>
                <slug>europython-2026-100293-sponsor-highlight-recruitment-fair</slug>
                <track></track>
                
                <persons>
                    
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/BMX7VR/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/BMX7VR/feedback/</feedback_url>
            </event>
            <event guid='f9a5ed77-e6af-51b0-9aad-485ebc5a9925' id='91227' code='HEUFDT'>
                <room>S3A</room>
                <title>Powering Up Your Types with Annotated</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T13:55:00+02:00</date>
                <start>13:55</start>
                <duration>00:30</duration>
                <abstract>Python&#8217;s type system isn&apos;t just for static analysis anymore. With Annotated, our types can carry their own documentation, validation logic, and runtime instructions&#8212;effectively breaking the boundary between &quot;checking code&quot; and &quot;executing it.&quot; This talk explores how Annotated acts as a universal metadata engine, allowing us to define semantic and branded types that attach rich instructions to our data without cluttering the core code.

The real magic of Annotated lies in its ability to handle composition and layering in application design. We&#8217;ll look at how to build from the inside out, starting with core business logic in pure Python and then layering on metadata to bridge the gap to higher-level application layers. By enriching primitive types with the annotated-types standard, we can enable (almost) zero-config test data generation and property-based testing using Polyfactory and Hypothesis. From there, we can layer on SQLAlchemy metadata to handle persistence without letting the database schema influence our data model, or use Pydantic to provide specialized data validation and serialization metadata&#8212;all within the same type definition.

We will also see how Annotated serves as a single source of truth for documentation. We&#8217;ll explore annotated-doc as an alternative approach to documentation compared to traditional Sphinx or NumPy/Google-style docstrings, showing how to leverage type hints to keep our descriptions directly attached to the data they define.

The goal is to show how composition and layering allow your core logic to stay stable while your infrastructure evolves independently. You&#8217;ll get a whirlwind tour of how the modern Python stack&#8212;including Pydantic, SQLAlchemy, and FastAPI&#8212;has converged on Annotated as a primary or at least first-class configuration interface. You&apos;ll walk away with a practical framework for using these integrations to keep your software design clean, decoupled, and easy to maintain in everyday development.

This talk is for anyone interested in modern Python typing and effective application design. We&#8217;ll focus on how to use Annotated to bind your favorite libraries together and apply these patterns to your daily work. If you&apos;re familiar with basic type hints, you&apos;re ready to go&#8212;we&apos;ll build the rest from the ground up!</abstract>
                <slug>europython-2026-91227-powering-up-your-types-with-annotated</slug>
                <track>Web Development, Web APIs, Front-End Integration</track>
                
                <persons>
                    <person id='91462'>Vladyslav Fedoriuk</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/HEUFDT/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/HEUFDT/feedback/</feedback_url>
            </event>
            <event guid='caef5376-f0ee-547a-9057-cbd5aa23acd6' id='91056' code='ZFJEUJ'>
                <room>S3A</room>
                <title>Stop Guessing, Start Understanding: How Arrow and Pandas Exchange Data</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T14:35:00+02:00</date>
                <start>14:35</start>
                <duration>00:30</duration>
                <abstract>Pandas now natively supports PyArrow-backed data types. But what does that actually mean? If you&apos;ve ever wondered how these two libraries relate to each other, whether they compete or complement each other, and what happens to your data when it moves between them, this talk is for you.

As PyArrow maintainers, we took on the challenge of digging into the conversion code between PyArrow and Pandas, and we&apos;re here to share what we&apos;ve learned. We&apos;ll show you what&apos;s really going on under the hood: how Arrow&apos;s columnar format differs from Pandas&apos; block-based memory layout (including what a BlockManager actually is), when data can be shared without copying, and when a full copy is unavoidable.

We&apos;ll also clarify what each library is designed for and how they work together rather than against each other. With pandas increasingly adopting PyArrow as a backend, understanding this relationship is becoming essential rather than optional.

This talk is aimed at Python developers and data engineers who want to deepen their understanding of what&apos;s happening beneath the surface.</abstract>
                <slug>europython-2026-91056-stop-guessing-start-understanding-how-arrow-and-pandas-exchange-data</slug>
                <track>Data Engineering and MLOps</track>
                
                <persons>
                    <person id='91322'>Alenka Frim</person><person id='91338'>Ra&#250;l Cumplido Dom&#237;nguez</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/ZFJEUJ/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/ZFJEUJ/feedback/</feedback_url>
            </event>
            <event guid='18852878-5777-51b9-8e29-e88f7185d8a9' id='91665' code='MP9ZRM'>
                <room>S3A</room>
                <title>Supporting Android and iOS in your Python package</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T15:30:00+02:00</date>
                <start>15:30</start>
                <duration>00:30</duration>
                <abstract>One of the most exciting recent developments in Python is the addition of Android and iOS as officially-supported platforms. This allows us to reach far more users on the devices where they spend the most time.

What does this mean for you as a Python package maintainer? If your package is pure-Python, then it&apos;ll probably just work. But if it uses C, Cython, Rust, or any other native-compiled language, then you&apos;ll have to take some steps to make it available to these new platforms.

The mobile support status of the most popular packages on PyPI can be seen at [beeware.org/mobile-wheels](https://beeware.org/mobile-wheels). Let&apos;s help push those numbers up! Come to this talk to learn about:

- Why mobile platforms are important for the future of Python
- How to build your package for Android and iOS using cibuildwheel
- How to test your mobile builds &#8211; even if you don&apos;t have Android or iOS hardware
- How to distribute mobile packages to your users
- How to automate all of these things in your CI system

At the sprints, there will also be an opportunity to put this into practice, by getting personal assistance from the BeeWare team in building your package for mobile.</abstract>
                <slug>europython-2026-91665-supporting-android-and-ios-in-your-python-package</slug>
                <track>Tooling, Packaging, Developer Productivity</track>
                
                <persons>
                    <person id='91774'>Malcolm Smith</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/MP9ZRM/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/MP9ZRM/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='S3B' guid='8b2a7d87-e211-5bf0-aec1-50733db791b3'>
            <event guid='898cdd0e-a7ec-518a-a2e0-313299da6e9e' id='91527' code='RB9TKP'>
                <room>S3B</room>
                <title>Is Object Detection Dead? A Case for Recognizing LEGO Bricks</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T10:10:00+02:00</date>
                <start>10:10</start>
                <duration>00:30</duration>
                <abstract>With the rise of foundation models and zero-shot segmentation, it sometimes feels like fine-tuning classic object detection models is outdated. But is it? There are over 90 000 different LEGO bricks produced in almost 200 colors, and a single photo can easily contain hundreds of bricks. This makes LEGO recognition a perfect stress test for both traditional object detectors and the latest generation of vision models.

During this talk, I will walk you through a practical comparison of approaches to LEGO brick detection. I will start with the classic object detection pipeline: dataset creation, annotation, and training with models like NanoDet and RF-DETR. Then, I will put these detectors up against zero-shot approaches: SAM 3 (Segment Anything Model 3), and vision language models, both closed-source APIs like Gemini and open-source alternatives like Qwen-VL. Along the way, I will share the pitfalls, surprising results, and lessons learned, including cases where a fine-tuned lightweight detector still outperforms models orders of magnitude larger.</abstract>
                <slug>europython-2026-91527-is-object-detection-dead-a-case-for-recognizing-lego-bricks</slug>
                <track>Machine Learning, NLP and CV</track>
                
                <persons>
                    <person id='91645'>Piotr Rybak</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/RB9TKP/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/RB9TKP/feedback/</feedback_url>
            </event>
            <event guid='d6a8b5bb-a6a1-5fab-80a5-f6dc131c0abf' id='91354' code='SCZ8ZK'>
                <room>S3B</room>
                <title>Building your DSL compiler in Python</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T11:45:00+02:00</date>
                <start>11:45</start>
                <duration>00:30</duration>
                <abstract>A multitude of Python libraries offer Just In Time (JIT) compilation capabilities for general purpose computations, such as JAX or Numba. But in certain cases these solutions might not be enough, thus we seek more specialized solutions that can include domain knowledge as well.

Compilers for Domain Specific Languages (DSL) allow us to incorporate additional information during compilation, possibly tied to a specific domain, such as sparse arrays computing.

In this talk I&apos;m going to introduce [Finch](https://finch-tensor.org/) - language and a compiler for sparse and structured multidimensional arrays, which specializes its kernels for control flow and data structures. It supports common control flow (loops, if conditions, etc.) and a wide variety of data structures - dense, sparse list, triangles, coordinate, or symmetry. 

The ongoing effort to move Finch from the original Julia implementation to pure Python exposed us to new ways of using Python - as a language for implementing compilers.

In this talk I will present some key aspects of Python language and ecosystem which played a central role in making us productive in the last months during this undertaking:
- Defining IRs with dataclasses and utilizing Structural Pattern Matching for term rewriting,
- Using [Lark](https://lark-parser.readthedocs.io/en/stable/) for parsing custom languages into large IR structures,
- Expressing complex rewrite schemes with [rewrite-tools](https://pypi.org/project/rewrite-tools/).

The audience will learn our approach to designing the structure of a compiler, together with a few technical decisions made along the way.
I hope these insights will be useful for engineers and scientists coming from closely related fields and projects also involving compiling custom languages, such as probabilistic programming or hardware design.</abstract>
                <slug>europython-2026-91354-building-your-dsl-compiler-in-python</slug>
                <track>Machine Learning: Research &amp; Applications</track>
                
                <persons>
                    <person id='91551'>Mateusz Sok&#243;&#322;</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/SCZ8ZK/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/SCZ8ZK/feedback/</feedback_url>
            </event>
            <event guid='aa00dbe4-1de3-5178-a8bb-af8fb3a22bda' id='98192' code='7NWR9R'>
                <room>S3B</room>
                <title>When Python Agents Meet 3D: Automating Blender from Natural Language</title>
                <subtitle></subtitle>
                <type>Sponsored</type>
                <date>2026-07-17T12:25:00+02:00</date>
                <start>12:25</start>
                <duration>00:30</duration>
                <abstract>What if AI could help design 3D worlds without taking creative control away from humans?

In this talk, I will present a hosted Blender agent that creates and edits 3D scenes from natural language. The agent runs Blender headlessly inside Docker, communicates with it through a TCP socket protocol, and exposes Python-powered tools for scene creation, object manipulation, materials, screenshots, rendering, and asset import. It is built with the Microsoft Agent Framework and Azure AI Foundry, using Python as the bridge between the LLM, Blender&#8217;s scripting API, cloud storage, and the hosted runtime.

More than a technical demo, this talk explores a potential future pipeline for AI-assisted 3D creation: a workflow where artists, game designers, architects, and developers can iteratively generate, inspect, modify, and refine 3D environments while keeping human control at every stage. Instead of replacing creative tools, the agent becomes a programmable collaborator that can accelerate repetitive work, propose variations, and turn high-level intent into editable Blender scenes.

Through live examples, we will discuss what this could mean for the future of video game world-building, virtual production, and 3D architecture: faster prototyping, more accessible scene creation, and new ways to move from idea to interactive environment. Attendees will leave with a practical architecture for building Python agents that operate real creative software, and a grounded view of both the opportunities and current limitations of human-in-the-loop AI for 3D design.</abstract>
                <slug>europython-2026-98192-when-python-agents-meet-3d-automating-blender-from-natural-language</slug>
                <track>Python for Games, Art, Play and Expression</track>
                
                <persons>
                    <person id='97759'>David Rousset</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/7NWR9R/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/7NWR9R/feedback/</feedback_url>
            </event>
            <event guid='e87e4de3-84d7-58b2-93e5-f5befa37f3b3' id='99531' code='R3GBYA'>
                <room>S3B</room>
                <title>A vision for software freedom in 2048</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T13:55:00+02:00</date>
                <start>13:55</start>
                <duration>00:30</duration>
                <abstract>Our litigation against Apple in front of the European Court of Justice, pushing for sustainable long term funding for Free Software in the EU and member states, &quot;Public Money? Public Code!&quot;, Device Neutrality, Router Freedom, Free Your Android, assistance with licensing questions, a European coding competition for teenagers, and a tale of software, skateboards, and raspberry ice cream. These are some of the activities by the Free Software Foundation Europe (FSFE), which at this year&apos;s Europython celebrates its 25 anniversary in empowering users to control technology.

How would the world like in our area in 2048, if the FSFE has been successful? This talk will give an overview of the FSFE&apos;s vision, invite participants to give feedback on the next decades of our journey, and invite everyone to join those who shaped our work for software freedom at the FSFE&apos;s anniversary party on Saturday.</abstract>
                <slug>europython-2026-99531-a-vision-for-software-freedom-in-2048</slug>
                <track>~ None of these topics</track>
                
                <persons>
                    <person id='98979'>Matthias Kirschner</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/R3GBYA/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/R3GBYA/feedback/</feedback_url>
            </event>
            <event guid='05ab2302-df03-5757-b4ca-1fad6b0d4f66' id='91781' code='AXAV7D'>
                <room>S3B</room>
                <title>The Problem with None: Sentinel Values and the Semantics of Absence</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T14:35:00+02:00</date>
                <start>14:35</start>
                <duration>00:30</duration>
                <abstract>None is probably the most overloaded value in Python &#8212; and often the wrong one.

Python quietly depends on sentinel values: None, NotImplemented, Ellipsis, dataclasses.MISSING. They aren&#8217;t just placeholders. They define semantics, coordinate object interactions, and influence API design in subtle but powerful ways.

In this talk, we treat sentinel values as a deliberate design tool. We&#8217;ll uncover how NotImplemented enables double dispatch, why None frequently conflates &#8220;missing&#8221; with &#8220;empty,&#8221; and how sentinel patterns permeate the standard library.

But the real tension appears in typing. Python&#8217;s type system still cannot properly express sentinel semantics. Optional, overload, and Literal only approximate the problem, and building a fully typed custom sentinel remains an open challenge.

We&#8217;ll examine the deferred PEP 661, what it tried to solve, and what its absence means today. Expect practical patterns, real-world examples, and a sharper way to think about absence in Python.</abstract>
                <slug>europython-2026-91781-the-problem-with-none-sentinel-values-and-the-semantics-of-absence</slug>
                <track>Python Core, Internals, Extensions</track>
                
                <persons>
                    <person id='91849'>Florian Wilhelm</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/AXAV7D/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/AXAV7D/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Glass room' guid='a1bb95b4-9783-5d3e-8c40-335f0556a714'>
            <event guid='cc3dac42-c950-59fb-800b-22f007be9fc4' id='101536' code='LSNR3C'>
                <room>Glass room</room>
                <title>The Experience Is the Community</title>
                <subtitle></subtitle>
                <type>Talk</type>
                <date>2026-07-17T14:30:00+02:00</date>
                <start>14:30</start>
                <duration>01:30</duration>
                <abstract>Open source communities don&#8217;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). You can run this workshop yourself. Adapt the timing to your community.
Free to use, adapt, and share with attribution.</abstract>
                <slug>europython-2026-101536-the-experience-is-the-community</slug>
                <track>~ None of these topics</track>
                
                <persons>
                    <person id='100722'>Georgi Ker</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/LSNR3C/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/LSNR3C/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Poster Hall A' guid='e8af958f-628b-5e5d-95e1-a6c40c2b8afa'>
            <event guid='f1358384-ceec-58f9-a8e5-e9a4ef09b00f' id='91749' code='BX77EE'>
                <room>Poster Hall A</room>
                <title>reusable-tox.yml: Five Patterns to Eliminate CI/CD Boilerplate</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2026-07-17T12:55:00+02:00</date>
                <start>12:55</start>
                <duration>01:00</duration>
                <abstract>Maintaining CI/CD configurations across dozens of Python projects means copying the same `tox` invocations, Python version matrices, and error-handling logic into every repository. This poster presents five architectural patterns from the `reusable-tox.yml` project that eliminate this duplication by applying familiar software engineering principles to GitHub Actions workflows.

Each pattern is illustrated with a before/after YAML comparison and a Python code analogy, making the design decisions immediately recognizable to Python developers:

* *Singular inputs* &#8212; accepting one Python version per workflow call instead of JSON arrays. Like writing `def run(version: str)` instead of `def run(versions: list[str])` &#8212; simpler to reason about, test, and compose via caller-side matrix strategies.
* *Caller-side matrix strategy* &#8212; separating &quot;what to test&quot; (the calling workflow&apos;s job) from &quot;how to test&quot; (the reusable workflow&apos;s job). The same Separation of Concerns you&apos;d apply to Python modules.
* *Three-phase execution* &#8212; splitting `tox` runs into environment preparation (`tox --notest`), main execution, and debug rerun on failure. Like Unix pipelines &#8212; each stage transforms data through a single responsibility, improving cacheability and error diagnosis.
* *Composite action hooks* &#8212; providing extension points where projects inject custom setup logic without modifying shared infrastructure, discovered automatically via `hashFiles()`. The Dependency Injection pattern applied to CI/CD.
* *Explicit over implicit* &#8212; refusing to auto-detect `tox` environments or infer configuration. Predictable and debuggable beats magical and surprising.

The poster includes a &quot;Which pattern solves your problem?&quot; decision flowchart and a QR code linking to the open-source repository with ready-to-fork templates.

Born from maintaining dozens of Python projects including aiohttp, CherryPy, and pip-tools, these patterns treat CI/CD with the same architectural rigor as application code.</abstract>
                <slug>europython-2026-91749-reusable-tox-yml-five-patterns-to-eliminate-ci-cd-boilerplate</slug>
                <track>Tooling, Packaging, Developer Productivity</track>
                
                <persons>
                    <person id='91766'>Sviatoslav Sydorenko (&#1057;&#1074;&#1103;&#1090;&#1086;&#1089;&#1083;&#1072;&#1074; &#1057;&#1080;&#1076;&#1086;&#1088;&#1077;&#1085;&#1082;&#1086;)</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/BX77EE/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/BX77EE/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Poster Hall B' guid='3d4ca438-5ac7-5979-a7a3-20cdbf3dafd1'>
            <event guid='fc18478e-5d42-5f25-a792-f3f95419bda2' id='90963' code='GP39VP'>
                <room>Poster Hall B</room>
                <title>Why Coding Agents Fail at ML (and How to Fix It)</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2026-07-17T12:55:00+02:00</date>
                <start>12:55</start>
                <duration>01:00</duration>
                <abstract>Over the last year, LLM-based coding agents have matured to the point where they can autonomously navigate codebases, edit files, run tests, and iterate on solutions with minimal human input. Many Python teams have started applying these agents to machine learning projects, where the volume of repetitive experimental work makes automation appealing.

However, coding execution and ML optimization are not the same problem. In software engineering, success is often local and binary: a feature works or it does not, a bug is reproduced or fixed. In ML, code correctness is only a prerequisite. Progress is determined by measured model behavior across repeated experiments, and that measurement only happens after training and evaluation are complete. This distinction creates a coordination gap. Coding agents can generate and modify training code, but without external structure they drift over long experiment horizons. Teams encounter recurring failure modes: multiple coupled changes in a single step make results unattributable, LLMs lose context and rediscover already tested hypothesis in slightly different wording, etc.

This poster presents an architecture that addresses the gap by pairing coding agents with a deterministic (non-LLM) orchestrator. The orchestrator manages experimentation as a tree search. It starts from a reproducible baseline, samples hypothesis-driven modifications constrained to a single aspect per step, evaluates each modification through a fixed entrypoint that returns multiple metrics, and decides which branches to expand or prune based on statistical evidence. Each experiment runs in an isolated git worktree, so every branch has a clean file state, an independent diff, and a separate log. An anti-repetition memory tracks previously attempted hypotheses across the tree to prevent the agent from regenerating equivalent ideas. When stopping criteria are met, an integration stage combines winning branches and evaluates the result. 

This presentation is aimed at ML engineers and data scientists who have experimented with (or are considering) coding agents for their workflows. Attendees will learn how to utilize coding agents for ML tasks and structure experiments as an LLM-searchable trajectory with deterministic controls rather than a sequence of ad-hoc edits.</abstract>
                <slug>europython-2026-90963-why-coding-agents-fail-at-ml-and-how-to-fix-it</slug>
                <track>Machine Learning, NLP and CV</track>
                
                <persons>
                    <person id='91238'>Olha Poliuliakh</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments></attachments>

                <url>https://programme.europython.eu/europython-2026/talk/GP39VP/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/GP39VP/feedback/</feedback_url>
            </event>
            
        </room>
        <room name='Poster Hall C' guid='a2ed4948-2605-5bec-8374-42596e7a73a6'>
            <event guid='7896fab2-b724-5c76-a882-977fb17a6321' id='91511' code='U7AHP3'>
                <room>Poster Hall C</room>
                <title>PyPartMC: A Pythonic interface enhancing Fortran-based simulation package</title>
                <subtitle></subtitle>
                <type>Poster</type>
                <date>2026-07-17T12:55:00+02:00</date>
                <start>12:55</start>
                <duration>01:00</duration>
                <abstract>**PyPartMC** is a Pythonic interface to *PartMC*. PartMC (Particle Monte Carlo) is a stochastic, particle-resolved atmospheric aerosol dynamics model, used for solving aerosol processes such as coagulation, nucleation, emission, and deposition. Both projects are free and open-source.

One of the main aims of the PyPartMC project is streamlining user experience. To use PartMC, you have to: work with UNIX shell, provide Fortran and C libraries, and perform standard Fortran and C source code configuration, compilation and linking. All of that boils down to a single **pip** package manager call with PyPartMC. Depending on the OS, PyPartMC will install from a binary wheel or compile from a source wheel containing all the dependencies.

PyPartMC can operate on **Linux**, **Windows** and **MacOS**, and has been tested to install correctly on **Google Colab** Jupyter notebook cloud platform. The API is also callable from C++, Julia, and MATLAB. PyPartMC ships with a collection of introductory notebook examples, that can help with learning the library&apos;s API.

From the developers point of view, PyPartMC is an interesting challenge, due to its **multi-language** environment. A C++ API is built on top of the Fortran one, leveraging the C-Fortran API. The Python interface is then constructed with the help of **nanobind** library. 

**PyPartMC** is part of **open-atmos**, which is a multi-institutional community hub for projects in atmospheric sciences (https://github.com/open-atmos). The development of this package is a collaboration between AGH University of Krakow and University of Illinois Urbana-Champaign. 

In the poster, I will outline the package features and architecture, and also highlight the newly engineered components and CI workflows engineered in our team at AGH.</abstract>
                <slug>europython-2026-91511-pypartmc-a-pythonic-interface-enhancing-fortran-based-simulation-package</slug>
                <track>Jupyter and Scientific Python</track>
                
                <persons>
                    <person id='91669'>Gracjan Adamus</person>
                </persons>
                <language>en</language>
                
                <recording>
                    <license></license>
                    <optout>false</optout>
                </recording>
                <links></links>
                <attachments>
                    <attachment href="https://programme.europython.eu/media/europython-2026/submissions/U7AHP3/resources/pypartmc_Ilc0zFX.svg">PyPartMC logo</attachment>
                </attachments>

                <url>https://programme.europython.eu/europython-2026/talk/U7AHP3/</url>
                <feedback_url>https://programme.europython.eu/europython-2026/talk/U7AHP3/feedback/</feedback_url>
            </event>
            
        </room>
        
    </day>
    <day index='6' date='2026-07-18' start='2026-07-18T04:00:00+02:00' end='2026-07-19T03:59:00+02:00'>
        
    </day>
    <day index='7' date='2026-07-19' start='2026-07-19T04:00:00+02:00' end='2026-07-20T03:59:00+02:00'>
        
    </day>
    
</schedule>
