Uploaded August 2026 | Updated September 2026, 2 weeks ago
[EuroPython 2026 - S1 on 2026-07-16]
๐ค *Python Dicts: Past, Present, and Free-Threaded Future by Lysandros Nikolaou*
๐ https://ep2026.europython.eu/session/python-dicts-past-present-and-free-threaded-future
๐ 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'll start by exploring the internals of CPython'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'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'll look at the ongoing effort to document CPython'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's most important data structure works, how it's been adapted for a free-threaded world, and what they can (or can't) safely do with dicts across threads.
---
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License: creativecommons.org/licenses/by-nc-sa/4.0
[EuroPython 2026 - S1 on 2026-07-16]
๐ค *Python Dicts: Past, Present, and Free-Threaded Future by Lysandros Nikolaou*
๐ https://ep2026.europython.eu/session/python-dicts-past-present-and-free-threaded-future
๐ 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'll start by exploring the internals of CPython'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'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'll look at the ongoing effort to document CPython'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's most important data structure works, how it's been adapted for a free-threaded world, and what they can (or can't) safely do with dicts across threads.
---
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License: creativecommons.org/licenses/by-nc-sa/4.0

![EuroPython 2026 - Conference Opening ๐
[EuroPython 2026 - S1 on 2026-07-15]
๐ค *Conference Opening ๐*
๐ https://ep2026.europython.eu/session/conference-opening
๐ Abstract:
Welcome to EuroPython 2026!
Join us on the opening session, where we will kick-off the conference days, and tell you whats 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.
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License: https://creativecommons.org/licenses/by-nc-sa/4.0/ EuroPython 2026 - Conference Opening ๐](https://i.ytimg.com/vi/srN_3WOqFaQ/mqdefault.jpg)
![Designing and Building Custom Keyboards โจ๏ธ with Python - Carlos A Aranibar
[EuroPython 2026 - S2 on 2026-07-15]
๐ค *Designing and Building Custom Keyboards โจ๏ธ with Python by Carlos A Aranibar*
๐ https://ep2026.europython.eu/session/designing-and-building-custom-keyboards-with-python
๐ 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โ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โ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โll know how to question your current keyboard and how to start building your own with Python.
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License: https://creativecommons.org/licenses/by-nc-sa/4.0/ Designing and Building Custom Keyboards โจ๏ธ with Python - Carlos A Aranibar](https://i.ytimg.com/vi/tT_n80RtEtM/mqdefault.jpg)
![Breaking changes โ not great, not terrible - Jan Musรญlek
[EuroPython 2026 - S3A on 2026-07-17]
๐ค *Breaking changes โ not great, not terrible by Jan Musรญlek*
๐ https://ep2026.europython.eu/session/breaking-changes-not-great-not-terrible
๐ 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?
Well 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.
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License: https://creativecommons.org/licenses/by-nc-sa/4.0/ Breaking changes โ not great, not terrible - Jan Musรญlek](https://i.ytimg.com/vi/tny5Ac4VlIo/mqdefault.jpg)
![Data wrangling in a modern terminal - Jan Pipek
[EuroPython 2026 - S3B on 2026-07-16]
๐ค *Data wrangling in a modern terminal by Jan Pipek*
๐ https://ep2026.europython.eu/session/data-wrangling-in-a-modern-terminal
๐ Abstract:
Once we constrain ourselves to a rectangle of fixed-width characters (preferably white on a black background), we start to see the world a bit differently. If we want to thoroughly investigate it (a.k.a. perform data analysis), we have to be equipped with appropriate tools - be it techniques, libraries or standalone console-based applications. Letโs see what the terminal has to offer when reading, manipulating, presenting and even plotting numerical data. We might even finish with a live dashboard your audience will love (or perhaps will not).
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License: https://creativecommons.org/licenses/by-nc-sa/4.0/ Data wrangling in a modern terminal - Jan Pipek](https://i.ytimg.com/vi/tx161-RrH8c/mqdefault.jpg)

![The hardest test suite I ever built - a pytest case study - Grzegorz Kocjan
[EuroPython 2026 - S2 on 2026-07-15]
๐ค *The hardest test suite I ever built - a pytest case study by Grzegorz Kocjan*
๐ https://ep2026.europython.eu/session/the-hardest-test-suite-i-ever-built-a-pytest-case-study
๐ 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 โverificationโ 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โ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โ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.
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License: https://creativecommons.org/licenses/by-nc-sa/4.0/ The hardest test suite I ever built - a pytest case study - Grzegorz Kocjan](https://i.ytimg.com/vi/uH9hsF-n8ko/mqdefault.jpg)
![Flying in Formation - with Python Threading and ROS2 Parallelism - DEBORAH E DANJUMA
[EuroPython 2026 - S3B on 2026-07-16]
๐ค *Flying in Formation - with Python Threading and ROS2 Parallelism by DEBORAH E DANJUMA*
๐ https://ep2026.europython.eu/session/flying-in-formation-with-python-threading-and-ros2-parallelism
๐ 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 โ but it is entirely possible with Python, a handful of threading primitives, and ROS2s 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 โ bids from four robots, assignment confirmations, formation completion signals โ without blocking the entire node and without introducing race conditions or deadlocks?
We will explore how Pythons threading.Event and Lock primitives were used alongside ROS2s MultiThreadedExecutor and ReentrantCallbackGroup to implement a synchronized bid-collation protocol, a global assignment barrier, and a concurrent multi-goal formation controller โ 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).
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License: https://creativecommons.org/licenses/by-nc-sa/4.0/ Flying in Formation - with Python Threading and ROS2 Parallelism - DEBORAH E DANJUMA](https://i.ytimg.com/vi/uVecKdJ4V7g/mqdefault.jpg)

![What Ive Learned Maintaining the MCP Python SDK - Marcelo Trylesinski
[EuroPython 2026 - S4 on 2026-07-17]
๐ค *What Ive Learned Maintaining the MCP Python SDK by Marcelo Trylesinski*
๐ https://ep2026.europython.eu/session/what-i-ve-learned-maintaining-the-mcp-python-sdk
๐ Abstract:
After months of maintaining the MCP Python SDK and reviewing many community contributions, Ive 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 servers complexity, structure your codebase for long-term maintainability, and build a testing strategy for your MCP server that works. Ill 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 youre maintaining an internal tool or publishing to the community, youll leave with a clear framework for evaluating your own servers design and concrete next steps to improve it.
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License: https://creativecommons.org/licenses/by-nc-sa/4.0/ What Ive Learned Maintaining the MCP Python SDK - Marcelo Trylesinski](https://i.ytimg.com/vi/vELVhor6xp0/mqdefault.jpg)
