Uploaded March 2026 | Updated September 2026, 2 weeks ago
We asked our 2025 sponsors what makes EuroPython special, from meaningful conversations and strong engagement to a welcoming, diverse, and passionate Python community.
Hear directly from sponsors about their experiences connecting with 1500+ Pythonistas, showcasing products, building relationship, receiving real feedback, and being part of a conference that truly values community. From first-time sponsors to long-term supporters, one thing is clear: *EuroPython is where the Python Community happens.*
🐍 Connect with the Python Community 🤝
❤️ Support EuroPython: https://europython.eu | sponsoring@europython.eu 🎉
We asked our 2025 sponsors what makes EuroPython special, from meaningful conversations and strong engagement to a welcoming, diverse, and passionate Python community.
Hear directly from sponsors about their experiences connecting with 1500+ Pythonistas, showcasing products, building relationship, receiving real feedback, and being part of a conference that truly values community. From first-time sponsors to long-term supporters, one thing is clear: *EuroPython is where the Python Community happens.*
🐍 Connect with the Python Community 🤝
❤️ Support EuroPython: https://europython.eu | sponsoring@europython.eu 🎉
![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)

![Why doing difficult things is good for you and good for your team - Katie Bickford
[EuroPython 2026 - S2 on 2026-07-15]
🎤 *Why doing difficult things is good for you and good for your team by Katie Bickford*
🔗 https://ep2026.europython.eu/session/why-doing-difficult-things-is-good-for-you-and-good-for-your-team
📝 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’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’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—others might learn something new, or strengthen their own understanding by helping you out.
- There’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’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’t just lack experience, we dont know what we dont know and its *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’ll share how my team’s support made all the difference, and offer some practical ideas for how others can support their junior colleagues, too.
This isn’t a super technical talk. It’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; theres hopefully something useful and/or interesting in this for everyone.
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License: https://creativecommons.org/licenses/by-nc-sa/4.0/ Why doing difficult things is good for you and good for your team - Katie Bickford](https://i.ytimg.com/vi/vhUGZM3n3mQ/mqdefault.jpg)