{
  "3BQFTP": {
    "abstract": "PyScript is an open source platform for Python in the browser. \r\n\r\nEduBlocks is a block-based tool for teachers, students and anyone taking their first steps in coding. The educational \"blocks\" we use, actually create Python. \r\n\r\nBut where do you evaluate the user's code? We used to use a hosted service where Python was evaluated in the cloud. Now, thanks to PyScript, everything runs in the user's browser. \r\n\r\nIn this talk, we'll explain how it works and show you how to run Python in your own browser-based applications.\r\n\r\nIt turns out PyScript is really great for Python as an edge-computing environment in the browser.",
    "code": "3BQFTP",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T15:55:00+02:00",
    "level": "intermediate",
    "next_session": "AJHY9H",
    "prev_session": "MUAVCX",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Talk",
    "sessions_after": [
      "8QQYJW",
      "9PGYHF",
      "AJHY9H",
      "HMRHJJ",
      "NATVVE"
    ],
    "sessions_before": [
      "AEAK3B",
      "GQGKNS",
      "L8YSMU",
      "MUAVCX",
      "SCKCAV",
      "TU3D7R",
      "TXZMRS",
      "US9HWQ",
      "ZLMT3Q"
    ],
    "sessions_in_parallel": [
      "3FYGDN",
      "8K38D8",
      "GMWLFT",
      "HAKES9",
      "MPKBEN"
    ],
    "slug": "pyscript-as-infrastructure-running-edublocks-at-scale-without-the-cost",
    "speakers": [
      "G7GCFL"
    ],
    "start": "2025-07-16T15:25:00+02:00",
    "title": "PyScript as Infrastructure: Running EduBlocks at Scale Without the Cost",
    "track": "Web Development, Web APIs, Front-End Integration (2025)",
    "tweet": "Learn how PyScript powers EduBlocks to run Python entirely in the browser - with zero server costs. From architecture to implementation.",
    "website_url": "https://ep2025.europython.eu/session/pyscript-as-infrastructure-running-edublocks-at-scale-without-the-cost",
    "youtube_url": "https://youtube.com/watch?v=Hc7rNzn3dYc"
  },
  "3FYGDN": {
    "abstract": "The EU AI Act, partly in effect, is a groundbreaking regulatory framework governing AI systems based on perceived risk. This talk covers the basics and explores lesser-discussed aspects, including implementation entities, the private sector's role, and exemptions for high-risk government and law enforcement use cases.\r\n\r\nThe AI Act categorizes AI systems into groups based on potential harm, with unacceptable risk systems like social scoring and mass CCTV facial recognition being prohibited. High-risk systems, such as biometric identification and employment management systems, must meet stringent obligations.\r\n\r\nSurprisingly, the Act exempts many high-risk government and law enforcement use cases, including national security and border control, raising concerns about AI misuse. Additionally, AI systems used for research, development, or military purposes are not regulated, highlighting the need for complementary safeguards.\r\n\r\nThe implementation ecosystem is complex, with the European Artificial Intelligence Board as the central hub. National supervisory authorities and the European Commission play crucial roles in enforcement and cooperation. Notified bodies, assessing high-risk AI systems, offer engagement opportunities for the private sector.\r\n\r\nThe AI Act also introduces regulatory sandboxes, allowing developers to test innovative AI systems under supervision. These sandboxes foster innovation while minimizing risks, providing opportunities for startups and established companies.\r\n\r\nIn conclusion, the EU AI Act is a comprehensive framework with a complex implementation ecosystem and private sector engagement opportunities. However, exemptions for high-risk use cases spark debates about its scope and effectiveness. Understanding these aspects is crucial for navigating the AI Act's regulatory landscape and fostering responsible AI innovation.",
    "code": "3FYGDN",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T15:55:00+02:00",
    "level": "beginner",
    "next_session": "NATVVE",
    "prev_session": "TU3D7R",
    "resources": null,
    "room": "South Hall 2B",
    "session_type": "Talk",
    "sessions_after": [
      "8QQYJW",
      "9PGYHF",
      "AJHY9H",
      "HMRHJJ",
      "NATVVE"
    ],
    "sessions_before": [
      "AEAK3B",
      "GQGKNS",
      "L8YSMU",
      "MUAVCX",
      "SCKCAV",
      "TU3D7R",
      "TXZMRS",
      "US9HWQ",
      "ZLMT3Q"
    ],
    "sessions_in_parallel": [
      "3BQFTP",
      "8K38D8",
      "GMWLFT",
      "HAKES9",
      "MPKBEN"
    ],
    "slug": "eu-ai-act-unveiling-lesser-known-aspects-and-implementation-entities",
    "speakers": [
      "HGSWKF"
    ],
    "start": "2025-07-16T15:25:00+02:00",
    "title": "EU AI Act: Unveiling Lesser-Known Aspects and Implementation Entities",
    "track": "Ethics, Social Responsibility, Sustainability, Legal (2025)",
    "tweet": "The EU AI Act: Unveiling Lesser-Known Aspects, Implementation Entities, and Exemptions",
    "website_url": "https://ep2025.europython.eu/session/eu-ai-act-unveiling-lesser-known-aspects-and-implementation-entities",
    "youtube_url": "https://youtube.com/watch?v=inho6ObzZYY"
  },
  "3NB3PX": {
    "abstract": "There are many ways to fully unleash the power of GPU: using math libraries specialized for GPU scientific computing, device kernel fusion, JIT compilation, or LTO. However, until recently, only C++ developers could fully benefit from those techniques. While Python libraries like CuPy have used at least some of these features under the hood, the knobs and nuances crucial for performance tuning were not exposed to the Python community. It requires advanced users to resort to custom integration with the C and C++ stack, whenever they need fine-grain control. \r\n\r\nThe nvmath-python open-source library released last year aims to bridge this gap for core math operations. Instead of finding a trade-off between ease of use and performance, its design aims to provide both. While respecting Python principles, it offers the same flexibility and control the C++ developers have, including integration with Numba and NVIDIA runtime compiler stack: nvrtc, and nvjitlink. To seamlessly integrate into the Python ecosystem, it handles all the necessary dependencies while effortlessly interoperating with popular tensor libraries.\r\n\r\nThe library targets Python developers, scientific computing community, AI-oriented practitioners, and anyone striving for peak GPU kernel performance. nvmath-python, supporting both CPU and GPU execution space, can be easily integrated into existing workflows written in NumPy, CuPy, SciPy, scikit-learn and others. It supports GEMMs and FFTs with prolog/epilog fusion and narrow precision types, random number generation, and all other capabilities of CUDA math libraries exposed to the user.\r\n\r\nIn this talk, we would like to share the design principles behind nvmath-python and demonstrate how it can be used to accelerate scientific computing workloads in Python. We will put special emphasis on the  just-released sparsity support and distributed computing capabilities.",
    "code": "3NB3PX",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T12:55:00+02:00",
    "level": "intermediate",
    "next_session": "DGSNSE",
    "prev_session": "3STLTA",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Talk",
    "sessions_after": [
      "DGSNSE",
      "ETFNZG",
      "FJH9YY",
      "HTVBWM",
      "RGVZRU",
      "SKPCNV"
    ],
    "sessions_before": [
      "3STLTA",
      "9QNGYF",
      "BW7ZBU",
      "K3HRVS",
      "URZCXT",
      "YZLKAP"
    ],
    "sessions_in_parallel": [
      "9D8XMG",
      "HP83AE",
      "HXJ3RP",
      "NHUECR",
      "WB3SJP"
    ],
    "slug": "gpu-performance-or-ease-of-use-why-not-both",
    "speakers": [
      "9RBSEV",
      "GLKZ3R"
    ],
    "start": "2025-07-18T12:25:00+02:00",
    "title": "GPU performance or ease of use: why not both?",
    "track": "Jupyter and Scientific Python (2025)",
    "tweet": "Unleash GPU power in Python with nvmath-python: bridging performance and ease of use for scientific computing.",
    "website_url": "https://ep2025.europython.eu/session/gpu-performance-or-ease-of-use-why-not-both",
    "youtube_url": "https://youtube.com/watch?v=AXYZveLhkz4"
  },
  "3STLTA": {
    "abstract": "We use assignment all the time in Python. But what really happens when we use an = in our code? The answer is: It depends. In this talk, I'll explore what happens when we assign a value to a variable, when we mutate an existing value, and when we assign to an attribute. Along the way, we'll explore variable scopes, byte codes, and descriptors. By the end of this talk, you'll appreciate all the hard work that the little = sign is doing, and the remarkable stuff that happens behind the scenes when you use it.",
    "code": "3STLTA",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T12:15:00+02:00",
    "level": "intermediate",
    "next_session": "3NB3PX",
    "prev_session": "T3WXME",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Talk",
    "sessions_after": [
      "3NB3PX",
      "9D8XMG",
      "ETFNZG",
      "HP83AE",
      "NHUECR",
      "WB3SJP"
    ],
    "sessions_before": [
      "8BM8PG",
      "9QNGYF",
      "PYKCUL",
      "RRXUA7",
      "SVTXGC",
      "T3WXME"
    ],
    "sessions_in_parallel": [
      "BW7ZBU",
      "HXJ3RP",
      "K3HRVS",
      "URZCXT",
      "YZLKAP"
    ],
    "slug": "what-does-do",
    "speakers": [
      "VZM8L3"
    ],
    "start": "2025-07-18T11:45:00+02:00",
    "title": "What does = do?",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "What happens when you assign in Python? It's more complicated than you might think! In this talk, we look at what the = operator really does.",
    "website_url": "https://ep2025.europython.eu/session/what-does-do",
    "youtube_url": "https://youtube.com/watch?v=0eSutJEeR5c"
  },
  "3VNDYN": {
    "abstract": "In this talk we will introduce Pwndbg (/pa\u028an\u02c8di\u02ccb\u028c\u0261/), a Python tool that auguments GDB and LLDB debuggers, making low-level debugging, security research, and exploit development more efficient and intuitive.\r\n\r\nWe will explore Pwndbg's user-friendly context display and powerful commands, showing how they can dramatically enhance the speed to understand what is going on in the given assembly code.\r\n\r\nWe will also see how Pwndbg can help with investigating things like stack canaries or heap allocators as well as we will see how it can be helpful during low level exploitation.",
    "code": "3VNDYN",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-17T11:15:00+02:00",
    "level": "advanced",
    "next_session": "UCHDYW",
    "prev_session": "FCGVPR",
    "resources": null,
    "room": "Terrace 2A",
    "session_type": "Talk (long session)",
    "sessions_after": [
      "ABDUU8",
      "AUAVX7",
      "G3SBMR",
      "GKRLGM",
      "SRVL9W",
      "UCHDYW",
      "UDNNWJ",
      "URXNP8"
    ],
    "sessions_before": [
      "FCGVPR"
    ],
    "sessions_in_parallel": [
      "BK9JTV",
      "LHE38S",
      "PNSAM3",
      "QLLC8C",
      "T3HHJG"
    ],
    "slug": "pwndbg-low-level-debugging-and-exploit-development-with-python",
    "speakers": [
      "KL7QNZ"
    ],
    "start": "2025-07-17T10:30:00+02:00",
    "title": "Pwndbg: Low level debugging and exploit development with Python",
    "track": "Testing, Quality Assurance, Security (2025)",
    "tweet": "This talk will introduce Pwndbg:a plugin for GDB + LLDB to make debugging suck less and which is helpful for exploit development and security research",
    "website_url": "https://ep2025.europython.eu/session/pwndbg-low-level-debugging-and-exploit-development-with-python",
    "youtube_url": "https://youtube.com/watch?v=3KAMNJgC_vw"
  },
  "3ZNVQQ": {
    "abstract": "If you don't have vision problems, you probably don't know what a screen reader is; or maybe you know that it is a program that visually impaired people use to operate a computer or mobile phone. Perhaps you have even watched a demo or a blind person using it, but that only confirms that screen readers are not made for you and that they won't offer you anything. In this talk, I want to show you how wrong that thought is and the many ways you can take advantage of these tools even if you have perfect vision.\r\n\r\nNVDA is an open-source screen reader for Windows based on Python. In addition to the built-in functionalities in its core, NVDA also provides an add-ons system that allows Python developers to extend its capabilities far beyond its original purpose.\r\n\r\nThrough a set of libraries and APIs, you can easily access system objects and events, manage keyboard shortcuts and touch or pointer gestures, play sounds, handle the clipboard or the screen, and even create complete applications by integrating your own Python libraries. This combination of power and flexibility makes NVDA the perfect platform to automate tasks or add all kinds of utilities to the system that will increase your productivity and make your digital life much easier.\r\n\r\nAnd, by the way, maybe I can inspire you to join the Fellowship and encourage you to share your add-ons with the NVDA community so that other visually impaired people can also benefit from your creations \ud83d\ude09 Join me and discover everything you can do with NVDA and Python!",
    "code": "3ZNVQQ",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T12:50:00+02:00",
    "level": "beginner",
    "next_session": "ZNMPFX",
    "prev_session": "AD3TGW",
    "resources": null,
    "room": "Terrace 2A",
    "session_type": "Talk",
    "sessions_after": [
      "AEAK3B",
      "AR7VP8",
      "BXWQYK",
      "L8YSMU",
      "PRDDPR",
      "TU3D7R",
      "XEXS3Y",
      "ZLMT3Q",
      "ZNMPFX"
    ],
    "sessions_before": [
      "AD3TGW",
      "D8FJPN",
      "NKTHSJ",
      "P9DT7T",
      "YGXMN9",
      "YQ79RE"
    ],
    "sessions_in_parallel": [
      "DKECGU",
      "GMKTFY",
      "GS8GHZ",
      "PBNRMR",
      "ZNVECA"
    ],
    "slug": "one-screenreader-to-rule-them-all-using-nvda-for-windows-automation",
    "speakers": [
      "LKXMJS"
    ],
    "start": "2025-07-16T12:20:00+02:00",
    "title": "One Screenreader to rule them all: using NVDA for Windows automation",
    "track": "Tooling, Packaging, Developer Productivity (2025)",
    "tweet": "The NVDA screenreader is not only a great tool for blind people, it's also an incredible Python-based platform to increase your Windows productivity!",
    "website_url": "https://ep2025.europython.eu/session/one-screenreader-to-rule-them-all-using-nvda-for-windows-automation",
    "youtube_url": "https://youtube.com/watch?v=AVj0P_U7C4k"
  },
  "78CWUW": {
    "abstract": "Community Notes - if you haven\u2019t heard of this algorithm yet,  you\u2019ll come across it in 2025. Originated by the team at then-Twitter and developed open source, this year Meta will be adopting it across all platforms (and spinning down all other content moderation\u2014but that\u2019s a separate topic). Let\u2019s focus on what\u2019s interesting about Community Notes: a blend of algorithm and design that puts platform users in the driver\u2019s seat. In their own words, \u201cCommunity Notes aims to create a better informed world, by empowering people on X to add helpful notes to posts that might be misleading.\u201d Importantly, also, \u201cX doesn\u2019t write, rate or moderate notes (unless they break X's Rules.)\u201d This hands-off approach is particularly noteworthy in an era when model guardrails and constraints are increasingly part of the public consciousness, and not in a good way. People are bumping their heads as they sail into the wall at the edge of their AI-managed world, like Truman discovering the limits of his manufactured reality.\r\n\r\nFor anyone building an agent or thinking about dialogue-as-interface\u2014this is the talk for you. Let's examine this approach to content moderation at the intersection of algorithm design and UX. It's an ambitious experiment: seeking truth not through central authority, but by bridging different human perspectives. We'll dive into both the mathematical engine that ranks these bridges of agreement and the design choices that drive user participation, while considering what this reveals about the broader challenges and possibilities of crowd-sourced content moderation.",
    "code": "78CWUW",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T16:20:00+02:00",
    "level": "beginner",
    "next_session": "DCBMJY",
    "prev_session": "TTA8LT",
    "resources": null,
    "room": "North Hall",
    "session_type": "Talk",
    "sessions_after": [
      "DCBMJY"
    ],
    "sessions_before": [
      "9FQDQS",
      "ABDUU8",
      "AUAVX7",
      "LDD9KB",
      "MS8ZT7",
      "T9ZYJD",
      "TTA8LT",
      "WDDYM8"
    ],
    "sessions_in_parallel": [
      "9R9R97",
      "AVUQVA",
      "C8B7QH",
      "M8LTAJ",
      "ZKABJR"
    ],
    "slug": "wisdom-of-the-cloud-drifting-through-community-notes",
    "speakers": [
      "3QJLK8",
      "Y3GHEB"
    ],
    "start": "2025-07-17T15:50:00+02:00",
    "title": "Wisdom of the cloud? Drifting through Community Notes",
    "track": "Machine Learning: Research & Applications (2025)",
    "tweet": "Wisdom of the cloud: how Community Notes improves on brute-force consensus to find truth across political divides.",
    "website_url": "https://ep2025.europython.eu/session/wisdom-of-the-cloud-drifting-through-community-notes",
    "youtube_url": "https://youtube.com/watch?v=cv5rTkDeAuI"
  },
  "78GQHG": {
    "abstract": "Ask any successful software developer - it takes a lot more than technical skills to win at this game. Software development is a team sport.\r\n\r\nWhat does good teamwork mean to you? Is it about empathy? Making sure voices are heard? Clear communication? Mutual respect? Well...yes.\r\n\r\nBut there is more to it than that.  A lot more.\r\n\r\nWhen it comes to software development, a lot of these fluffy definitions of good teamwork can be implemented in very concrete ways. \r\n\r\nThis talk will cover a lot of the \"soft\" skills that come into play in software development, as well as the harder skills that come into play (eg testing and proper use of Git). These are a few of the skills that will make people want to work with you again and again.  \r\n\r\nPrepare yourself for ball-sport analogies.",
    "code": "78GQHG",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-16T11:30:00+02:00",
    "level": "beginner",
    "next_session": "P9DT7T",
    "prev_session": "SLSM8T",
    "resources": null,
    "room": "Terrace 2B",
    "session_type": "Talk (long session)",
    "sessions_after": [
      "AD3TGW",
      "AEAK3B",
      "D8FJPN",
      "L8YSMU",
      "NKTHSJ",
      "P9DT7T",
      "YGXMN9",
      "YQ79RE",
      "ZLMT3Q"
    ],
    "sessions_before": [
      "SLSM8T"
    ],
    "sessions_in_parallel": [
      "DQFMNM",
      "KCJRPT",
      "KFQSZK",
      "QHFKGT",
      "XCN9MD"
    ],
    "slug": "teamwork-makes-the-dream-work",
    "speakers": [
      "YLSDKF"
    ],
    "start": "2025-07-16T10:45:00+02:00",
    "title": "Teamwork makes the dream work",
    "track": "Professional Development, Careers, Leadership (2025)",
    "tweet": "Software development is a team sport. We've heard it before. But what exactly does good teamwork look like? Let's be explicit about it",
    "website_url": "https://ep2025.europython.eu/session/teamwork-makes-the-dream-work",
    "youtube_url": "https://youtube.com/watch?v=cKRVkPBBlEw"
  },
  "7ARRRE": {
    "abstract": "CI/CD (Continuous Integration and Continuous Deployment) has become a fundamental part of DevOps, helping teams deliver code quickly and catch potential problems before they turn into costly production issues. Without a solid CI/CD process, developers often struggle with manual deployments, inconsistent environments, and unexpected bugs that slip through the cracks, causing frustration and unplanned downtime.\r\n\r\nIn this session, we will walk you step by step through setting up a dependable CI/CD pipeline using Python, Jenkins, TestContainers AWS, and Kubernetes. Starting with basic configurations, we\u2019ll automate everything from running tests to building containers and deploying them on a scalable Kubernetes cluster. By writing simple Python scripts, you will learn how to streamline repetitive tasks and create a smooth release workflow. We\u2019ll also take time to discuss common pitfalls and show how to troubleshoot them, so you feel equipped to handle real-world challenges.\r\n\r\nWhether you\u2019re new to CI/CD or looking to refine your existing DevOps skills, this tutorial aims to make complex workflows easier to grasp. Expect hands-on practice, clear explanations, and practical takeaways that you can apply in your own projects right away. By the end, you\u2019ll see how using Python at each stage not only automates time-consuming tasks but also brings a new level of reliability to the entire deployment process.\r\n\r\nOur goal is to help you build confidence in creating a pipeline that brings predictability to your releases, saves your team time, and keeps your applications running smoothly in production. If you\u2019ve ever wanted to see how a proper CI/CD setup can transform the way you ship software, this is your chance to dive in and see it come to life step by step.",
    "code": "7ARRRE",
    "delivery": "in-person",
    "duration": "180",
    "end": "2025-07-15T12:45:00+02:00",
    "level": "beginner",
    "next_session": "D9JGFG",
    "prev_session": null,
    "resources": null,
    "room": "Club A",
    "session_type": "Tutorial",
    "sessions_after": [
      "AYXDME",
      "D9JGFG",
      "E9HV7P",
      "MXKGZ9",
      "RBTZEC",
      "VBSZJW"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [
      "AJPPVG",
      "RMVNGD",
      "RTCZQG",
      "RWPFPP",
      "V3WS7N"
    ],
    "slug": "setting-up-reliable-ci-cd-pipelines-with-python-k8s-testcontainers",
    "speakers": [
      "XQMQY7"
    ],
    "start": "2025-07-15T09:30:00+02:00",
    "title": "Setting Up Reliable CI/CD Pipelines with Python, K8s & Testcontainers",
    "track": "DevOps, Cloud, Scalable Infrastructure (2025)",
    "tweet": "Learn how to build a smooth CI/CD pipeline with Python for reliable, scalable deployments on Kubernetes.",
    "website_url": "https://ep2025.europython.eu/session/setting-up-reliable-ci-cd-pipelines-with-python-k8s-testcontainers",
    "youtube_url": null
  },
  "89LBUT": {
    "abstract": "Anonymization of sensitive information in financial documents using, python, diffusion models and named entity recognition\r\n\r\nData is the fossil fuel of the machine learning world, essential for developing high quality models but in limited supply. Yet institutions handling sensitive documents \u2014 such as financial, medical, or legal records often cannot fully leverage their own data due to stringent privacy, compliance, and security requirements, making training high quality models difficult.\r\n\r\nA promising solution is to replace the personally identifiable information (PII) with realistic synthetic stand-ins, whilst leaving the rest of the document in tact.\r\n\r\nIn this talk, we will discuss the use of open source tools and models that can be self hosted to anonymize documents. We will go over the various approaches for Named Entity Recognition (NER) to identify sensitive entities and the use of diffusion models to inpaint anonymized content.",
    "code": "89LBUT",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T15:05:00+02:00",
    "level": "beginner",
    "next_session": null,
    "prev_session": "HTVBWM",
    "resources": null,
    "room": "Terrace 2A",
    "session_type": "Talk",
    "sessions_after": [
      "JKZDUY"
    ],
    "sessions_before": [
      "DGSNSE",
      "ETFNZG",
      "FJH9YY",
      "HTVBWM",
      "RGVZRU",
      "SKPCNV"
    ],
    "sessions_in_parallel": [
      "AJ3Z8U",
      "BVYE9B",
      "DCZCJP",
      "XND9F9",
      "Y8PVLE"
    ],
    "slug": "anonymization-of-sensitive-information-in-financial-documents-using-python",
    "speakers": [
      "WAL3T3"
    ],
    "start": "2025-07-18T14:35:00+02:00",
    "title": "Anonymization of sensitive information in financial documents using, python",
    "track": "Machine Learning, NLP and CV (2025)",
    "tweet": "Unlock sensitive data potential with anonymization! Learn how Python, diffusion models, and Named Entity Recognition (NER)",
    "website_url": "https://ep2025.europython.eu/session/anonymization-of-sensitive-information-in-financial-documents-using-python",
    "youtube_url": "https://youtube.com/watch?v=ZV7iLbz65EU"
  },
  "8BM8PG": {
    "abstract": "Starting a new Python project comes with many decisions:\r\n- Flat layout or src layout?\r\n- Where will tests live?\r\n- Packaged application or not?\r\n- What will be the entry point of your application?\r\n- One top-level package or Django-like apps?\r\n- How will the application be installed?\r\n- pip, uv, or Poetry integration?\r\n\r\nThere\u2019s no single standard for a Python project structure, and popular tools offer a lot of flexibility: `uv`\u00a0 can create a library, an application, or a packaged application, `pytest` documents two possible test layouts and supports three import modes, and\u00a0`mypy` implements its own import  mechanism.\r\n\r\nIf you\u2019re starting a library, you can take inspiration from open-source champions, but applications are usually proprietary. Many Cookiecutter templates exist online, but which one should you choose? A common approach is to clone an existing project your company uses, but in my experience, this isn\u2019t always the best idea.\r\n\r\nI\u2019ll point out common mistakes to avoid. We\u2019ll explore the key decisions and weigh the benefits and drawbacks of each option. My goal isn\u2019t to sell you on my favorite directory structure. Instead, I\u2019ll help you choose what suits your use case best, ensuring that your choices play well with each other.",
    "code": "8BM8PG",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T11:35:00+02:00",
    "level": "intermediate",
    "next_session": "K3HRVS",
    "prev_session": "HPRDLE",
    "resources": null,
    "room": "Terrace 2A",
    "session_type": "Talk",
    "sessions_after": [
      "3STLTA",
      "BW7ZBU",
      "HXJ3RP",
      "K3HRVS",
      "URZCXT",
      "YZLKAP"
    ],
    "sessions_before": [
      "FWETBR",
      "HPRDLE",
      "PBRK3K",
      "TGUWZC",
      "XFNVQ9",
      "XJ7GMM"
    ],
    "sessions_in_parallel": [
      "9QNGYF",
      "PYKCUL",
      "RRXUA7",
      "SVTXGC",
      "T3WXME"
    ],
    "slug": "your-cookiecutter-is-wrong",
    "speakers": [
      "CNVAFW"
    ],
    "start": "2025-07-18T11:05:00+02:00",
    "title": "Your Cookiecutter Is Wrong",
    "track": "Tooling, Packaging, Developer Productivity (2025)",
    "tweet": "Starting a new Python project? Packaged or not? Flat vs src layout? Tests? Docker? The right combination can save big headaches later.",
    "website_url": "https://ep2025.europython.eu/session/your-cookiecutter-is-wrong",
    "youtube_url": "https://youtube.com/watch?v=VTO10SB2J6Y"
  },
  "8CDYTD": {
    "abstract": "DNS is a complex topic which many developers do not understand. People hear about one or two IP addresses of DNS servers which others are using and then they themselves start using them everywhere.\r\n\r\nThis workshop is a mix of history + current tools + code using existing Python modules to learn about how various parts of the DNS ecosystem work. We learn about how DNS actually works to how a resolver works, to even writing our own small authoritative DNS server.",
    "code": "8CDYTD",
    "delivery": "in-person",
    "duration": "180",
    "end": "2025-07-14T12:45:00+02:00",
    "level": "beginner",
    "next_session": "QKTRVP",
    "prev_session": null,
    "resources": null,
    "room": "Club D",
    "session_type": "Tutorial",
    "sessions_after": [
      "9EASAW",
      "M7EFWG",
      "MEDYZE",
      "QKHWXB",
      "QKTRVP"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [
      "CFANXB",
      "CV3M7B",
      "GLYC3N",
      "HNHQWB",
      "VGNBB8"
    ],
    "slug": "learn-dns-using-python",
    "speakers": [
      "CXYAXB"
    ],
    "start": "2025-07-14T09:30:00+02:00",
    "title": "Learn DNS using Python",
    "track": "~ None of these topics (2025)",
    "tweet": "A workshop to learn about DNS and using Python to understand inner working and writing a real server",
    "website_url": "https://ep2025.europython.eu/session/learn-dns-using-python",
    "youtube_url": null
  },
  "8K38D8": {
    "abstract": "Learning to code has never been more accessible, with countless online courses, video tutorials, and bootcamps available to aspiring programmers. Yet, despite the abundance of resources, many capable learners are filtered out\u2014not because of their abilities, but because traditional curricula fail to account for the unique challenges faced by neurodiverse individuals. As a neurodivergent educator and curriculum designer, I\u2019ve witnessed firsthand how the disconnect between learning strategies and learner needs can derail even the most motivated students.\r\n\r\nThis talk explores how current teaching techniques and evaluation methods unintentionally exclude neurodiverse learners, despite many of the qualities associated with neurodiversity aligning with traits prized in programmers. Using insights from my own teaching experience, I\u2019ll share practical solutions for designing inclusive curricula and fostering learning environments where neurodiverse students can thrive. We\u2019ll also discuss self-advocacy strategies for neurodivergent learners and ways family, friends, and educators can support their success.\r\n\r\nUltimately, this talk demonstrates that by addressing the needs of neurodiverse learners, we can create programming education that benefits everyone\u2014promoting inclusivity, innovation, and opportunity for all.",
    "code": "8K38D8",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T15:55:00+02:00",
    "level": "beginner",
    "next_session": null,
    "prev_session": "GQGKNS",
    "resources": null,
    "room": "Terrace 2B",
    "session_type": "Talk",
    "sessions_after": [
      "8QQYJW",
      "9PGYHF",
      "AJHY9H",
      "HMRHJJ",
      "NATVVE"
    ],
    "sessions_before": [
      "AEAK3B",
      "GQGKNS",
      "L8YSMU",
      "MUAVCX",
      "SCKCAV",
      "TU3D7R",
      "TXZMRS",
      "US9HWQ",
      "ZLMT3Q"
    ],
    "sessions_in_parallel": [
      "3BQFTP",
      "3FYGDN",
      "GMWLFT",
      "HAKES9",
      "MPKBEN"
    ],
    "slug": "is-your-programming-curriculum-inclusive-for-neurodivergents",
    "speakers": [
      "HPYZNL"
    ],
    "start": "2025-07-16T15:25:00+02:00",
    "title": "Is your programming curriculum inclusive for neurodivergents?",
    "track": "Community Building, Education, Outreach (2025)",
    "tweet": "\"Learn how to make programming education inclusive for neurodivergent learners with practical tips, advocacy strategies, and actionable solutions!\"",
    "website_url": "https://ep2025.europython.eu/session/is-your-programming-curriculum-inclusive-for-neurodivergents",
    "youtube_url": "https://youtube.com/watch?v=e7spXweoYR4"
  },
  "8QFLC9": {
    "abstract": "Have you ever wanted to process big geospatial data from [OpenStreetMap](https://www.openstreetmap.org/) or [Overture Maps Foundation](https://overturemaps.org/)? What if I told you that you don't need an entire technology stack to retrieve data the size of a country and wait an eternity to process it.\r\n\r\nWith [QuackOSM](https://github.com/kraina-ai/quackosm) and [OvertureMaestro](https://github.com/kraina-ai/overturemaestro), you can easily work with whole-country vector and tags data without installing any additional dependencies - come and find out how you can use it in your next project!\r\n\r\n---\r\n\r\n[QuackOSM](https://github.com/kraina-ai/quackosm) is a powerful and user-friendly library that streamlines the process of accessing and manipulating OpenStreetMap (OSM) vector and tags data. It's using the [DuckDB](http://duckdb.org/) engine with its [Spatial extension](https://duckdb.org/docs/extensions/spatial/overview), and PyArrow library that enables users to efficiently retrieve large-scale OSM data in the GeoParquet format.\r\n\r\nIt's similar in functionality to other available libraries, but it's faster, can work with bigger than memory datasets and doesn't require any additional dependencies.\r\n\r\n---\r\n\r\n[OvertureMaestro](https://github.com/kraina-ai/overturemaestro) is a twin library for accessing Overture Maps data using a very similar API and, in addition, using multi-processing and a special index to reduce the amount of data needed for retrieval.\r\n\r\nIn addition to the API, the libraries also include a CLI allowing them to be used in data engineering tasks, for example when loading data into cloud databases.\r\n\r\n---\r\n\r\nThis talk will dive deep into the inner workings of the QuackOSM and OvertureMaestro libraries. The talk will also cover how DuckDB and PyArrow work with the GeoParquet file format.",
    "code": "8QFLC9",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T12:35:00+02:00",
    "level": "intermediate",
    "next_session": "CYMWKD",
    "prev_session": "GKRLGM",
    "resources": [
      {
        "description": "Slides",
        "resource": "https://programme.europython.eu/media/europython-2025/submissions/8QFLC9/resources/EuroPython_SBbbJNX.pdf"
      }
    ],
    "room": "Terrace 2B",
    "session_type": "Talk",
    "sessions_after": [
      "ABDUU8",
      "AKQNBF",
      "AMMYXT",
      "AUAVX7",
      "CYMWKD",
      "FGA7ZN",
      "G3QBAF",
      "YN3MWG"
    ],
    "sessions_before": [
      "G3SBMR",
      "GKRLGM",
      "SRVL9W",
      "UCHDYW",
      "UDNNWJ",
      "URXNP8"
    ],
    "sessions_in_parallel": [
      "CAWMEZ",
      "SXWDSA",
      "WKDYUH",
      "XZNTGY",
      "Z9DWTW"
    ],
    "slug": "quackosm-overturemaestro-open-geospatial-data-at-your-fingertips",
    "speakers": [
      "AEKH3Q"
    ],
    "start": "2025-07-17T12:05:00+02:00",
    "title": "QuackOSM & OvertureMaestro: Open geospatial data at your fingertips",
    "track": "Data Engineering and MLOps (2025)",
    "tweet": "Access open geospatial data with QuackOSM & OvertureMaestro - fast, scalable, and without external dependencies!",
    "website_url": "https://ep2025.europython.eu/session/quackosm-overturemaestro-open-geospatial-data-at-your-fingertips",
    "youtube_url": "https://youtube.com/watch?v=jYJtYiLstB4"
  },
  "8QQYJW": {
    "abstract": "CI/CD Pipelines are an essential part of modern Software Engineering, for everything from hobby projects to professional teams. But, when things go wrong, the mixture of single-purpose code, proprietary runtimes and third-party plugins can make reasoning about issues incredibly difficult and reproducing them almost impossible. What we want instead are processes that can run consistently in any environment, making them easier to maintain and debug.\r\n\r\nAs a powerful cross-platform scripting language, Python might seem an obvious candidate. But, versioning and dependency management have typically stood in the way. \r\n\r\nBuilding on recent improvements like python-build-standalone, and modern project management tools like `hatch` and `uv`, this talk will demonstrate how to leverage Python to create automation that runs natively everywhere. In particular, we\u2019ll show:\r\n\r\n- How virtualenvs and modern tooling can handle everything from dependency management to managing Python versions\r\n- How to leverage libraries to create cross-platform automation (and when to fall back on `subprocess` and the host environment instead)\r\n- How to structure your pipelines to run (almost) identically locally and in the cloud\r\n\r\nWhile most directly applicable to DevOps workflows, we will discuss principles that can help any Python developer easily manage their environment and dependencies, and build pipelines to support their work.\r\n\r\nFor DevOps engineers, the aim is to avoid extra complexity and create clear, inspectable and maintainable pipelines by showing how much you can build with the tool you already have: Python!",
    "code": "8QQYJW",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T16:35:00+02:00",
    "level": "intermediate",
    "next_session": "XEMLJB",
    "prev_session": "MPKBEN",
    "resources": [
      {
        "description": "Slides",
        "resource": "https://programme.europython.eu/media/europython-2025/submissions/8QQYJW/resources/Europython_ieR5679.pdf"
      }
    ],
    "room": "Terrace 2A",
    "session_type": "Talk",
    "sessions_after": [
      "XEMLJB"
    ],
    "sessions_before": [
      "3BQFTP",
      "3FYGDN",
      "8K38D8",
      "AEAK3B",
      "GMWLFT",
      "HAKES9",
      "L8YSMU",
      "MPKBEN",
      "ZLMT3Q"
    ],
    "sessions_in_parallel": [
      "9PGYHF",
      "AJHY9H",
      "HMRHJJ",
      "NATVVE"
    ],
    "slug": "fearless-automation-that-runs-anywhere-with-python",
    "speakers": [
      "C7HJ97"
    ],
    "start": "2025-07-16T16:05:00+02:00",
    "title": "Fearless Automation that Runs Anywhere with Python",
    "track": "DevOps, Cloud, Scalable Infrastructure (2025)",
    "tweet": "Create native pipelines that run locally and in the cloud with Python",
    "website_url": "https://ep2025.europython.eu/session/fearless-automation-that-runs-anywhere-with-python",
    "youtube_url": "https://youtube.com/watch?v=5mKIn5uI0so"
  },
  "9CERQG": {
    "abstract": "Welcome to the second day of conference!\r\nYesterday was an amazing day, but for sure you don't remember all the things that were mentioned during the opening.\r\nJoin us to get an update and few more announcements. Come by and find out what is going to happen today.",
    "code": "9CERQG",
    "delivery": "in-person",
    "duration": "15",
    "end": "2025-07-17T09:20:00+02:00",
    "level": "beginner",
    "next_session": "FCGVPR",
    "prev_session": null,
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Announcements",
    "sessions_after": [
      "FCGVPR"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [],
    "slug": "thursday-s-morning-announcement",
    "speakers": [],
    "start": "2025-07-17T09:05:00+02:00",
    "title": "Thursday's Morning Announcement \u23f0",
    "track": null,
    "tweet": "Yesterday was an amazing day, but for sure you don't remember all the things that were mentioned during the opening.",
    "website_url": "https://ep2025.europython.eu/session/thursday-s-morning-announcement",
    "youtube_url": null
  },
  "9D8XMG": {
    "abstract": "The Raspberry Pi Pico W, combined with MicroPython, has revolutionized accessible electronics education by creating an affordable yet powerful learning platform. This talk demonstrates how students can begin their journey into programming and electronics using just a standard PC and \u20ac15 worth of hardware. Starting with basic programming concepts, we'll explore practical projects that bridge the gap between software and hardware, showcasing how MicroPython's intuitive syntax enables both learning and real-world applications. Students progress from simple LED and button interactions to creating sophisticated projects with displays and mobile phone integration, keeping them engaged through immediately useful applications. The structured learning path covers sensor integration, wireless connectivity, and practical IoT applications, making electronics and programming education truly accessible without compromising educational depth. All project materials and source code are available on GitHub, enabling immediate implementation in educational settings.",
    "code": "9D8XMG",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T12:55:00+02:00",
    "level": "beginner",
    "next_session": "FJH9YY",
    "prev_session": "URZCXT",
    "resources": [
      {
        "description": "Slides",
        "resource": "https://programme.europython.eu/media/europython-2025/submissions/9D8XMG/resources/From_Code__AZBzXUj.pdf"
      },
      {
        "description": "GitHub",
        "resource": "https://github.com/lskbr/code2circuits"
      }
    ],
    "room": "South Hall 2B",
    "session_type": "Talk",
    "sessions_after": [
      "DGSNSE",
      "ETFNZG",
      "FJH9YY",
      "HTVBWM",
      "RGVZRU",
      "SKPCNV"
    ],
    "sessions_before": [
      "3STLTA",
      "9QNGYF",
      "BW7ZBU",
      "K3HRVS",
      "URZCXT",
      "YZLKAP"
    ],
    "sessions_in_parallel": [
      "3NB3PX",
      "HP83AE",
      "HXJ3RP",
      "NHUECR",
      "WB3SJP"
    ],
    "slug": "from-code-to-circuits-programming-with-micropython-and-raspberry-pico-2w",
    "speakers": [
      "VGAQHM"
    ],
    "start": "2025-07-18T12:25:00+02:00",
    "title": "From Code to Circuits: Programming with MicroPython and Raspberry Pico 2W",
    "track": "IoT, Embedded Systems, Hardware Integration (2025)",
    "tweet": "MicroPython can be used to learn programming and electronics with simple and cheap hardware. Let's get together to start coding and making projects!",
    "website_url": "https://ep2025.europython.eu/session/from-code-to-circuits-programming-with-micropython-and-raspberry-pico-2w",
    "youtube_url": "https://youtube.com/watch?v=RlYzGlykoxg"
  },
  "9EASAW": {
    "abstract": "### How to get ready for the tutorial?\r\nAll you need for this tutorial is your laptop. No dedicated GPU is necessary, as we will provide access to one during the session. Throughout the workshop, we\u2019ll be using NVIDIA\u2019s Deep Learning Institute platform. **To help ensure a smooth start, we kindly ask that you please visit https://learn.nvidia.com/join and create the account before the tutorial begins**. For the best experience, we recommend using Chrome or Edge, though Firefox should also work well.\r\n__________________________\r\n\r\n# GIL-free Python and the GPU\r\n\r\nBecause of the Global Interpreter Lock (GIL), Python has never truly been parallel. Even on multi-core systems, Python threads are forced to take turns rather than running simultaneously, limiting performance in compute-heavy applications. The recent removal of the GIL is unlocking new levels of concurrency and efficiency, redefining what\u2019s possible with Python in high-performance computing.\r\n\r\nIn this hands-on tutorial, we will demystify parallel programming in Python by showcasing how to tackle common concurrency challenges. Starting from the ground up, we will introduce the two common parallel-programming approaches in Python (multithreading and multiprocessing) ensuring that attendees of all experience levels can successfully participate in the tutorial.\r\n\r\nFrom there, we will dive into real-life use cases and demonstrate how to leverage free-threaded Python to tap into the power of GPUs. By pairing Python\u2019s parallel libraries with CUDA, you will learn how to accelerate both typical computing tasks and more advanced work, such as deep learning. We will also explore the best tools available for debugging, monitoring, and optimizing multi-threaded and GPU-accelerated applications, all while highlighting proven best practices.\r\n\r\nThroughout the tutorial, you will have the chance to work through exercises, from simple parallel calls to complex GPU integrations.\r\n\r\nBy the end, you will walk away with not only a solid understanding of GIL-free Python but also the confidence to implement, debug, and optimize parallel solutions in your own projects.",
    "code": "9EASAW",
    "delivery": "in-person",
    "duration": "180",
    "end": "2025-07-14T17:00:00+02:00",
    "level": "intermediate",
    "next_session": null,
    "prev_session": "VGNBB8",
    "resources": null,
    "room": "Club A",
    "session_type": "Tutorial",
    "sessions_after": [],
    "sessions_before": [
      "8CDYTD",
      "CFANXB",
      "CV3M7B",
      "GLYC3N",
      "VGNBB8"
    ],
    "sessions_in_parallel": [
      "HNHQWB",
      "M7EFWG",
      "MEDYZE",
      "QKHWXB",
      "QKTRVP"
    ],
    "slug": "gil-free-python-and-the-gpu-hands-on-experience",
    "speakers": [
      "7VSNDY",
      "HATRC3"
    ],
    "start": "2025-07-14T13:45:00+02:00",
    "title": "GIL-free Python and the GPU: hands-on experience",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "Tune in this hands-on tutorial to learn how to unlock the true parallel performance with free-threaded Python and GPU acceleration.",
    "website_url": "https://ep2025.europython.eu/session/gil-free-python-and-the-gpu-hands-on-experience",
    "youtube_url": null
  },
  "9FQDQS": {
    "abstract": "From predicting weather and modeling fluids to optimizing financial markets, traditional simulations rely on solving partial differential equations (PDEs) or using data-driven machine-learning models. However, differential equations solvers are often computationally expensive, and pure data-driven approaches struggle with limited or noisy data. Physics-Informed Machine Learning (PI-ML) offers a powerful alternative by embedding known physics of the problem directly into deep learning models, combining the strengths of both worlds.\r\n\r\nThis talk will introduce Physics-Informed Neural Networks (PINNs) and how we can use various open source python libraries to exploit these innovations that make scientific simulations more accessible and efficient. We\u2019ll explore how they are transforming real-world applications, from fluid simulations in engineering to climate forecasting.  \r\n\r\nWe will see:\r\n\r\n-  How the \"known physics of the problem\" can enhance ML models for better generalization and efficiency.\r\n- Glimpses of implementation using Python libraries like PyTorch, Deep-XDE, and NVIDIA PhysicsNeMo (Modulus)\r\n- Case studies where PI-ML models outperform traditional methods.\r\n\r\nNo deep math knowledge is required. This session is designed to be insightful, engaging, and accessible to ML practitioners, engineers, and researchers curious about Scientific Machine Learning.",
    "code": "9FQDQS",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T15:25:00+02:00",
    "level": "intermediate",
    "next_session": "M8LTAJ",
    "prev_session": "SRM97H",
    "resources": [
      {
        "description": "An Expert's Guide to Training Physics-informed Neural Networks",
        "resource": "https://arxiv.org/abs/2308.08468"
      },
      {
        "description": "NVIDIA Modulus Repository",
        "resource": "https://github.com/NVIDIA/modulus"
      },
      {
        "description": "Sifan Wang's Github Repository on PINNs applications",
        "resource": "https://github.com/sifanexisted/jaxpi"
      },
      {
        "description": "Raissi et el (Introduction to PINNs)",
        "resource": "https://maziarraissi.github.io/PINNs/"
      }
    ],
    "room": "South Hall 2A",
    "session_type": "Talk",
    "sessions_after": [
      "78CWUW",
      "9R9R97",
      "AVUQVA",
      "C8B7QH",
      "M8LTAJ",
      "ZKABJR"
    ],
    "sessions_before": [
      "ABDUU8",
      "AMMYXT",
      "AUAVX7",
      "BTV3ZJ",
      "CLTGAH",
      "LQXQVD",
      "LZPFTY",
      "SRM97H"
    ],
    "sessions_in_parallel": [
      "LDD9KB",
      "MS8ZT7",
      "T9ZYJD",
      "TTA8LT",
      "WDDYM8"
    ],
    "slug": "physics-informed-ml-fusing-scientific-laws-with-machine-learning",
    "speakers": [
      "E9ZYF3"
    ],
    "start": "2025-07-17T14:55:00+02:00",
    "title": "Physics-Informed ML: Fusing Scientific Laws with Machine Learning",
    "track": "Machine Learning: Research & Applications (2025)",
    "tweet": "Use Python to solve real-world problems by combining machine learning and physics with Physics-Informed Neural Networks (PINNs) in fluid dynamics, cli",
    "website_url": "https://ep2025.europython.eu/session/physics-informed-ml-fusing-scientific-laws-with-machine-learning",
    "youtube_url": "https://youtube.com/watch?v=PekOUNnyQHQ"
  },
  "9PGYHF": {
    "abstract": "Ten years ago, I announced uvloop and asyncpg at EuroPython. It's been a while, and I would love to repeat the thrill and announce something new.\r\n\r\nThe talk will show a totally new way of building FastAPI apps:\r\n\r\n* streamlined: go from `git init` to a working service before lunch\r\n* capable: the most advanced, statically-checked database API you can use today.\r\n* fast: auth, schema migrations, AI - all automated and ready to ship\r\n* performance: asyncpg-level speed, no more N+1 problem\r\n* enjoyable: focus on product, not plumbing\r\n\r\nI'll show you a live demo and then how the sausage was made.",
    "code": "9PGYHF",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T16:35:00+02:00",
    "level": "beginner",
    "next_session": "XEMLJB",
    "prev_session": "GMWLFT",
    "resources": null,
    "room": "North Hall",
    "session_type": "Sponsored",
    "sessions_after": [
      "XEMLJB"
    ],
    "sessions_before": [
      "3BQFTP",
      "3FYGDN",
      "8K38D8",
      "AEAK3B",
      "GMWLFT",
      "HAKES9",
      "L8YSMU",
      "MPKBEN",
      "ZLMT3Q"
    ],
    "sessions_in_parallel": [
      "8QQYJW",
      "AJHY9H",
      "HMRHJJ",
      "NATVVE"
    ],
    "slug": "the-fastapi-postgres-stack-you-ve-been-waiting-for",
    "speakers": [
      "A9JAT3"
    ],
    "start": "2025-07-16T16:05:00+02:00",
    "title": "The FastAPI-Postgres stack you've been waiting for",
    "track": "Web Development, Web APIs, Front-End Integration (2025)",
    "tweet": "New FastAPI-Postgres integration dropping at EuroPython. Statically-typed queries, asyncpg speed, auth built-in. Time for something new \ud83d\ude80",
    "website_url": "https://ep2025.europython.eu/session/the-fastapi-postgres-stack-you-ve-been-waiting-for",
    "youtube_url": "https://youtube.com/watch?v=6lECbBOjy94"
  },
  "9QNGYF": {
    "abstract": "What database should you choose? Worse, what *kind* of database should you choose?\r\n\r\nMy aim is to give you enough information to make that choice, or at least be aware of what the alternatives are.\r\n\r\nI'd argue that there are five important database types at the moment, differing in how they regard the \"shape\" of their data. I'll give a brief introduction to each, explaining how it works, and discuss why you might want to use that particular type of database, depending on your data and what you want to do with it. I'll show case at least one open source example of each.\r\n\r\nI'll cover:\r\n\r\n* Relational (PostgreSQL\u00ae, SQLite)\r\n* Columnar (ClickHouse\u00ae)\r\n* Document (OpenSearch\u00ae)\r\n* Key Value (Valkey\u2122\ufe0f)\r\n* and as an extra, Graph (Neo4J\u00ae)\r\n\r\nThe slides are available at https://github.com/Aiven-Labs/the-5-types-of-database",
    "code": "9QNGYF",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T11:35:00+02:00",
    "level": "beginner",
    "next_session": "HXJ3RP",
    "prev_session": "XFNVQ9",
    "resources": null,
    "room": "Terrace 2B",
    "session_type": "Talk",
    "sessions_after": [
      "3STLTA",
      "BW7ZBU",
      "HXJ3RP",
      "K3HRVS",
      "URZCXT",
      "YZLKAP"
    ],
    "sessions_before": [
      "FWETBR",
      "HPRDLE",
      "PBRK3K",
      "TGUWZC",
      "XFNVQ9",
      "XJ7GMM"
    ],
    "sessions_in_parallel": [
      "8BM8PG",
      "PYKCUL",
      "RRXUA7",
      "SVTXGC",
      "T3WXME"
    ],
    "slug": "explaining-the-5-types-of-database-and-how-to-choose-between-them",
    "speakers": [
      "8YEPUD"
    ],
    "start": "2025-07-18T11:05:00+02:00",
    "title": "Explaining the 5 types of database and how to choose between them",
    "track": "~ None of these topics (2025)",
    "tweet": "What database should you choose? What *kind* of database should you choose? Learn about the 5 types of database, and why to choose each",
    "website_url": "https://ep2025.europython.eu/session/explaining-the-5-types-of-database-and-how-to-choose-between-them",
    "youtube_url": "https://youtube.com/watch?v=YZmyumwFWOg"
  },
  "9R9R97": {
    "abstract": "PyPI (Python Packaging Index) is used by over 800,000 users. With its ever growing user base and popularity, comes the need for making sure the PyPI ecosystem is secure for all users all without constraining ease of use. Part pep talk (pun intended!), part presentation, this talk plans to discuss some of the challenges that were tackled in terms of bringing the various PyPI support backlogs current in both account recovery and PEP 541 as well as other support requests. This talk will also discuss process improvements made, lessons learned, and what\u2019s in store in the future for PyPI support.",
    "code": "9R9R97",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T16:20:00+02:00",
    "level": "intermediate",
    "next_session": "DCBMJY",
    "prev_session": "LDD9KB",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Talk",
    "sessions_after": [
      "DCBMJY"
    ],
    "sessions_before": [
      "9FQDQS",
      "ABDUU8",
      "AUAVX7",
      "LDD9KB",
      "MS8ZT7",
      "T9ZYJD",
      "TTA8LT",
      "WDDYM8"
    ],
    "sessions_in_parallel": [
      "78CWUW",
      "AVUQVA",
      "C8B7QH",
      "M8LTAJ",
      "ZKABJR"
    ],
    "slug": "a-pep-talk-adventures-as-the-inaugural-pypi-support-specialist",
    "speakers": [
      "LKEVDA"
    ],
    "start": "2025-07-17T15:50:00+02:00",
    "title": "A PEP Talk: Adventures As the Inaugural PyPI Support Specialist",
    "track": "Tooling, Packaging, Developer Productivity (2025)",
    "tweet": "A PEP Talk: Adventures in Account Recovery, PEP 541, And More As the Inaugural PyPI Support Specialist",
    "website_url": "https://ep2025.europython.eu/session/a-pep-talk-adventures-as-the-inaugural-pypi-support-specialist",
    "youtube_url": "https://youtube.com/watch?v=OiAbLGNkcTA"
  },
  "9VL9PH": {
    "abstract": "Join us for a fast, fun, and brain-twisting quiz all about Python, the tools, and the community.\r\n\r\nTest your knowledge, race against the clock, and compete with fellow EuroPython attendees for a shot at some awesome prizes. \r\n\r\nWhether you\u2019re a seasoned developer or just love a good challenge, this showdown is your time to shine.",
    "code": "9VL9PH",
    "delivery": "in-person",
    "duration": "15",
    "end": "2025-07-16T17:45:00+02:00",
    "level": "beginner",
    "next_session": "GZR9KT",
    "prev_session": "XEMLJB",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Talk",
    "sessions_after": [
      "GZR9KT"
    ],
    "sessions_before": [
      "8K38D8",
      "8QQYJW",
      "9PGYHF",
      "AEAK3B",
      "HMRHJJ",
      "L8YSMU",
      "NATVVE",
      "XEMLJB",
      "ZLMT3Q"
    ],
    "sessions_in_parallel": [],
    "slug": "python-quiz",
    "speakers": [],
    "start": "2025-07-16T17:30:00+02:00",
    "title": "Python quiz",
    "track": null,
    "tweet": "Join us for a fast, fun, and brain-twisting quiz all about Python, the tools, and the community.",
    "website_url": "https://ep2025.europython.eu/session/python-quiz",
    "youtube_url": "https://youtube.com/watch?v=WBYGvDjF290"
  },
  "ABDUU8": {
    "abstract": "Stress has become a major issue for human beings and especially students, impacting both their general well-being and academic performance. Over the years, studies have revealed that academic stress and other stressors, such as time management, impede the smooth going of students in achieving their optimal academic performance and well-being. The work is aimed at using machine learning techniques to map and predict students\u2019 stress levels using a psychological evaluation model. Data were collected from students of McPherson University using both the Perceived Stress Scale (PSS-10) and the 50-item International Personality Item Pool (IPIP) questionnaire. The data collected were preprocessed and trained by a variety of machine learning techniques to develop a psychological assessment model. Nine machine learning algorithms, which include Naive Bayes, Random Forest, Decision Tree, Logistic Regression, Linear Discriminant Analysis, Multilayer Perception, Bagging, Support Vector Machine (SVM), and K-Nearest Neighbour, were evaluated to determine the best for the model. Performance evaluation of the developed model is done using precision, recall, F1 score, and accuracy as metrics. The result shows that Random Forest is the best-performing classifier in this study, though with a low percentage due to the presence of imbalances in the data and feature selection.",
    "code": "ABDUU8",
    "delivery": "in-person",
    "duration": "60",
    "end": "2025-07-17T14:15:00+02:00",
    "level": "intermediate",
    "next_session": null,
    "prev_session": null,
    "resources": null,
    "room": "Exhibit Hall",
    "session_type": "Poster",
    "sessions_after": [
      "BTV3ZJ",
      "CLTGAH",
      "LQXQVD",
      "LZPFTY",
      "SRM97H",
      "WDDYM8"
    ],
    "sessions_before": [
      "AKQNBF",
      "AMMYXT",
      "CYMWKD",
      "FGA7ZN",
      "G3QBAF",
      "YN3MWG"
    ],
    "sessions_in_parallel": [
      "AUAVX7"
    ],
    "slug": "psychological-model-for-mapping-and-prediction-of-stress-among-students",
    "speakers": [
      "8AXEMT",
      "DGMZXX"
    ],
    "start": "2025-07-17T13:15:00+02:00",
    "title": "Psychological Model for Mapping and Prediction of Stress Among Students",
    "track": "Machine Learning: Research & Applications (2025)",
    "tweet": "Stress is a significant issue for students, impacting their well-being and academic performance. A study at McPherson University used machine learning",
    "website_url": "https://ep2025.europython.eu/session/psychological-model-for-mapping-and-prediction-of-stress-among-students",
    "youtube_url": null
  },
  "AD3TGW": {
    "abstract": "dbt (Data Build Tool) is a framework written in Python for creating, building, organizing, testing and documenting data models, i.e. data sets living in a database or a data warehouse.\r\n\r\ndbt builds on clean software development practices to allow data engineers and analysts to focus on the core logic of their data transformations, while allowing them to manage datasets at scale.\r\n\r\nFollowing a long-standing tradition in data engineering, dbt makes an extensive use of YAML to store metadata. Such metadata includes for example column types, table documentation, data correctness tests, 3rd party integrations, and any custom metadata that may be useful. In large projects, the metadata can easily amount to millions of values.\r\n\r\nThis is where things become complex, as there's no mechanism to ensure the correctness and consistency of this metadata. In particular, answering the following questions is hard:\r\n- Is this table sufficiently tested?\r\n- Does this table expose sensitive data?\r\n- Does this column name follow naming conventions?\r\n\r\nAnswering those questions is essential to maintain a high quality of data, as well as secure it by safe-guarding it against incidental exposure and other privacy and compliance concerns.\r\n\r\nThis is why we created and open-sourced dbt-score, a linter for dbt metadata. It is designed to be flexible to enforce and encourage any good practice set up by data teams. Through its CLI, data practitioners can easily obtain a maturity score of their data models, keep the metadata chaos manageable, improve consistency, and eventually deliver high-quality data.\r\n\r\nThis presentation will cover:\r\n- An introduction to dbt\r\n- The importance and advantages of declarative, git-tracked metadata\r\n- The need for linting this metadata\r\n- How dbt-score tackles this challenge, and its applicability to diverse dbt projects\r\n\r\nMore information about dbt-score can be found online:\r\n- Documentation: https://dbt-score.picnic.tech/\r\n- Source code: https://github.com/PicnicSupermarket/dbt-score",
    "code": "AD3TGW",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T12:10:00+02:00",
    "level": "intermediate",
    "next_session": "3ZNVQQ",
    "prev_session": "KFQSZK",
    "resources": null,
    "room": "Terrace 2A",
    "session_type": "Talk",
    "sessions_after": [
      "3ZNVQQ",
      "AEAK3B",
      "DKECGU",
      "GMKTFY",
      "GS8GHZ",
      "L8YSMU",
      "PBNRMR",
      "ZLMT3Q",
      "ZNVECA"
    ],
    "sessions_before": [
      "78GQHG",
      "DQFMNM",
      "KCJRPT",
      "KFQSZK",
      "QHFKGT",
      "XCN9MD"
    ],
    "sessions_in_parallel": [
      "D8FJPN",
      "NKTHSJ",
      "P9DT7T",
      "YGXMN9",
      "YQ79RE"
    ],
    "slug": "dbt-score-continuous-integration-for-dbt-metadata",
    "speakers": [
      "9S3Z87",
      "MSG8X8"
    ],
    "start": "2025-07-16T11:40:00+02:00",
    "title": "dbt-score: continuous integration for dbt metadata",
    "track": "Data Engineering and MLOps (2025)",
    "tweet": "Centralized metadata management is wonderful to simplify large data platforms. dbt-score is a linter helping data teams keep everything tidy!",
    "website_url": "https://ep2025.europython.eu/session/dbt-score-continuous-integration-for-dbt-metadata",
    "youtube_url": "https://youtube.com/watch?v=puxD15opT54"
  },
  "AEAK3B": {
    "abstract": "In 2024, **PySchool** hosted three successful events, reaching over 100 high school students in Valpara\u00edso, Chile. The main goal of PySchool is to **make programming education more accessible** and spark interest in STEM (science, technology, engineering, and mathematics). By showing students that learning to code is not as hard as it might seem, PySchool helps them consider STEM careers, even if they didn\u2019t have role models or prior knowledge of programming.  \r\n\r\nThe focus of the program is to make coding fun and easy to understand. Workshops are **interactive** and give students real coding challenges. They have access to an online platform where they can start coding right away, **without needing to install anything**. This hands-on approach helps students build practical skills and confidence in using Python, making it easier for them to continue learning.  \r\n\r\nPySchool has had a positive impact, with **students giving the program a Net Promoter Score (NPS) of 9.3/10**. This shows that students are very satisfied and would recommend it to their friends.\r\n\r\n**PySchool** was created by members of Python Chile organization, with support from the Python Software Foundation and DUOC UC. PySchool was built having high school students with no Python knowledge as attendees, to complement other Python events like PyCon and PyDay, which are aimed at adults with prior Python knowledge.",
    "code": "AEAK3B",
    "delivery": "in-person",
    "duration": "60",
    "end": "2025-07-16T13:50:00+02:00",
    "level": "beginner",
    "next_session": null,
    "prev_session": null,
    "resources": null,
    "room": "Exhibit Hall",
    "session_type": "Poster",
    "sessions_after": [
      "AR7VP8",
      "BXWQYK",
      "PRDDPR",
      "TU3D7R",
      "XEXS3Y",
      "ZNMPFX"
    ],
    "sessions_before": [
      "3ZNVQQ",
      "DKECGU",
      "GMKTFY",
      "GS8GHZ",
      "PBNRMR",
      "ZNVECA"
    ],
    "sessions_in_parallel": [
      "L8YSMU",
      "ZLMT3Q"
    ],
    "slug": "pyschool-introducing-high-school-students-to-the-world-of-python",
    "speakers": [
      "ATT388"
    ],
    "start": "2025-07-16T12:50:00+02:00",
    "title": "PySchool: Introducing High School Students to the World of Python",
    "track": "Community Building, Education, Outreach (2025)",
    "tweet": "Learn about PySchool, built to teach Python to high school students with no Python knowledge as attendees. No installation needed!",
    "website_url": "https://ep2025.europython.eu/session/pyschool-introducing-high-school-students-to-the-world-of-python",
    "youtube_url": null
  },
  "AJ3Z8U": {
    "abstract": "If you or your organization are spending time and resources attending a Python conference, you will want to ensure your team gets something immediately actionable and helpful out of it. As coders, we often think about writing code as the only way to contribute. However, pull request reviews are an often overlooked, but highly actionable way to have an impact.\r\n\r\nGiving good PR reviews is an art, with two equally important parts: the technical side and the communication side. While the technical side ensures the quality, maintainability, and efficiency of the Python code, the communication around the PR determines whether the feedback can be understood and acted upon. However, we have all seen code reviews that have been ignored or executed poorly due to poor communication.\r\n\r\nThis talk addresses both facets of PR reviews by introducing the archetypes of bad code reviewers: \r\n  1) The \u201cLooks Good to Me\u201d Reviewer: This peer reviewer provides little to no actionable feedback.\r\n  2) The \u201cTechnical Nitpicker\u201d: This peer reviewer focuses on small Python-specific issues, but fails to \r\n      communicate constructively.\r\n  3) The \u201cNit\u201d Commenter: This peer reviewer prefaces every comment with \u201cnit,\u201d while offering unclear, yet technically valid suggestions \r\n\r\nUsing these archetypes, we will explore Python-specific technical topics (such as pass by reference vs. pass by value), while delving into how to communicate and deliver feedback in a clear and actionable manner. Using real-world examples, attendees will learn how to:\r\n     a) Identify and address technical issues in Python PRs\r\n     b) Communicate feedback effectively\r\n     c) Balance technical rigor with constructive feedback\r\n     d) Communicate their peer review comments clearly",
    "code": "AJ3Z8U",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T15:05:00+02:00",
    "level": "intermediate",
    "next_session": "JKZDUY",
    "prev_session": "DGSNSE",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Talk",
    "sessions_after": [
      "JKZDUY"
    ],
    "sessions_before": [
      "DGSNSE",
      "ETFNZG",
      "FJH9YY",
      "HTVBWM",
      "RGVZRU",
      "SKPCNV"
    ],
    "sessions_in_parallel": [
      "89LBUT",
      "BVYE9B",
      "DCZCJP",
      "XND9F9",
      "Y8PVLE"
    ],
    "slug": "you-came-to-a-python-conference-now-go-do-a-pr-review",
    "speakers": [
      "HQ3RL9"
    ],
    "start": "2025-07-18T14:35:00+02:00",
    "title": "You Came to a Python Conference. Now, Go Do a PR Review!",
    "track": "Community Building, Education, Outreach (2025)",
    "tweet": "The art of Pythonic PR reviews: Combine your Python know-how w/ communication best practices to give clear, constructive & technically-sound feedback",
    "website_url": "https://ep2025.europython.eu/session/you-came-to-a-python-conference-now-go-do-a-pr-review",
    "youtube_url": "https://youtube.com/watch?v=DCEKJcc3BlY"
  },
  "AJHY9H": {
    "abstract": "A **semantic search** on a website is the best way to make its content easily accessible to users because it interprets the **meaning** of words and is in fact increasingly used with the growth of **AI** technologies.\r\n\r\nThe implementation of semantic search can be complex and many adopt the strategy of using dedicated **vector databases**, in addition to the database, but this strategy has architectural and performance **issues**.\r\n\r\nIn this talk we will see a **Pythonic** way to implement semantic search on a website using a purely **Open-Source AI stack** (*Python*, *Django, PostgreSQL*, *pgvector*, *Sentence Transformes*). We\u2019ll analyze some issues of using external vector databases with examples from my experience.\r\n\r\nThrough this talk you can **learn** how to add a semantic search on your website, based on **Django** and **PostgreSQL**, or you can learn how to update the semantic search function if you use other **vector databases.**",
    "code": "AJHY9H",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T16:35:00+02:00",
    "level": "intermediate",
    "next_session": "XEMLJB",
    "prev_session": "3BQFTP",
    "resources": [
      {
        "description": "Slides",
        "resource": "https://programme.europython.eu/media/europython-2025/submissions/AJHY9H/resources/20250716_-_FzGFTPP.pdf"
      },
      {
        "description": "Resources and Slides",
        "resource": "https://www.paulox.net/2025/07/16/europython-2025/"
      }
    ],
    "room": "Forum Hall",
    "session_type": "Talk",
    "sessions_after": [
      "XEMLJB"
    ],
    "sessions_before": [
      "3BQFTP",
      "3FYGDN",
      "8K38D8",
      "AEAK3B",
      "GMWLFT",
      "HAKES9",
      "L8YSMU",
      "MPKBEN",
      "ZLMT3Q"
    ],
    "sessions_in_parallel": [
      "8QQYJW",
      "9PGYHF",
      "HMRHJJ",
      "NATVVE"
    ],
    "slug": "a-pythonic-semantic-search",
    "speakers": [
      "BGLPFA"
    ],
    "start": "2025-07-16T16:05:00+02:00",
    "title": "A Pythonic semantic search",
    "track": "Web Development, Web APIs, Front-End Integration (2025)",
    "tweet": "How to implement a semantic search using using only an Open-Source AI stack based on Python, Django, PostgreSQL, pgvector, Sentence Transformers.",
    "website_url": "https://ep2025.europython.eu/session/a-pythonic-semantic-search",
    "youtube_url": "https://youtube.com/watch?v=bE7YaasiotE"
  },
  "AJPPVG": {
    "abstract": "Whenever you use a dot in Python you access an attribute.\r\nWhile this seems a very simple operation,\r\nbehind the scenes many things can happen.\r\nThis tutorial looks into this mechanism that is regulated by descriptors.\r\nYou will learn how a descriptor works and what kind of problems it can help to\r\nsolve.\r\nPython properties are based on descriptors and solve one type of problems.\r\nDescriptors are more general, allow more use cases, and are more re-usable.\r\nDescriptors are an advanced topic.\r\nBut once mastered, they provide a powerful tool to hide potentially complex\r\nbehavior behind a simple dot.\r\n\r\nIn this tutorial you will:\r\n\r\n* Learn how to use Python's descriptors to add new functionality to attribute access\r\n* Acquired solid background knowledge on how descriptors work\r\n* Work with practical examples for applying descriptors\r\n* Learn when to use a property or reach for a descriptor\r\n* Get to know how popular Python libraries apply descriptors for tasks such as\r\n  data structure access, REST-APIs, ORMs, and serialization",
    "code": "AJPPVG",
    "delivery": "in-person",
    "duration": "180",
    "end": "2025-07-15T12:45:00+02:00",
    "level": "advanced",
    "next_session": "AYXDME",
    "prev_session": null,
    "resources": null,
    "room": "Club E",
    "session_type": "Tutorial",
    "sessions_after": [
      "AYXDME",
      "D9JGFG",
      "E9HV7P",
      "MXKGZ9",
      "RBTZEC",
      "VBSZJW"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [
      "7ARRRE",
      "RMVNGD",
      "RTCZQG",
      "RWPFPP",
      "V3WS7N"
    ],
    "slug": "the-mighty-dot-customize-attribute-access-with-descriptors",
    "speakers": [
      "9KSJ3K"
    ],
    "start": "2025-07-15T09:30:00+02:00",
    "title": "The Mighty Dot - Customize Attribute Access with Descriptors",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "A three-hour deep dive into Python's attribute access - Learn what the dot is doing",
    "website_url": "https://ep2025.europython.eu/session/the-mighty-dot-customize-attribute-access-with-descriptors",
    "youtube_url": null
  },
  "AKQNBF": {
    "abstract": "Infectious diseases are the third leading cause of death worldwide, claiming more than 13 million lives every year. While there are many interventions available for managing epidemics (like vaccination, testing and treatments), the best approach is not always clear. There are complex dynamics at play, and the optimal response may vary significantly depending on outbreak severity, funding available, and even sociopolitical context. \r\n\r\nComputational modelling is a powerful tool for evaluating the potential impact of different public health approaches, but the difficulty of building fit-for-purpose epidemiological models from scratch is a barrier to widespread use. \r\n\r\nAtomica, an open source Python-based simulation engine, aims to make this kind of modelling more accessible. It provides an easy-to-use yet highly configurable way to build disease models, with built-in support for public health interventions and optimisation with budget constraints. By leveraging population, transmission, and intervention data, as well as conceptual knowledge of how people progress through stages of disease, this package allows us to forecast the potential consequences of public health strategies in specific countries or settings. With this insight, we can help governments and health organisations to make the best possible decisions on what to prioritise, saving many lives in the process. \r\n\r\nWhether you\u2019re a beginner or an expert Pythonista, this talk will equip you with the tools to simulate a real-world typhoid epidemic and optimise funding distribution for maximum impact.",
    "code": "AKQNBF",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T13:15:00+02:00",
    "level": "beginner",
    "next_session": "SRM97H",
    "prev_session": "SXWDSA",
    "resources": [
      {
        "description": "Atomica GitHub Repository",
        "resource": "https://github.com/atomicateam/atomica"
      }
    ],
    "room": "South Hall 2A",
    "session_type": "Talk",
    "sessions_after": [
      "ABDUU8",
      "AUAVX7",
      "BTV3ZJ",
      "CLTGAH",
      "LQXQVD",
      "LZPFTY",
      "SRM97H",
      "WDDYM8"
    ],
    "sessions_before": [
      "8QFLC9",
      "CAWMEZ",
      "SXWDSA",
      "WKDYUH",
      "XZNTGY",
      "Z9DWTW"
    ],
    "sessions_in_parallel": [
      "AMMYXT",
      "CYMWKD",
      "FGA7ZN",
      "G3QBAF",
      "YN3MWG"
    ],
    "slug": "how-to-stop-an-epidemic-using-the-atomica-python-tool",
    "speakers": [
      "MU8FBU"
    ],
    "start": "2025-07-17T12:45:00+02:00",
    "title": "How to Stop an Epidemic using the Atomica Python Tool",
    "track": "Jupyter and Scientific Python (2025)",
    "tweet": "Predicting an epidemic: Learn how to simulate disease outbreaks, optimise interventions, and save lives with data-driven decisions",
    "website_url": "https://ep2025.europython.eu/session/how-to-stop-an-epidemic-using-the-atomica-python-tool",
    "youtube_url": "https://youtube.com/watch?v=G_PRanVqEr8"
  },
  "AMMYXT": {
    "abstract": "Large Language Models (LLMs) have become transformative tools, reshaping industries and research alike. Yet, while their outputs can feel like magic, their inner workings remain opaque to most users. How do these models \"think\"? Can we untangle the layers of their reasoning processes? Step into the cutting-edge field of Mechanistic Interpretability, where we aim to decode the black box of LLMs into understandable, human-readable components.\r\nIn this session, we will explore how researchers and practitioners dissect neural networks, uncovering the mechanisms behind their behavior. We will start with the foundational concepts, what Mechanistic Interpretability is and why it matters, before diving into practical tools and techniques.\r\nWe will emphasize why this field is essential: from ensuring models behave safely and ethically to optimizing their performance and fostering trust in AI systems. Attendees will leave with a conceptual toolkit for interpreting LLMs and practical takeaways on how to start applying these insights in their own work using Python libraries like PyTorch, Transformers, and interpretability-specific tools.\r\nThis talk assumes familiarity with AI fundamentals but introduces advanced concepts with approachable explanations. Whether you're a researcher, developer, or curious enthusiast, you\u2019ll gain actionable insights and inspiration to engage with one of the most exciting frontiers in AI. No specialized hardware or prerequisites are required, just bring your curiosity!",
    "code": "AMMYXT",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T13:15:00+02:00",
    "level": "intermediate",
    "next_session": "WDDYM8",
    "prev_session": "CAWMEZ",
    "resources": null,
    "room": "South Hall 2B",
    "session_type": "Talk",
    "sessions_after": [
      "ABDUU8",
      "AUAVX7",
      "BTV3ZJ",
      "CLTGAH",
      "LQXQVD",
      "LZPFTY",
      "SRM97H",
      "WDDYM8"
    ],
    "sessions_before": [
      "8QFLC9",
      "CAWMEZ",
      "SXWDSA",
      "WKDYUH",
      "XZNTGY",
      "Z9DWTW"
    ],
    "sessions_in_parallel": [
      "AKQNBF",
      "CYMWKD",
      "FGA7ZN",
      "G3QBAF",
      "YN3MWG"
    ],
    "slug": "hacking-llms-an-introduction-to-mechanistic-interpretability",
    "speakers": [
      "UMPJBY"
    ],
    "start": "2025-07-17T12:45:00+02:00",
    "title": "Hacking LLMs: An Introduction to Mechanistic Interpretability",
    "track": "Machine Learning: Research & Applications (2025)",
    "tweet": "Unravel the mysteries of large language models and discover how we can decode their inner workings with Mechanistic Interpretability.",
    "website_url": "https://ep2025.europython.eu/session/hacking-llms-an-introduction-to-mechanistic-interpretability",
    "youtube_url": "https://youtube.com/watch?v=Og47aN8aU6M"
  },
  "AQEJEQ": {
    "abstract": "Enjoy Friday's lightning talks! Short talks about everything by everyone. \r\n\r\nLightning talks are 5 minute talks that anyone participating at the conference can submit.\r\nIf 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's helping and contributing to our conference and community, or something else!\r\n\r\nLightning talks last a maximum of 5 minutes. You can use less time, but not more.\r\nThis time limit is strictly enforced!\r\n\r\nIf you get accepted, you will be notified by email on the day of your talk by 1pm.\r\nReply to the acceptance email by 3pm to confirm your spot.\r\n(If you don't, you lose your spot!)\r\n\r\nYou can submit your lightning talk on this form: https://forms.gle/MswQ6ukWrLVpwRmi9\r\nNote that there's a limit of one submission per person.",
    "code": "AQEJEQ",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T17:30:00+02:00",
    "level": "beginner",
    "next_session": null,
    "prev_session": "JKZDUY",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Announcements",
    "sessions_after": [],
    "sessions_before": [
      "89LBUT",
      "BVYE9B",
      "DCZCJP",
      "JKZDUY",
      "XND9F9",
      "Y8PVLE"
    ],
    "sessions_in_parallel": [],
    "slug": "lightning-talks-friday",
    "speakers": [],
    "start": "2025-07-18T17:00:00+02:00",
    "title": "Lightning talks \u26a1 Friday",
    "track": null,
    "tweet": "Enjoy Friday's lightning talks! Short talks about everything by everyone.   Lightning talks are 5 minute talks that anyone participating at the confer",
    "website_url": "https://ep2025.europython.eu/session/lightning-talks-friday",
    "youtube_url": "https://youtube.com/watch?v=IkYWHLSgyOo"
  },
  "AR7VP8": {
    "abstract": "Documentation is crucial for the development and growth of any project. If you know English, you're lucky; most technical knowledge is in that language. But what about those who don\u2019t? \ud83d\ude22\r\n\r\nA few years ago, the official Python documentation wasn\u2019t available in Spanish, creating two main challenges:\r\n\r\n- Many Spanish speakers with limited English skills struggled to access the documentation.\r\n- Translation efforts were fragmented, with different communities attempting partial translations.\r\n\r\nOffering the official Python documentation in Spanish provides the global Spanish-speaking community with the opportunity to access it directly, without needing a second language; it also creates bonds of identity among those who join the collective exercise of explaining and translating the documentation's concepts. It generates identity and community!\r\n\r\nIn this talk, we'll share the journey of Python-Docs-ES, the lessons learned from nearly 230 contributors, and how you can join in, whether in Spanish or in your own language. \r\n\r\nContributing to Python doesn\u2019t always mean writing complex code, it can also mean making knowledge accessible to more people. \ud83d\udca1\u2728",
    "code": "AR7VP8",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T14:20:00+02:00",
    "level": "beginner",
    "next_session": "GQGKNS",
    "prev_session": "GS8GHZ",
    "resources": null,
    "room": "Terrace 2B",
    "session_type": "Talk",
    "sessions_after": [
      "3FYGDN",
      "GQGKNS",
      "MUAVCX",
      "SCKCAV",
      "TXZMRS",
      "US9HWQ"
    ],
    "sessions_before": [
      "3ZNVQQ",
      "AEAK3B",
      "DKECGU",
      "GMKTFY",
      "GS8GHZ",
      "L8YSMU",
      "PBNRMR",
      "ZLMT3Q",
      "ZNVECA"
    ],
    "sessions_in_parallel": [
      "BXWQYK",
      "PRDDPR",
      "TU3D7R",
      "XEXS3Y",
      "ZNMPFX"
    ],
    "slug": "how-to-contribute-to-python-docs-in-your-own-language",
    "speakers": [
      "UP8GUY"
    ],
    "start": "2025-07-16T13:50:00+02:00",
    "title": "How to contribute to Python docs in your own language",
    "track": "Community Building, Education, Outreach (2025)",
    "tweet": "Would you like to be able to read the docs for your favorite project in your native language? Check out our experience with the Python translation",
    "website_url": "https://ep2025.europython.eu/session/how-to-contribute-to-python-docs-in-your-own-language",
    "youtube_url": "https://youtube.com/watch?v=gbAtdDhlxBE"
  },
  "AUAVX7": {
    "abstract": "Culture defines us, and preserving it is essential for maintaining our identity and heritage. While recent advancements in AI have focused on digitizing African languages, cultural preservation extends beyond language to include traditional games, many of which face extinction due to the rise of video games. This project takes a step toward preserving African culture by digitizing Ayo, a traditional Nigerian mancala game.\r\n\r\nUsing Python, with NumPy and PyTorch for algorithm development and Tkinter and FastAPI for the graphical interface and backend, this research implements reinforcement learning (RL) agents capable of mastering Ayo. Three agent types\u2014Heuristic, Minimax, and Pruned Minimax\u2014were trained, with the Pruned Minimax agent demonstrating exceptional performance. It not only outperformed other agents in simulations but also defeated every human player tested so far.\r\n\r\nThis ongoing work bridges AI and cultural heritage, showcasing Python's versatility in addressing real-world challenges. By digitizing traditional games, we ensure they remain accessible and relevant for future generations. Attendees will gain insights into the technical implementation of reinforcement learning for game AI, explore the challenges of adapting AI to traditional games, and witness a live demonstration of the Ayo game interface. This project serves as a blueprint for preserving and promoting cultural heritage globally, demonstrating the power of Python in advancing AI research and cultural preservation.",
    "code": "AUAVX7",
    "delivery": "in-person",
    "duration": "60",
    "end": "2025-07-17T14:15:00+02:00",
    "level": "intermediate",
    "next_session": null,
    "prev_session": null,
    "resources": null,
    "room": "Exhibit Hall",
    "session_type": "Poster",
    "sessions_after": [
      "BTV3ZJ",
      "CLTGAH",
      "LQXQVD",
      "LZPFTY",
      "SRM97H",
      "WDDYM8"
    ],
    "sessions_before": [
      "AKQNBF",
      "AMMYXT",
      "CYMWKD",
      "FGA7ZN",
      "G3QBAF",
      "YN3MWG"
    ],
    "sessions_in_parallel": [
      "ABDUU8"
    ],
    "slug": "preserving-culture-with-python-ai-plays-ayo-a-traditional-nigerian-game",
    "speakers": [
      "LFUZNB"
    ],
    "start": "2025-07-17T13:15:00+02:00",
    "title": "Preserving Culture with Python: AI plays Ayo, a Traditional Nigerian Game",
    "track": "Machine Learning: Research & Applications (2025)",
    "tweet": "Preserving Nigerian culture with Python: AI agents built to master Ayo, a traditional mancala game, using reinforcement learning.",
    "website_url": "https://ep2025.europython.eu/session/preserving-culture-with-python-ai-plays-ayo-a-traditional-nigerian-game",
    "youtube_url": null
  },
  "AVUQVA": {
    "abstract": "Testing is a cornerstone of software development, but many teams struggle with end-to-end (E2E) testing due to its complexity, inconsistent results, and maintenance overhead. \r\n\r\nWhile unit testing has become the default choice due to its simplicity, it often fails to catch integration issues that only surface in real-world scenarios. This talk challenges the notion that E2E testing must be difficult by introducing the powerful combination of Testcontainers and Playwright. We'll demonstrate how Testcontainers brings unit test-like simplicity to integration testing, while using Playwright to enable writing tests that represent actual usage of the system through a developer-friendly API.\r\n\r\nAttendees will learn how to leverage a combination of Testcontainers and Playwright to create stable test environments, understand best practices for container-based and browser testing, and walk away with practical knowledge on how to improve their testing strategies. Whether you're a testing enthusiast or just getting started with testing in Python, this session will equip you with tools and techniques to make E2E testing as approachable as writing simple unit tests.",
    "code": "AVUQVA",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T16:20:00+02:00",
    "level": "intermediate",
    "next_session": "DCBMJY",
    "prev_session": "T9ZYJD",
    "resources": null,
    "room": "Terrace 2A",
    "session_type": "Talk",
    "sessions_after": [
      "DCBMJY"
    ],
    "sessions_before": [
      "9FQDQS",
      "ABDUU8",
      "AUAVX7",
      "LDD9KB",
      "MS8ZT7",
      "T9ZYJD",
      "TTA8LT",
      "WDDYM8"
    ],
    "sessions_in_parallel": [
      "78CWUW",
      "9R9R97",
      "C8B7QH",
      "M8LTAJ",
      "ZKABJR"
    ],
    "slug": "end-to-end-with-testcontainers-and-playwright",
    "speakers": [
      "REFSGX"
    ],
    "start": "2025-07-17T15:50:00+02:00",
    "title": "End to End with Testcontainers and Playwright",
    "track": "Testing, Quality Assurance, Security (2025)",
    "tweet": "Learn how Testcontainers and Playwright make E2E testing as simple as unit tests. Join us at #EuroPython to level up your testing game! \ud83d\udc0d \ud83e\uddea",
    "website_url": "https://ep2025.europython.eu/session/end-to-end-with-testcontainers-and-playwright",
    "youtube_url": "https://youtube.com/watch?v=-oX5tdS4A4g"
  },
  "AYXDME": {
    "abstract": "Using Strawberry with Django, you can build an efficient, async GraphQL backend. Strawberry\u2019s use of Python\u2019s async capabilities enables high performance, while its integration with Django provides a robust foundation.\r\n\r\nKey features include:\r\n\r\nDataLoaders: Batch and cache database queries to reduce load and improve performance\r\nObject Types: Define your data\u2019s structure clearly and flexibly\r\nQueries: Retrieve data efficiently with customizable GraphQL query structures\r\nMutations: Implement data modification operations cleanly and predictably",
    "code": "AYXDME",
    "delivery": "in-person",
    "duration": "180",
    "end": "2025-07-15T17:00:00+02:00",
    "level": "intermediate",
    "next_session": null,
    "prev_session": "AJPPVG",
    "resources": null,
    "room": "Club E",
    "session_type": "Tutorial",
    "sessions_after": [
      "VBSZJW"
    ],
    "sessions_before": [
      "7ARRRE",
      "AJPPVG",
      "RMVNGD",
      "RTCZQG",
      "V3WS7N"
    ],
    "sessions_in_parallel": [
      "D9JGFG",
      "E9HV7P",
      "MXKGZ9",
      "RBTZEC",
      "RWPFPP"
    ],
    "slug": "strawberry-and-alittlebit-apollo",
    "speakers": [
      "N3QP3G"
    ],
    "start": "2025-07-15T13:45:00+02:00",
    "title": "Strawberry and alittlebit Apollo",
    "track": "Web Development, Web APIs, Front-End Integration (2025)",
    "tweet": "Strawberry, a modern Python library for GraphQL, simplifies API development with its type-safe schema definition and integration flexibility. Paired w",
    "website_url": "https://ep2025.europython.eu/session/strawberry-and-alittlebit-apollo",
    "youtube_url": null
  },
  "BK9JTV": {
    "abstract": "This talk walks you through the 20 tools available in `itertools`, a module you should be proficient in if you aspire to write Python code that makes efficient use iterables.\r\n\r\nThe talk proposes splitting the module `itertools` in 5 categories of iterables: combinatorial, reshaping, infinite, filtering, and complementary.\r\n\r\nFor each category, we will explore the tools available, look at examples of usage, and understand when each iterable can be useful.\r\n\r\nOh, and there\u2019s also `tee`. Let us not forget `tee`!",
    "code": "BK9JTV",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-17T11:15:00+02:00",
    "level": "beginner",
    "next_session": "URXNP8",
    "prev_session": "FCGVPR",
    "resources": null,
    "room": "South Hall 2B",
    "session_type": "Talk (long session)",
    "sessions_after": [
      "ABDUU8",
      "AUAVX7",
      "G3SBMR",
      "GKRLGM",
      "SRVL9W",
      "UCHDYW",
      "UDNNWJ",
      "URXNP8"
    ],
    "sessions_before": [
      "FCGVPR"
    ],
    "sessions_in_parallel": [
      "3VNDYN",
      "LHE38S",
      "PNSAM3",
      "QLLC8C",
      "T3HHJG"
    ],
    "slug": "a-tour-of-the-module-itertools",
    "speakers": [
      "BLNV7P"
    ],
    "start": "2025-07-17T10:30:00+02:00",
    "title": "A tour of the module `itertools`",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "Rodrigo just cracked the code! He figured out how to explain how descriptors work without you wanting to pull your hair out!",
    "website_url": "https://ep2025.europython.eu/session/a-tour-of-the-module-itertools",
    "youtube_url": "https://youtube.com/watch?v=cRpFjodM6TI"
  },
  "BTV3ZJ": {
    "abstract": "In a nutshell:\r\nSnapshot testing simplifies testing large result sets, reducing manual work, especially for APIs and for data processing. I'll show you how to use it in your projects.\r\n\r\nThis talk is about:\r\n* Snapshot testing: Usage and evolution.\r\n* The [inline-snapshot](https://github.com/15r10nk/inline-snapshot) library, by Frank Hoffmann, the pytest plugin you were missing\r\n* Main use cases\r\n  * Tests that are deterministic but have large outputs that are hard to write by hand.\r\n  * Refactor or approval testing: you need tests to ensure a function's result stays consistent during refactoring.\r\n* Real-life examples with black+flake8 and ruff\r\n* Examples with dirty-equals\r\n* What is a meaningful diff or tricky bits of formatting and linting\r\n* Handling different outputs depending on library versions\r\n\r\nRelevant for you if:\r\n* You test functions returning large outputs, like dicts or dataframes\r\n* You deal with the main fields of usage: data processing, data pipelining, APIs\r\n\r\nMain takeaways:\r\n* General knowledge about snapshot testing\r\n* Specific knowledge about the inline-snapshot library\r\n* Real world use-cases of inline-snapshot: where to start, what to use it for, where it will boost your productivity\r\n\r\nTo cite Samuel Colvin, creator and founder of Pydantic, \u201cinline-snapshots is transformative to how we write unit tests in Python! If you're using pytest, and you're not using inline-snapshots, you're wasting your time; simple as that.\u201d\r\n\r\nRequirements:\r\nA general idea about tests and different kinds of tests.",
    "code": "BTV3ZJ",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T14:45:00+02:00",
    "level": "intermediate",
    "next_session": "T9ZYJD",
    "prev_session": "G3QBAF",
    "resources": null,
    "room": "Terrace 2A",
    "session_type": "Talk",
    "sessions_after": [
      "9FQDQS",
      "C8B7QH",
      "LDD9KB",
      "MS8ZT7",
      "T9ZYJD",
      "TTA8LT"
    ],
    "sessions_before": [
      "ABDUU8",
      "AKQNBF",
      "AMMYXT",
      "AUAVX7",
      "CYMWKD",
      "FGA7ZN",
      "G3QBAF",
      "YN3MWG"
    ],
    "sessions_in_parallel": [
      "CLTGAH",
      "LQXQVD",
      "LZPFTY",
      "SRM97H",
      "WDDYM8"
    ],
    "slug": "snapshot-testing-a-new-era-of-reliability",
    "speakers": [
      "UPL7L8"
    ],
    "start": "2025-07-17T14:15:00+02:00",
    "title": "Snapshot Testing: A New Era of Reliability",
    "track": "Testing, Quality Assurance, Security (2025)",
    "tweet": "Snapshot testing simplifies testing large result sets, reducing manual work, especially for APIs and for data processing. I'll show you how to use it!",
    "website_url": "https://ep2025.europython.eu/session/snapshot-testing-a-new-era-of-reliability",
    "youtube_url": "https://youtube.com/watch?v=u7Iuy8frfT4"
  },
  "BVYE9B": {
    "abstract": "In today\u2019s data-driven world, handling large datasets efficiently is crucial for any developer or data scientist. Python's itertools module offers a suite of fast and memory efficient tools to handle extensive data iteration, making it a great solution for managing large datasets without exhausting system resources. This talk will dive into several key functions of itertools comparing them to native Python iterations. Attendees will learn how to streamline their code and reduce memory usage while maintaining high performance.\r\n\r\nWhile itertools is part of Python\u2019s standard library, it is often overlooked by many developers in favor of more familiar, but less efficient, native methods. This talk will emphasize the importance of understanding and using these memory-efficient tools, particularly when working with large datasets, where performance and resource management are critical. We\u2019ll begin with a discussion of common challenges developers face when handling large-scale data and why default iteration methods can lead to memory exhaustion or slow performance.\r\n\r\nNext, we\u2019ll explore key itertools functions like chain, islice, and cycle, demonstrating how they can drastically reduce memory usage while maintaining high speed. More advanced tools like groupby, product, and permutations will also be covered, showing their relevance in complex data processing scenarios. Real-world examples and benchmarks will clearly illustrate how itertools outperforms native Python approaches in both memory efficiency and speed.\r\n\r\nBy the end of this session, attendees will not only understand how to incorporate itertools into their workflows but will also gain actionable strategies to write more efficient and optimized Python code. This knowledge will empower them to tackle large datasets with confidence, leading to faster, more scalable applications in data science, software development, and beyond.",
    "code": "BVYE9B",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T15:05:00+02:00",
    "level": "intermediate",
    "next_session": null,
    "prev_session": "SKPCNV",
    "resources": null,
    "room": "North Hall",
    "session_type": "Talk",
    "sessions_after": [
      "JKZDUY"
    ],
    "sessions_before": [
      "DGSNSE",
      "ETFNZG",
      "FJH9YY",
      "HTVBWM",
      "RGVZRU",
      "SKPCNV"
    ],
    "sessions_in_parallel": [
      "89LBUT",
      "AJ3Z8U",
      "DCZCJP",
      "XND9F9",
      "Y8PVLE"
    ],
    "slug": "memory-efficient-iteration-with-python-s-itertools-a-deep-dive",
    "speakers": [
      "39KD3C"
    ],
    "start": "2025-07-18T14:35:00+02:00",
    "title": "Memory Efficient Iteration with Python's itertools- A Deep Dive",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "Master itertools for memory-efficient iteration on large datasets. Replace native loops, cut memory use, and speed processing proven with benchmarks.",
    "website_url": "https://ep2025.europython.eu/session/memory-efficient-iteration-with-python-s-itertools-a-deep-dive",
    "youtube_url": "https://youtube.com/watch?v=fleYyQPcIkY"
  },
  "BW7ZBU": {
    "abstract": "This talk is intended for Django or FastAPI developers with interest on HTMX development or some experience with it.\r\nThe Python and Django community has been at the forefront of the \u201chypermedia revolution\u201d being one of the early adopters of HTMX.\r\n\r\nAlthough there are a lot of introductory tutorials and presentations about shifts from SPA\u2019s to HTMX that had great success, there\u2019s a lack of patterns and useful technical examples from real in-production applications.\r\n\r\nThis is a talk that starts by presenting why HTMX pairs so well with Django, and provides answers to many common issues and missing standards that creep along an application development using HTMX.\r\n\r\nBased on my past experience working on multiple projects using this tech stack, I\u2019ll share several points on how to make a Django project more focused and oriented to the hypermedia way.\r\n\r\nThis presentation covers topics such as the advantages of an HDA vs the typical SPAs, using the concept of \"resources on demand\" as an architecture, component driven templating, view composition and server-side state management, alongside many others that should help any Python developer to deliver fast and with great quality on the Web.",
    "code": "BW7ZBU",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T12:15:00+02:00",
    "level": "intermediate",
    "next_session": "HP83AE",
    "prev_session": "PYKCUL",
    "resources": null,
    "room": "North Hall",
    "session_type": "Talk",
    "sessions_after": [
      "3NB3PX",
      "9D8XMG",
      "ETFNZG",
      "HP83AE",
      "NHUECR",
      "WB3SJP"
    ],
    "sessions_before": [
      "8BM8PG",
      "9QNGYF",
      "PYKCUL",
      "RRXUA7",
      "SVTXGC",
      "T3WXME"
    ],
    "sessions_in_parallel": [
      "3STLTA",
      "HXJ3RP",
      "K3HRVS",
      "URZCXT",
      "YZLKAP"
    ],
    "slug": "django-and-htmx-patterns-to-success",
    "speakers": [
      "RWZSLF"
    ],
    "start": "2025-07-18T11:45:00+02:00",
    "title": "Django and HTMX: Patterns to Success",
    "track": "Web Development, Web APIs, Front-End Integration (2025)",
    "tweet": "This talk will approach tried and tested patterns for building applications using Django and HTMX. A broad set of topics covering all layers of a typi",
    "website_url": "https://ep2025.europython.eu/session/django-and-htmx-patterns-to-success",
    "youtube_url": "https://youtube.com/watch?v=11gFGh-1Bs8"
  },
  "BXWQYK": {
    "abstract": "Currently in the video game industry there are many tools for developers: Unreal Engine and Unity are the most famous. The learning curve for Unreal Engine is step enough for people to look for simpler alternatives and Unity has made controversial decisions and has generated discontent among the developing communities. For these reasons, Godot, which allows using Python to make professional games, has become more and more used since 2023. The advantages of this engine are: it is open source, it occupies few megabytes, it comes with an integrated editor and documentation and uses a scene architecture based on SOLID principles. In this talk, we will see how to create a step-by-step basic game to show Godot capabilities, together with the simple and easy-to-use interface the module provide. Then, we will enhance this game using Python for adding features. Making games is a lot of fun, and Godot+Python is a very good option to make prototypes or complete games.",
    "code": "BXWQYK",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T14:20:00+02:00",
    "level": "beginner",
    "next_session": "US9HWQ",
    "prev_session": "GMKTFY",
    "resources": null,
    "room": "South Hall 2A",
    "session_type": "Talk",
    "sessions_after": [
      "3FYGDN",
      "GQGKNS",
      "MUAVCX",
      "SCKCAV",
      "TXZMRS",
      "US9HWQ"
    ],
    "sessions_before": [
      "3ZNVQQ",
      "AEAK3B",
      "DKECGU",
      "GMKTFY",
      "GS8GHZ",
      "L8YSMU",
      "PBNRMR",
      "ZLMT3Q",
      "ZNVECA"
    ],
    "sessions_in_parallel": [
      "AR7VP8",
      "PRDDPR",
      "TU3D7R",
      "XEXS3Y",
      "ZNMPFX"
    ],
    "slug": "godot-python-open-source-in-game-development",
    "speakers": [
      "TZP89H"
    ],
    "start": "2025-07-16T13:50:00+02:00",
    "title": "Godot & Python: open source in game development",
    "track": "Python for Games, Art, Play and Expression (2025)",
    "tweet": "Lately Godot has become very famous in the game development industry. We will see how to create a step-by-step game with Godot and Python.",
    "website_url": "https://ep2025.europython.eu/session/godot-python-open-source-in-game-development",
    "youtube_url": "https://youtube.com/watch?v=GhtZGN5x6rA"
  },
  "C8B7QH": {
    "abstract": "Internal technical communities have become a cornerstone of how Bloomberg fosters engineering excellence, cross-team collaboration, and sustained innovation. These grassroots groups shape best practices, address shared challenges, and enable engineers to develop beyond their daily roles, directly influencing the company\u2019s technological growth and culture.\r\n\r\nIn this talk, we\u2019ll explore one of our firm's most established internal communities: Bloomberg's Python Guild. Active for more than a decade, the Guild has grown into a thriving, organisation-wide network supporting thousands of Python developers. It not only advances internal excellence but also actively contributes to the broader Python ecosystem through open source projects, sponsorship of major conferences, and collaboration with nonprofit organisations.\r\n\r\nWe'll share practical insights into how such internal communities are structured, discuss their measurable impact, and provide guidance on building and sustaining communities that drive meaningful innovation.\r\n\r\nWhether you're thinking about starting an internal community in your company or looking for fresh ideas to nurture and expand an existing one, this talk will provide plenty of inspiration and guidance.",
    "code": "C8B7QH",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T16:20:00+02:00",
    "level": "beginner",
    "next_session": "DCBMJY",
    "prev_session": "WDDYM8",
    "resources": null,
    "room": "South Hall 2B",
    "session_type": "Sponsored",
    "sessions_after": [
      "DCBMJY"
    ],
    "sessions_before": [
      "9FQDQS",
      "ABDUU8",
      "AUAVX7",
      "LDD9KB",
      "MS8ZT7",
      "T9ZYJD",
      "TTA8LT",
      "WDDYM8"
    ],
    "sessions_in_parallel": [
      "78CWUW",
      "9R9R97",
      "AVUQVA",
      "M8LTAJ",
      "ZKABJR"
    ],
    "slug": "driving-innovation-through-internal-technical-communities",
    "speakers": [
      "B97CMW",
      "HY78L8"
    ],
    "start": "2025-07-17T15:50:00+02:00",
    "title": "Driving Innovation Through Internal Technical Communities",
    "track": "Community Building, Education, Outreach (2025)",
    "tweet": "Learn how internal tech communities, such as Bloomberg\u2019s Python Guild, foster collaboration, innovation, and engineering excellence.",
    "website_url": "https://ep2025.europython.eu/session/driving-innovation-through-internal-technical-communities",
    "youtube_url": "https://youtube.com/watch?v=f3x7bW-pfyo"
  },
  "CAWMEZ": {
    "abstract": "GetYourGuide is a global online marketplace that helps travelers discover and book the best experiences. One of our core challenges is ensuring users always see the most relevant activities first\u2014a task historically powered by an XGBoost-based ranking system. However, as we continued refining our tree-based models, returns on incremental improvements began to plateau. To achieve a significant performance boost, we decided to adopt Deep Learning for its flexibility to create customized networks and ability to capture complex patterns and interactions within the data that traditional models could not.\r\n\r\nIn this talk, we will share how, in just nine months, we migrated our ranking pipeline to a Deep Learning architecture while maintaining tight latency and high-throughput requirements. We will walk through our phased approach, starting with a minimal viable model to confirm our production setup and gradually increasing its complexity. Along the way, we tested over 50 iterations offline and ran more than 10 live A/B tests to validate the impact on our customers. Ultimately, we rolled out a PyTorch transformer-based model with significant business impact. We will also discuss the main challenges we faced on the operational and modeling sides, how we overcame them, and the lessons we learned.\r\n\r\nYou will leave with practical strategies for transitioning from traditional tree-based models to neural networks in production. Join us to learn how to advance your machine-learning capabilities and unlock new dimensions of relevance and personalization for real-time ranking.",
    "code": "CAWMEZ",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T12:35:00+02:00",
    "level": "intermediate",
    "next_session": "AMMYXT",
    "prev_session": "URXNP8",
    "resources": null,
    "room": "South Hall 2B",
    "session_type": "Talk",
    "sessions_after": [
      "ABDUU8",
      "AKQNBF",
      "AMMYXT",
      "AUAVX7",
      "CYMWKD",
      "FGA7ZN",
      "G3QBAF",
      "YN3MWG"
    ],
    "sessions_before": [
      "G3SBMR",
      "GKRLGM",
      "SRVL9W",
      "UCHDYW",
      "UDNNWJ",
      "URXNP8"
    ],
    "sessions_in_parallel": [
      "8QFLC9",
      "SXWDSA",
      "WKDYUH",
      "XZNTGY",
      "Z9DWTW"
    ],
    "slug": "from-trees-to-transformers-adopting-deep-learning-for-ranking",
    "speakers": [
      "EZMJWT",
      "LPMP88"
    ],
    "start": "2025-07-17T12:05:00+02:00",
    "title": "From Trees To Transformers: Adopting Deep Learning for Ranking",
    "track": "Machine Learning: Research & Applications (2025)",
    "tweet": "Learn how GetYourGuide transitioned from XGBoost to a PyTorch transformer-based ranking model, enhancing relevance and personalization.",
    "website_url": "https://ep2025.europython.eu/session/from-trees-to-transformers-adopting-deep-learning-for-ranking",
    "youtube_url": "https://youtube.com/watch?v=WzFQ0zxkQAY"
  },
  "CFANXB": {
    "abstract": "How to make your Python project **robust** ?\r\n\r\nPython has a reputation for being a language that does not value software quality. However, over the past 20 years, Python has become a widely used language in the tech industry, with notable successes like Instagram, Spotify, Reddit, Dropbox, \u2026. \r\n\r\nTo achieve high-quality software through Python programming, it is essential to understand the language's structure and its ecosystem, as well as the tools and practices to adopt.\r\nIn this tutorial, we will explore the structure of a Python project, the language's fundamental principles, the many tools to use, and the techniques to be applied in order to work with Python at an industrial level.\r\n\r\nWe'll cover the whole Python project lifecycle (start, add dependencies, run, build, publish), guided by quality and automation tools (uv, ruff, pytest, Mypy, IDE, pre-commit, doit, Docker, CI), with a focus on standards and speed. You'll leave with a good understanding of this workflow, and a reference Python project that you'll be able to get examples from for your personnal or professional projects.\r\n\r\nPre-requisites for this tutorial: \r\n* The ability to write Python code \r\n* Access to install software on your machine (network connection and administrator rights) \r\n* A shell (Powershell or Bash or ...)",
    "code": "CFANXB",
    "delivery": "in-person",
    "duration": "180",
    "end": "2025-07-14T12:45:00+02:00",
    "level": "intermediate",
    "next_session": "MEDYZE",
    "prev_session": null,
    "resources": null,
    "room": "Club C",
    "session_type": "Tutorial",
    "sessions_after": [
      "9EASAW",
      "M7EFWG",
      "MEDYZE",
      "QKHWXB",
      "QKTRVP"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [
      "8CDYTD",
      "CV3M7B",
      "GLYC3N",
      "HNHQWB",
      "VGNBB8"
    ],
    "slug": "rambo-python",
    "speakers": [
      "FBQ8LL",
      "RTRPAJ"
    ],
    "start": "2025-07-14T09:30:00+02:00",
    "title": "Rambo Python",
    "track": "Tooling, Packaging, Developer Productivity (2025)",
    "tweet": "How to make your Python projects robust ? Come discover and apply state-of-the-art tooling to improve your workflow and quality.",
    "website_url": "https://ep2025.europython.eu/session/rambo-python",
    "youtube_url": null
  },
  "CLTGAH": {
    "abstract": "Ever tried using \u201cone data model to rule them all\u201d and ended up with a tangle of constraints, endpoints, and SQL tables? You\u2019re not alone! In this talk, we\u2019ll explore the lofty dream of unifying your Pydantic models across constrained LLM generation, FastAPI inputs/outputs, and SQLModel ORM definitions. But, is it possible to keep a single source of truth without driving yourself (and your teammates) nuts? Or should you split them up and keep everyone happy? We\u2019ll tackle practical examples, including the joys (and pains) (mostly pains) of juggling Pydantic v1 vs. v2. You\u2019ll leave with a clear framework for deciding how best to structure your models and a road map for staying sane when you want Pydantic for **all the things**.",
    "code": "CLTGAH",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T14:45:00+02:00",
    "level": "intermediate",
    "next_session": "TTA8LT",
    "prev_session": "YN3MWG",
    "resources": null,
    "room": "North Hall",
    "session_type": "Talk",
    "sessions_after": [
      "9FQDQS",
      "C8B7QH",
      "LDD9KB",
      "MS8ZT7",
      "T9ZYJD",
      "TTA8LT"
    ],
    "sessions_before": [
      "ABDUU8",
      "AKQNBF",
      "AMMYXT",
      "AUAVX7",
      "CYMWKD",
      "FGA7ZN",
      "G3QBAF",
      "YN3MWG"
    ],
    "sessions_in_parallel": [
      "BTV3ZJ",
      "LQXQVD",
      "LZPFTY",
      "SRM97H",
      "WDDYM8"
    ],
    "slug": "pydantic-everywhere-all-at-once",
    "speakers": [
      "89UEWS"
    ],
    "start": "2025-07-17T14:15:00+02:00",
    "title": "Pydantic, Everywhere, All at Once",
    "track": "Web Development, Web APIs, Front-End Integration (2025)",
    "tweet": "Pydantic has many uses. What to do when they overlap? Learn to juggle LLM structured outputs, FastAPI validations, and SQLModel ORM.",
    "website_url": "https://ep2025.europython.eu/session/pydantic-everywhere-all-at-once",
    "youtube_url": "https://youtube.com/watch?v=Cv3enEKzTuY"
  },
  "CPSMNH": {
    "abstract": "Welcome to EuroPython 2025! Please notice the registration will happen on the Forum Hall Foyer on the 1st Floor.\r\nYou can pick up your badges at any time during the week as long as we are open!\r\nIf you want to avoid the morning rush on Wednesday, come on Monday and Tuesday!",
    "code": "CPSMNH",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T08:45:00+02:00",
    "level": "beginner",
    "next_session": "YEKGVY",
    "prev_session": null,
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Announcements",
    "sessions_after": [
      "YEKGVY"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [],
    "slug": "friday-registration-welcome-forum-hall-foyer-1st-floor",
    "speakers": [],
    "start": "2025-07-18T08:00:00+02:00",
    "title": "Friday Registration & Welcome @ Forum Hall Foyer 1st Floor",
    "track": null,
    "tweet": "Friday Registration & Welcome @ Forum Hall Foyer 1st Floor !",
    "website_url": "https://ep2025.europython.eu/session/friday-registration-welcome-forum-hall-foyer-1st-floor",
    "youtube_url": null
  },
  "CV3M7B": {
    "abstract": "The pytest tool offers a rapid and simple way to write tests for your Python code. This training gives an introduction with exercises to some distinguishing features, such as its assertions, marks and fixtures.\r\n\r\nDespite its simplicity, pytest is incredibly flexible and configurable. We'll look at various configuration options as well as the plugin ecosystem around pytest.",
    "code": "CV3M7B",
    "delivery": "in-person",
    "duration": "180",
    "end": "2025-07-14T12:45:00+02:00",
    "level": "beginner",
    "next_session": "M7EFWG",
    "prev_session": null,
    "resources": [
      {
        "description": "Repository & Slides",
        "resource": "https://github.com/The-Compiler/pytest-basics"
      }
    ],
    "room": "Club E",
    "session_type": "Tutorial",
    "sessions_after": [
      "9EASAW",
      "M7EFWG",
      "MEDYZE",
      "QKHWXB",
      "QKTRVP"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [
      "8CDYTD",
      "CFANXB",
      "GLYC3N",
      "HNHQWB",
      "VGNBB8"
    ],
    "slug": "pytest-simple-rapid-and-fun-testing-with-python",
    "speakers": [
      "HZMBBH"
    ],
    "start": "2025-07-14T09:30:00+02:00",
    "title": "pytest - simple, rapid and fun testing with Python",
    "track": "Testing, Quality Assurance, Security (2025)",
    "tweet": "#pytest lets you write tests in a rapid and simple way. This training will give you an introduction into its distinguishing features.",
    "website_url": "https://ep2025.europython.eu/session/pytest-simple-rapid-and-fun-testing-with-python",
    "youtube_url": null
  },
  "CYMWKD": {
    "abstract": "Python is everywhere\u2014except, it seems, in public health. As a global health practitioner working across continents, I have used Python behind the scenes to influence policy, support technical decisions, and uncover hidden patterns in health data. This talk will present rapid case studies of Python\u2019s role in public health decision-making, from the Pacific Islands to China, from the Philippines to Europe.\r\n\r\n- We will explore a network analysis of a social media debate on vaping that unexpectedly intersected with regional politics. \r\n- We will examine visualisations of heart disease and stroke mortality that reframed health improvement strategies.\r\n- We will explore a data pipeline on women's health that created the graphic backbone of a European report on the subject.\r\n- We will look at a gamification of chronic disease progress in Europe that informed the European Programme of Work on United Action for Health 2026\u20132030.\r\n\r\nEach of these examples demonstrates the power of Python\u2019s ecosystem\u2014not just for data science but for influencing real-world health policy.\r\n\r\nDespite its versatility, Python remains underutilised in public health. Why does this gap exist? How can we bridge the divide between Python as a tool for developers and its potential as an engine for \u201chacking health\u201d? This talk will close with a **Call for Health**, inviting collaboration on ways to make Python a more prominent force for population health.",
    "code": "CYMWKD",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T13:15:00+02:00",
    "level": "intermediate",
    "next_session": "LZPFTY",
    "prev_session": "8QFLC9",
    "resources": null,
    "room": "Terrace 2B",
    "session_type": "Talk",
    "sessions_after": [
      "ABDUU8",
      "AUAVX7",
      "BTV3ZJ",
      "CLTGAH",
      "LQXQVD",
      "LZPFTY",
      "SRM97H",
      "WDDYM8"
    ],
    "sessions_before": [
      "8QFLC9",
      "CAWMEZ",
      "SXWDSA",
      "WKDYUH",
      "XZNTGY",
      "Z9DWTW"
    ],
    "sessions_in_parallel": [
      "AKQNBF",
      "AMMYXT",
      "FGA7ZN",
      "G3QBAF",
      "YN3MWG"
    ],
    "slug": "python-politics-and-public-health",
    "speakers": [
      "ZT9BES"
    ],
    "start": "2025-07-17T12:45:00+02:00",
    "title": "Python, Politics, and Public Health",
    "track": "Ethics, Social Responsibility, Sustainability, Legal (2025)",
    "tweet": "Python powered public health wins\u2014from vaping networks to women's health. Why isn\u2019t it used more? Let\u2019s bridge the gap and hack health for impact.",
    "website_url": "https://ep2025.europython.eu/session/python-politics-and-public-health",
    "youtube_url": "https://youtube.com/watch?v=-b63lsmHhjo"
  },
  "D8FJPN": {
    "abstract": "In this talk, we will explore the world of Just-In-Time (JIT) compilation within the CPython interpreter. As Python continues to grow in popularity, performance enhancements are crucial to meet the demands of modern applications. The new CPython JIT implementation represents a tool for pushing Python's performance forward in a scalable, maintainable way.\r\n\r\nI will start by exploring the mechanics of JIT compilation, explaining how it differs from traditional interpretation. Next, I will provide an overview of the current state of the CPython JIT in Python 3.14, highlighting its latest advancements and performance improvements. I will also briefly touch on my personal contributions to this project. By sharing these insights, I aim to inspire others to engage with open-source projects and contribute to the ongoing innovation within the Python ecosystem.\r\n\r\nFinally, we will discuss practical applications of the CPython JIT and how you can enable it in your applications.\u00a0Attendees will gain a clear understanding of how the JIT dynamically translates Python code into machine code at runtime using the CPython 3.14 implementation as reference and will learn how to use the JIT on their own Python applications.",
    "code": "D8FJPN",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T12:10:00+02:00",
    "level": "advanced",
    "next_session": "PBNRMR",
    "prev_session": "QHFKGT",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Talk",
    "sessions_after": [
      "3ZNVQQ",
      "AEAK3B",
      "DKECGU",
      "GMKTFY",
      "GS8GHZ",
      "L8YSMU",
      "PBNRMR",
      "ZLMT3Q",
      "ZNVECA"
    ],
    "sessions_before": [
      "78GQHG",
      "DQFMNM",
      "KCJRPT",
      "KFQSZK",
      "QHFKGT",
      "XCN9MD"
    ],
    "sessions_in_parallel": [
      "AD3TGW",
      "NKTHSJ",
      "P9DT7T",
      "YGXMN9",
      "YQ79RE"
    ],
    "slug": "exploring-the-cpython-jit",
    "speakers": [
      "NCU7GS"
    ],
    "start": "2025-07-16T11:40:00+02:00",
    "title": "Exploring the CPython JIT",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "Have you heard about the CPython JIT compiler? Join me to learn how it works and how you can leverage it in the upcoming 3.14 Python release \ud83d\udc0d",
    "website_url": "https://ep2025.europython.eu/session/exploring-the-cpython-jit",
    "youtube_url": "https://youtube.com/watch?v=5si4zkAngpA"
  },
  "D9JGFG": {
    "abstract": "Learn how to write blazingly fast and modern numerical code in Python by leveraging just-in-time (JIT) compilation for CPU\u2019s and GPU\u2019s and how to scale computations across multiple machines. Tailored for data scientists, researchers, and Python enthusiasts, this session will focus on practical applications of JAX, Numba, and Ray to optimise and parallelise your numerical code. These techniques have applications across multiple fields like machine learning, numerical simulations, or engineering applications. You can already forget low level languages like C/C++, Fortran or similar.\r\n\r\n## What You\u2019ll Learn\r\n\r\n1. **Optimising and Accelerating Numerical Code with JAX and Numba**:\r\n    - Converting NumPy code to JAX/Numba.\r\n    - JIT compilation for speeding up Python functions.\r\n    - Automatic differentiation (JAX).\r\n    - GPU/CPU acceleration and vectorisation.\r\n    - Main limitations of JAX and Numba.\r\n    - Hands-on exercises combining JAX and Numba to optimise loops, linear algebra, and scientific calculations.\r\n2. **Scaling Workflows with Ray**:\r\n    - Introduction to Ray: Parallel, out-of core and distributed computing made simple.\r\n    - Managing distributed tasks, scaling workloads across CPUs/GPUs, and handling large datasets.\r\n    - Integrating JAX and Numba in Ray-powered workflows for end-to-end acceleration.\r\n\r\n## Who Should Attend?\r\n\r\nParticipants should have intermediate Python programming skills and basic familiarity with NumPy and linear algebra. No prior experience with JAX, Numba, or Ray is necessary.\r\n\r\n## Structure\r\n\r\n- **Hour 1**: Foundations of JAX and Numba \u2013 JIT compilation, GPU acceleration, and their respective strengths.\r\n- **Hour 2**: Hands-on optimisation: Writing high-performance numerical code with JAX and Numba.\r\n- **Hour 3**: Scaling computations with Ray: Parallelising JAX/Numba workflows across machines.\r\n\r\n## Takeaways\r\n\r\n- Understand when and how to use JAX and Numba for accelerating numerical Python code.\r\n- Write scalable, high-performance workflows using Ray.\r\n- Leave with ready-to-use examples and insights to apply in their own projects.",
    "code": "D9JGFG",
    "delivery": "in-person",
    "duration": "180",
    "end": "2025-07-15T17:00:00+02:00",
    "level": "intermediate",
    "next_session": null,
    "prev_session": "7ARRRE",
    "resources": null,
    "room": "Club A",
    "session_type": "Tutorial",
    "sessions_after": [
      "VBSZJW"
    ],
    "sessions_before": [
      "7ARRRE",
      "AJPPVG",
      "RMVNGD",
      "RTCZQG",
      "V3WS7N"
    ],
    "sessions_in_parallel": [
      "AYXDME",
      "E9HV7P",
      "MXKGZ9",
      "RBTZEC",
      "RWPFPP"
    ],
    "slug": "accelerating-scientific-python-jax-numba-and-ray-in-action",
    "speakers": [
      "BLWEQ9",
      "PHKTE3"
    ],
    "start": "2025-07-15T13:45:00+02:00",
    "title": "Accelerating Scientific Python: JAX, Numba, and Ray in Action",
    "track": "Jupyter and Scientific Python (2025)",
    "tweet": "Supercharge your Python numerical code with JAX, Numba, and Ray! Master JIT compilation, GPU acceleration, and distributed computing in this tutorial.",
    "website_url": "https://ep2025.europython.eu/session/accelerating-scientific-python-jax-numba-and-ray-in-action",
    "youtube_url": null
  },
  "DCBMJY": {
    "abstract": "Imagine you could learn the key ingredients in FastAPI, Typer, SQLModel, etc., to apply them to your product and your code. \u2728\r\n\r\n(Let me know later if the clickbait worked. \ud83d\udc46\ufe0f)\r\n\r\nYou can already learn how to use FastAPI and friends in the docs, so I won't teach you that.\r\n\r\nBut you know what you would not see in other places? The history behind my open source tools, including my peculiar background, points of view, and objectives. The key ideas I consider when building things. \ud83e\udd13\r\n\r\nMaybe only philosophical principles would be boring, so I'll also give you very specific tips you can apply to your product.\r\n\r\nI'll also share some of the things you can learn from building open source projects used by lots of people, including the counterintuitive ideas you wouldn't expect.\r\n\r\nAs a dessert, a random mix of extra tips I would consider. \ud83c\udf6a\r\n\r\nImagine you sat with me for 45 minutes, to give you all the random tips I could think could be useful. That's pretty much this talk.\r\n\r\nThe \"years of experience\" in FastAPI I have, packed in a single talk, as a giant brain dump.\r\n\r\nAll made of my very subjective opinions (the same as my open source projects), so take everything with a grain of salt, and a lot of coffee. \u2615\ufe0f",
    "code": "DCBMJY",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-17T17:15:00+02:00",
    "level": "beginner",
    "next_session": "XE7FNG",
    "prev_session": "9R9R97",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Keynote",
    "sessions_after": [
      "XE7FNG"
    ],
    "sessions_before": [
      "78CWUW",
      "9R9R97",
      "ABDUU8",
      "AUAVX7",
      "AVUQVA",
      "C8B7QH",
      "M8LTAJ",
      "ZKABJR"
    ],
    "sessions_in_parallel": [],
    "slug": "behind-the-scenes-of-fastapi-and-friends-for-developers-and-builders",
    "speakers": [
      "ADBT7H"
    ],
    "start": "2025-07-17T16:30:00+02:00",
    "title": "Behind the scenes of FastAPI and friends for developers and builders",
    "track": "Web Development, Web APIs, Front-End Integration (2025)",
    "tweet": "This is a placeholder for the short version of the Invited Keynote abstract from Sebasti\u00e1n",
    "website_url": "https://ep2025.europython.eu/session/behind-the-scenes-of-fastapi-and-friends-for-developers-and-builders",
    "youtube_url": "https://youtube.com/watch?v=mwvmfl8nN_U"
  },
  "DCZCJP": {
    "abstract": "`__slots__` are a double-edged sword. While they promise a leaner memory footprint and faster attribute access, they can silently backfire, creating performance pitfalls in your code. Are you sure you're getting the benefits you think you are?\r\n\r\nThis talk clears up common misconceptions with up-to-date benchmarks, showing you what to really expect from `__slots__` on modern Python. We\u2019ll then dissect real-world failure modes\u2014from overlapping definitions to broken inheritance\u2014that can undermine your application's performance. You\u2019ll learn to diagnose these issues and see how to automate their detection in your CI/CD pipeline, ensuring your `__slots__` are a help, not a hindrance.",
    "code": "DCZCJP",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T15:05:00+02:00",
    "level": "advanced",
    "next_session": null,
    "prev_session": "RGVZRU",
    "resources": [
      {
        "description": "Slides (spoilers!)",
        "resource": "https://programme.europython.eu/media/europython-2025/submissions/DCZCJP/resources/europython_DfLfuAV.pdf"
      },
      {
        "description": "Slides (version with a new page per transition; not recommended)",
        "resource": "https://programme.europython.eu/media/europython-2025/submissions/DCZCJP/resources/europython_X77b94B.pdf"
      }
    ],
    "room": "South Hall 2A",
    "session_type": "Talk",
    "sessions_after": [
      "JKZDUY"
    ],
    "sessions_before": [
      "DGSNSE",
      "ETFNZG",
      "FJH9YY",
      "HTVBWM",
      "RGVZRU",
      "SKPCNV"
    ],
    "sessions_in_parallel": [
      "89LBUT",
      "AJ3Z8U",
      "BVYE9B",
      "XND9F9",
      "Y8PVLE"
    ],
    "slug": "broken-slots-are-a-silent-performance-killer-let-s-fix-them",
    "speakers": [
      "EJLTWU"
    ],
    "start": "2025-07-18T14:35:00+02:00",
    "title": "Broken __slots__ are a silent performance killer\u2014Let's fix them!",
    "track": "Testing, Quality Assurance, Security (2025)",
    "tweet": "Mistakes in __slots__ setups often go unnoticed, negating their benefits. Learn how to find & fix common pitfalls to ensure real memory/speed gains.",
    "website_url": "https://ep2025.europython.eu/session/broken-slots-are-a-silent-performance-killer-let-s-fix-them",
    "youtube_url": "https://youtube.com/watch?v=87DoVbgtuRA"
  },
  "DGSNSE": {
    "abstract": "Over the years, many myths have been cultivated around the performance of Python. It is high time to debunk some of them, using solid data and years of experience running Python in production.\r\n\r\nMore importantly, though, we'll talk about when we shouldn't care THAT MUCH about performance and how to balance seemingly contradictory requirements in a constantly changing world.",
    "code": "DGSNSE",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T14:25:00+02:00",
    "level": "intermediate",
    "next_session": "AJ3Z8U",
    "prev_session": "3NB3PX",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Talk",
    "sessions_after": [
      "89LBUT",
      "AJ3Z8U",
      "BVYE9B",
      "DCZCJP",
      "XND9F9",
      "Y8PVLE"
    ],
    "sessions_before": [
      "3NB3PX",
      "9D8XMG",
      "HP83AE",
      "HXJ3RP",
      "NHUECR",
      "WB3SJP"
    ],
    "sessions_in_parallel": [
      "ETFNZG",
      "FJH9YY",
      "HTVBWM",
      "RGVZRU",
      "SKPCNV"
    ],
    "slug": "when-in-practice-is-python-performance-an-issue-facts-and-myths",
    "speakers": [
      "Z7MMMN"
    ],
    "start": "2025-07-18T13:55:00+02:00",
    "title": "When in practice is Python performance an issue? Facts and myths.",
    "track": "Professional Development, Careers, Leadership (2025)",
    "tweet": "Why you (probably) shouldn't be losing sleep over Python's performance",
    "website_url": "https://ep2025.europython.eu/session/when-in-practice-is-python-performance-an-issue-facts-and-myths",
    "youtube_url": "https://youtube.com/watch?v=nvaGq6OU7q4"
  },
  "DKECGU": {
    "abstract": "In this talk, we will look at the relationship between Python and SQL, highlighting the journey of data management in modern applications. As data continues to grow exponentially, the need for effective data storage and retrieval becomes necessary. We will begin by discussing the foundational role of SQL (Structured Query Language) in managing relational databases, examining its key features and common use cases in various domains. \r\n\r\nWe will then explore the challenges Python developers face when interacting with SQL databases, including the complexity of SQL syntax and the boilerplate code required for CRUD operations. This will be illustrated with practical examples, demonstrating how raw SQL can become cumbersome in application development. Raw SQL, while powerful, can introduce significant challenges in terms of development time, maintainability, and productivity. These challenges stem from the need to write and maintain complex SQL queries, deal with database-specific syntax, and manage the boilerplate code associated with database interactions.\r\n\r\nTo address these issues, we will pivot to Object-Relational Mappers (ORMs) as a solution that fills the gap between object-oriented programming & relational databases. We will discuss the evolution of ORMs, their key features, and how they simplify database interactions by allowing developers to work with Python objects instead of raw SQL queries, thus alleviating the challenges associated with raw SQL such as the complexity of SQL syntax, boilerplate code, and the need to manage database-specific nuances.\r\n\r\nWe will also explore popular ORMs such as SQLAlchemy, Django ORM, Peewee, and Tortoise-ORM, highlighting their unique capabilities and use cases. Finally, we will compare the scenarios in which raw SQL is preferable versus when ORMs are more beneficial, providing insights into making informed decisions on a case-by-case basis. \r\n\r\nThis session will deepen your understanding of the relationship between Python and SQL, and the evolution of ORMs in modern application development.",
    "code": "DKECGU",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T12:50:00+02:00",
    "level": "intermediate",
    "next_session": "PRDDPR",
    "prev_session": "YGXMN9",
    "resources": null,
    "room": "North Hall",
    "session_type": "Talk",
    "sessions_after": [
      "AEAK3B",
      "AR7VP8",
      "BXWQYK",
      "L8YSMU",
      "PRDDPR",
      "TU3D7R",
      "XEXS3Y",
      "ZLMT3Q",
      "ZNMPFX"
    ],
    "sessions_before": [
      "AD3TGW",
      "D8FJPN",
      "NKTHSJ",
      "P9DT7T",
      "YGXMN9",
      "YQ79RE"
    ],
    "sessions_in_parallel": [
      "3ZNVQQ",
      "GMKTFY",
      "GS8GHZ",
      "PBNRMR",
      "ZNVECA"
    ],
    "slug": "orms-a-bridge-to-efficient-database-interactions-with-python",
    "speakers": [
      "XJRYWL"
    ],
    "start": "2025-07-16T12:20:00+02:00",
    "title": "ORMs: A Bridge to Efficient Database Interactions with Python",
    "track": "Web Development, Web APIs, Front-End Integration (2025)",
    "tweet": "Ever wondered how a building came together? This talk is your blueprint. We will explore how we moved from SQL to ORMs",
    "website_url": "https://ep2025.europython.eu/session/orms-a-bridge-to-efficient-database-interactions-with-python",
    "youtube_url": "https://youtube.com/watch?v=nLz5X6vP1YA"
  },
  "DQFMNM": {
    "abstract": "Our mission is simple but profound: to improve and extend lives by learning from the experience of every person with cancer. Achieving this requires seamless feedback loops between scientists, engineers, and clinicians working with sensitive data across heterogeneous environments.\r\n\r\nYou might expect a story about how we tried and failed. And yes, we\u2019ll share some failures and surprises along the way. But this is, at its core, a success story - because it works.\r\n\r\nIn this talk, we\u2019ll dive into the data architecture and core technologies that enable us to learn from every patient\u2019s journey with cancer. We\u2019ll reveal how our cross-functional teams - scientists, engineers, and clinicians - collaborate to transform raw data into research-grade datasets. Along the way, we\u2019ll share the challenges we faced, the lessons we learned, and the tools we developed to ensure the high data quality required for groundbreaking research.\r\n\r\nWe\u2019ll also show how we leverage domain knowledge, data science, and established technologies to create tools that maintain this quality and accelerate feedback loops. By shifting insights generation left, we empower teams to iterate faster and drive more impactful outcomes.\r\n\r\nThis talk is ideal for anyone with data warehouse or lakehouse experience curious about harnessing the Pythonic data stack to iteratively generate insights from sensitive data in highly regulated environments.",
    "code": "DQFMNM",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-16T11:30:00+02:00",
    "level": "intermediate",
    "next_session": "YGXMN9",
    "prev_session": "SLSM8T",
    "resources": null,
    "room": "North Hall",
    "session_type": "Talk (long session)",
    "sessions_after": [
      "AD3TGW",
      "AEAK3B",
      "D8FJPN",
      "L8YSMU",
      "NKTHSJ",
      "P9DT7T",
      "YGXMN9",
      "YQ79RE",
      "ZLMT3Q"
    ],
    "sessions_before": [
      "SLSM8T"
    ],
    "sessions_in_parallel": [
      "78GQHG",
      "KCJRPT",
      "KFQSZK",
      "QHFKGT",
      "XCN9MD"
    ],
    "slug": "accelerating-privacy-enhancing-data-processing",
    "speakers": [
      "BYLZXE"
    ],
    "start": "2025-07-16T10:45:00+02:00",
    "title": "Accelerating privacy-enhancing data processing",
    "track": "Data Engineering and MLOps (2025)",
    "tweet": "How we transform sensitive data from heterogeneous environments into research-grade oncology datasets. And how we shift insights generation left.",
    "website_url": "https://ep2025.europython.eu/session/accelerating-privacy-enhancing-data-processing",
    "youtube_url": "https://youtube.com/watch?v=EkBKWptT-Yo"
  },
  "E9HV7P": {
    "abstract": "Dictionaries are one of the most important data structures in Python. We use them all of the time, in a wide variety of ways. But have you ever thought about how you might implement your own dictionary class? In this tutorial, we'll do exactly that, creating a simple-but-usable dict. Along the way, we'll talk not only about hash functions, and how to resolve collisions, but also a variety of topics related to Python classes, magic methods, and generators. You'll come out of this tutorial with a deeper understanding of Python's dictionaries -- not just what they are and how they work, but also how various Python mechanisms all combine to give us the dicts that we love.",
    "code": "E9HV7P",
    "delivery": "in-person",
    "duration": "180",
    "end": "2025-07-15T17:00:00+02:00",
    "level": "intermediate",
    "next_session": null,
    "prev_session": "RMVNGD",
    "resources": null,
    "room": "Club H",
    "session_type": "Tutorial",
    "sessions_after": [
      "VBSZJW"
    ],
    "sessions_before": [
      "7ARRRE",
      "AJPPVG",
      "RMVNGD",
      "RTCZQG",
      "V3WS7N"
    ],
    "sessions_in_parallel": [
      "AYXDME",
      "D9JGFG",
      "MXKGZ9",
      "RBTZEC",
      "RWPFPP"
    ],
    "slug": "let-s-build-a-dictionary",
    "speakers": [
      "VZM8L3"
    ],
    "start": "2025-07-15T13:45:00+02:00",
    "title": "Let's build a dictionary!",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "Wonder how Python dicts work? You'll find out in, \"Let's make a dictionary,\" where we'll create our own Dictionary class in Python.",
    "website_url": "https://ep2025.europython.eu/session/let-s-build-a-dictionary",
    "youtube_url": null
  },
  "ETFNZG": {
    "abstract": "Hi Developer, are you dealing or even struggling with:\r\n- pip not being enough to set up your project's environment\r\n- testing your CI workflow locally\r\n- managing complex environments\r\n\r\nThis talk is for you!\r\n\r\nWe're going to show you what the real hidden power of the Conda ecosystem, and how you can use it efficiently. Conda is often used for scientific Python development, but it can do much more than that.\r\n\r\nWith conda, most language tool chains from Java, C++, to Zig and Rust can be installed from the popular conda channel conda-forge.\r\nWe will also present pixi which is a modern, fast package and project manager with built-in features facilitating reproducibility and developer comfort. Pixi depends on the conda ecosystem while also fully supporting package installations from PyPI.",
    "code": "ETFNZG",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T14:25:00+02:00",
    "level": "intermediate",
    "next_session": "XND9F9",
    "prev_session": "HXJ3RP",
    "resources": null,
    "room": "Terrace 2B",
    "session_type": "Talk",
    "sessions_after": [
      "89LBUT",
      "AJ3Z8U",
      "BVYE9B",
      "DCZCJP",
      "XND9F9",
      "Y8PVLE"
    ],
    "sessions_before": [
      "3NB3PX",
      "9D8XMG",
      "HP83AE",
      "HXJ3RP",
      "NHUECR",
      "WB3SJP"
    ],
    "sessions_in_parallel": [
      "DGSNSE",
      "FJH9YY",
      "HTVBWM",
      "RGVZRU",
      "SKPCNV"
    ],
    "slug": "unlocking-hidden-power-of-conda-with-pixi",
    "speakers": [
      "7YTCGE",
      "EHYMWZ"
    ],
    "start": "2025-07-18T13:55:00+02:00",
    "title": "Unlocking Hidden Power of Conda with Pixi",
    "track": "Tooling, Packaging, Developer Productivity (2025)",
    "tweet": "Find out Conda\u2019s hidden power for any language\u2014from local CI to environment setups\u2014and meet Pixi: a modern manager bridging Conda & PyPI.",
    "website_url": "https://ep2025.europython.eu/session/unlocking-hidden-power-of-conda-with-pixi",
    "youtube_url": "https://youtube.com/watch?v=HOqv3kh4z_c"
  },
  "FCGVPR": {
    "abstract": "Work started on a lock file specification for Python in earnest on 2021-01-31 and culminated in [PEP 751](https://peps.python.org/pep-0751/) being [accepted](https://discuss.python.org/t/pep-751-one-last-time/77293/150) on 2025-03-31! While it's great that a conclusion was reached, why did it take 4 years to go from idea to acceptance? Because Python packaging is, in a word, *hard*.\r\n\r\nThe flexibility that Python packaging provides has led to over 600,000 projects on [PyPI](https://pypi.org) and Python becoming the glue language of the internet, but at the cost of some complexity and not having \"one tool to rule them all\". This talk will cover why Python packaging is hard and how that played into creating a lock file specification. The history of the spec and what it provides will also be covered.",
    "code": "FCGVPR",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-17T10:05:00+02:00",
    "level": "beginner",
    "next_session": "LHE38S",
    "prev_session": null,
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Keynote",
    "sessions_after": [
      "3VNDYN",
      "ABDUU8",
      "AUAVX7",
      "BK9JTV",
      "LHE38S",
      "PNSAM3",
      "QLLC8C",
      "T3HHJG"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [],
    "slug": "why-it-took-4-years-to-get-a-lock-files-specification",
    "speakers": [
      "LSFZCM"
    ],
    "start": "2025-07-17T09:20:00+02:00",
    "title": "Why it took 4 years to get a lock files specification",
    "track": "Tooling, Packaging, Developer Productivity (2025)",
    "tweet": "Why did it take 4 years to go from idea to spec for Python lock files? This talk will cover the complexities of Python packaging and lock files.",
    "website_url": "https://ep2025.europython.eu/session/why-it-took-4-years-to-get-a-lock-files-specification",
    "youtube_url": "https://youtube.com/watch?v=MMVVboVL5eU"
  },
  "FGA7ZN": {
    "abstract": "Jupyter Notebooks are awesome. They've made interactive coding and data exploration super accessible for a whole generation of data scientists and engineers. But there are also some clear hindrances with the classical notebook\u2014like hidden states that can lead to inconsistencies, difficulties in structuring code for production, and collaboration challenges.\r\n\r\nJoin me as we explore\u00a0Marimo, an open-source reactive notebook alternative that's reproducible, git-friendly, executable as a script, and shareable as an app.\r\n\r\nWe'll explore Marimo's capabilities by solving a real-world machine learning problem. Which means, we'll go through the full lifecycle of tackling such a problem; from data analysis and creating visualizations to building an interactive dashboard and deploying a simple machine learning model. We'll also discuss its limitations, make a comparison with popular alternatives, and have a peek at their future roadmap.",
    "code": "FGA7ZN",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T13:15:00+02:00",
    "level": "intermediate",
    "next_session": "LQXQVD",
    "prev_session": "Z9DWTW",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Talk",
    "sessions_after": [
      "ABDUU8",
      "AUAVX7",
      "BTV3ZJ",
      "CLTGAH",
      "LQXQVD",
      "LZPFTY",
      "SRM97H",
      "WDDYM8"
    ],
    "sessions_before": [
      "8QFLC9",
      "CAWMEZ",
      "SXWDSA",
      "WKDYUH",
      "XZNTGY",
      "Z9DWTW"
    ],
    "sessions_in_parallel": [
      "AKQNBF",
      "AMMYXT",
      "CYMWKD",
      "G3QBAF",
      "YN3MWG"
    ],
    "slug": "meet-marimo-the-next-gen-notebook",
    "speakers": [
      "KK9DKJ"
    ],
    "start": "2025-07-17T12:45:00+02:00",
    "title": "Meet Marimo, the next-gen Notebook",
    "track": "Jupyter and Scientific Python (2025)",
    "tweet": "Let's discuss Marimo. A reactive, reproducible, and git friendly alternative to Jupiter notebooks.",
    "website_url": "https://ep2025.europython.eu/session/meet-marimo-the-next-gen-notebook",
    "youtube_url": "https://youtube.com/watch?v=52xgoTVeuK4"
  },
  "FJH9YY": {
    "abstract": "Every SaaS will come against the same issue at one point - how to make sure to only show a customer's data to only that specific customer? And it's not just a security problem, but a performance problem as well. At scale, even with indexes, selecting just the appropriate data can become slow on massive tables.\r\n\r\nThe \"naive\" approach is to have a table of customers, and link every other table using foreign keys, and always filter based on the current customer. This approach works fine, and with the library django-scope is pretty safe, but the filter still always needs to be provided and all the data is still in the same physical database table.\r\n\r\nDatabase segregation to the rescue! PostgreSQL has a feature called schemas, which almost acts like a database within a database - each has its own tables and indexes, and you can have many different schemas within one database. In this talk I will introduce you to the django-tenants library, which utilizes these schemas to implement tenanting.\r\n\r\nDjango-tenants introduces two types of apps, shared apps containing data accessible for all tenants, and tenanted apps specific to one tenant. The data in the tenanted app is only available while the tenant is active, usually based on a subdomain. The django models then work exactly like before, but only the correct data will be returned without any filtering.\r\n\r\nIn the talk, after walking through a simplified setup of the problem, we'll look at how much simpler django-tenants can make our life while implementing a SaaS application, but also look at certain new and more exciting problems it can bring.",
    "code": "FJH9YY",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T14:25:00+02:00",
    "level": "beginner",
    "next_session": "Y8PVLE",
    "prev_session": "9D8XMG",
    "resources": null,
    "room": "South Hall 2B",
    "session_type": "Talk",
    "sessions_after": [
      "89LBUT",
      "AJ3Z8U",
      "BVYE9B",
      "DCZCJP",
      "XND9F9",
      "Y8PVLE"
    ],
    "sessions_before": [
      "3NB3PX",
      "9D8XMG",
      "HP83AE",
      "HXJ3RP",
      "NHUECR",
      "WB3SJP"
    ],
    "sessions_in_parallel": [
      "DGSNSE",
      "ETFNZG",
      "HTVBWM",
      "RGVZRU",
      "SKPCNV"
    ],
    "slug": "using-postgres-schemas-to-separate-data-of-your-saas-application-in-django",
    "speakers": [
      "TDUUPM"
    ],
    "start": "2025-07-18T13:55:00+02:00",
    "title": "Using Postgres schemas to separate data of your SaaS application in Django",
    "track": "Web Development, Web APIs, Front-End Integration (2025)",
    "tweet": "How to easily ensure only correct data get returned in a SaaS app? Database segregation to the rescue!",
    "website_url": "https://ep2025.europython.eu/session/using-postgres-schemas-to-separate-data-of-your-saas-application-in-django",
    "youtube_url": "https://youtube.com/watch?v=z7BSxZrDjW4"
  },
  "FWETBR": {
    "abstract": "Indico is a powerful open-source event management toolkit, created at the European Organization for Nuclear Research (CERN), that has been evolving over the last 20+ years. Indico has been used to host major conferences, including EuroPython itself in 2006 and 2007, as well as thousands of events at CERN, and other major international organizations/institutions alike.\r\n\r\nMaintaining an ever-evolving project comes with unique challenges: dealing with legacy code, adopting new technologies, and managing technical debt without disrupting a large and continuously growing user base. \r\n\r\nThis talk explores the project\u2019s technical evolution as well as focusing on how it stayed current with emerging technologies; starting as a PHP/MySQL app, it transitioned to [mod_python](https://modpython.org/) with [ZODB](https://zodb.org/en/latest/), briefly used a custom WSGI implementation, and ultimately became a modern Flask/Postgres/React application - sometimes integrating multiple technologies simultaneously.\r\n\r\nBy the end of this talk, attendees will:\r\n* Understand the challenges of maintaining a long-lived web application.\r\n* Learn strategies for dealing with technical debt while keeping systems evolving.\r\n* Gain insights into real-world architectural decisions for open-source projects.\r\n\r\nJoin us, as two team members discuss how to stay sane with the meticulous balancing act of dealing with both technical debt and integrating new technologies/features.",
    "code": "FWETBR",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-18T10:55:00+02:00",
    "level": "intermediate",
    "next_session": "SVTXGC",
    "prev_session": "YEKGVY",
    "resources": null,
    "room": "South Hall 2B",
    "session_type": "Talk (long session)",
    "sessions_after": [
      "8BM8PG",
      "9QNGYF",
      "PYKCUL",
      "RRXUA7",
      "SVTXGC",
      "T3WXME"
    ],
    "sessions_before": [
      "YEKGVY"
    ],
    "sessions_in_parallel": [
      "HPRDLE",
      "PBRK3K",
      "TGUWZC",
      "XFNVQ9",
      "XJ7GMM"
    ],
    "slug": "indico-the-20-year-history-and-evolution-of-an-open-source-project-at-cern",
    "speakers": [
      "WE8RNR",
      "YX7F3Y"
    ],
    "start": "2025-07-18T10:10:00+02:00",
    "title": "Indico: the 20 year history and evolution of an open-source project at CERN",
    "track": "Community Building, Education, Outreach (2025)",
    "tweet": "Indico, born at CERN, has evolved for 20+ years! Learn how it tackles tech debt, legacy code & modern stacks whilst powering global events.",
    "website_url": "https://ep2025.europython.eu/session/indico-the-20-year-history-and-evolution-of-an-open-source-project-at-cern",
    "youtube_url": "https://youtube.com/watch?v=2ZsPxACAYbk"
  },
  "G3QBAF": {
    "abstract": "As our Python codebases grow larger, so do our test suites tend to extend. This usually results in a significant increase in the time that our different tests (unit, integration, end-to-end, etc.) need to complete.\r\n\r\nLong-running tests can negatively affect the development process in multiple ways, for example:\r\n- Slower development (Definition of Done should include proper testing), hurting the sense of productivity\r\n- Slower and less code-feedback cycles (code reviews)\r\n- It can take more time to bring a hotfix out to production\r\n- Additional budget being spent on CI/CD pipelines\r\n\r\nThis talk aims to point out methods that can help you immediately address a slow test suite, as well as ways to structure your set of tests later on, to improve even more. \r\n\r\nWe will discuss how to handle these problems _after_ they are detected. In general, it is important to first measure and pinpoint possible bottlenecks before proceeding to any improvements. As they say, _\u201cPremature optimization is the root of all evil.\u201d_...\r\n\r\nThe methods will be presented starting from the simplest to apply, up to the more niche gotchas that I have gathered throughout my journey as a Python developer. Each method will be accompanied by a simple example, that will also be available on GitHub for the attendants.\r\nWe will mainly be using `pytest` as our test runner, being one of the most popular ones, and also providing quite a useful toolset. To name a few of the techniques that we will go over:\r\n- Distributed CPU testing\r\n- Parallel testing\r\n- Fixture lifecycle evaluation\r\n- Package caching\r\n- Separating what to test from how to test it (choosing the right abstractions)\r\n\r\nIn conclusion, after completing the talk you should have found out ways to improve the time your tests need to complete, that you can apply already from the next day, but also how to structure your tests in the future to ensure better outcomes.",
    "code": "G3QBAF",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T13:15:00+02:00",
    "level": "intermediate",
    "next_session": "BTV3ZJ",
    "prev_session": "WKDYUH",
    "resources": null,
    "room": "Terrace 2A",
    "session_type": "Talk",
    "sessions_after": [
      "ABDUU8",
      "AUAVX7",
      "BTV3ZJ",
      "CLTGAH",
      "LQXQVD",
      "LZPFTY",
      "SRM97H",
      "WDDYM8"
    ],
    "sessions_before": [
      "8QFLC9",
      "CAWMEZ",
      "SXWDSA",
      "WKDYUH",
      "XZNTGY",
      "Z9DWTW"
    ],
    "sessions_in_parallel": [
      "AKQNBF",
      "AMMYXT",
      "CYMWKD",
      "FGA7ZN",
      "YN3MWG"
    ],
    "slug": "turbocharge-your-python-test-suite-today",
    "speakers": [
      "GHXHK7"
    ],
    "start": "2025-07-17T12:45:00+02:00",
    "title": "Turbocharge your Python test suite today! \ud83d\ude80",
    "track": "Testing, Quality Assurance, Security (2025)",
    "tweet": "Discover how you can optimize your Python tests in no time\ud83d\ude80 Join us at the talk \"Speedup your Python test suite today\" at EuroPython 2025!",
    "website_url": "https://ep2025.europython.eu/session/turbocharge-your-python-test-suite-today",
    "youtube_url": "https://youtube.com/watch?v=csXsPuIuwlQ"
  },
  "G3SBMR": {
    "abstract": "With the GIL gone, do we still need async in Python? Starting with Python 3.13, PEP 703 removes the GIL, enabling true free threading and parallelism across multiple CPU cores. In this talk, we\u2019ll explore how this change affects the decision between using threading or async programming for individual developers. We\u2019ll discuss the strengths and weaknesses of each approach and when to choose one over the other\u2014whether you're handling CPU-bound tasks with threads or I/O-bound workloads with async. By the end of the session, you'll have a clear understanding of which model to use for your specific use case, empowering you to make more efficient decisions in your Python projects.",
    "code": "G3SBMR",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T11:55:00+02:00",
    "level": "intermediate",
    "next_session": "XZNTGY",
    "prev_session": "T3HHJG",
    "resources": null,
    "room": "North Hall",
    "session_type": "Talk",
    "sessions_after": [
      "8QFLC9",
      "ABDUU8",
      "AUAVX7",
      "CAWMEZ",
      "SXWDSA",
      "WKDYUH",
      "XZNTGY",
      "Z9DWTW"
    ],
    "sessions_before": [
      "3VNDYN",
      "BK9JTV",
      "LHE38S",
      "PNSAM3",
      "QLLC8C",
      "T3HHJG"
    ],
    "sessions_in_parallel": [
      "GKRLGM",
      "SRVL9W",
      "UCHDYW",
      "UDNNWJ",
      "URXNP8"
    ],
    "slug": "choosing-between-free-threading-and-async",
    "speakers": [
      "CZVCVP"
    ],
    "start": "2025-07-17T11:25:00+02:00",
    "title": "Choosing Between Free Threading and Async",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "With the GIL gone, does Python still need async? Learn when to use free threading vs async for your project.",
    "website_url": "https://ep2025.europython.eu/session/choosing-between-free-threading-and-async",
    "youtube_url": "https://youtube.com/watch?v=_LFuFLWX6xI"
  },
  "G9EKQP": {
    "abstract": "Welcome to EuroPython 2025! Please notice the registration will happen on the Forum Hall Foyer on the 1st Floor.\r\nYou can pick up your badges at any time during the week as long as we are open!\r\nIf you want to avoid the morning rush on Wednesday, come on Monday and Tuesday!",
    "code": "G9EKQP",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-15T09:30:00+02:00",
    "level": "beginner",
    "next_session": "7ARRRE",
    "prev_session": null,
    "resources": null,
    "room": "Club A",
    "session_type": "Announcements",
    "sessions_after": [
      "7ARRRE",
      "AJPPVG",
      "RMVNGD",
      "RTCZQG",
      "RWPFPP",
      "V3WS7N"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [],
    "slug": "tuesday-registration-welcome-forum-hall-foyer-1st-floor",
    "speakers": [],
    "start": "2025-07-15T08:30:00+02:00",
    "title": "Tuesday Registration & Welcome @ Forum Hall Foyer 1st Floor",
    "track": null,
    "tweet": "Tuesday Registration & Welcome @ Forum Hall Foyer 1st Floor!",
    "website_url": "https://ep2025.europython.eu/session/tuesday-registration-welcome-forum-hall-foyer-1st-floor",
    "youtube_url": null
  },
  "GKRLGM": {
    "abstract": "In 2006, Tom Murphy started a project of running every street in Pittsburgh (over 1,500 miles in total). He finished the project in 2022, covering 3661 miles in 269 runs. In this talk, we'll look at how we can do the same in our cities and track our progress, with Paris as an example.\r\n\r\nWe'll explore how to extract street networks from OpenStreetMap, process GPS tracking data from running activities, and build a system to track progress toward covering every street in a city. We'll dive into challenges like handling GPS inaccuracies, matching runs to streets, and maintaining a database of covered streets.\r\n\r\nThis talk is aimed at Python developers interested in working with geospatial data using Python libraries like osmnx, shapely, geopandas, and storing it for efficient querying in Postgres and PostGIS.",
    "code": "GKRLGM",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T11:55:00+02:00",
    "level": "beginner",
    "next_session": "8QFLC9",
    "prev_session": "QLLC8C",
    "resources": null,
    "room": "Terrace 2B",
    "session_type": "Talk",
    "sessions_after": [
      "8QFLC9",
      "ABDUU8",
      "AUAVX7",
      "CAWMEZ",
      "SXWDSA",
      "WKDYUH",
      "XZNTGY",
      "Z9DWTW"
    ],
    "sessions_before": [
      "3VNDYN",
      "BK9JTV",
      "LHE38S",
      "PNSAM3",
      "QLLC8C",
      "T3HHJG"
    ],
    "sessions_in_parallel": [
      "G3SBMR",
      "SRVL9W",
      "UCHDYW",
      "UDNNWJ",
      "URXNP8"
    ],
    "slug": "running-every-street-in-paris-with-python-and-postgis",
    "speakers": [
      "NR33XU"
    ],
    "start": "2025-07-17T11:25:00+02:00",
    "title": "Running every street in Paris with Python and PostGIS",
    "track": "Data preparation and visualisation (2025)",
    "tweet": "Running every street in Paris with Python (with libraries like osmnx, shapely, geopandas) and PostGIS",
    "website_url": "https://ep2025.europython.eu/session/running-every-street-in-paris-with-python-and-postgis",
    "youtube_url": "https://youtube.com/watch?v=ll7qwO2P6yQ"
  },
  "GLYC3N": {
    "abstract": "In this workshop, we will cover the very basic of using PyO3 - rust library that package rust crates into Python modules. This is the most popular tool in terms of creating Python libraries with Rust.\r\n\r\nIn recent years, Rust has been getting more and more popular over other similar programming languages like C and C++ due to its robust compiler checking and ownership rules to make sure memory is safe. Hence there are more and more Python libraries that have been written in Rust natively with a Python API interface. One of the tools that have been driving this movement is PyO3, a toolset that proves Rust bindings for Python and tools for creating native Python extension modules.\r\n\r\nIn this interactive workshop, we will cover the very basics of using PyO3. There will be hands-on exercises to go from how to set up the project environment to writing a \"toy\" Python library written in Rust using PyO3. We will cover a lot of expectations of the API provided by PyO3 to create Python functions, modules, handling errors and converting types.\r\n\r\n## Goal\r\n\r\nTo give developers who are not familiar with PyO3 an introduction to PyO3 so they can consider building their Python libraries with Rust to make use of Rust's memory-safe property and parallelism ability.\r\n\r\n## Target audiences\r\n\r\nAny developers who are interested in developing Python libraries using Rust. It will be an advantage if the attendees are comfortable writing in Rust. However, attendees are not required to be familiar with Rust as all the Rust codes will be provided. Basic knowledge of Python will be assumed from the attendees.\r\n\r\n## Preflight checklist\r\n\r\n- [Install/ Update Rust](https://www.rust-lang.org/tools/install)\r\n- Make sure having Python 3.9 or above (recommend 3.12)\r\n- Make sure using virtual environment (recommend using uv)\r\n\r\n## Windows checklist\r\n\r\nIn this workshop we recommend using Unix OS (Mac or Linux). *If you use Windows, you may encounter problems with Rust and Maturin.* To minimise issues that you may encounter, please go through the extra checklist below:\r\n\r\n- Install the [c++ build tools](https://visualstudio.microsoft.com/downloads/)\r\n- [Check the `dll` files are linked correctly](https://pyo3.rs/v0.21.2/faq#im-trying-to-call-python-from-rust-but-i-get-status_dll_not_found-or-status_entrypoint_not_found)\r\n\r\n## Setting up\r\n\r\n1. Create a new working directory\r\n\r\n```\r\nmkdir pyo3_101\r\ncd pyo3_101\r\n```\r\n\r\n2. Set up virtual environment and install **maturin**\r\n\r\n```\r\nuv venv .venv\r\nsource .venv/bin/activate\r\nuv pip install maturin\r\npython -m ensurepip --default-pip\r\n```\r\n*Note: the last command is needed as `maturin develop` cannot find pip otherwise*\r\n\r\n2. Start a project\r\n\r\nIf you want to start from scratch and write your own module, you can start a new project by\r\n\r\n```\r\nmaturin init\r\n```\r\n\r\n## Outline\r\n\r\nPart 1 - introduction and getting started (40 mins)\r\n- What's the difference between Rust and Python (5 mins)\r\n- Why using PyO3 (5 mins)\r\n- Setting up the environment (exercises) (15 mins)\r\n- Starting a new project (exercises) (15 mins)\r\n\r\nBreak (15 mins)\r\n\r\nPart 2 - Creating a simple Python library (100 mins)\r\n- Creating Python modules (exercises) (40 mins)\r\n    - Generating documentation\r\n- Creating Python functions (exercises) (60 mins)\r\n   - How to create function signatures\r\n   - How to deal wi",
    "code": "GLYC3N",
    "delivery": "in-person",
    "duration": "180",
    "end": "2025-07-14T12:45:00+02:00",
    "level": "intermediate",
    "next_session": "QKHWXB",
    "prev_session": null,
    "resources": null,
    "room": "Club H",
    "session_type": "Tutorial",
    "sessions_after": [
      "9EASAW",
      "M7EFWG",
      "MEDYZE",
      "QKHWXB",
      "QKTRVP"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [
      "8CDYTD",
      "CFANXB",
      "CV3M7B",
      "HNHQWB",
      "VGNBB8"
    ],
    "slug": "writing-python-modules-in-rust-pyo3-101",
    "speakers": [
      "8EGVC9"
    ],
    "start": "2025-07-14T09:30:00+02:00",
    "title": "Writing Python modules in Rust - PyO3 101",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "In this workshop, we will cover the very basic of using PyO3 - rust library that package rust crates into Python modules",
    "website_url": "https://ep2025.europython.eu/session/writing-python-modules-in-rust-pyo3-101",
    "youtube_url": null
  },
  "GMKTFY": {
    "abstract": "Wrapped has become one of the most widely anticipated data analytics dashboards of the year. But what happens when the results aren't as complex (or accurate) as people were expecting? Data scientists come in to save the day!\r\nUsing elasticsearch and kibana I will be creating my own musical trends and insights using the user generated data - that you can also download and follow along with! \r\nFrom queries, filters, and aggregations to visualizations, time series analysis, and brat summer - we will explore how search analytics can be used for everyday cases.",
    "code": "GMKTFY",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T12:50:00+02:00",
    "level": "beginner",
    "next_session": "BXWQYK",
    "prev_session": "NKTHSJ",
    "resources": null,
    "room": "South Hall 2A",
    "session_type": "Talk",
    "sessions_after": [
      "AEAK3B",
      "AR7VP8",
      "BXWQYK",
      "L8YSMU",
      "PRDDPR",
      "TU3D7R",
      "XEXS3Y",
      "ZLMT3Q",
      "ZNMPFX"
    ],
    "sessions_before": [
      "AD3TGW",
      "D8FJPN",
      "NKTHSJ",
      "P9DT7T",
      "YGXMN9",
      "YQ79RE"
    ],
    "sessions_in_parallel": [
      "3ZNVQQ",
      "DKECGU",
      "GS8GHZ",
      "PBNRMR",
      "ZNVECA"
    ],
    "slug": "building-my-own-accurate-spotify-wrapped",
    "speakers": [
      "M93JSK"
    ],
    "start": "2025-07-16T12:20:00+02:00",
    "title": "Building my own (accurate!) Spotify Wrapped",
    "track": "Data preparation and visualisation (2025)",
    "tweet": "who doesn't like gamifying their data and diving into your their habits? let's build a custom Spotify Wrapped - and take it a few steps further!",
    "website_url": "https://ep2025.europython.eu/session/building-my-own-accurate-spotify-wrapped",
    "youtube_url": "https://youtube.com/watch?v=bAuube9EhbU"
  },
  "GMWLFT": {
    "abstract": "Many Python developers have added type hints and run mypy checks, but still rely on `typing.Any` too often, keep old `typing.List`/`typing.Dict` hints, or use `# type: ignore` comments everywhere. In that case, typing may feel like just another task, not a tool that truly improves quality.\r\n\r\nBut like unittest, typing can reduce hidden issues and make you confident about changes, even though it does not add new features directly. If we maintain and improve our type hints over time, typing can become a reliable foundation for your project, making refactoring safer and Python upgrades smoother.\r\n\r\nThis talk is not just another basic intro. We\u2019ll show practical steps with before-and-after code examples:\r\n- Use ideas from newer features (like `typing.TypeIs` in Python 3.13) and `typing_extensions` to apply similar concepts on older versions.  \r\n- Run `pyupgrade` (via `ruff`) to automatically update old hints, reducing manual edits and creating a consistent style.  \r\n- Apply partial ignores instead of full `# type: ignore`, and integrate `pre-commit` and CI checks to catch issues early, making typing checks feel natural.  \r\n- Add types to example code to detect subtle incompatibilities, similar to how tests find hidden bugs.\r\n\r\nWe\u2019ll also propose a gradual approach so your team won\u2019t be overwhelmed. After this talk, you should see typing as a stable base that reduces bugs, helps with refactoring, and supports long-term growth.\r\n\r\n**Who should attend this talk?**  \r\nThis talk is for intermediate Python developers who already use basic type hints but feel they are not getting enough value out of them yet. If you want to go beyond minimal checks and keep your typing strong as your project grows, this session will show you practical steps you can take.",
    "code": "GMWLFT",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T15:55:00+02:00",
    "level": "intermediate",
    "next_session": "9PGYHF",
    "prev_session": "TXZMRS",
    "resources": null,
    "room": "North Hall",
    "session_type": "Talk",
    "sessions_after": [
      "8QQYJW",
      "9PGYHF",
      "AJHY9H",
      "HMRHJJ",
      "NATVVE"
    ],
    "sessions_before": [
      "AEAK3B",
      "GQGKNS",
      "L8YSMU",
      "MUAVCX",
      "SCKCAV",
      "TU3D7R",
      "TXZMRS",
      "US9HWQ",
      "ZLMT3Q"
    ],
    "sessions_in_parallel": [
      "3BQFTP",
      "3FYGDN",
      "8K38D8",
      "HAKES9",
      "MPKBEN"
    ],
    "slug": "type-hints-in-real-world-projects-maintenance-improvement",
    "speakers": [
      "BPFJEJ"
    ],
    "start": "2025-07-16T15:25:00+02:00",
    "title": "Type Hints in Real-World Projects: Maintenance & Improvement",
    "track": "Tooling, Packaging, Developer Productivity (2025)",
    "tweet": "Move beyond minimal Python type hints with smart ignoring strategies, modern tooling, and automation pipelines\u2014build a robust, maintainable codebase.",
    "website_url": "https://ep2025.europython.eu/session/type-hints-in-real-world-projects-maintenance-improvement",
    "youtube_url": "https://youtube.com/watch?v=Yrfix5WdvLU"
  },
  "GQGKNS": {
    "abstract": "Once you have a Python script for your business logic e.g. AI models, you may want to (1) serve it as a web app to your users.\r\nIn some situations, you may also want to (2) make it serverless for reasons such as cost, scalability, security, performance, and offline-first.\r\n\r\nThis talk will introduce you to the Python ecosystem that helps you build serverless web apps, with or without AI models. You can publish your ideas as a web app without any frontend coding.\r\n\r\nFor (1), you can use pure-Python web UI frameworks such as Streamlit and Gradio, with any Python libraries for the backend logic. With these frameworks, you can get an interactive web app with a nice UI.\r\nFor (2), I'd like to introduce serverless versions of such frameworks such as Stlite and Gradio-Lite. With these, you can serve the Python app as a serverless web app/static web page.\r\n\r\nIn this talk, we will walk through the development of such serverless web apps using only Python.",
    "code": "GQGKNS",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T15:00:00+02:00",
    "level": "intermediate",
    "next_session": "8K38D8",
    "prev_session": "AR7VP8",
    "resources": [
      {
        "description": "Presentation slides",
        "resource": "https://slides.whitphx.info/202507-python-serverless-web-apps/"
      }
    ],
    "room": "Terrace 2B",
    "session_type": "Talk",
    "sessions_after": [
      "3BQFTP",
      "3FYGDN",
      "8K38D8",
      "GMWLFT",
      "HAKES9",
      "MPKBEN"
    ],
    "sessions_before": [
      "AEAK3B",
      "AR7VP8",
      "BXWQYK",
      "L8YSMU",
      "PRDDPR",
      "XEXS3Y",
      "ZLMT3Q",
      "ZNMPFX",
      "ZNVECA"
    ],
    "sessions_in_parallel": [
      "MUAVCX",
      "SCKCAV",
      "TU3D7R",
      "TXZMRS",
      "US9HWQ"
    ],
    "slug": "democratize-serverless-web-ai-apps-for-python-devs",
    "speakers": [
      "DCMLEM"
    ],
    "start": "2025-07-16T14:30:00+02:00",
    "title": "Democratize serverless web AI apps for Python devs",
    "track": "Web Development, Web APIs, Front-End Integration (2025)",
    "tweet": "Turn your Python scripts into interactive web apps that can be hosted as static web pages, without any frontend coding.",
    "website_url": "https://ep2025.europython.eu/session/democratize-serverless-web-ai-apps-for-python-devs",
    "youtube_url": "https://youtube.com/watch?v=kSFoNMwGLxc"
  },
  "GS8GHZ": {
    "abstract": "It's no secret that open source maintenance has its dark sides, and one of these is having to sometimes interact with quite ungrateful, entitled or outright toxic people. As a project's popularity increases, so does the frequency of this kind of interaction, adding to the burden shouldered by maintainers and possibly becoming a significant risk factor for maintainer burnout.\r\n\r\nI've been maintaining a quite popular project for over 12 years straight now, and had to develop the one or other coping strategy to deal with these interactions, in order to not let them drag me down and negatively affect my motivation and mental health. In this talk I want to first give a classification of the most common forms of bad and toxic behaviour I've seen in my day to day, and then share my personal approach to dealing with them, explaining why this has worked for me along the line.\r\n\r\nIn the end, the viewer should take away some concrete advice on how to handle possibly volatile interpersonal situations in the context of an open source project (and hopefully also beyond), without compromising on their own mental well-being.",
    "code": "GS8GHZ",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T12:50:00+02:00",
    "level": "beginner",
    "next_session": "AR7VP8",
    "prev_session": "P9DT7T",
    "resources": [
      {
        "description": "Live presentation",
        "resource": "https://foosel.github.io/ep2025/"
      },
      {
        "description": "PDF Export",
        "resource": "https://raw.githubusercontent.com/foosel/ep2025/main/slides.pdf"
      }
    ],
    "room": "Terrace 2B",
    "session_type": "Talk",
    "sessions_after": [
      "AEAK3B",
      "AR7VP8",
      "BXWQYK",
      "L8YSMU",
      "PRDDPR",
      "TU3D7R",
      "XEXS3Y",
      "ZLMT3Q",
      "ZNMPFX"
    ],
    "sessions_before": [
      "AD3TGW",
      "D8FJPN",
      "NKTHSJ",
      "P9DT7T",
      "YGXMN9",
      "YQ79RE"
    ],
    "sessions_in_parallel": [
      "3ZNVQQ",
      "DKECGU",
      "GMKTFY",
      "PBNRMR",
      "ZNVECA"
    ],
    "slug": "how-to-deal-with-toxic-people",
    "speakers": [
      "XL8BGH"
    ],
    "start": "2025-07-16T12:20:00+02:00",
    "title": "How to deal with toxic people",
    "track": "Professional Development, Careers, Leadership (2025)",
    "tweet": "As maintainer, you'll encounter ungrateful, entitled & outright toxic people who can be a real drain on your well-being. Let's see some ways to cope!",
    "website_url": "https://ep2025.europython.eu/session/how-to-deal-with-toxic-people",
    "youtube_url": "https://youtube.com/watch?v=60aKbhAtLjY"
  },
  "GZR9KT": {
    "abstract": "Enjoy Wednesday's lightning talks! Short talks about everything by everyone. \r\n\r\nLightning talks are 5 minute talks that anyone participating at the conference can submit.\r\nIf 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's helping and contributing to our conference and community, or something else!\r\n\r\nLightning talks last a maximum of 5 minutes. You can use less time, but not more.\r\nThis time limit is strictly enforced!\r\n\r\nIf you get accepted, you will be notified by email on the day of your talk by 1pm.\r\nReply to the acceptance email by 3pm to confirm your spot.\r\n(If you don't, you lose your spot!)\r\n\r\nYou can submit your lightning talk on this form: https://forms.gle/MswQ6ukWrLVpwRmi9\r\nNote that there's a limit of one submission per person.\r\n\r\nCommunity/conference announcement submissions are done through the same form before 1pm Thursday.",
    "code": "GZR9KT",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T18:30:00+02:00",
    "level": "beginner",
    "next_session": null,
    "prev_session": "9VL9PH",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Announcements",
    "sessions_after": [],
    "sessions_before": [
      "8K38D8",
      "8QQYJW",
      "9PGYHF",
      "9VL9PH",
      "AEAK3B",
      "HMRHJJ",
      "L8YSMU",
      "NATVVE",
      "ZLMT3Q"
    ],
    "sessions_in_parallel": [],
    "slug": "lightning-talks-wednesday",
    "speakers": [],
    "start": "2025-07-16T17:45:00+02:00",
    "title": "Lightning talks \u26a1 Wednesday",
    "track": null,
    "tweet": "Enjoy Wednesday's lightning talks! Short talks about everything by everyone.   Lightning talks are 5 minute talks that anyone participating at the con",
    "website_url": "https://ep2025.europython.eu/session/lightning-talks-wednesday",
    "youtube_url": "https://youtube.com/watch?v=4D8jJ2hwISw"
  },
  "HAKES9": {
    "abstract": "In today's data-driven landscape, extracting meaningful insights from complex\r\ndatasets is essential. This talk introduces an innovative project at Merck KGaA's Life\r\nScience KGaA that leverages LangGraph\u2014a library for building stateful, multi-actor\r\napplications with Large Language Models (LLMs)\u2014to create a self-served\r\nconversational agent. This agent enables interactive querying, automatic code\r\ngeneration, and key insights summarization, freeing users from manual analysis and\r\nenhancing decision-making.\r\n\r\nWe will delve into the architecture of the LangGraph agentic framework, showcasing\r\nhow we integrate various tools to process queries, trigger analytical functions, and\r\npresent data in user-friendly visual formats. We\u2019ll also share our evaluation\r\nexperiences using LangFuse and Ragas, emphasizing metrics that ensure optimal\r\nperformance and user satisfaction for LLM agent projects.\r\n\r\nThrough real-world applications, we aim to demonstrate how conversational agents\r\ncan transform data interaction, making customized insights more accessible and\r\nintuitive. Participants will gain insights into the potential of LangGraph and practical\r\nstrategies for evaluating AI-driven data analysis projects, setting the stage for future\r\nadvancements in this field.",
    "code": "HAKES9",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T15:55:00+02:00",
    "level": "intermediate",
    "next_session": "HMRHJJ",
    "prev_session": "US9HWQ",
    "resources": null,
    "room": "South Hall 2A",
    "session_type": "Talk",
    "sessions_after": [
      "8QQYJW",
      "9PGYHF",
      "AJHY9H",
      "HMRHJJ",
      "NATVVE"
    ],
    "sessions_before": [
      "AEAK3B",
      "GQGKNS",
      "L8YSMU",
      "MUAVCX",
      "SCKCAV",
      "TU3D7R",
      "TXZMRS",
      "US9HWQ",
      "ZLMT3Q"
    ],
    "sessions_in_parallel": [
      "3BQFTP",
      "3FYGDN",
      "8K38D8",
      "GMWLFT",
      "MPKBEN"
    ],
    "slug": "transforming-data-interaction-a-self-served-insight-tool-with-langgraph",
    "speakers": [
      "8WGAEU"
    ],
    "start": "2025-07-16T15:25:00+02:00",
    "title": "Transforming Data Interaction: A Self-Served Insight Tool with LangGraph",
    "track": "Machine Learning, NLP and CV (2025)",
    "tweet": "Unlock the power of agentic AI: Learn how LangGraph enables production-ready, multi-agent conversational analytics for self-service data insights.",
    "website_url": "https://ep2025.europython.eu/session/transforming-data-interaction-a-self-served-insight-tool-with-langgraph",
    "youtube_url": "https://youtube.com/watch?v=0lAvEIpSAHA"
  },
  "HMRHJJ": {
    "abstract": "Contributing to open source seems intimidating. \"Do I have enough experience? Is this something for me at all?\" Maybe you are also stalled because there are too many open source projects to choose from, or you cannot find a single one for your first contribution?\r\n\r\nYou may wonder why bother at all? Open source is a wonderful, magic world. You can work with the brightest minds in the world, you have unparalleled opportunities to grow your skills, you can get exposure to the tech world and even land a new job! Your contribution could literally change the lives of many people!\r\n\r\nI am the maintainer of a highly popular Python open source project, I have contributed to more than 300 open source projects, and I work full time on open source. However, my journey in open source only started a few years ago.\r\n\r\nAfter this talk, all your doubts will be gone. I will show you that everybody can contribute to open source, regardless of experience, professional status, ... and especially age. It is never too late to join the party!",
    "code": "HMRHJJ",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T16:35:00+02:00",
    "level": "beginner",
    "next_session": "XEMLJB",
    "prev_session": "HAKES9",
    "resources": null,
    "room": "South Hall 2A",
    "session_type": "Talk",
    "sessions_after": [
      "XEMLJB"
    ],
    "sessions_before": [
      "3BQFTP",
      "3FYGDN",
      "8K38D8",
      "AEAK3B",
      "GMWLFT",
      "HAKES9",
      "L8YSMU",
      "MPKBEN",
      "ZLMT3Q"
    ],
    "sessions_in_parallel": [
      "8QQYJW",
      "9PGYHF",
      "AJHY9H",
      "NATVVE"
    ],
    "slug": "your-very-first-contribution-to-open-source",
    "speakers": [
      "EARAKA"
    ],
    "start": "2025-07-16T16:05:00+02:00",
    "title": "Your Very First Contribution to Open Source",
    "track": "Professional Development, Careers, Leadership (2025)",
    "tweet": "Have you always wanted to contribute to open source but were afraid? Let me take your hand and let's do it!",
    "website_url": "https://ep2025.europython.eu/session/your-very-first-contribution-to-open-source",
    "youtube_url": "https://youtube.com/watch?v=-1eUoRbe4t4"
  },
  "HNHQWB": {
    "abstract": "The C API Summit aims to bring together various stakeholders of Python\u2019s C API to discuss its current state, address challenges, and align on ongoing work.\r\n\r\nAnyone with a valid in-person EuroPython 2025 ticket can join (Tutorials, Conference-only, or combined).\r\nWe are particularly looking for contributors and maintainers of:\r\n\r\n* Python implementations with a C API (e.g., CPython, PyPy, GraalPy, MicroPython)\r\n* Binding generators and alternative APIs (e.g., HPy, Cython, pybind11, PyO3, SWIG)\r\n* Libraries that use the C API heavily or in innovative ways\r\n* Applications that embed Python\r\n* Similar projects working in this area\r\n\r\n## Presentations\r\n\r\nIf there is a topic you would like to present, please indicate it in the [registration form](https://docs.google.com/forms/d/e/1FAIpQLSfUT8BEHyt-Nlwo6aEmnEHdn1y_rkCoShEKYuHm4LhWvbMjjw/viewform) and fill it in early.\r\n\r\nSummit presentations are brief, intended to get everyone on the same page and start a discussion. Time slots are of 30min at most: maximum of 10 min of presentation, followed 20+ minutes for discussion.\r\n\r\nWe are looking to discuss advanced topics.\r\n\r\n## Tentative Agenda (subject to change)\r\n\r\n- **9:00**: Meet and greet \u2013 unconference-style post-it board organization\r\n- **9:30**: Presentations\r\n  * 9:30 Victor Stinner -- Deprecate the private API and add public functions to replace them\r\n  * 10:00 Petr Viktorin -- Are we ready for the revolution?\r\n  * 10:30 (TBD -- submissions still open)\r\n- **11:00**: Coffee break\r\n- **11:15** Presentations\r\n  * 10:30 Stepan Sindelar\r\n  * 11:15 Mark Shannon -- What CPython needs from a new C API\r\n  * 11:35 Antonio Cuni -- The HPy Dilemma\r\n  * 12:15 (TBD -- submissions still open)\r\n- **12:45**: Lunch\r\n- **13:45**: Unconference-style activities (discussions, hacks, ad hoc tutorials, etc.)\r\n- **15:30**: Round-up/plenary session for feedback and planning next steps\r\n- **17:00**: Conference room closes\r\n- **18:30**: Dinner (in the city)\r\n\r\n\r\n## Registration\r\n\r\nTo be part of the C API summit, [register your interest now!](https://docs.google.com/forms/d/e/1FAIpQLSfUT8BEHyt-Nlwo6aEmnEHdn1y_rkCoShEKYuHm4LhWvbMjjw/viewform) \ud83d\udc48\r\n\r\nPlease register early. If you are not yet sure if you can come, note it on your registration. You can change your answer later.\r\n\r\nIf you need help getting a ticket for EuroPython, say so on the form and we'll try to figure something out.\r\n\r\nIf you can, plan to stay for the whole conference, to have plenty of time to follow up on discussions and new friendships.\r\n\r\nWe will contact you with confirmations and more details closer to the event.",
    "code": "HNHQWB",
    "delivery": "in-person",
    "duration": "360",
    "end": "2025-07-14T17:00:00+02:00",
    "level": "intermediate",
    "next_session": null,
    "prev_session": null,
    "resources": null,
    "room": "Club B",
    "session_type": "Summit",
    "sessions_after": [],
    "sessions_before": [],
    "sessions_in_parallel": [
      "8CDYTD",
      "9EASAW",
      "CFANXB",
      "CV3M7B",
      "GLYC3N",
      "M7EFWG",
      "MEDYZE",
      "QKHWXB",
      "QKTRVP",
      "VGNBB8"
    ],
    "slug": "c-api-summit",
    "speakers": [
      "QMAPYZ",
      "SCAGQW"
    ],
    "start": "2025-07-14T09:30:00+02:00",
    "title": "C API Summit",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "The C API Summit aims to bring together various stakeholders of Python\u2019s C API",
    "website_url": "https://ep2025.europython.eu/session/c-api-summit",
    "youtube_url": null
  },
  "HP83AE": {
    "abstract": "This talk delves into the often-overlooked world of Python bytecode, exploring its intricacies and demonstrating its uses. We'll journey from the basics of bytecode generation and disassembly to its evolution within CPython and the challenges faced by specialized tools like type checkers. Through concrete examples, including a case study of [PEP 709](https://peps.python.org/pep-0709/), we'll uncover how changes in bytecode impact the wider Python ecosystem, highlighting that bytecode development is not just a technical challenge; it's deeply intertwined with open-source engagement, driven by passionate individuals, effective communication, and a shared vision. The speaker shares their insights into the decision-making processes behind language tools, with a reflection on the importance of community and collaboration in shaping the future of Python.",
    "code": "HP83AE",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T12:55:00+02:00",
    "level": "intermediate",
    "next_session": "SKPCNV",
    "prev_session": "BW7ZBU",
    "resources": null,
    "room": "North Hall",
    "session_type": "Talk",
    "sessions_after": [
      "DGSNSE",
      "ETFNZG",
      "FJH9YY",
      "HTVBWM",
      "RGVZRU",
      "SKPCNV"
    ],
    "sessions_before": [
      "3STLTA",
      "9QNGYF",
      "BW7ZBU",
      "K3HRVS",
      "URZCXT",
      "YZLKAP"
    ],
    "sessions_in_parallel": [
      "3NB3PX",
      "9D8XMG",
      "HXJ3RP",
      "NHUECR",
      "WB3SJP"
    ],
    "slug": "beyond-the-code-manipulating-bytecode-and-building-community",
    "speakers": [
      "XKDR9U"
    ],
    "start": "2025-07-18T12:25:00+02:00",
    "title": "Beyond the Code: Manipulating Bytecode and Building Community",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "Is Python bytecode just code, or something more? My talk explores its intricacies and the community behind it. Join me!",
    "website_url": "https://ep2025.europython.eu/session/beyond-the-code-manipulating-bytecode-and-building-community",
    "youtube_url": "https://youtube.com/watch?v=Y0SXvtRbEjg"
  },
  "HPRDLE": {
    "abstract": "Sometimes the code that you use works, but is too slow. Yet, the source of the problem is not clear.\r\n\r\nIn this talk, you\u2019ll learn how we identified performance bottlenecks in our shape-handling code and applied various techniques to accelerate it. We\u2019ll walk through the entire process: reducing algorithm complexity, leveraging Numba\u2019s JIT compiler, building compiled prototypes in Cython and C++, and ultimately implementing a Rust-based solution\r\n\r\nAlong the way, we'll discuss the unique challenges of optimizing performance for interactive applications, focusing on how we reduced latency in the napari GUI.\r\n\r\nTopics covered:\r\n\r\nIdentifying performance bottlenecks (profiling techniques, real-world case study)\r\nOptimizing Python code (NumPy considerations, algorithm improvements)\r\nJust-in-time compilation (Numba\u2019s strengths and weaknesses)\r\nWhen and how to use compiled extensions (Cython, C++, Rust)\r\nChallenges of optimizing interactive applications (napari GUI case study)\r\n\r\n\"This talk is aimed at Python developers who want to optimize numerical code, whether for scientific computing, interactive applications, or general performance improvements.\"",
    "code": "HPRDLE",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-18T10:55:00+02:00",
    "level": "intermediate",
    "next_session": "8BM8PG",
    "prev_session": "YEKGVY",
    "resources": [
      {
        "description": "slides",
        "resource": "https://programme.europython.eu/media/europython-2025/submissions/HPRDLE/resources/Europython_zPw9KjV.pdf"
      }
    ],
    "room": "Terrace 2A",
    "session_type": "Talk (long session)",
    "sessions_after": [
      "8BM8PG",
      "9QNGYF",
      "PYKCUL",
      "RRXUA7",
      "SVTXGC",
      "T3WXME"
    ],
    "sessions_before": [
      "YEKGVY"
    ],
    "sessions_in_parallel": [
      "FWETBR",
      "PBRK3K",
      "TGUWZC",
      "XFNVQ9",
      "XJ7GMM"
    ],
    "slug": "origami-speed-championships-fast-polygon-triangulation-in-python",
    "speakers": [
      "LZRGS8"
    ],
    "start": "2025-07-18T10:10:00+02:00",
    "title": "Origami Speed Championships: Fast Polygon Triangulation in Python",
    "track": "Jupyter and Scientific Python (2025)",
    "tweet": "Speeding up polygon triangulation in Python! From Numba to Rust, learn how we optimized performance for interactive apps like napari.",
    "website_url": "https://ep2025.europython.eu/session/origami-speed-championships-fast-polygon-triangulation-in-python",
    "youtube_url": "https://youtube.com/watch?v=eehs576R_Q4"
  },
  "HTVBWM": {
    "abstract": "Starting a new software project is exciting! It\u2019s your chance to build something clean, functional, and easy to manage. But without a strong foundation, even small projects can quickly spiral into a confusing mess of bugs, untracked changes, and hard-to-follow code. This is especially true in research environments, where programming often takes a backseat to scientific discovery, and software evolves unpredictably as it adapts to new experiments and shared use.  So how do you set yourself up for success from the beginning?\r\n\r\nThis talk is your beginner-friendly guide to designing smarter, maintainable software using proven design patterns. We\u2019ll explore how patterns like the Singleton (for managing shared resources), the Template Method (for reusable workflows), and the Factory Method (for flexible object creation) can transform your code from fragile and frustrating to solid and scalable.\r\n\r\nUsing real-world examples from research labs, we\u2019ll walk through how these patterns solve common problems, simplify collaboration, and keep your projects on track, even as they grow. Whether you're developing a new pipeline, a data analysis tool, or an experiment software, this talk will equip you with the foundational knowledge to design software that supports your scientific goals without becoming an unmanageable burden.\r\n\r\nLet\u2019s start building research software the right way, so you can focus on science, not debugging.",
    "code": "HTVBWM",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T14:25:00+02:00",
    "level": "beginner",
    "next_session": "89LBUT",
    "prev_session": "NHUECR",
    "resources": null,
    "room": "Terrace 2A",
    "session_type": "Talk",
    "sessions_after": [
      "89LBUT",
      "AJ3Z8U",
      "BVYE9B",
      "DCZCJP",
      "XND9F9",
      "Y8PVLE"
    ],
    "sessions_before": [
      "3NB3PX",
      "9D8XMG",
      "HP83AE",
      "HXJ3RP",
      "NHUECR",
      "WB3SJP"
    ],
    "sessions_in_parallel": [
      "DGSNSE",
      "ETFNZG",
      "FJH9YY",
      "RGVZRU",
      "SKPCNV"
    ],
    "slug": "design-patterns-build-better-software-from-day-one",
    "speakers": [
      "RGAKT3"
    ],
    "start": "2025-07-18T13:55:00+02:00",
    "title": "Design Patterns: Build better software from day one",
    "track": "~ None of these topics (2025)",
    "tweet": "Learn how to use design patterns to build clean, maintainable software from the start. Perfect for beginners starting new projects!",
    "website_url": "https://ep2025.europython.eu/session/design-patterns-build-better-software-from-day-one",
    "youtube_url": "https://youtube.com/watch?v=mB5uGoXYG3A"
  },
  "HXJ3RP": {
    "abstract": "Many of our sponsors are actively seeking talented developers, data scientists, and tech professionals to join their teams, making EuroPython an exceptional networking opportunity. This conference brings together hundreds of passionate Python enthusiasts, from seasoned experts to emerging talent, creating the perfect environment for meaningful connections. Whether you're looking for your next career opportunity, seeking to expand your professional network, or hoping to discover innovative companies in the Python ecosystem, our sponsor exhibition area and networking sessions provide direct access to hiring managers and technical leaders from organizations across Europe and beyond. Don't miss the chance to engage with companies that are not only supporting the Python community but are also eager to connect with the kind of skilled professionals who attend EuroPython.",
    "code": "HXJ3RP",
    "delivery": "in-person",
    "duration": "60",
    "end": "2025-07-18T12:45:00+02:00",
    "level": "beginner",
    "next_session": "ETFNZG",
    "prev_session": "9QNGYF",
    "resources": null,
    "room": "Terrace 2B",
    "session_type": "Sponsored",
    "sessions_after": [
      "DGSNSE",
      "ETFNZG",
      "FJH9YY",
      "HTVBWM",
      "RGVZRU",
      "SKPCNV"
    ],
    "sessions_before": [
      "8BM8PG",
      "9QNGYF",
      "PYKCUL",
      "RRXUA7",
      "SVTXGC",
      "T3WXME"
    ],
    "sessions_in_parallel": [
      "3NB3PX",
      "3STLTA",
      "9D8XMG",
      "BW7ZBU",
      "HP83AE",
      "K3HRVS",
      "NHUECR",
      "URZCXT",
      "WB3SJP",
      "YZLKAP"
    ],
    "slug": "sponsor-highlight-recruitment-fair",
    "speakers": [],
    "start": "2025-07-18T11:45:00+02:00",
    "title": "Sponsor Highlight & Recruitment Fair",
    "track": null,
    "tweet": "Many of our sponsors are looking to hire talented people and EuroPython is the perfect place to reach out to them!",
    "website_url": "https://ep2025.europython.eu/session/sponsor-highlight-recruitment-fair",
    "youtube_url": "https://youtube.com/watch?v=ck7ghfwx-hI"
  },
  "JEXAHQ": {
    "abstract": "Welcome to EuroPython 2025!\r\n\r\nJoin us on the opening session, where we will kick-off the conference days, and tell you what's going to happen in the following days.\r\nYou 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.",
    "code": "JEXAHQ",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T09:30:00+02:00",
    "level": "beginner",
    "next_session": "SLSM8T",
    "prev_session": null,
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Announcements",
    "sessions_after": [
      "SLSM8T"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [],
    "slug": "conference-opening",
    "speakers": [],
    "start": "2025-07-16T09:00:00+02:00",
    "title": "Conference Opening \ud83c\udf89",
    "track": null,
    "tweet": "Conference Opening: Welcome to EuroPython 2025, a session that will give you an overview of the following days",
    "website_url": "https://ep2025.europython.eu/session/conference-opening",
    "youtube_url": "https://youtube.com/watch?v=4gotVjbeluY"
  },
  "JKZDUY": {
    "abstract": "Join us for a keynote Q&A panel featuring some of the foundational names in Python, as they discuss how the language went from a side project in Amsterdam to powering AI at the world\u2019s biggest companies. \r\n\r\nAlongside the panel, we\u2019ll be showing a special 20 minute excerpt from the long anticipated \u201cPython: The Documentary\u201d. Featuring Guido van Rossum, Travis Oliphant, Barry Warsaw, and many more, this upcoming full-length documentary traces Python\u2019s slow-but-steady rise, its community-driven evolution, and the language\u2019s impact on... well\u2026 everything. This documentary excerpt has been specifically created for EuroPython by CultRepo.\r\n\r\nSee the trailer of the documentary here: https://www.youtube.com/watch?v=pqBqdNIPrbo",
    "code": "JKZDUY",
    "delivery": "in-person",
    "duration": "80",
    "end": "2025-07-18T16:35:00+02:00",
    "level": "beginner",
    "next_session": "AQEJEQ",
    "prev_session": "AJ3Z8U",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Documentary and Q&A",
    "sessions_after": [
      "AQEJEQ"
    ],
    "sessions_before": [
      "89LBUT",
      "AJ3Z8U",
      "BVYE9B",
      "DCZCJP",
      "XND9F9",
      "Y8PVLE"
    ],
    "sessions_in_parallel": [],
    "slug": "python-the-documentary-screening-and-q-a",
    "speakers": [
      "K8J9XT",
      "KV9HUP",
      "LSFZCM"
    ],
    "start": "2025-07-18T15:15:00+02:00",
    "title": "\"Python: the Documentary\" screening and Q&A",
    "track": null,
    "tweet": "Join us for an excerpt from the much anticipated \"Python: the Documentary\" along with a Q&A with foundational members of the Python community.",
    "website_url": "https://ep2025.europython.eu/session/python-the-documentary-screening-and-q-a",
    "youtube_url": "https://youtube.com/watch?v=Sf2AqQ5a38Y"
  },
  "K3HRVS": {
    "abstract": "Snakes are not wildly known to be fast animals.\r\nIn some cases though, they can be very quick and efficient.\r\nPython is no different.\r\nThis talk is for people who are interested in making their Python code run faster.\r\nSpecifically, we will look at some features in NumPy, Numba, Cython, Rust and CUDA that can be used to make your code run smoother.\r\nThe performance impact will be illustrated with live demos of the Mandelbrot set.\r\nYou will walk away with a collection of tools and libraries that can be used to increase performance in your code base.",
    "code": "K3HRVS",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T12:15:00+02:00",
    "level": "beginner",
    "next_session": "NHUECR",
    "prev_session": "8BM8PG",
    "resources": [
      {
        "description": "Slides",
        "resource": "https://programme.europython.eu/media/europython-2025/submissions/K3HRVS/resources/snake-oil_4VnNCOx.pdf"
      },
      {
        "description": "Source code & presentation",
        "resource": "https://github.com/sindre-nistad/snake-oil"
      }
    ],
    "room": "Terrace 2A",
    "session_type": "Talk",
    "sessions_after": [
      "3NB3PX",
      "9D8XMG",
      "ETFNZG",
      "HP83AE",
      "NHUECR",
      "WB3SJP"
    ],
    "sessions_before": [
      "8BM8PG",
      "9QNGYF",
      "PYKCUL",
      "RRXUA7",
      "SVTXGC",
      "T3WXME"
    ],
    "sessions_in_parallel": [
      "3STLTA",
      "BW7ZBU",
      "HXJ3RP",
      "URZCXT",
      "YZLKAP"
    ],
    "slug": "snake-oil-or-tools-tricks-for-making-python-run-smoother",
    "speakers": [
      "LBEW9H"
    ],
    "start": "2025-07-18T11:45:00+02:00",
    "title": "Snake oil - or tools & tricks for making Python run smoother",
    "track": "~ None of these topics (2025)",
    "tweet": "Is your Python lethargic? Is it sluggish? Come! I will show you how to make it blazingly fast! (your milage may vary)",
    "website_url": "https://ep2025.europython.eu/session/snake-oil-or-tools-tricks-for-making-python-run-smoother",
    "youtube_url": "https://youtube.com/watch?v=2PLlpV0Vpgg"
  },
  "KCJRPT": {
    "abstract": "Cython is a well-established tool that lets you generate low-level, quick C/C++ code from Python-like syntax, letting you blur the boundary between an optimized C/C++ layer and the Python code that uses it.  Cython has long had the ability to write parallel code and this has become increasingly important with recent support for both subinterpreters and for freethreaded Python.\r\n\r\nFirstly in this talk I aim to provide a general overview of what's available in Cython and how you can use it.\r\n* Most obvious is Cython's inbuilt \"prange\" mechanism - a high-performance way of handling loops with independent iterations but not a general parallelization solution.\r\n* Second (and often neglected) you can use Python's own `threading` module - the key here is to ensure that the Cython code that it calls is performant.\r\n* Third, you have easy access to the C++ standard library and the threading tools that this exposes. My advice here is that the synchronization tools are nice, but using C++ to create new threads requires care.\r\n* Finally there are \u201csubinterpreters\u201d which provides isolation between parallel processes both as a pro and a con. Since this is new to Cython (and not yet widely used in Python) there are limitations and pitfalls. I'll also discuss future plans, and some details of the current implementation in Cython.\r\n\r\nSecondly in this talk I will cover \"what's new\". This is mostly improvements targeting freethreaded Python although many are useful generally. Most significant is `cython.critical_section` which provides a convenient syntax around Python's internal `Py_BEGIN/END_CRITICAL_SECTION` \u2013 essentially a very localized Interpreter Lock around a single object. I will compare the differences and similarities to the Global Interpreter Lock (GIL) of regular Python since understanding this is necessary to write code that works well in both.\r\n\r\nFinally, I\u2019ll discuss Cython\u2019s typical attitude towards thread-safety in the freethreaded build (together will some illustrative examples from the Cython internals), and what that means for writing your own performant and thread-safe",
    "code": "KCJRPT",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-16T11:30:00+02:00",
    "level": "intermediate",
    "next_session": "NKTHSJ",
    "prev_session": "SLSM8T",
    "resources": [
      {
        "description": "slides",
        "resource": "https://programme.europython.eu/media/europython-2025/submissions/KCJRPT/resources/EP2025_a0Mxs0f.pdf"
      }
    ],
    "room": "South Hall 2A",
    "session_type": "Talk (long session)",
    "sessions_after": [
      "AD3TGW",
      "AEAK3B",
      "D8FJPN",
      "L8YSMU",
      "NKTHSJ",
      "P9DT7T",
      "YGXMN9",
      "YQ79RE",
      "ZLMT3Q"
    ],
    "sessions_before": [
      "SLSM8T"
    ],
    "sessions_in_parallel": [
      "78GQHG",
      "DQFMNM",
      "KFQSZK",
      "QHFKGT",
      "XCN9MD"
    ],
    "slug": "parallel-programming-and-cython",
    "speakers": [
      "DMLAZT"
    ],
    "start": "2025-07-16T10:45:00+02:00",
    "title": "Parallel programming and Cython",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "How to write parallel code in Cython, and how does that change with freethreaded Python.",
    "website_url": "https://ep2025.europython.eu/session/parallel-programming-and-cython",
    "youtube_url": "https://youtube.com/watch?v=7azKz3YP7eA"
  },
  "KFQSZK": {
    "abstract": "Open-source communities are often distributed around the world which presents a challenge to fostering effective communication and consensus building among its members. As the project and community grows, the challenges around facilitating effective communication only become more difficult.\r\n\r\nThankfully, there are a myriad of tools and methodologies available to deal with these challenges. During this talk, I will cover three ways both large and small open source communities can tackle these communication issues: project chats and message boards, regular project meetings and project enhancement proposals.\r\n\r\nTo learn more about these tools in practice, we'll follow a fiction character through his journey of creating and maintaining an open-source project \ud83d\ude3a \ud83d\udc08 \ud83d\ude3a \ud83d\udc08 \ud83d\ude3a",
    "code": "KFQSZK",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-16T11:30:00+02:00",
    "level": "beginner",
    "next_session": "AD3TGW",
    "prev_session": "SLSM8T",
    "resources": null,
    "room": "Terrace 2A",
    "session_type": "Talk (long session)",
    "sessions_after": [
      "AD3TGW",
      "AEAK3B",
      "D8FJPN",
      "L8YSMU",
      "NKTHSJ",
      "P9DT7T",
      "YGXMN9",
      "YQ79RE",
      "ZLMT3Q"
    ],
    "sessions_before": [
      "SLSM8T"
    ],
    "sessions_in_parallel": [
      "78GQHG",
      "DQFMNM",
      "KCJRPT",
      "QHFKGT",
      "XCN9MD"
    ],
    "slug": "let-s-talk-communication-consensus-building-in-open-source",
    "speakers": [
      "HA3SES"
    ],
    "start": "2025-07-16T10:45:00+02:00",
    "title": "Let's talk: Communication & Consensus Building in Open-Source",
    "track": "Community Building, Education, Outreach (2025)",
    "tweet": "Learn about the top three things you can do to facilitate better communication and consensus building for your open source project!",
    "website_url": "https://ep2025.europython.eu/session/let-s-talk-communication-consensus-building-in-open-source",
    "youtube_url": "https://youtube.com/watch?v=O8gqtYFuYyQ"
  },
  "KHZZKV": {
    "abstract": "Do you know what is a sprint?\r\n\r\nThe sprints are activities that will happen during the weekend on a different location.\r\nDo you know if you can join? and how can you join?\r\nDo you know all the projects that are participating?\r\n\r\nLet us answer these questions and a few more in the Sprint orientation.",
    "code": "KHZZKV",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T18:10:00+02:00",
    "level": "beginner",
    "next_session": null,
    "prev_session": "JKZDUY",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Announcements",
    "sessions_after": [],
    "sessions_before": [
      "89LBUT",
      "BVYE9B",
      "DCZCJP",
      "JKZDUY",
      "XND9F9",
      "Y8PVLE"
    ],
    "sessions_in_parallel": [],
    "slug": "sprint-orientation",
    "speakers": [],
    "start": "2025-07-18T17:50:00+02:00",
    "title": "Sprint Orientation \ud83c\udfc3",
    "track": null,
    "tweet": "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?",
    "website_url": "https://ep2025.europython.eu/session/sprint-orientation",
    "youtube_url": "https://youtube.com/watch?v=mdkV-ujgDNs"
  },
  "L8YSMU": {
    "abstract": "The Unified Acceleration Foundation ([UXL](https://uxlfoundation.org/)), under the umbrella of Linux Foundation, is driving an open standard accelerator software ecosystem that includes compilers and performance libraries. This software ecosystem standardizes programming different types of accelerators, such as multi-core CPUs, GPUs, some FPGAs, etc. from different vendors. This poster presents the ongoing work to extend the UXL software ecosystem to Python. The UXL Python ecosystem enables building portable, data-parallel Python extensions using standard Python tooling using `scikit-build`, `meson` and popular extension generators such as `Cython` or `pybind11`. \r\n\r\nWe showcase sample Python extension that can target multiple types of accelerators in the same Python session, including NVIDIA, AMD, and Intel GPUs.",
    "code": "L8YSMU",
    "delivery": "in-person",
    "duration": "60",
    "end": "2025-07-16T13:50:00+02:00",
    "level": "intermediate",
    "next_session": null,
    "prev_session": null,
    "resources": null,
    "room": "Exhibit Hall",
    "session_type": "Poster",
    "sessions_after": [
      "AR7VP8",
      "BXWQYK",
      "PRDDPR",
      "TU3D7R",
      "XEXS3Y",
      "ZNMPFX"
    ],
    "sessions_before": [
      "3ZNVQQ",
      "DKECGU",
      "GMKTFY",
      "GS8GHZ",
      "PBNRMR",
      "ZNVECA"
    ],
    "sessions_in_parallel": [
      "AEAK3B",
      "ZLMT3Q"
    ],
    "slug": "portable-data-parallel-python-extensions-using-oneapi",
    "speakers": [
      "FHFJJF"
    ],
    "start": "2025-07-16T12:50:00+02:00",
    "title": "Portable data-parallel Python extensions using oneAPI",
    "track": "Jupyter and Scientific Python (2025)",
    "tweet": "Showcasing Python extensions that can target AMD GPUs, NVIDIA GPUs, Intel GPUs, as well as multi-core CPUs.",
    "website_url": "https://ep2025.europython.eu/session/portable-data-parallel-python-extensions-using-oneapi",
    "youtube_url": null
  },
  "LDD9KB": {
    "abstract": "The Python Software Foundation (PSF) keeps the wheels turning for the Python ecosystem\u2013but how? With a small but dedicated staff, the PSF\u2019s infrastructure supports billions of requests per month and delivers petabytes of bandwidth. From major services like PyPI, to seasonal spikes like PyCon.org, and even lesser-known essentials like mail hosting, buildbots, and vote counting, the PSF\u2019s infrastructure is a vital yet often invisible backbone of the Python community.\r\n\r\nIn this talk, we\u2019ll dive into the details of what exactly the PSF does, the infrastructure behind Python, the critical roles played by key partners like Fastly and GitHub, and how you can help sustain (and even improve) it.",
    "code": "LDD9KB",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T15:25:00+02:00",
    "level": "beginner",
    "next_session": "9R9R97",
    "prev_session": "LQXQVD",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Talk",
    "sessions_after": [
      "78CWUW",
      "9R9R97",
      "AVUQVA",
      "C8B7QH",
      "M8LTAJ",
      "ZKABJR"
    ],
    "sessions_before": [
      "ABDUU8",
      "AMMYXT",
      "AUAVX7",
      "BTV3ZJ",
      "CLTGAH",
      "LQXQVD",
      "LZPFTY",
      "SRM97H"
    ],
    "sessions_in_parallel": [
      "9FQDQS",
      "MS8ZT7",
      "T9ZYJD",
      "TTA8LT",
      "WDDYM8"
    ],
    "slug": "behind-the-scenes-psf-infrastructure-and-how-you-can-contribute",
    "speakers": [
      "S9XY8N"
    ],
    "start": "2025-07-17T14:55:00+02:00",
    "title": "Behind the Scenes: PSF Infrastructure and How You Can Contribute",
    "track": "Community Building, Education, Outreach (2025)",
    "tweet": "Discover the infrastructure powering Python, from things like PyPI to Python.org, and learn how you can contribute to its success!",
    "website_url": "https://ep2025.europython.eu/session/behind-the-scenes-psf-infrastructure-and-how-you-can-contribute",
    "youtube_url": "https://youtube.com/watch?v=H2UrdiI7xZ4"
  },
  "LHE38S": {
    "abstract": "Have you ever needed to debug a Python application in production without stopping it? While tools like GDB make this straightforward for C/C++, Python developers face unique challenges when attaching debuggers to live processes. This talk introduces PEP 768, a new proposal for Python 3.14 that adds a safe, zero-overhead debugging interface to CPython.\r\n\r\nWe'll explore how the current landscape forces debugging tools to use unsafe methods that can crash interpreters and corrupt memory. Then, we'll detail how PEP 768 solves these problems by introducing a cooperative debugging protocol that works with the interpreter rather than against it.\r\n\r\nYou'll learn why attaching debuggers to Python processes is uniquely challenging, how PEP 768 enables safe debugging through interpreter cooperation, the technical details of the zero-overhead implementation, real-world applications, including live process attachment for pdb and all about the security considerations and safeguards.\r\n\r\nThis talk will be particularly valuable for tool developers, system administrators, and anyone interested in Python internals or debugging techniques. You'll walk away understanding the challenges of live process debugging and how PEP 768 elegantly solves them.",
    "code": "LHE38S",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-17T11:15:00+02:00",
    "level": "advanced",
    "next_session": "SRVL9W",
    "prev_session": "FCGVPR",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Talk (long session)",
    "sessions_after": [
      "ABDUU8",
      "AUAVX7",
      "G3SBMR",
      "GKRLGM",
      "SRVL9W",
      "UCHDYW",
      "UDNNWJ",
      "URXNP8"
    ],
    "sessions_before": [
      "FCGVPR"
    ],
    "sessions_in_parallel": [
      "3VNDYN",
      "BK9JTV",
      "PNSAM3",
      "QLLC8C",
      "T3HHJG"
    ],
    "slug": "a-new-safe-external-debugger-interface-for-cpython",
    "speakers": [
      "NLHSWB"
    ],
    "start": "2025-07-17T10:30:00+02:00",
    "title": "A new safe external debugger interface for CPython",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "PEP 768 brings safe, zero-overhead debugging to Python 3.14. Learn how this new interface lets you debug live Python processes without crashes.",
    "website_url": "https://ep2025.europython.eu/session/a-new-safe-external-debugger-interface-for-cpython",
    "youtube_url": "https://youtube.com/watch?v=w_NEFI_mqlo"
  },
  "LQXQVD": {
    "abstract": "**\u201cMIDI, those cheesy sounds from the 90s?\"** is an actual question some guy asked me at an AI conference one day. What an inspiring question! This talk flips the outdated view of MIDI as retro noise, showcasing it as a powerful format for representing and analyzing music. While some think it\u2019s obsolete, MIDI remains the backbone of modern music production and a very active research topic in machine learning. This talk unpacks MIDI\u2019s structure and demonstrates how Python libraries like `mido`, `pretty_midi`, and `MidiTok` turn it into a tool for research and creativity. From visualization to music generation, practical examples reveal the modern applications of symbolic music.\r\nThe takeaway? Python makes it easier than ever to explore MIDI\u2019s potential and apply it to a wide range of musical and analytical tasks.",
    "code": "LQXQVD",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T14:45:00+02:00",
    "level": "beginner",
    "next_session": "LDD9KB",
    "prev_session": "FGA7ZN",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Talk",
    "sessions_after": [
      "9FQDQS",
      "C8B7QH",
      "LDD9KB",
      "MS8ZT7",
      "T9ZYJD",
      "TTA8LT"
    ],
    "sessions_before": [
      "ABDUU8",
      "AKQNBF",
      "AMMYXT",
      "AUAVX7",
      "CYMWKD",
      "FGA7ZN",
      "G3QBAF",
      "YN3MWG"
    ],
    "sessions_in_parallel": [
      "BTV3ZJ",
      "CLTGAH",
      "LZPFTY",
      "SRM97H",
      "WDDYM8"
    ],
    "slug": "midi-those-cheesy-sounds-from-the-90s-wrong-symbolic-music-vs-python",
    "speakers": [
      "8HVY9P"
    ],
    "start": "2025-07-17T14:15:00+02:00",
    "title": "MIDI, those cheesy sounds from the 90s? Wrong! Symbolic music vs Python",
    "track": "Python for Games, Art, Play and Expression (2025)",
    "tweet": "Cheesy 90s sounds? Think again. Python meets MIDI and unlocks its potential for creativity and musicology.",
    "website_url": "https://ep2025.europython.eu/session/midi-those-cheesy-sounds-from-the-90s-wrong-symbolic-music-vs-python",
    "youtube_url": "https://youtube.com/watch?v=x0mfWfxLCkI"
  },
  "LZPFTY": {
    "abstract": "So you have some audio data, but how do you explore it? What features are there to tease out? We will have a look at some python libraries and how to use them to help us explore audio data. We'll have some demos and examples for you to learn from. The key things to take away will be the libraries and what information you can and can't get from audio data sets. You will be able to identify key python libraries for exploring audio datasets, state what outputs we can get from the python libraries and explain what the outputs tell us about the audio data.",
    "code": "LZPFTY",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T14:45:00+02:00",
    "level": "beginner",
    "next_session": "MS8ZT7",
    "prev_session": "CYMWKD",
    "resources": null,
    "room": "Terrace 2B",
    "session_type": "Talk",
    "sessions_after": [
      "9FQDQS",
      "C8B7QH",
      "LDD9KB",
      "MS8ZT7",
      "T9ZYJD",
      "TTA8LT"
    ],
    "sessions_before": [
      "ABDUU8",
      "AKQNBF",
      "AMMYXT",
      "AUAVX7",
      "CYMWKD",
      "FGA7ZN",
      "G3QBAF",
      "YN3MWG"
    ],
    "sessions_in_parallel": [
      "BTV3ZJ",
      "CLTGAH",
      "LQXQVD",
      "SRM97H",
      "WDDYM8"
    ],
    "slug": "slithering-through-audio-data-with-python",
    "speakers": [
      "BHFSGF"
    ],
    "start": "2025-07-17T14:15:00+02:00",
    "title": "Slithering through Audio Data with Python",
    "track": "Data preparation and visualisation (2025)",
    "tweet": "A quick run through of techniques in Python to explore audio datasets",
    "website_url": "https://ep2025.europython.eu/session/slithering-through-audio-data-with-python",
    "youtube_url": "https://youtube.com/watch?v=xYz-wygG_mU"
  },
  "M7EFWG": {
    "abstract": "**Thank you** for coming to this session!\r\nYou can find the reference materials here: https://decorators.mathspp.com\r\n\r\n---\r\n\r\nThe decorator pattern is a functional pattern that Python developers leverage to write more modular and composable functions.\r\n\r\nThis means that your functions end up being shorter and more focused, which is good since a function should do one thing and it should do it well.\r\n\r\nThen, you can use decorators to introduce extra useful functionality that is not part of the spec of the function.\r\nFor example, you can add caching, profiling, or logging.\r\nMoreover, because you do this with decorators, you can reuse that logic for other functions.\r\n\r\nIn this hands-on tutorial you will learn how to determine when decorators should be used and how to write your own decorators.\r\nThis will help you write code that is easier to reason about and maintain.\r\n\r\nBy the time you are done, you will have implemented a dozen decorators, you will know the full anatomy of a decorator, and you will have explored common useful decorators from the standard library and more.",
    "code": "M7EFWG",
    "delivery": "in-person",
    "duration": "180",
    "end": "2025-07-14T17:00:00+02:00",
    "level": "intermediate",
    "next_session": null,
    "prev_session": "CV3M7B",
    "resources": null,
    "room": "Club E",
    "session_type": "Tutorial",
    "sessions_after": [],
    "sessions_before": [
      "8CDYTD",
      "CFANXB",
      "CV3M7B",
      "GLYC3N",
      "VGNBB8"
    ],
    "sessions_in_parallel": [
      "9EASAW",
      "HNHQWB",
      "MEDYZE",
      "QKHWXB",
      "QKTRVP"
    ],
    "slug": "mastering-decorators-the-cherry-on-top-of-your-functions",
    "speakers": [
      "BLNV7P"
    ],
    "start": "2025-07-14T13:45:00+02:00",
    "title": "Mastering decorators: the cherry on top of your functions",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "Join Rodrigo to learn how to write modular and composable code with the power of decorators!",
    "website_url": "https://ep2025.europython.eu/session/mastering-decorators-the-cherry-on-top-of-your-functions",
    "youtube_url": null
  },
  "M8LTAJ": {
    "abstract": "In 2020, I built my first side project. I \"scratched my own itch\" and started selling it, and since then, the project has earned me over $15,000. However, just a few months after its release, I was so overwhelmed by maintenance work that I considered shutting it down. Instead of killing the goose that lays (small) golden eggs, I decided to automate the project.\r\n\r\nIn this presentation, I will share how I used the fair-code licensed tool n8n to automate interactions with users. By connecting custom Python scripts, a web scraper, and integrating a Telegram bot, I created a system for fast and easy interactions with my project.\r\n\r\nI'll also discuss the highs and lows of building a side project. As a software developer, I always saw a project with recurring revenue as the \"holy grail.\" After putting in the initial effort to build and launch it, I thought I could sit back and watch the money roll in. Not quite. Building the project is just the beginning\u2014you'll also need to handle customers, combat fraud, and manage the challenges that can quickly lead to burnout.\r\n\r\nThis talk is 34% about Python, 33% about lessons learned (the hard way) about having a side project with paying customers, and 33% about setting up free tools to automate things.",
    "code": "M8LTAJ",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T16:20:00+02:00",
    "level": "beginner",
    "next_session": "DCBMJY",
    "prev_session": "9FQDQS",
    "resources": null,
    "room": "South Hall 2A",
    "session_type": "Talk",
    "sessions_after": [
      "DCBMJY"
    ],
    "sessions_before": [
      "9FQDQS",
      "ABDUU8",
      "AUAVX7",
      "LDD9KB",
      "MS8ZT7",
      "T9ZYJD",
      "TTA8LT",
      "WDDYM8"
    ],
    "sessions_in_parallel": [
      "78CWUW",
      "9R9R97",
      "AVUQVA",
      "C8B7QH",
      "ZKABJR"
    ],
    "slug": "automating-myself-out-of-an-unloved-project-with-python-n8n-and-telegram",
    "speakers": [
      "8D7B98"
    ],
    "start": "2025-07-17T15:50:00+02:00",
    "title": "Automating myself out of an unloved project with Python, n8n and Telegram",
    "track": "~ None of these topics (2025)",
    "tweet": "How I used the n8n tool to automate user management for my side project by connecting custom Python scripts, a web scraper, and a Telegram bot.",
    "website_url": "https://ep2025.europython.eu/session/automating-myself-out-of-an-unloved-project-with-python-n8n-and-telegram",
    "youtube_url": "https://youtube.com/watch?v=y0tMMNWwnZ0"
  },
  "MEDYZE": {
    "abstract": "All code needs a user interface. That might be an API, or a web page - but these days, many users will expect an app that they can install on their laptop, or on their phone. But how do you build a native application in Python? And do you need to build a different version of your app the app for every device and operating system you want to support?\r\n\r\nIn this hands-on tutorial, you'll lean how you can use the BeeWare suite of tools to build a graphical user interface for your code, and deploy that code as a desktop app, and as a mobile app - all from a single Python codebase. You'll learn how to integrate third-party libraries like NumPy into your app, and how to customize the appearance of your packaged app. You'll also learn how you can access device hardware (such as cameras an accelerometers) in your app's code. \r\n\r\nNo experience with mobile or desktop app development is required; a basic familiarity with Python is all you need. By the end of the tutorial, you'll have an app running on your own phone, written entirely by you, using nothing but Python.\r\n\r\n------\r\n\r\n**Important instructions for attendees**\r\n\r\nIn order to ensure that you have a smooth tutorial experience, there's a couple of preparatory steps you can do ahead of time. It's *really* important you follow these steps before you arrive. Some of them involve *very* large downloads (tens of gigabytes). The conference WiFi won't be able to support everyone performing those downloads at once; and because of licensing restrictions, we can't distribute the software on site using a USB drive.\r\n\r\nIf you're on Windows, you'll need to install a stable version of Python 3.9 or newer (i.e., no alpha or beta releases). It doesn't matter if you use an install from a python.org installer, a Windows Store install, or a Conda install - as long as you have Python 3.9 installed and on your path. It's also important that it is *NOT* a uv install. I know uv is the \"new hotness\" - however, uv has some limitations when it comes to cross-platform app development, so we'd strongly recommend you obtain Python from another source.\r\n\r\nIf you're on macOS, you'll need to install:\r\n\r\n* A stable version of Python 3.9 or newer (i.e., no alpha or beta releases). As with Windows, a python.org install, a homebrew install, or a Conda install should all be OK; a uv install will be a problem.  \r\n* An up-to-date macOS version. macOS 15 (Sequoia) is preferred; macOS 14 (Sonoma) should work; older versions *may* work, but you're likely to experience some problems. It doesn't matter if you're on x86-64 or Apple Silicon - but your operating system *must* be up to date.\r\n* An up-to-date version of Xcode - 16.4 is the most recent version\r\n* The iOS developer kit for Xcode. This may be installed automatically by Xcode. To check that this is installed, start Xcode, then select Settings from the \"Xcode\" menu, select the \"Components\" tab, and ensure that a recent iOS developer kit (18.5 is the most recent) is listed on the available components. If it says \"8.83GB on disk\" or similar, it's available; if there's a GET button, press that button.\r\n\r\nIf you're on Linux, ensure you have all system updates applied; then visit this URL:\r\n\r\nhttps://beeware.org/t/linux-deps\r\n\r\nand follow the instructions for your chosen platform. On Linux, you *must* use the system-provided Python - if you have Conda or any other source of Python installed (like uv, or deadsnakes on Ubuntu), you'll need to know how to disable that Python for the purposes of the tutorial.\r\n\r\nAgain - it's *really* important that you follow these steps *before* you arrive on site. Hotel and conference WiFi is not friendly to multi-gigabyte downloads at the best of times, and it definitely doesn't play well with a room full of people all doing the same multi-gigabyte download at the same time.",
    "code": "MEDYZE",
    "delivery": "in-person",
    "duration": "180",
    "end": "2025-07-14T17:00:00+02:00",
    "level": "beginner",
    "next_session": null,
    "prev_session": "CFANXB",
    "resources": null,
    "room": "Club C",
    "session_type": "Tutorial",
    "sessions_after": [],
    "sessions_before": [
      "8CDYTD",
      "CFANXB",
      "CV3M7B",
      "GLYC3N",
      "VGNBB8"
    ],
    "sessions_in_parallel": [
      "9EASAW",
      "HNHQWB",
      "M7EFWG",
      "QKHWXB",
      "QKTRVP"
    ],
    "slug": "building-a-cross-platform-app-with-beeware",
    "speakers": [
      "LDFVBH"
    ],
    "start": "2025-07-14T13:45:00+02:00",
    "title": "Building a cross-platform app with BeeWare",
    "track": "~ None of these topics (2025)",
    "tweet": "Ever wanted to write a mobile phone app in Python? In this tutorial, you'll learn how you can!",
    "website_url": "https://ep2025.europython.eu/session/building-a-cross-platform-app-with-beeware",
    "youtube_url": null
  },
  "MPKBEN": {
    "abstract": "OpenTelemetry Python instrumentations may seem indistinguishable from magic: they can be bootstrapped from your installed dependencies, they are able to patch your code without even noticing and most often they work out of the box automatically! Fortunately there\u2019s no magic spell involved and they are mostly the combination of not well known Python features, standing on the shoulders of powerful libraries and work done by the community to improve the reach and the quality of the code. \r\n\r\nIn this talk we\u2019ll see:\r\n\r\n- how opentelemetry-bootstrap is able to install instrumentations for your installed libraries\r\n- how opentelemetry-instrument leverages the sitecustomize module for providing auto-instrumentation\r\n- how entry points can be used for components discovery\r\n- how instrumentations are able to patch third party code\r\n\r\nLet\u2019s dig a bit into the code to see what\u2019s inside the black box.",
    "code": "MPKBEN",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T15:55:00+02:00",
    "level": "intermediate",
    "next_session": "8QQYJW",
    "prev_session": "SCKCAV",
    "resources": null,
    "room": "Terrace 2A",
    "session_type": "Talk",
    "sessions_after": [
      "8QQYJW",
      "9PGYHF",
      "AJHY9H",
      "HMRHJJ",
      "NATVVE"
    ],
    "sessions_before": [
      "AEAK3B",
      "GQGKNS",
      "L8YSMU",
      "MUAVCX",
      "SCKCAV",
      "TU3D7R",
      "TXZMRS",
      "US9HWQ",
      "ZLMT3Q"
    ],
    "sessions_in_parallel": [
      "3BQFTP",
      "3FYGDN",
      "8K38D8",
      "GMWLFT",
      "HAKES9"
    ],
    "slug": "anatomy-of-a-python-opentelemetry-instrumentation",
    "speakers": [
      "7HXJWM"
    ],
    "start": "2025-07-16T15:25:00+02:00",
    "title": "Anatomy of a Python OpenTelemetry instrumentation",
    "track": "DevOps, Cloud, Scalable Infrastructure (2025)",
    "tweet": "OpenTelemetry Python instrumentations may seem indistinguishable from magic: let\u2019s dig a bit into the code to see what\u2019s inside the black box!",
    "website_url": "https://ep2025.europython.eu/session/anatomy-of-a-python-opentelemetry-instrumentation",
    "youtube_url": "https://youtube.com/watch?v=OiStpirRb3E"
  },
  "MS8ZT7": {
    "abstract": "Documentation is an important part of each project, but it does not mean that it\u2019s always up-to-date. Updating documentation continuously is quite a lot of work and not every project has a capacity to invest so much time into it, especially when a project is on a tight release schedule.\r\nThis talk will show you the basics of a good documentation and you will learn about different types of documentation, how to use and when to write them.\r\nAnastasiia will also share her experience on how to introduce documentation as a part of your team\u2019s daily routine and update it continuously.\r\n\r\nFrom this talk you will learn:\r\n- how to start with documentation for your code,\r\n- how to make your documentation to update continuously,\r\n- running Python code inside of your documentation with PyScript,\r\n- documentation best practices.\r\n\r\nAfter this talk you will be able to check out my repo with a few samples of different types of documentation as a part of continuous documentation for a dummy piece of code.",
    "code": "MS8ZT7",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T15:25:00+02:00",
    "level": "intermediate",
    "next_session": "ZKABJR",
    "prev_session": "LZPFTY",
    "resources": null,
    "room": "Terrace 2B",
    "session_type": "Talk",
    "sessions_after": [
      "78CWUW",
      "9R9R97",
      "AVUQVA",
      "C8B7QH",
      "M8LTAJ",
      "ZKABJR"
    ],
    "sessions_before": [
      "ABDUU8",
      "AMMYXT",
      "AUAVX7",
      "BTV3ZJ",
      "CLTGAH",
      "LQXQVD",
      "LZPFTY",
      "SRM97H"
    ],
    "sessions_in_parallel": [
      "9FQDQS",
      "LDD9KB",
      "T9ZYJD",
      "TTA8LT",
      "WDDYM8"
    ],
    "slug": "continuous-documentation-basics-and-advanced-techniques",
    "speakers": [
      "VEGSTM"
    ],
    "start": "2025-07-17T14:55:00+02:00",
    "title": "Continuous Documentation: basics and advanced techniques",
    "track": "Tooling, Packaging, Developer Productivity (2025)",
    "tweet": "Learn best practices of writing documentation and how to update it continuously",
    "website_url": "https://ep2025.europython.eu/session/continuous-documentation-basics-and-advanced-techniques",
    "youtube_url": "https://youtube.com/watch?v=b3ND4sVMhIw"
  },
  "MUAVCX": {
    "abstract": "In this talk, we\u2019ll explore how WebAssembly enables running Python in isolated and scalable environments. We\u2019ll look at practical use cases, from serverless function execution to sandboxed environments, and how tools like `wasmtime`, `wasmer`, and `Pyodide` make this possible. Will also try to cover comparisons to show where WASM shines, and where it still falls short for Python developers today.\r\n\r\nTraditional serverless platforms rely on containers (like Docker), which have overhead in terms of cold start times, resource usage, and security risks. WASM provides a lightweight alternative that allows faster execution, stronger isolation, and cross-platform portability.\r\n\r\nHowever, Python was not designed for WASM. It relies on system calls and C-based extensions, which makes running it in a WASM runtime tricky. This talk will address how to bridge that gap and bringing around Python in the WASM ecosystem.\r\n\r\nOutline:\r\n\r\n1. WASM vs. Containers \u2013 Why WASM is faster, more secure, and better suited for serverless workloads.\r\n2. Python\u2019s Challenges in WASM \u2013 System call dependencies, native extensions, and performance trade-offs.\r\n3. Making Python Work in WASM \u2013 Running Python using Pyodide, wasmtime, and wasmer for lightweight APIs and ML inference.\r\n4. Deploying a FastAPI function in a WASM runtime and benchmarking it against a traditional serverless container.",
    "code": "MUAVCX",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T15:00:00+02:00",
    "level": "beginner",
    "next_session": "3BQFTP",
    "prev_session": "XEXS3Y",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Talk",
    "sessions_after": [
      "3BQFTP",
      "3FYGDN",
      "8K38D8",
      "GMWLFT",
      "HAKES9",
      "MPKBEN"
    ],
    "sessions_before": [
      "AEAK3B",
      "AR7VP8",
      "BXWQYK",
      "L8YSMU",
      "PRDDPR",
      "XEXS3Y",
      "ZLMT3Q",
      "ZNMPFX",
      "ZNVECA"
    ],
    "sessions_in_parallel": [
      "GQGKNS",
      "SCKCAV",
      "TU3D7R",
      "TXZMRS",
      "US9HWQ"
    ],
    "slug": "wasm-and-python-the-future-of-serverless-computing",
    "speakers": [
      "NXPA9Z",
      "RGWRNN"
    ],
    "start": "2025-07-16T14:30:00+02:00",
    "title": "WASM and Python: The Future of Serverless Computing",
    "track": "Web Development, Web APIs, Front-End Integration (2025)",
    "tweet": "Exploring how WASM enables Python in serverless computing, its challenges, tools like Pyodide, and a FastAPI deployment demo using WASM.",
    "website_url": "https://ep2025.europython.eu/session/wasm-and-python-the-future-of-serverless-computing",
    "youtube_url": "https://youtube.com/watch?v=qes-hzyVIGU"
  },
  "MXKGZ9": {
    "abstract": "# Overview\r\n \r\nThe Python Packaging Summit brings together developers, maintainers, tool authors, infrastructure stewards, and community members working across the Python packaging ecosystem. Whether you're building tools like pip, Poetry, or conda, maintaining PyPI, distributing Python apps, or simply relying on packaging workflows, this summit is a space to sync up, collaborate, and tackle shared challenges.\r\n \r\nFollowing the successful full-day event at PyCon US 2025, this half-day version will keep the format focused and interactive. No lengthy talks\u2014just high-value conversations, updates from governance groups, and breakout discussions with actionable outcomes.\r\n \r\n# Who Should Attend\r\n \r\n* Maintainers of packaging tools or infrastructure\r\n* Contributors to standards and specifications (e.g. PyPA, Packaging Council, CEPs)\r\n * Users and integrators of packaging workflows (app developers, downstream distributors)\r\n * Anyone passionate about improving Python\u2019s packaging story\r\n \r\n# Format\r\n \r\n* Welcome & introductions\r\n* Brief updates about the Python Packaging Council & related efforts\r\n* Breakout discussions (or short talks, if speaker slots become available)\r\n* Open roundtables on submitted community topics (unconference)\r\n* Wrap-up & takeaways\r\n \r\nThe agenda will be finalized based on registered participants and proposed discussion topics.\r\n \r\n# Registration & Participation\r\n \r\nParticipation is free with a EuroPython conference ticket (Anyone with a valid in-person EuroPython 2025 ticket can join: Tutorials, Conference-only, or combined), but pre-registration is required. Here's the application form allowing you to express interest and propose discussion topics you'd like to see included.\r\n\r\n* [Application form](https://forms.gle/iRaYMvgksH93nyZr5)\r\n \r\nA Code of Conduct will apply, following EuroPython\u2019s standards.",
    "code": "MXKGZ9",
    "delivery": "in-person",
    "duration": "180",
    "end": "2025-07-15T18:30:00+02:00",
    "level": "intermediate",
    "next_session": null,
    "prev_session": "V3WS7N",
    "resources": null,
    "room": "Club C",
    "session_type": "Summit",
    "sessions_after": [],
    "sessions_before": [
      "7ARRRE",
      "AJPPVG",
      "RMVNGD",
      "RTCZQG",
      "V3WS7N"
    ],
    "sessions_in_parallel": [
      "AYXDME",
      "D9JGFG",
      "E9HV7P",
      "RBTZEC",
      "RWPFPP",
      "VBSZJW"
    ],
    "slug": "packaging-summit",
    "speakers": [
      "K8VZLK",
      "MCLJSN"
    ],
    "start": "2025-07-15T13:45:00+02:00",
    "title": "Packaging Summit",
    "track": "Tooling, Packaging, Developer Productivity (2025)",
    "tweet": "The Python Packaging Summit brings together devs, maintainers, tool authors, infra stewards, and community members working across the Python Ecosystem",
    "website_url": "https://ep2025.europython.eu/session/packaging-summit",
    "youtube_url": null
  },
  "NATVVE": {
    "abstract": "AI development is still software development, just with some uniquely frustrating twists. You don't need to throw out everything you know about engineering, but you do need better patterns for building, debugging, and actually\u00a0*seeing*\u00a0what your AI is doing.\r\n\r\nIn this talk, we'll walk through Pydantic's opinionated approach to building reliable AI applications in Python, combining practical engineering patterns with what we call \"human-seeded evals\", a way to create meaningful evaluation systems that start small and scale up (without needing a PhD in data annotation).\r\n\r\nWe'll show you how to build AI apps with Pydantic AI that don't fall apart in production, create evaluation systems that start with just 5-10 examples and grow from there, and use Pydantic Logfire to actually understand what's happening under the hood. Live demos, real code, and patterns you can use tomorrow.",
    "code": "NATVVE",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T16:35:00+02:00",
    "level": "intermediate",
    "next_session": "XEMLJB",
    "prev_session": "3FYGDN",
    "resources": null,
    "room": "South Hall 2B",
    "session_type": "Sponsored",
    "sessions_after": [
      "XEMLJB"
    ],
    "sessions_before": [
      "3BQFTP",
      "3FYGDN",
      "8K38D8",
      "AEAK3B",
      "GMWLFT",
      "HAKES9",
      "L8YSMU",
      "MPKBEN",
      "ZLMT3Q"
    ],
    "sessions_in_parallel": [
      "8QQYJW",
      "9PGYHF",
      "AJHY9H",
      "HMRHJJ"
    ],
    "slug": "the-pydantic-stack-for-ai-apps",
    "speakers": [
      "3QJLK8",
      "WDJ8JE"
    ],
    "start": "2025-07-16T16:05:00+02:00",
    "title": "The Pydantic stack for AI apps",
    "track": "Data Engineering and MLOps (2025)",
    "tweet": "AI development is still software development\u2014with frustrating twists. We'll show you patterns for building reliable AI apps that don't fall apart, usi",
    "website_url": "https://ep2025.europython.eu/session/the-pydantic-stack-for-ai-apps",
    "youtube_url": "https://youtube.com/watch?v=QwEumQ-G5L4"
  },
  "NHUECR": {
    "abstract": "Configuration. We all need it. We all hate it. And somehow, we all manage to screw it up at least once in every project.\r\n\r\nOver the years, I\u2019ve seen it all \u2013 configs manually created for each environment, dumping a bunch of values in a JSON, manually reading env variables without any type consistency, and whole pipelines failing because of a missing comma. But after a decade of suffering, I finally found the way: Pydantic settings.\r\n\r\nWith Pydantic, we get a configuration that\u2019s:\r\n\u2705 Type-safe (No more guessing if that \"timeout\" value is actually an integer!)\r\n\u2705 Flexible (Works seamlessly across local setups, Docker, Kubernetes, and the cloud)\r\n\u2705 Easy to validate (Stop your app from crashing at runtime because someone put \"True\" instead of True)\r\n\u2705 Perfect for testing (Yes, we\u2019re gonna talk pytest tricks too)\r\n\r\nBUT we will not talk about basic Pydantic settings features. We will deep dive into advanced typing to create a super-strict, no-mistakes-guaranteed config that will last longer than any JavaScript framework. Not only that, you will see how to use it in your project without relying on global state, with some practical, battle-tested rules I\u2019ve learned over the years.\r\n\r\nBy the end of this talk, you'll walk away knowing:\r\n\ud83c\udfaf Why most traditional config approaches suck\r\n\ud83c\udfaf How to build a rock-solid configuration setup with Pydantic\r\n\ud83c\udfaf How to actually test your configs and their usage properly (so they don\u2019t explode in production)\r\n\ud83c\udfaf Some hidden Pydantic tricks you probably haven\u2019t heard of\r\n\r\nIf you think configuration is boring, I dare you to sit through this talk and not feel at least a tiny bit excited about it. Worst case? You'll leave with fewer config-related nightmares. Best case? You'll finally have a configuration setup that just works.\r\n\r\nP.S. These techniques go beyond configuration\u2014you might end up using them for other parts of your project too! \ud83d\ude80",
    "code": "NHUECR",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T12:55:00+02:00",
    "level": "intermediate",
    "next_session": "HTVBWM",
    "prev_session": "K3HRVS",
    "resources": null,
    "room": "Terrace 2A",
    "session_type": "Talk",
    "sessions_after": [
      "DGSNSE",
      "ETFNZG",
      "FJH9YY",
      "HTVBWM",
      "RGVZRU",
      "SKPCNV"
    ],
    "sessions_before": [
      "3STLTA",
      "9QNGYF",
      "BW7ZBU",
      "K3HRVS",
      "URZCXT",
      "YZLKAP"
    ],
    "sessions_in_parallel": [
      "3NB3PX",
      "9D8XMG",
      "HP83AE",
      "HXJ3RP",
      "WB3SJP"
    ],
    "slug": "python-config-that-will-give-you-chills-in-a-good-way-i-promise",
    "speakers": [
      "ZT9R8E"
    ],
    "start": "2025-07-18T12:25:00+02:00",
    "title": "Python Config That Will Give You Chills (In a Good Way, I Promise!)",
    "track": "Tooling, Packaging, Developer Productivity (2025)",
    "tweet": "Tired of config chaos? Let\u2019s dive into super-strict, type-safe Pydantic settings\u2014no global state, no mistakes, just a setup that works! \ud83d\ude80",
    "website_url": "https://ep2025.europython.eu/session/python-config-that-will-give-you-chills-in-a-good-way-i-promise",
    "youtube_url": "https://youtube.com/watch?v=G64eMogJbMY"
  },
  "NKTHSJ": {
    "abstract": "Before an aircraft takes off, it is necessary to take into account an immense amount of variables: weather conditions, distance, take-off weight, fuel required, passengers, cargo\u2026 And so on. Using this data to plan the individual flight and ensuring a safe trip is part of a Flight Dispatcher\u2019s daily duty. To top that, there is a high chance that the flight has several last-minute changes, which increases its difficulty widely. The most common issue is that the prediction of passengers increases significantly minutes before the flight finally takes off. This means more weight and more fuel to lift the plane: a single error and the passengers and cargo will be left on the ground, with all costs and damages involved. Nowadays it is a manual job, even though there are a lot of areas that can be calculated automatically, but with the expansion of data analysis technologies, this matter can be improved greatly.\r\n\r\nThis talk aims to display which tools are currently used in this area, for which purpose, and how said new technologies can make a Flight Dispatcher\u2019s life a lot easier and efficient. A proposal will also be presented to make this a reality with Python. This will work as an application that can process all the data involved of the last couple of months and estimate the number of passengers, taking into account the date, time and destination of that exact flight. The main achievement of this presentation is to show how the daily flight operations work and make it accessible for everyone interested in a fascinating sector that is still growing.",
    "code": "NKTHSJ",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T12:10:00+02:00",
    "level": "beginner",
    "next_session": "GMKTFY",
    "prev_session": "KCJRPT",
    "resources": null,
    "room": "South Hall 2A",
    "session_type": "Talk",
    "sessions_after": [
      "3ZNVQQ",
      "AEAK3B",
      "DKECGU",
      "GMKTFY",
      "GS8GHZ",
      "L8YSMU",
      "PBNRMR",
      "ZLMT3Q",
      "ZNVECA"
    ],
    "sessions_before": [
      "78GQHG",
      "DQFMNM",
      "KCJRPT",
      "KFQSZK",
      "QHFKGT",
      "XCN9MD"
    ],
    "sessions_in_parallel": [
      "AD3TGW",
      "D8FJPN",
      "P9DT7T",
      "YGXMN9",
      "YQ79RE"
    ],
    "slug": "flying-free-data-analysis-with-python-for-aeronautical-planning",
    "speakers": [
      "QYVKS9"
    ],
    "start": "2025-07-16T11:40:00+02:00",
    "title": "Flying Free: data analysis with Python for aeronautical planning",
    "track": "Data preparation and visualisation (2025)",
    "tweet": "How Python can make Flight Operations easier estimating last-minute increases of passengers.",
    "website_url": "https://ep2025.europython.eu/session/flying-free-data-analysis-with-python-for-aeronautical-planning",
    "youtube_url": "https://youtube.com/watch?v=hVFRCgAUA2Q"
  },
  "P9DT7T": {
    "abstract": "Last year at EuroPython, I gave a talk about leading with imposter syndrome, because let\u2019s be honest, most of us feel like imposters when someone calls us \u201cexperts.\u201d This year, I\u2019m diving into something that helped me fight those feelings - mentoring both ways!\r\nIn this talk, we\u2019ll explore how mentoring isn\u2019t just about helping others. It\u2019s also a wonderful way to level up your own skills. Whether you\u2019re guiding someone who thinks print() is magic or learning from someone who uses five monitors and dark mode, mentoring both ways will change how you grow in your journey.",
    "code": "P9DT7T",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T12:10:00+02:00",
    "level": "beginner",
    "next_session": "GS8GHZ",
    "prev_session": "78GQHG",
    "resources": null,
    "room": "Terrace 2B",
    "session_type": "Talk",
    "sessions_after": [
      "3ZNVQQ",
      "AEAK3B",
      "DKECGU",
      "GMKTFY",
      "GS8GHZ",
      "L8YSMU",
      "PBNRMR",
      "ZLMT3Q",
      "ZNVECA"
    ],
    "sessions_before": [
      "78GQHG",
      "DQFMNM",
      "KCJRPT",
      "KFQSZK",
      "QHFKGT",
      "XCN9MD"
    ],
    "sessions_in_parallel": [
      "AD3TGW",
      "D8FJPN",
      "NKTHSJ",
      "YGXMN9",
      "YQ79RE"
    ],
    "slug": "mentoring-both-ways-helping-others-while-leveling-up-yourself",
    "speakers": [
      "VLWVB9"
    ],
    "start": "2025-07-16T11:40:00+02:00",
    "title": "Mentoring Both Ways: Helping Others While Leveling Up Yourself!",
    "track": "Professional Development, Careers, Leadership (2025)",
    "tweet": "The talk is about how to build mentoring relationships. How to be a mentor as well as a mentee? Fun, powerful way to grow while helping others.",
    "website_url": "https://ep2025.europython.eu/session/mentoring-both-ways-helping-others-while-leveling-up-yourself",
    "youtube_url": "https://youtube.com/watch?v=DIt7K2gGdoA"
  },
  "PBNRMR": {
    "abstract": "Python\u2019s performance has always been a hot topic. A new experimental JIT compiler was released in Python 3.13. PyPy, with its tracing JIT, has been around for a long time, and GraalPy, with a more traditional method-based JIT approach, has recently been gaining traction in the community. We will take you on a tour of these JIT compilers, offering a sneak peek under their hoods. We will examine what kind of Python code can benefit most from JIT technology and what kind of code will not benefit at all.\r\n\r\nBeyond the current landscape, we\u2019ll also look into the future of JIT compilation in Python. Have you ever rewritten Python code in C because it was too slow? What if we told you that in the future, this might not be necessary? What if we told you that rewriting to C might actually slow down otherwise performant Python code? How does HPy, the alternative Python C API, fit into this picture? And if that isn't enough, we will also cast some predictions about what may happen when JIT meets free threading\u2014aka no-GIL \ud83d\udca3.",
    "code": "PBNRMR",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T12:50:00+02:00",
    "level": "advanced",
    "next_session": "XEXS3Y",
    "prev_session": "D8FJPN",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Talk",
    "sessions_after": [
      "AEAK3B",
      "AR7VP8",
      "BXWQYK",
      "L8YSMU",
      "PRDDPR",
      "TU3D7R",
      "XEXS3Y",
      "ZLMT3Q",
      "ZNMPFX"
    ],
    "sessions_before": [
      "AD3TGW",
      "D8FJPN",
      "NKTHSJ",
      "P9DT7T",
      "YGXMN9",
      "YQ79RE"
    ],
    "sessions_in_parallel": [
      "3ZNVQQ",
      "DKECGU",
      "GMKTFY",
      "GS8GHZ",
      "ZNVECA"
    ],
    "slug": "a-tour-of-some-python-jit-compilers",
    "speakers": [
      "GDYCUK",
      "KRBSGU"
    ],
    "start": "2025-07-16T12:20:00+02:00",
    "title": "A tour of (some) Python JIT compilers",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "From Python 3.13\u2019s new JIT to PyPy & GraalPy: how they work, what Python code can/cannot be faster with JIT, and what may happen when JIT meets no-GIL",
    "website_url": "https://ep2025.europython.eu/session/a-tour-of-some-python-jit-compilers",
    "youtube_url": "https://youtube.com/watch?v=07hgBrOf2c4"
  },
  "PBRK3K": {
    "abstract": "Asynchronous programming in Python has become an essential tool for developers building high-performance applications. But for many, terms like `async`, `await`, and the event loop seem daunting. This session provides a clear and concise introduction to async Python, breaking down the core concepts and showcasing practical examples of when and how to use it.\r\n\r\nWe\u2019ll start with a simple explanation of Python\u2019s async ecosystem (`asyncio` and beyond), discuss common patterns like `asyncio.gather` and task coordination, and demonstrate real-world use cases, such as making concurrent API calls or handling database queries through step-by-step coding.\r\n\r\nAs a cherry on top, we\u2019ll briefly introduce **Asyncer**, a modern library that simplifies async workflows, for those ready to take async to the next level. By the end, you\u2019ll feel confident to dive into async programming and leverage it effectively in your projects.\r\n\r\nWhether you're a beginner or someone looking to solidify your async knowledge, this talk will leave you feeling empowered to tackle async Python without headaches.",
    "code": "PBRK3K",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-18T10:55:00+02:00",
    "level": "intermediate",
    "next_session": "RRXUA7",
    "prev_session": "YEKGVY",
    "resources": null,
    "room": "South Hall 2A",
    "session_type": "Talk (long session)",
    "sessions_after": [
      "8BM8PG",
      "9QNGYF",
      "PYKCUL",
      "RRXUA7",
      "SVTXGC",
      "T3WXME"
    ],
    "sessions_before": [
      "YEKGVY"
    ],
    "sessions_in_parallel": [
      "FWETBR",
      "HPRDLE",
      "TGUWZC",
      "XFNVQ9",
      "XJ7GMM"
    ],
    "slug": "async-python-concurrency-without-the-headaches",
    "speakers": [
      "GRZLB7",
      "K7BGBG"
    ],
    "start": "2025-07-18T10:10:00+02:00",
    "title": "Async Python: Concurrency Without the Headaches",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "Let's explore async Python! Learn essential concepts and practical patterns to build high-performance apps with confidence. No more async anxiety!",
    "website_url": "https://ep2025.europython.eu/session/async-python-concurrency-without-the-headaches",
    "youtube_url": "https://youtube.com/watch?v=-SLws9PJFkI"
  },
  "PNSAM3": {
    "abstract": "How often do we trust our instincts when optimizing code? In Python, performance frequently defies intuition, leading us to make changes that might slow things down instead of speeding them up. This talk explores surprising truths about Python performance and showcases why measurement tools are essential for finding the real bottlenecks in our code.\r\n\r\nConsider this: is it faster to count even numbers in a list using `len([x for x in arr if x % 2 == 0])` or `sum(1 for x in arr if x % 2 == 0)`? While one might seem more Pythonic or efficient at first glance, the performance results might surprise you. \r\n\r\nThrough an interactive format, we\u2019ll quiz you on performance scenarios using real-world examples. From counting even numbers to rewriting Python code in Rust, each case study will challenge assumptions about what makes code faster.\r\n\r\n**Plan:**\r\n\r\n1. **Introduction:** Why intuition often fails in software performance\r\n2. **Interactive performance case studies:** Real-world examples that will surprise you\r\n    - Counting even numbers\r\n    - String concatenation\r\n    - Pathfinding optimization\r\n    - etc.\r\n3. **Conclusion:** How do we become consistent about optimizations?\r\n\r\nBy the end, you\u2019ll understand why performance measurements matter and leave with practical insights and tools to improve Python performance systematically.",
    "code": "PNSAM3",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-17T11:15:00+02:00",
    "level": "intermediate",
    "next_session": "UDNNWJ",
    "prev_session": "FCGVPR",
    "resources": null,
    "room": "South Hall 2A",
    "session_type": "Talk (long session)",
    "sessions_after": [
      "ABDUU8",
      "AUAVX7",
      "G3SBMR",
      "GKRLGM",
      "SRVL9W",
      "UCHDYW",
      "UDNNWJ",
      "URXNP8"
    ],
    "sessions_before": [
      "FCGVPR"
    ],
    "sessions_in_parallel": [
      "3VNDYN",
      "BK9JTV",
      "LHE38S",
      "QLLC8C",
      "T3HHJG"
    ],
    "slug": "intuition-vs-reality-surprising-truths-in-python-performance",
    "speakers": [
      "8EZUMQ",
      "UF9YY9"
    ],
    "start": "2025-07-17T10:30:00+02:00",
    "title": "Intuition vs. Reality: Surprising Truths in Python Performance",
    "track": "Tooling, Packaging, Developer Productivity (2025)",
    "tweet": "Test your Python performance instincts in our interactive talk\u2014prepare for surprises and real insights on what truly matters",
    "website_url": "https://ep2025.europython.eu/session/intuition-vs-reality-surprising-truths-in-python-performance",
    "youtube_url": "https://youtube.com/watch?v=hJqX5_thxAc"
  },
  "PRDDPR": {
    "abstract": "Ready to bring intelligent agents to life? In this session, we\u2019ll walk through how to build, test, and deploy dynamic AI agents using the power of VS Code. You\u2019ll learn how to refine prompts, evaluate model behavior, connect to live data using MCP servers, and seamlessly deploy your agent\u2014all without leaving your development environment.\r\n \r\nWe\u2019ll showcase how tools like the AI Toolkit, Azure MCP Server, Azure AI Foundry, Azure Developer CLI (azd), and GitHub Copilot for Azure come together to accelerate your workflow. These AI-powered tools enable prompt-driven development, streamline iteration, and help you go from prototype to production faster than ever. Whether you're building your first agent or scaling up, this session will equip you with the skills and tools to do it smarter.",
    "code": "PRDDPR",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T14:20:00+02:00",
    "level": "intermediate",
    "next_session": "TXZMRS",
    "prev_session": "DKECGU",
    "resources": null,
    "room": "North Hall",
    "session_type": "Sponsored",
    "sessions_after": [
      "3FYGDN",
      "GQGKNS",
      "MUAVCX",
      "SCKCAV",
      "TXZMRS",
      "US9HWQ"
    ],
    "sessions_before": [
      "3ZNVQQ",
      "AEAK3B",
      "DKECGU",
      "GMKTFY",
      "GS8GHZ",
      "L8YSMU",
      "PBNRMR",
      "ZLMT3Q",
      "ZNVECA"
    ],
    "sessions_in_parallel": [
      "AR7VP8",
      "BXWQYK",
      "TU3D7R",
      "XEXS3Y",
      "ZNMPFX"
    ],
    "slug": "build-and-deploy-ai-agents-in-vs-code",
    "speakers": [
      "U7LWNU"
    ],
    "start": "2025-07-16T13:50:00+02:00",
    "title": "Build and Deploy AI Agents in VS Code",
    "track": "Tooling, Packaging, Developer Productivity (2025)",
    "tweet": "Want to build an AI agent? Join us in this session to learn how to build, test, and deploy an agent\u2014all from VS Code. Can't wait to see you there! \ud83d\udc4b",
    "website_url": "https://ep2025.europython.eu/session/build-and-deploy-ai-agents-in-vs-code",
    "youtube_url": "https://youtube.com/watch?v=Y4ZVPj4ohE4"
  },
  "PVKVVN": {
    "abstract": "Welcome to the third day of conference!\r\nYesterday was an amazing day, but for sure you don't remember all the things that were mentioned during the opening.\r\nJoin us to get an update and few more announcements. Come by and find out what is going to happen today.",
    "code": "PVKVVN",
    "delivery": "in-person",
    "duration": "15",
    "end": "2025-07-18T09:00:00+02:00",
    "level": "beginner",
    "next_session": "YEKGVY",
    "prev_session": null,
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Announcements",
    "sessions_after": [
      "YEKGVY"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [],
    "slug": "friday-s-morning-announcement",
    "speakers": [],
    "start": "2025-07-18T08:45:00+02:00",
    "title": "Friday's Morning Announcement \u23f0",
    "track": null,
    "tweet": "Yesterday was an amazing day, but for sure you don't remember all the things that were mentioned during the opening.",
    "website_url": "https://ep2025.europython.eu/session/friday-s-morning-announcement",
    "youtube_url": null
  },
  "PYKCUL": {
    "abstract": "Let\u2019s face it, data debt is real, and it is killing your productivity!\r\n\r\nEvery hacky pipeline, missing contract, and \u201cwe\u2019ll fix it later\u201d adds to your data debt \u2014 and like tech debt, the interest is brutal. Broken dashboards, skyrocketing costs, and late-night firefighting are holding your team and data back from scaling and delivering value.\r\n\r\nIn this session, we\u2019ll dive into real-world governance strategies like data contracts, semantic layers, and treating data as a product, showing how they can help cut costs, boost quality, and get ahead of your data problems.\r\n\r\nWhat you\u2019ll learn:\r\n- How to stop data chaos at the source instead of endlessly cleaning up\r\n- Why data contracts and semantic layers are your best friends\r\n- How small governance tweaks can cut costs and improve data quality\r\n- How to make data governance practical for engineers\r\n\r\nPacked with hands-on strategies, this session will help you build smarter \u2014 not firefight.",
    "code": "PYKCUL",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T11:35:00+02:00",
    "level": "intermediate",
    "next_session": "BW7ZBU",
    "prev_session": "XJ7GMM",
    "resources": null,
    "room": "North Hall",
    "session_type": "Talk",
    "sessions_after": [
      "3STLTA",
      "BW7ZBU",
      "HXJ3RP",
      "K3HRVS",
      "URZCXT",
      "YZLKAP"
    ],
    "sessions_before": [
      "FWETBR",
      "HPRDLE",
      "PBRK3K",
      "TGUWZC",
      "XFNVQ9",
      "XJ7GMM"
    ],
    "sessions_in_parallel": [
      "8BM8PG",
      "9QNGYF",
      "RRXUA7",
      "SVTXGC",
      "T3WXME"
    ],
    "slug": "data-governance-101-stop-firefighting-start-engineering",
    "speakers": [
      "YUUPUX"
    ],
    "start": "2025-07-18T11:05:00+02:00",
    "title": "Data Governance 101: Stop Firefighting, Start Engineering",
    "track": "Data Engineering and MLOps (2025)",
    "tweet": "Data debt is killing your productivity! Learn how data contracts, semantic layers & governance can cut costs, boost quality & end the chaos.",
    "website_url": "https://ep2025.europython.eu/session/data-governance-101-stop-firefighting-start-engineering",
    "youtube_url": "https://youtube.com/watch?v=4XftD0iTdsY"
  },
  "PYVBDA": {
    "abstract": "Welcome to EuroPython 2025! Please notice the registration will happen on the Forum Hall Foyer on the 1st Floor.\r\nYou can pick up your badges at any time during the week as long as we are open!\r\nIf you want to avoid the morning rush on Wednesday, come on Monday and Tuesday!",
    "code": "PYVBDA",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T09:00:00+02:00",
    "level": "beginner",
    "next_session": "FCGVPR",
    "prev_session": null,
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Announcements",
    "sessions_after": [
      "FCGVPR"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [],
    "slug": "thursday-registration-welcome-forum-hall-foyer-1st-floor",
    "speakers": [],
    "start": "2025-07-17T08:00:00+02:00",
    "title": "Thursday Registration & Welcome @ Forum Hall Foyer 1st Floor",
    "track": null,
    "tweet": "Thursday Registration & Welcome @ Forum Hall Foyer 1st Floor",
    "website_url": "https://ep2025.europython.eu/session/thursday-registration-welcome-forum-hall-foyer-1st-floor",
    "youtube_url": null
  },
  "QHFKGT": {
    "abstract": "Python is slow: why? Can we make it faster?\r\n\r\nOver the years, various answers to these questions have been given, and\r\nin my opinion, many of those are partial, imperfect, or just plainly wrong.\r\n\r\nThe truth is that there is no simple answer. We will examine some of the most\r\ncommon ones, and explain why they aren\u2019t totally accurate. While doing so, we\r\nwill examine the current status of some of the techniques currently adopted\r\nsuch as static typing, JIT, and AOT compilation, and explain why those alone\r\nare not enough.\r\n\r\nFinally, we will go deeper and try to understand what are the fundamental\r\nissues to overcome, and what could be possible ways of moving forward.",
    "code": "QHFKGT",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-16T11:30:00+02:00",
    "level": "intermediate",
    "next_session": "D8FJPN",
    "prev_session": "SLSM8T",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Talk (long session)",
    "sessions_after": [
      "AD3TGW",
      "AEAK3B",
      "D8FJPN",
      "L8YSMU",
      "NKTHSJ",
      "P9DT7T",
      "YGXMN9",
      "YQ79RE",
      "ZLMT3Q"
    ],
    "sessions_before": [
      "SLSM8T"
    ],
    "sessions_in_parallel": [
      "78GQHG",
      "DQFMNM",
      "KCJRPT",
      "KFQSZK",
      "XCN9MD"
    ],
    "slug": "myths-and-fairy-tales-around-python-performance",
    "speakers": [
      "QMAPYZ"
    ],
    "start": "2025-07-16T10:45:00+02:00",
    "title": "Myths and fairy tales around Python performance",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "\"Think you know why Python is slow? Most common answers are myths. Let\u2019s debunk them and set the record straight!\"",
    "website_url": "https://ep2025.europython.eu/session/myths-and-fairy-tales-around-python-performance",
    "youtube_url": "https://youtube.com/watch?v=X3QbMaEIpt0"
  },
  "QKHWXB": {
    "abstract": "[PyScript](https://pyscript.net/) is a fast growing and vibrant open source platform for Python in the browser. Thanks to PyScript, [CPython](https://python.org/) and [MicroPython](https://micropython.org/) run anywhere a browser runs, which is everywhere!\r\n\r\nThis tutorial, aimed at all levels of experience and delivered by PyScript core developers, will take you through initial steps needed to get PyScript working (hint: it's a single line added to an HTML `<head>` element). Afterwards we'll explore the many APIs, modules, libraries, frameworks and tooling that have coalesced around PyScript since its announcement three years ago. This will involve a guided tour of the potpourri of PyScript: tooling, idiomatic PyScript, core browser capabilities, writing games, data science, artificial intelligence, application frameworks and UI toolkits, and Internet of Things / robotics. We'll finish with an extended opportunity for folks to get their hands dirty with PyScript based explorations and conclude with a friendly and supportive \"show and tell\" session where folks can demo their work and share their experiences.\r\n\r\nBy the end of the tutorial you'll be a confident user of PyScript, understand its expanding ecosystem and know where the community signposts and gatherings can be found. But most of all, it's going to be a lot of stimulating supportive fun.",
    "code": "QKHWXB",
    "delivery": "in-person",
    "duration": "180",
    "end": "2025-07-14T17:00:00+02:00",
    "level": "intermediate",
    "next_session": null,
    "prev_session": "GLYC3N",
    "resources": null,
    "room": "Club H",
    "session_type": "Tutorial",
    "sessions_after": [],
    "sessions_before": [
      "8CDYTD",
      "CFANXB",
      "CV3M7B",
      "GLYC3N",
      "VGNBB8"
    ],
    "sessions_in_parallel": [
      "9EASAW",
      "HNHQWB",
      "M7EFWG",
      "MEDYZE",
      "QKTRVP"
    ],
    "slug": "practical-pyscript",
    "speakers": [
      "WADEN9"
    ],
    "start": "2025-07-14T13:45:00+02:00",
    "title": "Practical PyScript",
    "track": "Web Development, Web APIs, Front-End Integration (2025)",
    "tweet": "PyScript - an open source platform for Python in the browser - is seeing significant growth. Find out why in this tutorial!",
    "website_url": "https://ep2025.europython.eu/session/practical-pyscript",
    "youtube_url": null
  },
  "QKTRVP": {
    "abstract": "Transform your presentations with Python! In this hands-on tutorial, attendees will learn tools, tricks, and libraries to create impactful presentations for public speaking or teaching. Starting with a bad presentation, we'll learn and apply storytelling, create attractive visual artifacts and use technical tools to turn it into a memorable presentation.",
    "code": "QKTRVP",
    "delivery": "in-person",
    "duration": "180",
    "end": "2025-07-14T17:00:00+02:00",
    "level": "beginner",
    "next_session": null,
    "prev_session": "8CDYTD",
    "resources": null,
    "room": "Club D",
    "session_type": "Tutorial",
    "sessions_after": [],
    "sessions_before": [
      "8CDYTD",
      "CFANXB",
      "CV3M7B",
      "GLYC3N",
      "VGNBB8"
    ],
    "sessions_in_parallel": [
      "9EASAW",
      "HNHQWB",
      "M7EFWG",
      "MEDYZE",
      "QKHWXB"
    ],
    "slug": "python-and-data-storytelling-to-create-and-deliver-better-presentations",
    "speakers": [
      "ATT388"
    ],
    "start": "2025-07-14T13:45:00+02:00",
    "title": "Python and Data Storytelling to create and deliver better presentations",
    "track": "Data preparation and visualisation (2025)",
    "tweet": "In this hands-on tutorial, attendees will learn tools, tricks, and libraries to create impactful presentations for public speaking or teaching.",
    "website_url": "https://ep2025.europython.eu/session/python-and-data-storytelling-to-create-and-deliver-better-presentations",
    "youtube_url": null
  },
  "QLLC8C": {
    "abstract": "Playing your musical instrument through a Raspberry Pi programmed in Python to add effects in real time might seem like an unrealistic idea. Yet I've been using such a setup for hundreds of hours of rehearsals and gigs and it works great!\r\n\r\nIt's even relatively easy to do... provided you find the right combination of hardware, OS, libraries and configuration.\r\n\r\nIn this talk, we will show how using python with the powerful `pyo` module allows for quick and easy implementation of real-time audio processing chains, allowing for exploration of various effects like delay, wah, distortion, etc. We will also propose an overview of all the technical details involved in making a self-contained headless unit (hardware and OS selection, system configuration, headless user interaction, ...)\r\n\r\nWhether you want to experiment with your latest idea of the best *delaystortionverb* pedal ever, or process the sound of an unusual instrument, or simply take pride in playing through FX's you designed yourself, this talk will offer you insights and guide you towards achieving your goal.\r\n\r\nEven if music is not (yet) your jam, you\u2019ll see that real-time digital signal processing (DSP) in Python is perfectly feasible, and uncover new paths for experimentation and exploration.\r\n\r\nAnd if you *are* passionate about music, you might enjoy discovering the *harpejji*, a new instrument built like a guitar but played like a keyboard, that was the original use case for the developments presented here.",
    "code": "QLLC8C",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-17T11:15:00+02:00",
    "level": "intermediate",
    "next_session": "GKRLGM",
    "prev_session": "FCGVPR",
    "resources": [
      {
        "description": "Slides",
        "resource": "https://matthieuamiguet.ch/confs/europython25/"
      }
    ],
    "room": "Terrace 2B",
    "session_type": "Talk (long session)",
    "sessions_after": [
      "ABDUU8",
      "AUAVX7",
      "G3SBMR",
      "GKRLGM",
      "SRVL9W",
      "UCHDYW",
      "UDNNWJ",
      "URXNP8"
    ],
    "sessions_before": [
      "FCGVPR"
    ],
    "sessions_in_parallel": [
      "3VNDYN",
      "BK9JTV",
      "LHE38S",
      "PNSAM3",
      "T3HHJG"
    ],
    "slug": "how-to-use-python-on-a-rpi-to-develop-a-custom-headless-guitar-fx-box",
    "speakers": [
      "39LFME"
    ],
    "start": "2025-07-17T10:30:00+02:00",
    "title": "How to use Python on a RPi to develop a custom headless guitar FX box",
    "track": "Python for Games, Art, Play and Expression (2025)",
    "tweet": "All you need to know for developing your own guitar (or other instrument!) FX box on a raspberry pi with python",
    "website_url": "https://ep2025.europython.eu/session/how-to-use-python-on-a-rpi-to-develop-a-custom-headless-guitar-fx-box",
    "youtube_url": "https://youtube.com/watch?v=GH6T6Se6uqA"
  },
  "RBTZEC": {
    "abstract": "Ever wanted to be on the other side of a presentation (behind the microphone, instead of being in the audience)? Is there something you learned that you could share, but don't know how or how to get your idea accepted? Would you like to get out of your comfort zone and improve your career? Do you avoid public speaking due to stage fright?\r\n\r\nIf you answered yes to any of those questions, then you are in the right place! In this presentation, I'm gonna show why you (yes, YOU! The person reading this) not only should and CAN present at EuroPython (or anywhere you'd like).\r\n\r\nI'll start with some background on how I started being a speaker, met EuroPython and how my presentations improved over the years. Will then tackle myths and facts about giving presentations and share lot's of Dos and Don'ts about CFP submissions (both based on personal submissions, and reviewing submissions from others). I'll also talk about what to expect before, during and after a talk or workshop, and most important: getting your hands dirty by crafting your own talk (5 min or 10 minute long) - details in the outline.\r\n\r\nTutorial is open to everyone, and after attending it participants will have greater insights to improve for their next (or first) conference talk, or what they should work on to get it accepted. Useful not only for conferences, but professional improvement at work.",
    "code": "RBTZEC",
    "delivery": "in-person",
    "duration": "180",
    "end": "2025-07-15T17:00:00+02:00",
    "level": "beginner",
    "next_session": null,
    "prev_session": "RTCZQG",
    "resources": null,
    "room": "Club D",
    "session_type": "Tutorial",
    "sessions_after": [
      "VBSZJW"
    ],
    "sessions_before": [
      "7ARRRE",
      "AJPPVG",
      "RMVNGD",
      "RTCZQG",
      "V3WS7N"
    ],
    "sessions_in_parallel": [
      "AYXDME",
      "D9JGFG",
      "E9HV7P",
      "MXKGZ9",
      "RWPFPP"
    ],
    "slug": "speaking-at-europython-or-your-favorite-conference-yes-you-can",
    "speakers": [
      "PK8LSS"
    ],
    "start": "2025-07-15T13:45:00+02:00",
    "title": "Speaking at EuroPython (or your favorite conference)? Yes, you can!",
    "track": "Professional Development, Careers, Leadership (2025)",
    "tweet": "Speaking at EuroPython (or another favorite conference)? Let me help you with that",
    "website_url": "https://ep2025.europython.eu/session/speaking-at-europython-or-your-favorite-conference-yes-you-can",
    "youtube_url": null
  },
  "RGVZRU": {
    "abstract": "Tired of wrestling with clunky string templates or learning yet another templating language just to render some HTML? PyJSX brings the elegance and\r\npower of React-style JSX syntax directly to Python, allowing you to create complex HTML structures using Python's native syntax.\r\n\r\nTogether we'll see how one can build reusable components with standard Python functions, but I'll also showcase some of the nitty-gritty implementation\r\ndetails that make PyJSX possible, including a custom parser and a lot of import magic.\r\n\r\nLove it or hate it, you'll walk away understanding how language extensions such as PyJSX can push Python's boundaries in unexpected ways. Come see how we can blend Python's simplicity with JSX's declarative power - and decide for yourself if this unholy alliance is a brilliant innovation or beautiful madness!",
    "code": "RGVZRU",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T14:25:00+02:00",
    "level": "intermediate",
    "next_session": "DCZCJP",
    "prev_session": "WB3SJP",
    "resources": null,
    "room": "South Hall 2A",
    "session_type": "Talk",
    "sessions_after": [
      "89LBUT",
      "AJ3Z8U",
      "BVYE9B",
      "DCZCJP",
      "XND9F9",
      "Y8PVLE"
    ],
    "sessions_before": [
      "3NB3PX",
      "9D8XMG",
      "HP83AE",
      "HXJ3RP",
      "NHUECR",
      "WB3SJP"
    ],
    "sessions_in_parallel": [
      "DGSNSE",
      "ETFNZG",
      "FJH9YY",
      "HTVBWM",
      "SKPCNV"
    ],
    "slug": "pyjsx-write-jsx-directly-in-python-no-strings-attached",
    "speakers": [
      "YX7F3Y"
    ],
    "start": "2025-07-18T13:55:00+02:00",
    "title": "PyJSX: Write JSX Directly in Python - No Strings Attached!",
    "track": "Web Development, Web APIs, Front-End Integration (2025)",
    "tweet": "PyJSX lets you write JSX directly in Python, simplifying HTML creation. Learn about its features, implementation and tooling!",
    "website_url": "https://ep2025.europython.eu/session/pyjsx-write-jsx-directly-in-python-no-strings-attached",
    "youtube_url": "https://youtube.com/watch?v=FYBQX6n5HOE"
  },
  "RMVNGD": {
    "abstract": "Managing a database and synchronizing service data representation with the database can be tricky. In this workshop, you\u2019ll learn how to use SQLAlchemy, a powerful SQL toolkit, to simplify this task. We\u2019ll cover how to leverage SQLAlchemy\u2019s Object Relational Mapper (ORM) system, and how to use ORM\u2019s asyncio extension in your async services.\r\nParticipants will walk out of this tutorial having learned how to:\r\n- Use SQLAlchemy for database operations in Python, enhancing the readability and maintainability of the code\r\n- Build Python classes (ORMs) that represent the database tables\r\n- Experiment with different relationship-loading techniques to improve querying performance\r\n- Utilize SQLAlchemy\u2019s asyncio extension to interact with databases asynchronously",
    "code": "RMVNGD",
    "delivery": "in-person",
    "duration": "180",
    "end": "2025-07-15T12:45:00+02:00",
    "level": "beginner",
    "next_session": "E9HV7P",
    "prev_session": null,
    "resources": null,
    "room": "Club H",
    "session_type": "Tutorial",
    "sessions_after": [
      "AYXDME",
      "D9JGFG",
      "E9HV7P",
      "MXKGZ9",
      "RBTZEC",
      "VBSZJW"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [
      "7ARRRE",
      "AJPPVG",
      "RTCZQG",
      "RWPFPP",
      "V3WS7N"
    ],
    "slug": "cleaner-code-better-queries-sqlalchemy-orms-and-asyncio",
    "speakers": [
      "GCUUHS",
      "HY78L8"
    ],
    "start": "2025-07-15T09:30:00+02:00",
    "title": "Cleaner Code, Better Queries: SQLAlchemy, ORMs and asyncio",
    "track": "Data preparation and visualisation (2025)",
    "tweet": "Learn to interact with your database using SQLAlchemy, a powerful SQL toolkit; explore its Object Relational Mapper (ORM) system and asyncio extension",
    "website_url": "https://ep2025.europython.eu/session/cleaner-code-better-queries-sqlalchemy-orms-and-asyncio",
    "youtube_url": null
  },
  "RRXUA7": {
    "abstract": "We all know that caching speeds up database queries, but are we aware which caching technique is right for our specific use case? Did we know that even simple, seemingly obvious code can be drastically improved with the right caching strategy? Improper or excessive use of caching can however introduce unnecessary complexity\u2014impacting deployment, performance, scalability, and maintenance.\r\n\r\nIn this talk, we will address these challenges by exploring Python-specific caching strategies and the decision-making process behind transitioning from local in-memory caching to external solutions. We will focus on optimizing applications without over-complicating things.\r\n\r\nStarting with a quick introduction on caching fundamentals, we will dive into simple Pythonic ways to leverage **local in-memory caching** with **functools.lru_cache, cachetools, and joblib**, and explore how **cache warming**, **expiry**, and **cache invalidation** can really improve performance. After comparing multiple **caching strategies**, we will discuss **external caching** and when it\u2019s time to use it. We\u2019ll discuss **Redis** and how to integrate it into a Python app to scale up our caching strategy effectively.\r\n\r\nThrough this talk attendees will:\r\n- Learn how to implement efficient internal caching using Python\u2019s built-in libraries.\r\n- Discover practical techniques for cache invalidation, expiry, and cache warming to ensure optimal cache performance.\r\n- Understand when to scale with Redis (or other external caching solutions) and how to integrate them into our Python projects.\r\n- Be equipped to choose the right caching strategy for different use cases, ensuring faster and more scalable Python applications.",
    "code": "RRXUA7",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T11:35:00+02:00",
    "level": "beginner",
    "next_session": "YZLKAP",
    "prev_session": "PBRK3K",
    "resources": null,
    "room": "South Hall 2A",
    "session_type": "Talk",
    "sessions_after": [
      "3STLTA",
      "BW7ZBU",
      "HXJ3RP",
      "K3HRVS",
      "URZCXT",
      "YZLKAP"
    ],
    "sessions_before": [
      "FWETBR",
      "HPRDLE",
      "PBRK3K",
      "TGUWZC",
      "XFNVQ9",
      "XJ7GMM"
    ],
    "sessions_in_parallel": [
      "8BM8PG",
      "9QNGYF",
      "PYKCUL",
      "SVTXGC",
      "T3WXME"
    ],
    "slug": "efficient-caching-in-python-from-local-to-external-solutions",
    "speakers": [
      "Y7UY33"
    ],
    "start": "2025-07-18T11:05:00+02:00",
    "title": "Efficient Caching in Python: From Local to External Solutions",
    "track": "DevOps, Cloud, Scalable Infrastructure (2025)",
    "tweet": "Learn how to optimise Python apps with effective caching strategies! From in-memory solutions like lru_cache to scaling with Redis, code efficiently!",
    "website_url": "https://ep2025.europython.eu/session/efficient-caching-in-python-from-local-to-external-solutions",
    "youtube_url": "https://youtube.com/watch?v=cuuUTSSVcB8"
  },
  "RTCZQG": {
    "abstract": "The industry is abuzz with the term \"Vertical Agents,\" yet there\u2019s often little clarity on how Agents work. At its core, however, an Agent is simply a workflow designed to automate tasks by using environment tools and enhancing its ability to reason, plan, decompose, and execute a given task.\r\n\r\nIn this talk, we\u2019ll explore the necessity of planning and reasoning in various industries and build a practical use case in the Education domain. The application will answer user questions based on provided academic notes, and if the information isn\u2019t available, it will seamlessly search the web. The decision-making process\u2014whether to use existing knowledge or external sources\u2014is where an Agent's role shines. To define and manage a custom knowledge base, we\u2019ll utilize a Retrieval-Augmented Generation (RAG) approach.\r\n\r\nWith Agentic RAG, the audience will gain clarity on routing concepts, learn how to design an efficient architecture and understand how the Thought-Action-Observation loop enables an Agent to function effectively. As for the technical aspect, we will use LlamaIndex for the routing with its ReAcT Agent and Qdrant as the vector database with Hybrid Search capabilities.",
    "code": "RTCZQG",
    "delivery": "in-person",
    "duration": "180",
    "end": "2025-07-15T12:45:00+02:00",
    "level": "intermediate",
    "next_session": "RBTZEC",
    "prev_session": null,
    "resources": null,
    "room": "Club D",
    "session_type": "Tutorial",
    "sessions_after": [
      "AYXDME",
      "D9JGFG",
      "E9HV7P",
      "MXKGZ9",
      "RBTZEC",
      "VBSZJW"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [
      "7ARRRE",
      "AJPPVG",
      "RMVNGD",
      "RWPFPP",
      "V3WS7N"
    ],
    "slug": "efficient-query-routing-using-agentic-rag",
    "speakers": [
      "XVM8TR"
    ],
    "start": "2025-07-15T09:30:00+02:00",
    "title": "Efficient Query Routing using Agentic RAG",
    "track": "Machine Learning, NLP and CV (2025)",
    "tweet": "Have you ever written a code imitating humans? Its time to build an Agent that interact with multiple data sources, be it PDF, Youtube or web search.",
    "website_url": "https://ep2025.europython.eu/session/efficient-query-routing-using-agentic-rag",
    "youtube_url": null
  },
  "RWPFPP": {
    "abstract": "The WebAssembly Summit aims to bring together maintainers and users of Python with WebAssembly, to discuss the state of this ecosystem, existing challenges, and ongoing work.\r\n\r\n* When: Tuesday, July 15th\r\n* Where: Prague Congress Centre (PCC), Room Club B\r\n* Who can join: Anyone with a valid in-person EuroPython 2025 ticket\r\n\r\n## Agenda\r\n\r\n* 9:00: Meet and greet (many of us won\u2019t know each other) + unconference-y post-it based organisation.\r\n* 9:30: Presentations (30mins each)\r\n* 11:00: Coffee\r\n* 11:15: Presentations\r\n* 12:45: Lunch at the PCC (included)\r\n* 13:45: Unconference-y activities (discussions, hacks, ad hoc tutorials etc\u2026)\r\n* 16:00: Round-up / plenary session for feedback and organising next steps.\r\n* 18:30-ish: Ad hoc dinner plans.\r\n\r\n## Registration\r\n\r\nAnyone with a valid in-person EuroPython 2025 ticket can join (Tutorials, Conference-only, or combined).\r\n\r\nThe event is limited to 40 participants. If there is a topic you would like to present, please indicate it in the form and _fill it in early_. Time slots are of 30min at most (10 min of presentation + 20 min for questions/discussion).\r\n\r\nTo be part of the WASM summit, [register your interest now!](https://forms.gle/aMtRA4D7qJ12i9aB8)\r\n\r\nWe will contact you with more details closer to the event.",
    "code": "RWPFPP",
    "delivery": "in-person",
    "duration": "360",
    "end": "2025-07-15T17:00:00+02:00",
    "level": "intermediate",
    "next_session": "VBSZJW",
    "prev_session": null,
    "resources": null,
    "room": "Club B",
    "session_type": "Summit",
    "sessions_after": [
      "VBSZJW"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [
      "7ARRRE",
      "AJPPVG",
      "AYXDME",
      "D9JGFG",
      "E9HV7P",
      "MXKGZ9",
      "RBTZEC",
      "RMVNGD",
      "RTCZQG",
      "V3WS7N"
    ],
    "slug": "webassembly-summit",
    "speakers": [
      "WADEN9"
    ],
    "start": "2025-07-15T09:30:00+02:00",
    "title": "WebAssembly Summit",
    "track": "Web Development, Web APIs, Front-End Integration (2025)",
    "tweet": "The WebAssembly Summit aims to bring together maintainers and users of Python with WebAssembly, to discuss the state of this ecosystem.",
    "website_url": "https://ep2025.europython.eu/session/webassembly-summit",
    "youtube_url": null
  },
  "SCKCAV": {
    "abstract": "In this lecture, we will explore the evolution of Python monitoring over the years, covering tools and techniques from sys.monitoring to import hooks, highlighting advancements and best practices in keeping your Python code in check.\r\n\r\nAs an engineer attending this talk - you will be able to understand the different monitoring mechanisms used by OpenTelemetry, PDB and other observability and monitoring tools, as well as a practical decision making framework on how to choose the best one to tailor your needs.",
    "code": "SCKCAV",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T15:00:00+02:00",
    "level": "intermediate",
    "next_session": "MPKBEN",
    "prev_session": "ZNMPFX",
    "resources": null,
    "room": "Terrace 2A",
    "session_type": "Talk",
    "sessions_after": [
      "3BQFTP",
      "3FYGDN",
      "8K38D8",
      "GMWLFT",
      "HAKES9",
      "MPKBEN"
    ],
    "sessions_before": [
      "AEAK3B",
      "AR7VP8",
      "BXWQYK",
      "L8YSMU",
      "PRDDPR",
      "XEXS3Y",
      "ZLMT3Q",
      "ZNMPFX",
      "ZNVECA"
    ],
    "sessions_in_parallel": [
      "GQGKNS",
      "MUAVCX",
      "TU3D7R",
      "TXZMRS",
      "US9HWQ"
    ],
    "slug": "the-evolution-of-advanced-python-monitoring",
    "speakers": [
      "QBZD3R"
    ],
    "start": "2025-07-16T14:30:00+02:00",
    "title": "The Evolution of Advanced Python Monitoring",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "Unlock Python's Monitoring Power: Learn Tools Like sys.monitoring & Import Hooks to Debug Faster, Boost Performance, and Simplify Maintenance",
    "website_url": "https://ep2025.europython.eu/session/the-evolution-of-advanced-python-monitoring",
    "youtube_url": "https://youtube.com/watch?v=IJ3n7OeQsLE"
  },
  "SHJXER": {
    "abstract": "What an amazing week!\r\nWe had two tutorials days and three talks days filled with amazing topics, but more important, amazing people!\r\n\r\nOur community is thankful, and want to close the main conference days.\r\nJoin us to get a nice summary of what was EuroPython 2025.",
    "code": "SHJXER",
    "delivery": "in-person",
    "duration": "20",
    "end": "2025-07-18T17:50:00+02:00",
    "level": "beginner",
    "next_session": null,
    "prev_session": "JKZDUY",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Announcements",
    "sessions_after": [],
    "sessions_before": [
      "89LBUT",
      "BVYE9B",
      "DCZCJP",
      "JKZDUY",
      "XND9F9",
      "Y8PVLE"
    ],
    "sessions_in_parallel": [],
    "slug": "conference-closing",
    "speakers": [],
    "start": "2025-07-18T17:30:00+02:00",
    "title": "Conference Closing \ud83d\udc0d",
    "track": null,
    "tweet": "We had two tutorials days and three talks days filled with amazing topics, but more important, amazing people!",
    "website_url": "https://ep2025.europython.eu/session/conference-closing",
    "youtube_url": "https://youtube.com/watch?v=Bh81SeiUV34"
  },
  "SKPCNV": {
    "abstract": "Can you imagine a python project without any return? \r\nIs it overhead or memory saving? Is it complicated or would it reduce complexity? Is it testable or a horror for unittesting?\r\n\r\nThe general idea of this talk is: to effectively use generators in code, we need to change our programming style, and it's not too easy, but it's possible. During my talk I will convert functions and methods from the project into generators, and we will see what is effective, what is not, and where it is still better to use returns.",
    "code": "SKPCNV",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T14:25:00+02:00",
    "level": "intermediate",
    "next_session": "BVYE9B",
    "prev_session": "HP83AE",
    "resources": null,
    "room": "North Hall",
    "session_type": "Talk",
    "sessions_after": [
      "89LBUT",
      "AJ3Z8U",
      "BVYE9B",
      "DCZCJP",
      "XND9F9",
      "Y8PVLE"
    ],
    "sessions_before": [
      "3NB3PX",
      "9D8XMG",
      "HP83AE",
      "HXJ3RP",
      "NHUECR",
      "WB3SJP"
    ],
    "sessions_in_parallel": [
      "DGSNSE",
      "ETFNZG",
      "FJH9YY",
      "HTVBWM",
      "RGVZRU"
    ],
    "slug": "the-art-of-yield",
    "speakers": [
      "TJSMCP"
    ],
    "start": "2025-07-18T13:55:00+02:00",
    "title": "The art of yield",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "How you can use yield instead of return in your lazy project",
    "website_url": "https://ep2025.europython.eu/session/the-art-of-yield",
    "youtube_url": "https://youtube.com/watch?v=z7QlgiNDJIM"
  },
  "SLSM8T": {
    "abstract": "Contributing to Python can feel intimidating, especially when it comes to areas like the interpreter or JIT compilation. A common misconception is that to get started, you need deep expertise in compilers or internals\u2014but that\u2019s not true. Some of the most impactful work in Python isn't about writing complex optimizations; it's about making things work across platforms, maintaining build systems, improving developer experience, and ensuring stability for millions of users.\r\n\r\nIn this talk, I\u2019ll share my journey contributing to Python, from maintaining the JIT build system to maintaining parts of the standard library. I\u2019ll highlight the often-overlooked but critical work that keeps Python running\u2014from dependency management and build automation to API design considerations and documentation. If you've ever thought \u201c I\u2019m not a compiler engineer, can I really contribute to Python?\u201d \u2014this talk is for you. By the end, you'll clearly understand the many ways you can contribute and why Python needs more than just compiler engineers to keep evolving.",
    "code": "SLSM8T",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-16T10:15:00+02:00",
    "level": "beginner",
    "next_session": "QHFKGT",
    "prev_session": null,
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Keynote",
    "sessions_after": [
      "78GQHG",
      "AEAK3B",
      "DQFMNM",
      "KCJRPT",
      "KFQSZK",
      "L8YSMU",
      "QHFKGT",
      "XCN9MD",
      "ZLMT3Q"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [],
    "slug": "you-dont-have-to-be-a-compiler-engineer-to-work-on-python",
    "speakers": [
      "HB3VXK"
    ],
    "start": "2025-07-16T09:30:00+02:00",
    "title": "You don\u2019t have to be a compiler engineer to work on Python",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "You don\u2019t need to be a compiler engineer to contribute to Python! This talk covers overlooked but critical work\u2014triaging, docs, build systems & more.",
    "website_url": "https://ep2025.europython.eu/session/you-dont-have-to-be-a-compiler-engineer-to-work-on-python",
    "youtube_url": "https://youtube.com/watch?v=WGXXxGLBVF4"
  },
  "SRM97H": {
    "abstract": "In this talk, we will explore how Python can be leveraged to analyze and visualize football data for the [Germany national football team](https://en.wikipedia.org/wiki/Germany_national_football_team), managed by [Julian Nagelsmann](https://en.wikipedia.org/wiki/Julian_Nagelsmann), on their journey to winning the 2026 FIFA World Cup. We will dive into the fascinating world of **football analytics**, showcasing how to collect and process match data (e.g., Hudl Statsbomb, Sportmonks, and Understat), including player tracking, event logs, and tactical formations. We'll discover match data to demonstrate how the team's performance reflects Nagelsmann's tactical principles, such as [gegenpressing](https://en.wikipedia.org/wiki/Gegenpressing), offensive play, and compactness. Join us to unlock the power of Python in football analytics!",
    "code": "SRM97H",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T14:45:00+02:00",
    "level": "intermediate",
    "next_session": "9FQDQS",
    "prev_session": "AKQNBF",
    "resources": null,
    "room": "South Hall 2A",
    "session_type": "Talk",
    "sessions_after": [
      "9FQDQS",
      "C8B7QH",
      "LDD9KB",
      "MS8ZT7",
      "T9ZYJD",
      "TTA8LT"
    ],
    "sessions_before": [
      "ABDUU8",
      "AKQNBF",
      "AMMYXT",
      "AUAVX7",
      "CYMWKD",
      "FGA7ZN",
      "G3QBAF",
      "YN3MWG"
    ],
    "sessions_in_parallel": [
      "BTV3ZJ",
      "CLTGAH",
      "LQXQVD",
      "LZPFTY",
      "WDDYM8"
    ],
    "slug": "python-on-the-pitch-how-germany-will-win-world-cup-2026",
    "speakers": [
      "BUHNGB"
    ],
    "start": "2025-07-17T14:15:00+02:00",
    "title": "Python on the Pitch: How Germany will win World Cup 2026",
    "track": "Data preparation and visualisation (2025)",
    "tweet": "Deep dive into the world of football analytics. How to collect and process match data, including player tracking, event logs, tactical formations.",
    "website_url": "https://ep2025.europython.eu/session/python-on-the-pitch-how-germany-will-win-world-cup-2026",
    "youtube_url": "https://youtube.com/watch?v=fUz1dg_krr8"
  },
  "SRVL9W": {
    "abstract": "CPython (the reference implementation of Python) comes with two types of interpreters. One interpreter is based on the traditional switch-case in C, while the other one uses a fancy feature called computed gotos. In this talk, I'll cover how I am implementing a new type of interpreter for CPython --- one based on tail calls. Preliminary benchmarks for this new interpreter suggest up to a 7% performance improvement on Python-heavy programs, with significantly better external debugging experience. This interpreter is already a part of Python 3.14.",
    "code": "SRVL9W",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T11:55:00+02:00",
    "level": "advanced",
    "next_session": "Z9DWTW",
    "prev_session": "LHE38S",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Talk",
    "sessions_after": [
      "8QFLC9",
      "ABDUU8",
      "AUAVX7",
      "CAWMEZ",
      "SXWDSA",
      "WKDYUH",
      "XZNTGY",
      "Z9DWTW"
    ],
    "sessions_before": [
      "3VNDYN",
      "BK9JTV",
      "LHE38S",
      "PNSAM3",
      "QLLC8C",
      "T3HHJG"
    ],
    "sessions_in_parallel": [
      "G3SBMR",
      "GKRLGM",
      "UCHDYW",
      "UDNNWJ",
      "URXNP8"
    ],
    "slug": "building-a-new-tail-calling-interpreter-for-python",
    "speakers": [
      "7Y9DS3"
    ],
    "start": "2025-07-17T11:25:00+02:00",
    "title": "Building a new tail-calling interpreter for Python",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "We're building a new type of interpreter for CPython --- one that promises to be up to 7% faster on newer compilers. Find out more in this talk!",
    "website_url": "https://ep2025.europython.eu/session/building-a-new-tail-calling-interpreter-for-python",
    "youtube_url": "https://youtube.com/watch?v=pUj32SF94Zw"
  },
  "SVTXGC": {
    "abstract": "Microdot is a modern asynchronous open source web framework for Python with a nice feature list including web templates, authentication, user sessions, WebSocket, Server Sent Events (SSE) and a Flask-style test client.\r\n\r\nWhat's interesting is that Microdot is so small that it runs nicely on tiny microcontrollers such as the ESP8266, ESP32 or the Raspberry Pi Pico W, which use MicroPython.\r\n\r\nAs the author of Microdot, in this session I'd like to show off my little project, and also discuss how I was able to build a feature rich web framework that is \"micro\" enough to function on resource constrained MicroPython hardware.",
    "code": "SVTXGC",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T11:35:00+02:00",
    "level": "beginner",
    "next_session": "URZCXT",
    "prev_session": "FWETBR",
    "resources": null,
    "room": "South Hall 2B",
    "session_type": "Talk",
    "sessions_after": [
      "3STLTA",
      "BW7ZBU",
      "HXJ3RP",
      "K3HRVS",
      "URZCXT",
      "YZLKAP"
    ],
    "sessions_before": [
      "FWETBR",
      "HPRDLE",
      "PBRK3K",
      "TGUWZC",
      "XFNVQ9",
      "XJ7GMM"
    ],
    "sessions_in_parallel": [
      "8BM8PG",
      "9QNGYF",
      "PYKCUL",
      "RRXUA7",
      "T3WXME"
    ],
    "slug": "microdot-the-impossibly-small-web-framework-for-python-and-micropython",
    "speakers": [
      "SAHLGJ"
    ],
    "start": "2025-07-18T11:05:00+02:00",
    "title": "Microdot, the impossibly small web framework for Python and MicroPython.",
    "track": "IoT, Embedded Systems, Hardware Integration (2025)",
    "tweet": "In this presentation, Miguel will introduce Microdot, the impossibly small web microframework for Python.",
    "website_url": "https://ep2025.europython.eu/session/microdot-the-impossibly-small-web-framework-for-python-and-micropython",
    "youtube_url": "https://youtube.com/watch?v=YN3Eygwcd2s"
  },
  "SXWDSA": {
    "abstract": "Medical coding is essential for healthcare systems, yet it\u2019s often slow and error-prone due to the complexity of translating clinical notes into standardized codes. This challenge is exacerbated by varying coding guidelines, medical jargon, and frequent changes in standards. In this talk, we\u2019ll explore how AI, powered by Python, is transforming medical coding to improve speed and accuracy.\r\n\r\nWe'll cover Python techniques and libraries - such as LangChain, Transformers, and FastAPI - used to automate the process. You\u2019ll learn about available open-source datasets, pre-trained models, and the role of data annotation in automating medical coding tasks. We\u2019ll also explore whether a purely generative AI approach is sufficient, or if hybrid methods combining traditional coding with AI are more effective. By the end, you\u2019ll understand how Python and AI are improving healthcare workflows, and where the future of AI in medical coding is headed.",
    "code": "SXWDSA",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T12:35:00+02:00",
    "level": "intermediate",
    "next_session": "AKQNBF",
    "prev_session": "UDNNWJ",
    "resources": null,
    "room": "South Hall 2A",
    "session_type": "Talk",
    "sessions_after": [
      "ABDUU8",
      "AKQNBF",
      "AMMYXT",
      "AUAVX7",
      "CYMWKD",
      "FGA7ZN",
      "G3QBAF",
      "YN3MWG"
    ],
    "sessions_before": [
      "G3SBMR",
      "GKRLGM",
      "SRVL9W",
      "UCHDYW",
      "UDNNWJ",
      "URXNP8"
    ],
    "sessions_in_parallel": [
      "8QFLC9",
      "CAWMEZ",
      "WKDYUH",
      "XZNTGY",
      "Z9DWTW"
    ],
    "slug": "from-notes-to-codes-python-driven-ai-for-efficient-medical-coding",
    "speakers": [
      "LMVFYV"
    ],
    "start": "2025-07-17T12:05:00+02:00",
    "title": "From Notes to Codes - Python-Driven AI for Efficient Medical Coding",
    "track": "Machine Learning: Research & Applications (2025)",
    "tweet": "Learn how a Python-powered AI pipeline, using tools like LangChain and Transformers, automates medical coding to enhance healthcare workflows.",
    "website_url": "https://ep2025.europython.eu/session/from-notes-to-codes-python-driven-ai-for-efficient-medical-coding",
    "youtube_url": "https://youtube.com/watch?v=dXJGbyqpY6A"
  },
  "T3HHJG": {
    "abstract": "Apache Arrow was designed with multiple goals in mind, one of the most important being the ability to exchange data between systems efficiently. In this talk we will explore what that really means and what has been the evolution of the Arrow project around the data exchange area during the years.\r\n\r\nWe will cover how to share Arrow data in process leveraging the use of the C Data interface, C Device Interface and C Stream Interface along with the Arrow PyCapsule Interface. We will show examples on how popular dataframe libraries (pandas, polars) use those exchange methods.\r\n\r\nWe will also cover an overview of the Inter Process Communication Protocol used to share Arrow data between processes and how to build your own network exchange leveraging the use of the Arrow format with Flight RPC. These overviews will be accompanied by Python examples.\r\n\r\nBy the end of the session, attendees will have a clear understanding of how pyarrow can be utilized to exchange data faster within and between their data applications. We will provide examples on how and will share our tips on when to use them.",
    "code": "T3HHJG",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-17T11:15:00+02:00",
    "level": "advanced",
    "next_session": "G3SBMR",
    "prev_session": "FCGVPR",
    "resources": null,
    "room": "North Hall",
    "session_type": "Talk (long session)",
    "sessions_after": [
      "ABDUU8",
      "AUAVX7",
      "G3SBMR",
      "GKRLGM",
      "SRVL9W",
      "UCHDYW",
      "UDNNWJ",
      "URXNP8"
    ],
    "sessions_before": [
      "FCGVPR"
    ],
    "sessions_in_parallel": [
      "3VNDYN",
      "BK9JTV",
      "LHE38S",
      "PNSAM3",
      "QLLC8C"
    ],
    "slug": "sharing-is-caring-efficient-data-exchange-with-pyarrow",
    "speakers": [
      "EMFTT7",
      "ND3KXG",
      "ZDP7FM"
    ],
    "start": "2025-07-17T10:30:00+02:00",
    "title": "Sharing is caring: Efficient Data Exchange with pyarrow",
    "track": "Data Engineering and MLOps (2025)",
    "tweet": "Learn about interfaces and protocols to exchange Arrow data efficiently",
    "website_url": "https://ep2025.europython.eu/session/sharing-is-caring-efficient-data-exchange-with-pyarrow",
    "youtube_url": "https://youtube.com/watch?v=EG7q_6OmrK4"
  },
  "T3WXME": {
    "abstract": "Load balancers are widespread nowadays because most software systems are web centric and service oriented. However, they\u2019re extremely complex to build, because they must be very performant and use sophisticated algorithms to route traffic. Until recently, you couldn\u2019t use Python to build one, because even though it would make the code simpler, the GIL prevented multiple threads from executing Python at the same time.\r\nNow that you can, what are the practical implications in your day to day work?\r\nIn this talk, we\u2019re going to live code a load balancer in Python. This will help us understand the pros and cons of using modules such as asyncio, threading and concurrent.futures, and what changes when we remove the GIL from the way.\r\nWhether you\u2019re building systems that demand concurrency (such as AI models or DevOps pipelines), or you\u2019re just curious about how tools like gUnicorn or Starlette work under the hood, you\u2019ll come away with practical insights on how to start off the NoGIL era on the right foot.",
    "code": "T3WXME",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T11:35:00+02:00",
    "level": "advanced",
    "next_session": "3STLTA",
    "prev_session": "TGUWZC",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Talk",
    "sessions_after": [
      "3STLTA",
      "BW7ZBU",
      "HXJ3RP",
      "K3HRVS",
      "URZCXT",
      "YZLKAP"
    ],
    "sessions_before": [
      "FWETBR",
      "HPRDLE",
      "PBRK3K",
      "TGUWZC",
      "XFNVQ9",
      "XJ7GMM"
    ],
    "sessions_in_parallel": [
      "8BM8PG",
      "9QNGYF",
      "PYKCUL",
      "RRXUA7",
      "SVTXGC"
    ],
    "slug": "building-a-nogil-load-balancer-in-python-in-30-minutes",
    "speakers": [
      "EU8HKQ"
    ],
    "start": "2025-07-18T11:05:00+02:00",
    "title": "Building a NoGIL Load Balancer in Python in 30 minutes",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "What is the most amazing thing you can build without the GIL in 30 minutes? A load balancer",
    "website_url": "https://ep2025.europython.eu/session/building-a-nogil-load-balancer-in-python-in-30-minutes",
    "youtube_url": "https://youtube.com/watch?v=JsFznbCnZhE"
  },
  "T9ZYJD": {
    "abstract": "Often our UI tests are failing because they are flaky and slow, or because the underlying server is slow. That makes the test suite very unstable, and makes it harder to find real issues. In an Open Source world this problem is even worse when your tests run as part of a gating job, because it blocks patches from being merged. In this talk we will explore a few techniques that make our test suite more stable and faster, together with specific code examples using PyTest and Selenium.\r\n\r\nAttendees will get a chance to learn about:\r\n1. The difference between unit tests and integration tests.\r\n2. Using API calls to perform test setup and verification.\r\n3. Limiting the scope of a test by Pytest mocking.\r\n4. Advanced features like dependency injection and parametrization.\r\n\r\nThis session is ideal for anyone who needs to make their user interface test suite more stable or wants to get started writing tests for their web application.",
    "code": "T9ZYJD",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T15:25:00+02:00",
    "level": "intermediate",
    "next_session": "AVUQVA",
    "prev_session": "BTV3ZJ",
    "resources": null,
    "room": "Terrace 2A",
    "session_type": "Talk",
    "sessions_after": [
      "78CWUW",
      "9R9R97",
      "AVUQVA",
      "C8B7QH",
      "M8LTAJ",
      "ZKABJR"
    ],
    "sessions_before": [
      "ABDUU8",
      "AMMYXT",
      "AUAVX7",
      "BTV3ZJ",
      "CLTGAH",
      "LQXQVD",
      "LZPFTY",
      "SRM97H"
    ],
    "sessions_in_parallel": [
      "9FQDQS",
      "LDD9KB",
      "MS8ZT7",
      "TTA8LT",
      "WDDYM8"
    ],
    "slug": "good-practices-for-testing-web-user-interfaces",
    "speakers": [
      "897KKS",
      "CPYQCK"
    ],
    "start": "2025-07-17T14:55:00+02:00",
    "title": "Good Practices for Testing Web User Interfaces",
    "track": "Testing, Quality Assurance, Security (2025)",
    "tweet": "Tired of flaky and unstable test suite? Learn how to make your test suite better and more reliable with improved techniques!",
    "website_url": "https://ep2025.europython.eu/session/good-practices-for-testing-web-user-interfaces",
    "youtube_url": "https://youtube.com/watch?v=Fl_HUpP9658"
  },
  "TGUWZC": {
    "abstract": "Rewriting interpreted language code with a compiled language version will end up in incredible\r\nperformance improvement, but is that enough? For many people it is, but for others, and probably\r\nyou, that's not a good reason to change your tech stack and paradigm.\r\n\r\nWith the latest developments and adoption of Rust extension in the Python world, might makes you\r\nwonder: is this it? The answer is \"Now yes, but in the future probably no\".\r\nAdding more languages to our ecosystem is a very good strategy to keep Python relevant, but at the\r\nsame time we need to remember that playing that game will make us evolve and adapt.\r\n\r\nIn this talk, you will discover some of the base reasoning of the success of Rust in the Python\r\necosystem compared to C, but at the same time you will explore other languages that brings different\r\nimprovements like Zig, modern C++, and also experimental languages like Circle and Carbon.\r\n\r\nBy the creation of extensions with different languages, you will be able to judge which option is\r\nthe one that fit your needs, and that you believe can play an important role in the future of the\r\nlanguage.\r\n\r\nA basic understanding of Python extensions is required in order to fully grasp the content\r\nof the talk, but beginners will be able to follow the main idea of the presentation.",
    "code": "TGUWZC",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-18T10:55:00+02:00",
    "level": "advanced",
    "next_session": "T3WXME",
    "prev_session": "YEKGVY",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Talk (long session)",
    "sessions_after": [
      "8BM8PG",
      "9QNGYF",
      "PYKCUL",
      "RRXUA7",
      "SVTXGC",
      "T3WXME"
    ],
    "sessions_before": [
      "YEKGVY"
    ],
    "sessions_in_parallel": [
      "FWETBR",
      "HPRDLE",
      "PBRK3K",
      "XFNVQ9",
      "XJ7GMM"
    ],
    "slug": "what-comes-after-rust-in-the-python-ecosystem",
    "speakers": [
      "8VVS8L"
    ],
    "start": "2025-07-18T10:10:00+02:00",
    "title": "What comes after Rust in the Python ecosystem?",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "What comes after Rust in the Python ecosystem? Let's envision the Python of the future!",
    "website_url": "https://ep2025.europython.eu/session/what-comes-after-rust-in-the-python-ecosystem",
    "youtube_url": "https://youtube.com/watch?v=yJPX7n0tMfo"
  },
  "TTA8LT": {
    "abstract": "In disaster scenarios, reliable communication is crucial. A solution for offline disaster relief coordination is presented, using OpenStreetMap vector maps hosted with FastAPI on a Raspberry Pi, which provides a WiFi hotspot. Street and location names are extracted from OpenStreetMap data to enable location searches. The system can be extended by using a LORAWAN gateway to receive positional information from disaster relief workers.\r\n\r\nAll the knowledge required to host such a map server will be provided.",
    "code": "TTA8LT",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T15:25:00+02:00",
    "level": "intermediate",
    "next_session": "78CWUW",
    "prev_session": "CLTGAH",
    "resources": null,
    "room": "North Hall",
    "session_type": "Talk",
    "sessions_after": [
      "78CWUW",
      "9R9R97",
      "AVUQVA",
      "C8B7QH",
      "M8LTAJ",
      "ZKABJR"
    ],
    "sessions_before": [
      "ABDUU8",
      "AMMYXT",
      "AUAVX7",
      "BTV3ZJ",
      "CLTGAH",
      "LQXQVD",
      "LZPFTY",
      "SRM97H"
    ],
    "sessions_in_parallel": [
      "9FQDQS",
      "LDD9KB",
      "MS8ZT7",
      "T9ZYJD",
      "WDDYM8"
    ],
    "slug": "offline-disaster-relief-coordination-with-openstreetmap-and-fastapi",
    "speakers": [
      "AQGLHP"
    ],
    "start": "2025-07-17T14:55:00+02:00",
    "title": "Offline Disaster Relief Coordination with OpenStreetMap and FastAPI",
    "track": "IoT, Embedded Systems, Hardware Integration (2025)",
    "tweet": "Discover how to coordinate disaster relief offline using OpenStreetMap and FastAPI on a Raspberry Pi, with LORAWAN integration for sensor data.",
    "website_url": "https://ep2025.europython.eu/session/offline-disaster-relief-coordination-with-openstreetmap-and-fastapi",
    "youtube_url": "https://youtube.com/watch?v=arHBSQz0-Fg"
  },
  "TU3D7R": {
    "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. \r\n\r\nBeyond hearing insightful perspectives from our panelists, you'll have the opportunity to submit your own questions throughout the session. You\u2019ll also have the chance to walk away with prizes, through answering quiz questions based on topics discussed in the session. Whether you'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.",
    "code": "TU3D7R",
    "delivery": "in-person",
    "duration": "60",
    "end": "2025-07-16T14:50:00+02:00",
    "level": "intermediate",
    "next_session": "3FYGDN",
    "prev_session": "ZNVECA",
    "resources": null,
    "room": "South Hall 2B",
    "session_type": "Panel",
    "sessions_after": [
      "3BQFTP",
      "3FYGDN",
      "8K38D8",
      "GMWLFT",
      "HAKES9",
      "MPKBEN"
    ],
    "sessions_before": [
      "3ZNVQQ",
      "AEAK3B",
      "DKECGU",
      "GMKTFY",
      "GS8GHZ",
      "L8YSMU",
      "PBNRMR",
      "ZLMT3Q",
      "ZNVECA"
    ],
    "sessions_in_parallel": [
      "AR7VP8",
      "BXWQYK",
      "GQGKNS",
      "MUAVCX",
      "PRDDPR",
      "SCKCAV",
      "TXZMRS",
      "US9HWQ",
      "XEXS3Y",
      "ZNMPFX"
    ],
    "slug": "ai-discussion-panel",
    "speakers": [
      "3QJLK8",
      "LFUZNB",
      "LMVFYV",
      "UMPJBY"
    ],
    "start": "2025-07-16T13:50:00+02:00",
    "title": "AI Discussion Panel",
    "track": "Machine Learning, NLP and CV (2025)",
    "tweet": "Join us for this fascinating discussion of the impact of AI on privacy, the environment, economics and the arts.",
    "website_url": "https://ep2025.europython.eu/session/ai-discussion-panel",
    "youtube_url": "https://youtube.com/watch?v=oAHBYt6eOmA"
  },
  "TXZMRS": {
    "abstract": "Once upon a type in Pythonland, we would say:\r\nIf it looks like a duck, swims like a duck, and quacks like a duck, then it probably is a duck.\"\r\n\r\nThen the type-checking team started scoring multiple goals.\r\nIs type-checking useful in Python? What about existing codebases? Recommendations and pitfalls.\r\n\r\nIn this talk, we'll take a look at:\r\n\r\n*    why should you typecheck your code? what are the benefits and drawbacks?\r\n *   how can you do that without stopping development, but without chasing an ever-changing target?\r\n *   what are the pitfalls from type checking - can it provide a false sense of security?\r\n *   How to interact with third party libraries?\r\n *   Is static type-checking enough, or do we need to runtime check as well?\r\n *   Is the type checker always right?\r\n\r\n\r\nThis is a case study about how it was done (and is still being done) on a real, large production codebase at Aiven. This is not a theoretical talk - I'll try explaining what are the major pitfalls, what problems were solved and what problems were introduced by type checking. \r\n\r\nAnd I'll finally answer The Big Question: would you do that again?",
    "code": "TXZMRS",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T15:00:00+02:00",
    "level": "intermediate",
    "next_session": "GMWLFT",
    "prev_session": "PRDDPR",
    "resources": null,
    "room": "North Hall",
    "session_type": "Talk",
    "sessions_after": [
      "3BQFTP",
      "3FYGDN",
      "8K38D8",
      "GMWLFT",
      "HAKES9",
      "MPKBEN"
    ],
    "sessions_before": [
      "AEAK3B",
      "AR7VP8",
      "BXWQYK",
      "L8YSMU",
      "PRDDPR",
      "XEXS3Y",
      "ZLMT3Q",
      "ZNMPFX",
      "ZNVECA"
    ],
    "sessions_in_parallel": [
      "GQGKNS",
      "MUAVCX",
      "SCKCAV",
      "TU3D7R",
      "US9HWQ"
    ],
    "slug": "typing-at-scale-statically-type-checking-a-large-codebase",
    "speakers": [
      "WWZ3SR"
    ],
    "start": "2025-07-16T14:30:00+02:00",
    "title": "Typing at scale: statically type-checking a large codebase",
    "track": "Tooling, Packaging, Developer Productivity (2025)",
    "tweet": "If it looks like a duck, swims like a duck, and quacks like a duck, then it probably is a duck. What happens if we try to entirely drop the probably?",
    "website_url": "https://ep2025.europython.eu/session/typing-at-scale-statically-type-checking-a-large-codebase",
    "youtube_url": "https://youtube.com/watch?v=EiI7GioWKto"
  },
  "UCHDYW": {
    "abstract": "You have written plenty of tests. Your test code is well-organized, runs regularly, and the reporting is top-notch. But how do you know that your tests are doing their job and finding bugs before your users do? In this talk, we will have a look at test quality in Python projects. What are good tests for Python codebases? Where should we focus our testing effort? How do we make our tests maintainable? What role should coverage play in looking at a test codebase? Can code mutation help us gain insight into the quality of our test base? After many years of Python and software quality work, I want to give you some additional ideas about good tests in Python that you can hopefully apply to your own tests.",
    "code": "UCHDYW",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T11:55:00+02:00",
    "level": "intermediate",
    "next_session": "WKDYUH",
    "prev_session": "3VNDYN",
    "resources": null,
    "room": "Terrace 2A",
    "session_type": "Talk",
    "sessions_after": [
      "8QFLC9",
      "ABDUU8",
      "AUAVX7",
      "CAWMEZ",
      "SXWDSA",
      "WKDYUH",
      "XZNTGY",
      "Z9DWTW"
    ],
    "sessions_before": [
      "3VNDYN",
      "BK9JTV",
      "LHE38S",
      "PNSAM3",
      "QLLC8C",
      "T3HHJG"
    ],
    "sessions_in_parallel": [
      "G3SBMR",
      "GKRLGM",
      "SRVL9W",
      "UDNNWJ",
      "URXNP8"
    ],
    "slug": "testing-the-tests-assess-and-improve-your-python-testing-code",
    "speakers": [
      "FWB3GY"
    ],
    "start": "2025-07-17T11:25:00+02:00",
    "title": "Testing the Tests - Assess and Improve Your Python Testing Code",
    "track": "Testing, Quality Assurance, Security (2025)",
    "tweet": "See how to test tests and mutate your code to find more bugs",
    "website_url": "https://ep2025.europython.eu/session/testing-the-tests-assess-and-improve-your-python-testing-code",
    "youtube_url": "https://youtube.com/watch?v=lw0ccRcL18M"
  },
  "UDNNWJ": {
    "abstract": "4% of newborns carry a genetic disease. The use of preimplantation and prenatal diagnostic methods is essential to know how to manage and control these pregnancies. This is possible today thanks to the rise of genetic sequencing technologies, but their output is not so easy to manage. Here is where the use of programming can help us, automating and facilitating the whole analysis process. That is exactly what we will do in this talk: using Python to elucidate, as an example, the presence of mutations associated with epidermolysis bullosa (also known as 'butterfly skin') in the DNA of an embryo or fetus from a sample of the pregnant person. We will also review essential issues of regulation and quality control of these clinical tools, as well as other health applications and responsibilities associated with these technologies (so as not to fall, for example, into eugenics).",
    "code": "UDNNWJ",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T11:55:00+02:00",
    "level": "beginner",
    "next_session": "SXWDSA",
    "prev_session": "PNSAM3",
    "resources": null,
    "room": "South Hall 2A",
    "session_type": "Talk",
    "sessions_after": [
      "8QFLC9",
      "ABDUU8",
      "AUAVX7",
      "CAWMEZ",
      "SXWDSA",
      "WKDYUH",
      "XZNTGY",
      "Z9DWTW"
    ],
    "sessions_before": [
      "3VNDYN",
      "BK9JTV",
      "LHE38S",
      "PNSAM3",
      "QLLC8C",
      "T3HHJG"
    ],
    "sessions_in_parallel": [
      "G3SBMR",
      "GKRLGM",
      "SRVL9W",
      "UCHDYW",
      "URXNP8"
    ],
    "slug": "prenatal-diagnosis-of-genetic-diseases-using-python",
    "speakers": [
      "CV8T7R",
      "FGZGRD"
    ],
    "start": "2025-07-17T11:25:00+02:00",
    "title": "Prenatal diagnosis of genetic diseases using Python",
    "track": "~ None of these topics (2025)",
    "tweet": "Did you know that 4% of newborns carry a genetic disease? And did you know that we can use Python to diagnose them? Join us to discover how!",
    "website_url": "https://ep2025.europython.eu/session/prenatal-diagnosis-of-genetic-diseases-using-python",
    "youtube_url": "https://youtube.com/watch?v=7Ma90wCN7J0"
  },
  "URXNP8": {
    "abstract": "Networks are all around us, shaping phenomena like epidemics, communication, and transportation. In this talk, we will explore how real-world problems can be analyzed and solved using graph-based methods and simple algorithms. Drawing from examples such as trade networks, corporate structures, and historical data, I will demonstrate how network analysis reveals insights that would otherwise remain hidden.\r\nUsing NetworKit (and NetworkX), we will analyze real-world datasets to answer questions like:\r\n1. What does the core-periphery model reveal about trade networks?\r\n2. Can we rank painters by skill using network models?\r\n3. How do corporate hierarchies differ from interaction hierarchies within organizations?\r\n\r\nThroughout the talk, I will introduce key concepts in network analysis and showcase Python as a tool for research. Attendees will have access to all datasets and code, enabling them to replicate the analyses and apply these techniques to their own projects. This session is designed for Python enthusiasts with an interest in data science, networks, and/or applied research.",
    "code": "URXNP8",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T11:55:00+02:00",
    "level": "beginner",
    "next_session": "CAWMEZ",
    "prev_session": "BK9JTV",
    "resources": null,
    "room": "South Hall 2B",
    "session_type": "Talk",
    "sessions_after": [
      "8QFLC9",
      "ABDUU8",
      "AUAVX7",
      "CAWMEZ",
      "SXWDSA",
      "WKDYUH",
      "XZNTGY",
      "Z9DWTW"
    ],
    "sessions_before": [
      "3VNDYN",
      "BK9JTV",
      "LHE38S",
      "PNSAM3",
      "QLLC8C",
      "T3HHJG"
    ],
    "sessions_in_parallel": [
      "G3SBMR",
      "GKRLGM",
      "SRVL9W",
      "UCHDYW",
      "UDNNWJ"
    ],
    "slug": "what-network-analysis-tells-us-about-trades-hierarchies-and-the-world",
    "speakers": [
      "ACG8DX"
    ],
    "start": "2025-07-17T11:25:00+02:00",
    "title": "What Network Analysis tells us about Trades, Hierarchies, and the World?",
    "track": "Machine Learning: Research & Applications (2025)",
    "tweet": "How can network analysis help us answer questions about our daily lives? From trade networks to corporate hierarchies, find it all!",
    "website_url": "https://ep2025.europython.eu/session/what-network-analysis-tells-us-about-trades-hierarchies-and-the-world",
    "youtube_url": "https://youtube.com/watch?v=L3piO5XcHmQ"
  },
  "URZCXT": {
    "abstract": "**Pitch**\r\n\r\nEver wanted to know how the displays in your smart watch work and how you can create such devices yourself ? Using just your Python skills and a bit of USB cabling ? MicroPython and LVGL make this easy and this talk will show you how.\r\n\r\n**Abstract**\r\n\r\nThe world of embedded hardware devices is often considered difficult and having a steep learning curve. MicroPython has changed this for the better and now you no longer have to drop to C to implement your ideas on microcontrollers and dedicated hardware.\r\n\r\nIn this talk, we will explore the world of visualizing data using a nifty device based on the ESP32 microcontroller and a TFT display - better known under the name *Cheap Yellow Display (CYD)* - with the aim of creating a hardware conference talk timer.\r\n\r\nThe implementation is done in MicroPython and uses the high  quality open source embedded graphics library LVGL, the basis of many commercial devices with displays and smart watches, for beautiful graphics.\r\n\r\nI'll show the tooling needed to get started, useful resources, demo the application and discuss some of the pitfalls found along the way.\r\n\r\n**Resources**\r\n\r\n- [MicroPython](https://micropython.org/)\r\n- [LVGL](https://lvgl.io/)\r\n- [LV MicroPython](https://github.com/lvgl/lv_micropython)\r\n- [CYD](https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display)",
    "code": "URZCXT",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T12:15:00+02:00",
    "level": "intermediate",
    "next_session": "9D8XMG",
    "prev_session": "SVTXGC",
    "resources": null,
    "room": "South Hall 2B",
    "session_type": "Talk",
    "sessions_after": [
      "3NB3PX",
      "9D8XMG",
      "ETFNZG",
      "HP83AE",
      "NHUECR",
      "WB3SJP"
    ],
    "sessions_before": [
      "8BM8PG",
      "9QNGYF",
      "PYKCUL",
      "RRXUA7",
      "SVTXGC",
      "T3WXME"
    ],
    "sessions_in_parallel": [
      "3STLTA",
      "BW7ZBU",
      "HXJ3RP",
      "K3HRVS",
      "YZLKAP"
    ],
    "slug": "programming-hardware-displays-the-easy-way-using-micropython-and-lvgl",
    "speakers": [
      "QYTJB9"
    ],
    "start": "2025-07-18T11:45:00+02:00",
    "title": "Programming hardware displays the easy way - using MicroPython and LVGL",
    "track": "IoT, Embedded Systems, Hardware Integration (2025)",
    "tweet": "Learn how to program hardware displays using just your Python skills. No soldering required :-)",
    "website_url": "https://ep2025.europython.eu/session/programming-hardware-displays-the-easy-way-using-micropython-and-lvgl",
    "youtube_url": "https://youtube.com/watch?v=VBW25a1AbSI"
  },
  "US9HWQ": {
    "abstract": "Have you ever published a project under an open-source license? If so, do you know if it\u2019s used downstream? Has it been packaged to a Linux distribution? Who brought it there, and who maintains it? What are the needs of someone integrating your project into their ecosystem - be it an operating system or an environment manager, like conda? Have you ever wondered how projects appear from that perspective? I won\u2019t be offended if the answer is: \u201cWell, no, why would I?\u201d\r\n\r\n\r\nThat\u2019s the blind spot I\u2019ll address in my talk. I\u2019ll share the unique perspective of a person who has worked with thousands of Python projects and integrated them into an operating system. \r\nYou\u2019ll learn:\r\n- Which project features make a packager\u2019s life easier - and which make it harder,\r\n- Whether tests are a blessing or a curse (and when),\r\n- Why we care about the package metadata and included contents so much,\r\n- How to simplify the process for others to contribute to your project,\r\n- What are the challenges package maintainers face,\r\n- And how downstream packagers can enrich your project.\r\nMy talk will bridge the points of views of both the project authors and downstream integrators, and will offer a set of good practices you can consider adopting. \r\n\r\nAbout me: In my job, I integrate over 4000 Python packages into Fedora Linux with every new Python release, from the first alpha to a final version - a process that spans an entire year. I\u2019ve seen a lot.\r\nAbout you: If you\u2019ve ever written a small application or library, packaged it and published it on PyPI, or even considered doing it, you\u2019re the target audience of this talk. No specific prior knowledge is required beyond creating Python projects and publishing them via version control systems.",
    "code": "US9HWQ",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T15:00:00+02:00",
    "level": "beginner",
    "next_session": "HAKES9",
    "prev_session": "BXWQYK",
    "resources": null,
    "room": "South Hall 2A",
    "session_type": "Talk",
    "sessions_after": [
      "3BQFTP",
      "3FYGDN",
      "8K38D8",
      "GMWLFT",
      "HAKES9",
      "MPKBEN"
    ],
    "sessions_before": [
      "AEAK3B",
      "AR7VP8",
      "BXWQYK",
      "L8YSMU",
      "PRDDPR",
      "XEXS3Y",
      "ZLMT3Q",
      "ZNMPFX",
      "ZNVECA"
    ],
    "sessions_in_parallel": [
      "GQGKNS",
      "MUAVCX",
      "SCKCAV",
      "TU3D7R",
      "TXZMRS"
    ],
    "slug": "bridging-the-gap-viewing-your-project-through-a-downstream-packager-s-lens",
    "speakers": [
      "FYYBAE"
    ],
    "start": "2025-07-16T14:30:00+02:00",
    "title": "Bridging the gap: Viewing your project through a downstream packager's lens",
    "track": "Tooling, Packaging, Developer Productivity (2025)",
    "tweet": "How does your Python project look to downstream packagers? Learn what helps, what hurts, and how to improve\u2014insights from 4,000+ packages! \ud83d\udc0d #Python",
    "website_url": "https://ep2025.europython.eu/session/bridging-the-gap-viewing-your-project-through-a-downstream-packager-s-lens",
    "youtube_url": "https://youtube.com/watch?v=1sszheESHjQ"
  },
  "V3WS7N": {
    "abstract": "The Rust Summit aims to bring together various stakeholders of Python\u2019s Rust ecosystem to discuss its current state, address challenges, and align on ongoing work.\r\n\r\n* When: Tuesday morning, July 15th 9:30 - 12:45\r\n* Where: Prague Congress Centre (PCC), Room Club C\r\n* Who can join: Anyone with a valid in-person EuroPython 2025 ticket can join (Tutorials, Conference-only, or combined).\r\n\r\n## Meet the Community\r\n\r\nThe main goal of this summit is for various stakeholders of Python\u2019s Rust ecosystem to meet, learn, and discuss about the Rust ecosystem in Python, how Python can benefit from Rust, and anything related to the adaptation of thread-free Python.\r\n\r\nWe are particularly looking for contributors and maintainers of:\r\n\r\n* Rust libraries / frameworks that have Python API interface (e.g. polars)\r\n* Tools in the Python ecosystem that are built with Rust (e.g. ruff, uv etc)\r\n* Python libraries that are migrating all or part of their source code to Rust code\r\n* New Python libraries that are written in Rust\r\n* Other Python projects that can benefit from using Rust\r\n\r\n## Presentations\r\n\r\nIf there is a topic you would like to present, please indicate it in the form and fill it in early.\r\n\r\nSparkling presentations are brief, and intended to get everyone on the same page and start a discussion. Time slots are of 30 min at most (10 min of presentation \\+ 20 min for questions/discussion).\r\n\r\nDeep dive presentations are 45 mins in total (35 mins presentation and 10 mins Q\\&A). They can have more details and be a bit more informative, they should provide educational value to the participants.\r\n\r\nWe are also open to suggestions for unconference-style activities.\r\n\r\n## Tentative Agenda (subject to change)\r\n\r\n* **9:00 AM**\tWelcome: Meet and greet - self introduction\r\n* **10:00 AM**\tSparkling Presentation - The Rust Foundation and Why Rust and Python cooperation is important for the future of both languages (by Ernest Kissiedu)\r\n* **10:30 AM**\tDeep Dive Presentation - How to build Python+Rust packages with pixi (by Julian Hofer)\r\n* **11:15 AM**\tSparkling Presentation - Johnnycanencrypt and related desktop applications which allow people to use OpenPGP on YubiKey.  (by Kushal Das)\r\n* **11:45 AM**\tDeep Dive Presentation - Introducing Pyrefly: A faster python type checker written in Rust (by Meggie Moss)\r\n* **12:30 AM**\tWrap up of the summit\r\n\r\n## Registration\r\n\r\nTo be part of the Rust summit [register your interest now\\!](https://docs.google.com/forms/d/e/1FAIpQLSe8Wjahr3-agTr4lS8_u3ifel_9XYAQEGk71IAAIh_h2eRUzw/viewform?usp=preview) \ud83d\udc48\r\n\r\nPlease register early. If you are not yet sure if you can come, note it on your registration. You can change your answer later.\r\n\r\nYou need to have a valid EuroPython in-person ticket to participate. If this is an issue for you, say so on the form and we\u2019ll try to figure something out.\r\n\r\nIf you can, plan to stay for the whole conference, to have plenty of time to follow up on discussions and new friendships.\r\n\r\nThe event is limited to \\[TBA\\] participants. If more sign up, there will be a selection process.\r\n\r\nWe will contact you with confirmations and more details closer to the event.",
    "code": "V3WS7N",
    "delivery": "in-person",
    "duration": "180",
    "end": "2025-07-15T12:45:00+02:00",
    "level": "intermediate",
    "next_session": "MXKGZ9",
    "prev_session": null,
    "resources": null,
    "room": "Club C",
    "session_type": "Summit",
    "sessions_after": [
      "AYXDME",
      "D9JGFG",
      "E9HV7P",
      "MXKGZ9",
      "RBTZEC",
      "VBSZJW"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [
      "7ARRRE",
      "AJPPVG",
      "RMVNGD",
      "RTCZQG",
      "RWPFPP"
    ],
    "slug": "rust-summit",
    "speakers": [
      "8EGVC9",
      "XJRYWL"
    ],
    "start": "2025-07-15T09:30:00+02:00",
    "title": "Rust Summit",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "The Rust Summit aims to bring together various stakeholders of Python\u2019s Rust ecosystem to discuss its current state.",
    "website_url": "https://ep2025.europython.eu/session/rust-summit",
    "youtube_url": null
  },
  "VBSZJW": {
    "abstract": "Are you new to EuroPython? Or perhaps you're feeling overwhelmed by all the activities, sessions, and networking opportunities happening at EuroPython 2025? Whether you'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'll cover everything from understanding the schedule and choosing the right sessions to attend, to making meaningful connections with fellow developers and speakers. You'll learn insider tricks for managing your time effectively, finding the best networking opportunities, and ensuring you don't miss out on the most valuable experiences the conference has to offer. By the end of this session, you'll feel confident and prepared to dive into EuroPython 2025 with a clear plan for maximizing your learning and networking potential.",
    "code": "VBSZJW",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-15T18:00:00+02:00",
    "level": "beginner",
    "next_session": null,
    "prev_session": "RWPFPP",
    "resources": null,
    "room": "Club B",
    "session_type": "Announcements",
    "sessions_after": [],
    "sessions_before": [
      "AYXDME",
      "D9JGFG",
      "E9HV7P",
      "RBTZEC",
      "RWPFPP",
      "V3WS7N"
    ],
    "sessions_in_parallel": [
      "MXKGZ9"
    ],
    "slug": "beginner-s-orientation",
    "speakers": [
      "3W9ACY",
      "CXYJN7"
    ],
    "start": "2025-07-15T17:10:00+02:00",
    "title": "Beginner's Orientation",
    "track": null,
    "tweet": "Join the Beginner's Orientation to learn how to surf EuroPython 2025!",
    "website_url": "https://ep2025.europython.eu/session/beginner-s-orientation",
    "youtube_url": null
  },
  "VGNBB8": {
    "abstract": "Git is a powerful version control system, yet for many developers, it can also be a source of frustration and anxiety. If you\u2019ve ever worried about missing commits, failed rebases, or accidentally breaking your company\u2019s repo and even losing two weeks\u2019 worth of work, you\u2019re not alone. Fortunately, with a solid understanding of Git\u2019s core concepts and best practices, you can avoid these issues and work with confidence.\r\n\r\nThis tutorial provides a practical guide to Git, covering fundamental building blocks such as the Commit DAG (Directed Acyclic Graph), the differences between the working directory, staging area and repository, as well as distributed version control and Git Workflows. You\u2019ll review the key commands and workflows for successfully contributing to any project, while focusing on understanding what\u2019s happening behind the scenes. Through interactive exercises, you\u2019ll develop an intuitive grasp of Git, master day-to-day actions, and even debunk some popular misconceptions along the way.\r\n\r\nBy the end of this tutorial, you\u2019ll have a profound understanding of Git\u2019s building blocks, enabling you to use it effectively\u2014and never break a repo again.",
    "code": "VGNBB8",
    "delivery": "in-person",
    "duration": "180",
    "end": "2025-07-14T12:45:00+02:00",
    "level": "intermediate",
    "next_session": "9EASAW",
    "prev_session": null,
    "resources": null,
    "room": "Club A",
    "session_type": "Tutorial",
    "sessions_after": [
      "9EASAW",
      "M7EFWG",
      "MEDYZE",
      "QKHWXB",
      "QKTRVP"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [
      "8CDYTD",
      "CFANXB",
      "CV3M7B",
      "GLYC3N",
      "HNHQWB"
    ],
    "slug": "understand-git-and-never-break-a-repo-again",
    "speakers": [
      "9RZJAF"
    ],
    "start": "2025-07-14T09:30:00+02:00",
    "title": "Understand Git and Never Break a Repo Again",
    "track": "Tooling, Packaging, Developer Productivity (2025)",
    "tweet": "Git got you stressed? Master its core concepts with this practical tutorial, and never worry about lost commits or broken repos again!",
    "website_url": "https://ep2025.europython.eu/session/understand-git-and-never-break-a-repo-again",
    "youtube_url": null
  },
  "WB3SJP": {
    "abstract": "CLOUD, CLOUD, CLOUD!!! Organizations today turn to cloud solutions to reduce costs, accelerate delivery, and streamline operations. Yet, the question remains: how can Python developers thrive in this age of cloud? Enter the Cloud Development Kit (CDK) for Terraform, which empowers teams to build and manage infrastructure using Python in a Pythonic way. This session explores how to apply object-oriented principles to infrastructure-as-code to create cleaner, more maintainable, and testable IaC, while seamlessly managing multiple environments. We will also discuss how leveraging reusable functions and code blocks speeds up delivery timelines and simplifies the maintenance of large-scale projects, ensuring code consistency and reducing duplication. Additionally, we\u2019ll highlight best practices for Terraform CDK\u2014 including project organization, code reusability, version control strategies, and testing patterns\u2014to ensure scalable deployments and streamlined cloud management. By the end, attendees will understand how Python\u2019s familiar syntax and Terraform\u2019s infrastructure automation can be combined to reduce operational overhead, boost developer velocity, and ensure robust cloud environments across all stages of development.",
    "code": "WB3SJP",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T12:55:00+02:00",
    "level": "intermediate",
    "next_session": "RGVZRU",
    "prev_session": "YZLKAP",
    "resources": null,
    "room": "South Hall 2A",
    "session_type": "Talk",
    "sessions_after": [
      "DGSNSE",
      "ETFNZG",
      "FJH9YY",
      "HTVBWM",
      "RGVZRU",
      "SKPCNV"
    ],
    "sessions_before": [
      "3STLTA",
      "9QNGYF",
      "BW7ZBU",
      "K3HRVS",
      "URZCXT",
      "YZLKAP"
    ],
    "sessions_in_parallel": [
      "3NB3PX",
      "9D8XMG",
      "HP83AE",
      "HXJ3RP",
      "NHUECR"
    ],
    "slug": "terraform-cdk-in-python-where-infrastructure-meets-code",
    "speakers": [
      "Z8HXML"
    ],
    "start": "2025-07-18T12:25:00+02:00",
    "title": "Terraform CDK in Python: Where Infrastructure Meets Code",
    "track": "DevOps, Cloud, Scalable Infrastructure (2025)",
    "tweet": "\u2601\ufe0f CLOUD, CLOUD, CLOUD!!! Everyone\u2019s shouting about it, but let\u2019s be real\u2014cloud solutions don\u2019t build themselves, and neither does your infrastructure",
    "website_url": "https://ep2025.europython.eu/session/terraform-cdk-in-python-where-infrastructure-meets-code",
    "youtube_url": "https://youtube.com/watch?v=_5WS29aj5L4"
  },
  "WDDYM8": {
    "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.\r\n\r\nThis panel aims for the people to be aware of the changes that are coming in 3.14, and future versions, as well as ways people can contribute by testing features, fixing issues, or even sharing their own ideas.\r\n\r\n* Hosts: \u0141ukasz & Pablo\r\n* Panelists:\r\n    * Hugo van Kemenade\r\n    * Emily Morehouse-Valcarcel\r\n    * Brett Cannon\r\n    * Mark Shannon\r\n    * Savannah Bailey",
    "code": "WDDYM8",
    "delivery": "in-person",
    "duration": "60",
    "end": "2025-07-17T15:15:00+02:00",
    "level": "intermediate",
    "next_session": "C8B7QH",
    "prev_session": "AMMYXT",
    "resources": null,
    "room": "South Hall 2B",
    "session_type": "Panel",
    "sessions_after": [
      "78CWUW",
      "9R9R97",
      "AVUQVA",
      "C8B7QH",
      "M8LTAJ",
      "ZKABJR"
    ],
    "sessions_before": [
      "ABDUU8",
      "AKQNBF",
      "AMMYXT",
      "AUAVX7",
      "CYMWKD",
      "FGA7ZN",
      "G3QBAF",
      "YN3MWG"
    ],
    "sessions_in_parallel": [
      "9FQDQS",
      "BTV3ZJ",
      "CLTGAH",
      "LDD9KB",
      "LQXQVD",
      "LZPFTY",
      "MS8ZT7",
      "SRM97H",
      "T9ZYJD",
      "TTA8LT"
    ],
    "slug": "cpython-core-development-panel",
    "speakers": [
      "3WU3WV",
      "HB3VXK",
      "LSFZCM",
      "LUY39H",
      "NPC3QX"
    ],
    "start": "2025-07-17T14:15:00+02:00",
    "title": "CPython Core Development Panel",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "Join us on the CPython Core Development Panel to learn about the latest developments!",
    "website_url": "https://ep2025.europython.eu/session/cpython-core-development-panel",
    "youtube_url": "https://youtube.com/watch?v=0j8euKVjirg"
  },
  "WKDYUH": {
    "abstract": "We\u2019re all familiar with pytest fixtures. They\u2019re invaluable for setting up environments before each test run, tearing them down afterward, and providing essential data for test execution. They introduce modularity and reusability to tests, ensuring consistency across multiple runs. Similarly, pytest\u2019s parametrize annotation allows us to run the same tests with various input permutations and combinations. Together, fixtures and parametrize form a powerful toolkit for creating clean, maintainable, and scalable test suites.\u00a0\r\n\r\nNow, let\u2019s consider a common engineering scenario: migrating from an old API to a new one. The outputs of the two APIs remain the same, but the inputs differ. Tasks like refactoring and deprecating older APIs are part and parcel of every engineer\u2019s job. So, how can we make this migration easier?\r\n\r\nWhile core business logic often needs thoughtful redesign, our focus here is on tests, particularly unit tests. Pytest parametrize can help us run tests with different inputs, while fixtures simplify setup and teardown. But what if we could go a step further? Instead of writing entirely new tests for the new API, what if we could reuse existing tests?\r\n\r\nIn this talk, I\u2019ll demonstrate how to enhance test reusability, simplify test management, and streamline test cleanup by passing pytest fixtures as parameters to existing tests and seamlessly upgrading existing tests to cover workflows and scenarios for both old and new APIs. Attendees will learn to write more efficient and elegant tests by leveraging the power of pytest!",
    "code": "WKDYUH",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T12:35:00+02:00",
    "level": "intermediate",
    "next_session": "G3QBAF",
    "prev_session": "UCHDYW",
    "resources": null,
    "room": "Terrace 2A",
    "session_type": "Talk",
    "sessions_after": [
      "ABDUU8",
      "AKQNBF",
      "AMMYXT",
      "AUAVX7",
      "CYMWKD",
      "FGA7ZN",
      "G3QBAF",
      "YN3MWG"
    ],
    "sessions_before": [
      "G3SBMR",
      "GKRLGM",
      "SRVL9W",
      "UCHDYW",
      "UDNNWJ",
      "URXNP8"
    ],
    "sessions_in_parallel": [
      "8QFLC9",
      "CAWMEZ",
      "SXWDSA",
      "XZNTGY",
      "Z9DWTW"
    ],
    "slug": "fixtures-meets-parameters-writing-efficient-elegant-and-reusable-tests",
    "speakers": [
      "QRLBNV"
    ],
    "start": "2025-07-17T12:05:00+02:00",
    "title": "Fixtures meets parameters: Writing efficient, elegant and reusable tests",
    "track": "Testing, Quality Assurance, Security (2025)",
    "tweet": "Streamline testing with pytest: Use fixtures & parameters to enhance spec-based testing for complex workflows in order to provide full coverage!",
    "website_url": "https://ep2025.europython.eu/session/fixtures-meets-parameters-writing-efficient-elegant-and-reusable-tests",
    "youtube_url": "https://youtube.com/watch?v=Qjb8OfthWIk"
  },
  "WR38CM": {
    "abstract": "Welcome to EuroPython 2025! Please notice the registration will happen on the Forum Hall Foyer on the 1st Floor.\r\nYou can pick up your badges at any time during the week as long as we are open!\r\nIf you want to avoid the morning rush on Wednesday, come on Monday and Tuesday!",
    "code": "WR38CM",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-14T09:30:00+02:00",
    "level": "beginner",
    "next_session": "VGNBB8",
    "prev_session": null,
    "resources": null,
    "room": "Club A",
    "session_type": "Announcements",
    "sessions_after": [
      "8CDYTD",
      "CFANXB",
      "CV3M7B",
      "GLYC3N",
      "HNHQWB",
      "VGNBB8"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [],
    "slug": "monday-registration-welcome-forum-hall-foyer-1st-floor",
    "speakers": [],
    "start": "2025-07-14T08:30:00+02:00",
    "title": "Monday Registration & Welcome @ Forum Hall Foyer 1st Floor",
    "track": null,
    "tweet": "Monday Registration & Welcome @ Forum Hall Foyer 1st Floor !",
    "website_url": "https://ep2025.europython.eu/session/monday-registration-welcome-forum-hall-foyer-1st-floor",
    "youtube_url": null
  },
  "XCN9MD": {
    "abstract": "Ever had this weird gut feeling that something is off in your code, but couldn't put the finger on *why*? Are you starting your projects with the best intentions, following all best practices, and still feel like your architecture turns weird eventually?\r\n\r\n**Maybe, it's not your fault**! Maybe, the tools or methodology you're using are applying design pressure that you're not cognizant of, but that influences the shape of your code.\r\n\r\nThe best way to prevent that is becoming aware of the forces at play. So, let's look at what design pressure is, look at the most prominent examples of good and bad, and explore how to leverage the former and quell the latter. Because you can only deal with something you know exists.",
    "code": "XCN9MD",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-16T11:30:00+02:00",
    "level": "intermediate",
    "next_session": "YQ79RE",
    "prev_session": "SLSM8T",
    "resources": null,
    "room": "South Hall 2B",
    "session_type": "Talk (long session)",
    "sessions_after": [
      "AD3TGW",
      "AEAK3B",
      "D8FJPN",
      "L8YSMU",
      "NKTHSJ",
      "P9DT7T",
      "YGXMN9",
      "YQ79RE",
      "ZLMT3Q"
    ],
    "sessions_before": [
      "SLSM8T"
    ],
    "sessions_in_parallel": [
      "78GQHG",
      "DQFMNM",
      "KCJRPT",
      "KFQSZK",
      "QHFKGT"
    ],
    "slug": "design-pressure-the-invisible-hand-that-shapes-your-code",
    "speakers": [
      "8NBKQT"
    ],
    "start": "2025-07-16T10:45:00+02:00",
    "title": "Design Pressure: The Invisible Hand That Shapes Your Code",
    "track": "~ None of these topics (2025)",
    "tweet": "Why does good code go bad? Hidden design pressures shape your architecture. Learn to spot these forces and leverage good ones while avoiding the bad.",
    "website_url": "https://ep2025.europython.eu/session/design-pressure-the-invisible-hand-that-shapes-your-code",
    "youtube_url": "https://youtube.com/watch?v=msKPhXNi-A8"
  },
  "XE7FNG": {
    "abstract": "Enjoy Thursday's lightning talks!\r\nA series of short community/conference announcements followed by short talks about everything by everyone. \r\n\r\nLightning talks are 5 minute talks that anyone participating at the conference can submit.\r\nIf 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's helping and contributing to our conference and community, or something else!\r\n\r\nLightning talks last a maximum of 5 minutes. You can use less time, but not more.\r\nThis time limit is strictly enforced!\r\n\r\nIf you get accepted, you will be notified by email on the day of your talk by 1pm.\r\nReply to the acceptance email by 3pm to confirm your spot.\r\n(If you don't, you lose your spot!)\r\n\r\nYou can submit your lightning talk on this form: https://forms.gle/MswQ6ukWrLVpwRmi9\r\nNote that there's a limit of one submission per person.\r\n\r\nCommunity/conference announcement submissions are done through the same form before 1pm Thursday.",
    "code": "XE7FNG",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-17T18:00:00+02:00",
    "level": "beginner",
    "next_session": null,
    "prev_session": "DCBMJY",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Announcements",
    "sessions_after": [],
    "sessions_before": [
      "78CWUW",
      "ABDUU8",
      "AUAVX7",
      "AVUQVA",
      "C8B7QH",
      "DCBMJY",
      "M8LTAJ",
      "ZKABJR"
    ],
    "sessions_in_parallel": [],
    "slug": "lightning-talks-thursday",
    "speakers": [],
    "start": "2025-07-17T17:15:00+02:00",
    "title": "Lightning talks \u26a1 Thursday",
    "track": null,
    "tweet": "Enjoy Thursday's lightning talks! Short talks about everything by everyone.   Lightning talks are 5 minute talks that anyone participating at the conf",
    "website_url": "https://ep2025.europython.eu/session/lightning-talks-thursday",
    "youtube_url": "https://youtube.com/watch?v=0gJdM9F6kCI"
  },
  "XEMLJB": {
    "abstract": "We have spent eight years building an enterprise cloud-based AI software product, Rossum (name unrelated to Guido, we promise). Rossum now automates handling business transactions worth trillions of dollars - fully in Python (on the backend). Let's recount some war stories: What surprised us, what did we regret, and what were some important right choices we made?\r\n\r\nThe biggest war story is about the three major components of Rossum, and three major Python ecosystems - plain old-school Python, Django, and the emerging Pydantic / FastAPI school. Which one to choose? Why ever choose more than one? But what happens then - how much are you locked in?\r\n\r\nWe will wrap up with an appeal to Python maintainers - is the Zen of Python still true? \"There should be one - and preferably only one - obvious way to do it?\" Let's consider along which lines the Python ecosystem is fracturing, and how to possibly mend it.",
    "code": "XEMLJB",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-16T17:30:00+02:00",
    "level": "beginner",
    "next_session": "9VL9PH",
    "prev_session": "AJHY9H",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Keynote",
    "sessions_after": [
      "9VL9PH"
    ],
    "sessions_before": [
      "8K38D8",
      "8QQYJW",
      "9PGYHF",
      "AEAK3B",
      "AJHY9H",
      "HMRHJJ",
      "L8YSMU",
      "NATVVE",
      "ZLMT3Q"
    ],
    "sessions_in_parallel": [],
    "slug": "building-a-large-saas-ai-product-with-python-the-tale-of-three-ecosystems",
    "speakers": [
      "KQ8BX8"
    ],
    "start": "2025-07-16T16:45:00+02:00",
    "title": "Building a large SaaS AI product with Python: The tale of three ecosystems",
    "track": "Tooling, Packaging, Developer Productivity (2025)",
    "tweet": "Building Python app automating business transactions worth trillions. And why one takeaway is losing Zen of Python in the age of Django and Pydantic.",
    "website_url": "https://ep2025.europython.eu/session/building-a-large-saas-ai-product-with-python-the-tale-of-three-ecosystems",
    "youtube_url": "https://youtube.com/watch?v=SYPChSJTrhA"
  },
  "XEXS3Y": {
    "abstract": "From Python\u2019s new type parameter syntax and exception groups to structural pattern matching and assignment expressions, these are only a few of Python\u2019s multitude of syntax features that all of us can use to make our lives easier.\r\n\r\nBut have you ever thought about what it takes to implement these features? How does your source code get transformed, so that Python knows what to do in order to produce the output that you expect (or not)? The tokenizer, the parser, the bytecode compiler and the interpreter are all pieces to the puzzle of how Python does its magic.\r\n\r\nIn this talk, we\u2019ll look behind Python\u2019s curtains and try to understand together how the CPython implementation takes in your source code, generates a token stream, creates from it an Abstract Syntax Tree, emits bytecode and finally interprets that bytecode to run your programs. And who knows? Maybe you\u2019ll get to hear about some new and shiny syntax features as well!",
    "code": "XEXS3Y",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T14:20:00+02:00",
    "level": "intermediate",
    "next_session": "MUAVCX",
    "prev_session": "PBNRMR",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Talk",
    "sessions_after": [
      "3FYGDN",
      "GQGKNS",
      "MUAVCX",
      "SCKCAV",
      "TXZMRS",
      "US9HWQ"
    ],
    "sessions_before": [
      "3ZNVQQ",
      "AEAK3B",
      "DKECGU",
      "GMKTFY",
      "GS8GHZ",
      "L8YSMU",
      "PBNRMR",
      "ZLMT3Q",
      "ZNVECA"
    ],
    "sessions_in_parallel": [
      "AR7VP8",
      "BXWQYK",
      "PRDDPR",
      "TU3D7R",
      "ZNMPFX"
    ],
    "slug": "uncovering-the-magic-of-implementing-a-new-python-syntax-feature",
    "speakers": [
      "FRXXAQ"
    ],
    "start": "2025-07-16T13:50:00+02:00",
    "title": "Uncovering the magic of implementing a new Python syntax feature",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "Have you ever considered how new Python features are implemented? Come take a look inside Python to understand how Python runs your programs.",
    "website_url": "https://ep2025.europython.eu/session/uncovering-the-magic-of-implementing-a-new-python-syntax-feature",
    "youtube_url": "https://youtube.com/watch?v=Za27Pqa2MAE"
  },
  "XFNVQ9": {
    "abstract": "If you need to build a user interface for your Python code, many guides will tell you that your only options are to use the command line, or wrap your code in a web interface. However, there is another option - building a native GUI interface. In fact for some use cases, a GUI app may be your *only* option. \r\n\r\nIn this talk, you'll learn how to build and run a graphical user interface (GUI) that can run on your desktop, on your phone, or in a browser. You'll learn how you can use the BeeWare suite of tools to bootstrap a new GUI project, develop a GUI interface, and deploy that app to multiple desktop and mobile platforms, without making any code changes. You'll learn how to access device hardware like GPS and cameras; and you'll learn how to distribute your application - including all runtimes and third-party libraries - to others. Lastly, you'll get a brief introduction to how you can access native platform APIs that don't have a Python API.",
    "code": "XFNVQ9",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-18T10:55:00+02:00",
    "level": "beginner",
    "next_session": "9QNGYF",
    "prev_session": "YEKGVY",
    "resources": null,
    "room": "Terrace 2B",
    "session_type": "Talk (long session)",
    "sessions_after": [
      "8BM8PG",
      "9QNGYF",
      "PYKCUL",
      "RRXUA7",
      "SVTXGC",
      "T3WXME"
    ],
    "sessions_before": [
      "YEKGVY"
    ],
    "sessions_in_parallel": [
      "FWETBR",
      "HPRDLE",
      "PBRK3K",
      "TGUWZC",
      "XJ7GMM"
    ],
    "slug": "how-to-build-a-cross-platform-graphical-user-interface-with-python",
    "speakers": [
      "LDFVBH"
    ],
    "start": "2025-07-18T10:10:00+02:00",
    "title": "How to build a cross-platform graphical user interface with Python",
    "track": "~ None of these topics (2025)",
    "tweet": "Ever wanted to learn how to build a mobile phone app with Python?",
    "website_url": "https://ep2025.europython.eu/session/how-to-build-a-cross-platform-graphical-user-interface-with-python",
    "youtube_url": "https://youtube.com/watch?v=nbJrfXkotq0"
  },
  "XJ7GMM": {
    "abstract": "This session is an overall spanning overview around the concept of _time_, in the context of programming.\r\nI will enlighten you about the many pitfalls and general problems that we face when programming with relation to *time*.\r\n\r\nAnyone who gives some thoughts about _time_ may come to the initial conclusion that it's natural and easy to program with _time_ in mind. But once you start digging into it - one might face many uncertain bumps in the roads and countless bugs with unnecessary unforeseen consequences.\r\n\r\nWe will talk about:\r\n- Common misconceptions about _time_.\r\n- Why and what we use _time_ for in programming.\r\n- Serialisation and representation of _time_.\r\n- Best practices when communication about _time_. (OpenAPI specifications)\r\n- The gist of *Time*zones and Daylight Savings.\r\n- Special Relativity, and how _time_ is about to get even weirder.\r\n- What I would consider some best practices when coding _time_ in python.\r\n\r\nI hope that my talk will inspire and be a peek into the Pandora's box which is _time_ - only we, together, can save the world from more _time_ related bugs. Equipped with gained knowledge, I hope that you too will help even more people understand that everything is not always as simple as one would assume.\r\n\r\nJoin my presentation, as this _time_, \r\n*It's All About Time*.",
    "code": "XJ7GMM",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-18T10:55:00+02:00",
    "level": "beginner",
    "next_session": "PYKCUL",
    "prev_session": "YEKGVY",
    "resources": null,
    "room": "North Hall",
    "session_type": "Talk (long session)",
    "sessions_after": [
      "8BM8PG",
      "9QNGYF",
      "PYKCUL",
      "RRXUA7",
      "SVTXGC",
      "T3WXME"
    ],
    "sessions_before": [
      "YEKGVY"
    ],
    "sessions_in_parallel": [
      "FWETBR",
      "HPRDLE",
      "PBRK3K",
      "TGUWZC",
      "XFNVQ9"
    ],
    "slug": "it-s-all-about-time-what-developers-need-to-know-about-time",
    "speakers": [
      "KCJY8T"
    ],
    "start": "2025-07-18T10:10:00+02:00",
    "title": "It's All About Time \u23f0 - What developers need to know about time",
    "track": "~ None of these topics (2025)",
    "tweet": "Have you ever wondered about all the details there is about time in programming? GMT? UTC? DST?  Let's get to it!!  Now - \"It's All About Time \u23f0.\"",
    "website_url": "https://ep2025.europython.eu/session/it-s-all-about-time-what-developers-need-to-know-about-time",
    "youtube_url": "https://youtube.com/watch?v=IZRZ9ur6THk"
  },
  "XND9F9": {
    "abstract": "When organizing a conference, we often encounter questions such as how to set an appropriate ticket price, how many t-shirts to produce, and how many lunch boxes to estimate. Frequently, our estimates rely on wild guesses, which can lead to inaccuracies. To tackle this issue, we aimed to establish PyCon Taiwan as a data-driven community and formed a data team back in 2021. As the Python community continues to grow with an increasing number of data professionals, this presents a great opportunity for us to attract more volunteers to join PyCon Taiwan.\r\n\r\nIn our community, we offer an excellent experimental playground for data enthusiasts to test their ideas and explore new technologies. In this talk, I will share how PyCon Taiwan built our internal ETL system using Apache Airflow and discuss our plans to migrate to the soon-to-be-released Airflow 3.0. Additionally, I will explain how we collect data and how it helps us make decisions based on evidence rather than gut feelings.",
    "code": "XND9F9",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T15:05:00+02:00",
    "level": "beginner",
    "next_session": null,
    "prev_session": "ETFNZG",
    "resources": null,
    "room": "Terrace 2B",
    "session_type": "Talk",
    "sessions_after": [
      "JKZDUY"
    ],
    "sessions_before": [
      "DGSNSE",
      "ETFNZG",
      "FJH9YY",
      "HTVBWM",
      "RGVZRU",
      "SKPCNV"
    ],
    "sessions_in_parallel": [
      "89LBUT",
      "AJ3Z8U",
      "BVYE9B",
      "DCZCJP",
      "Y8PVLE"
    ],
    "slug": "hold-on-you-have-a-data-team-in-pycon-taiwan",
    "speakers": [
      "NGUVCY"
    ],
    "start": "2025-07-18T14:35:00+02:00",
    "title": "Hold on! You have a data team in PyCon Taiwan!",
    "track": "Community Building, Education, Outreach (2025)",
    "tweet": "Join us at PyCon Taiwan to explore our journey in building a data-driven community! Discover how we use data to make evidence-based decisions!",
    "website_url": "https://ep2025.europython.eu/session/hold-on-you-have-a-data-team-in-pycon-taiwan",
    "youtube_url": "https://youtube.com/watch?v=__3ir15XIdE"
  },
  "XZNTGY": {
    "abstract": "This presentation explores the challenges of using AWS Lambda for high-traffic Python ASGI applications, including concurrency limits, scalability costs, and transitioning to EC2. We introduce Lynara, a tool that transforms Lambda events into ASGI requests, enabling seamless deployment of frameworks like FastAPI, Starlette, and Django, and simplifying migration to EC2.\r\n\r\nAdditionally, we showcase Smyth, a local development tool that simulates production environments, enhancing accuracy in testing. Attendees will gain insights into benchmarking framework performance, and improving developer workflows. Learn how Lynara and Smyth address AWS Lambda\u2019s limitations to streamline serverless application development.",
    "code": "XZNTGY",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T12:35:00+02:00",
    "level": "intermediate",
    "next_session": "YN3MWG",
    "prev_session": "G3SBMR",
    "resources": null,
    "room": "North Hall",
    "session_type": "Talk",
    "sessions_after": [
      "ABDUU8",
      "AKQNBF",
      "AMMYXT",
      "AUAVX7",
      "CYMWKD",
      "FGA7ZN",
      "G3QBAF",
      "YN3MWG"
    ],
    "sessions_before": [
      "G3SBMR",
      "GKRLGM",
      "SRVL9W",
      "UCHDYW",
      "UDNNWJ",
      "URXNP8"
    ],
    "sessions_in_parallel": [
      "8QFLC9",
      "CAWMEZ",
      "SXWDSA",
      "WKDYUH",
      "Z9DWTW"
    ],
    "slug": "get-your-lambda-on-smyth-lynara-s-guide-to-lazy-dev-life",
    "speakers": [
      "ALN8NK"
    ],
    "start": "2025-07-17T12:05:00+02:00",
    "title": "Get Your Lambda On: Smyth & Lynara's Guide to Lazy Dev Life",
    "track": "DevOps, Cloud, Scalable Infrastructure (2025)",
    "tweet": "Struggling with AWS Lambda? Learn how Lynara & Smyth simplify ASGI apps, improve workflows, and ease migration to EC2!",
    "website_url": "https://ep2025.europython.eu/session/get-your-lambda-on-smyth-lynara-s-guide-to-lazy-dev-life",
    "youtube_url": "https://youtube.com/watch?v=Q5Rq0xX6rw4"
  },
  "Y8PVLE": {
    "abstract": "Upgrading to a new major version of any Python library can be challenging\u2014especially when your codebase is large and critical to your business. In this talk, we\u2019ll explore a step-by-step approach to managing these upgrades with minimal friction, using our recent migration from Pydantic v1 to v2 as a real-world example. However, all the strategies we discuss can be applied to other Python libraries or frameworks, ensuring your next migration is smooth and stress-free.\r\n\r\nYou\u2019ll learn how to:\r\n* Identify and Resolve Breaking Changes: Spot incompatibilities early and prevent disruptive failures.\r\n* Refactor for New Features: Adapt your code to leverage the latest improvements and simplify your design.\r\n* Test Safely and Iteratively: Maintain reliability by rolling out incremental changes.\r\n* Achieve Real-World Benefits: Discover how major upgrades can boost performance, reduce complexity, and future-proof your projects.\r\n\r\nWhether you work on an enterprise-level system or a small project, you\u2019ll leave with practical insights, best practices, and tools to handle major Python migrations\u2014without the drama.",
    "code": "Y8PVLE",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T15:05:00+02:00",
    "level": "intermediate",
    "next_session": null,
    "prev_session": "FJH9YY",
    "resources": null,
    "room": "South Hall 2B",
    "session_type": "Talk",
    "sessions_after": [
      "JKZDUY"
    ],
    "sessions_before": [
      "DGSNSE",
      "ETFNZG",
      "FJH9YY",
      "HTVBWM",
      "RGVZRU",
      "SKPCNV"
    ],
    "sessions_in_parallel": [
      "89LBUT",
      "AJ3Z8U",
      "BVYE9B",
      "DCZCJP",
      "XND9F9"
    ],
    "slug": "zero-drama-upgrades-real-world-tactics-for-major-python-migrations",
    "speakers": [
      "YMJTM9"
    ],
    "start": "2025-07-18T14:35:00+02:00",
    "title": "Zero-Drama Upgrades: Real-World Tactics for Major Python Migrations",
    "track": "Tooling, Packaging, Developer Productivity (2025)",
    "tweet": "Learn how we migrated 100+ repos from Pydantic V1 to V2 at TravelPerk! Breaking changes, refactoring, and testing\u2014made smooth and actionable.",
    "website_url": "https://ep2025.europython.eu/session/zero-drama-upgrades-real-world-tactics-for-major-python-migrations",
    "youtube_url": "https://youtube.com/watch?v=Xf-yXhaaFAQ"
  },
  "YEKGVY": {
    "abstract": "Data Scientists were living very peacefully until ChatGPT arrived. The thing is, we didn\u2019t know it back then. In a world where generative artificial intelligence dominates the headlines, what is truly applicable and transformative about all this? This talk aims to demystify the hype and delve into how companies are adopting (or considering adopting) these technologies. We will explore key tools, use cases, comfortable and uncomfortable situations, and the tangible impact that developers, managers, and other tech sector professionals can expect in their daily lives. I would like this talk to serve as a reflection to raise awareness of the transformation that is coming, but also to alleviate some of the technological anxiety that sometimes overwhelms us.",
    "code": "YEKGVY",
    "delivery": "in-person",
    "duration": "45",
    "end": "2025-07-18T09:45:00+02:00",
    "level": "beginner",
    "next_session": "TGUWZC",
    "prev_session": null,
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Keynote",
    "sessions_after": [
      "FWETBR",
      "HPRDLE",
      "PBRK3K",
      "TGUWZC",
      "XFNVQ9",
      "XJ7GMM"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [],
    "slug": "the-boom-of-generative-ai-realities-promises-and-awkward-situations",
    "speakers": [
      "QEJXSX"
    ],
    "start": "2025-07-18T09:00:00+02:00",
    "title": "The Boom of Generative AI: realities, promises and awkward situations",
    "track": "Machine Learning, NLP and CV (2025)",
    "tweet": "This is a placeholder for the short version of the Invited Keynote abstract from Nerea",
    "website_url": "https://ep2025.europython.eu/session/the-boom-of-generative-ai-realities-promises-and-awkward-situations",
    "youtube_url": "https://youtube.com/watch?v=xVFipdUKXo0"
  },
  "YGXMN9": {
    "abstract": "Virtual environments are a fundamental part of Python development, but to most developers, they\u2019re largely a \u2018black box\u2019. In this talk, we\u2019re gonna dissect the code, file structure and utilities that make them up to learn, and not just grok, how venvs actually work.\r\n\r\nI'm sure you activate your virtual environment every day, but when was the list time you stopped to think what the process actually does, and what's inside the code that makes the magic work, beyond the abstract idea of the environment isolation? That's what we'll figure out in this talk. We'll learn how Python installs work in modern operating systems (hopefully, the days of xkcd 1987 https://xkcd.com/1987/ are long gone), explore the files and folders inside venvs, examine their purpose, and browse through the venv module source code to understand the CLI tool we use so often.",
    "code": "YGXMN9",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T12:10:00+02:00",
    "level": "beginner",
    "next_session": "DKECGU",
    "prev_session": "DQFMNM",
    "resources": null,
    "room": "North Hall",
    "session_type": "Talk",
    "sessions_after": [
      "3ZNVQQ",
      "AEAK3B",
      "DKECGU",
      "GMKTFY",
      "GS8GHZ",
      "L8YSMU",
      "PBNRMR",
      "ZLMT3Q",
      "ZNVECA"
    ],
    "sessions_before": [
      "78GQHG",
      "DQFMNM",
      "KCJRPT",
      "KFQSZK",
      "QHFKGT",
      "XCN9MD"
    ],
    "sessions_in_parallel": [
      "AD3TGW",
      "D8FJPN",
      "NKTHSJ",
      "P9DT7T",
      "YQ79RE"
    ],
    "slug": "inside-the-black-box-the-anatomy-of-virtual-environments",
    "speakers": [
      "ATSTYM"
    ],
    "start": "2025-07-16T11:40:00+02:00",
    "title": "Inside the Black Box: The Anatomy of Virtual Environments",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "Virtual environments are widely used, but also not widely explored. In this talk, we'll discover exactly how they work and what they do!",
    "website_url": "https://ep2025.europython.eu/session/inside-the-black-box-the-anatomy-of-virtual-environments",
    "youtube_url": "https://youtube.com/watch?v=X4HJ5yIAb0c"
  },
  "YN3MWG": {
    "abstract": "**Breaking HTTP Boundaries**: ASGI to build your fleet management system in Python\r\n\r\nASGI (the *Asynchronous Server Gateway Interface*) is a spiritual successor to WSGI, providing a standard interface between async-capable Python network protocol servers, frameworks, and applications. While ASGI is primarily known for web applications, its powerful interface extends beyond HTTP and WebSockets. This talk demonstrates how to leverage ASGI concepts to build a custom protocol server of your choice. \r\n\r\nWe'll explore the ASGI specification in detail and learn how to apply it to custom application layer protocols through the lens of a fleet management system built from scratch.\r\n\r\nWe'll dive deep into:\r\n\r\n- Core concepts of the ASGI specification and its protocol-agnostic design principles\r\n- Understanding the distinction between *protocol servers* and *applications*\r\n- A practical demonstration showcasing ASGI's flexibility and features through a fleet management system example. We'll explore two different ASGI applications within one system: an ASGI application that collects vehicle data over a telematics TCP protocol and an ASGI web server that serves this data through a Python-built UI.\r\n\r\nBy the end of this talk, you'll discover that ASGI isn't just limited to web apps - it's a powerful tool that enables you to create any network protocol server in Python while maintaining asynchronous performance and efficiency.",
    "code": "YN3MWG",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T13:15:00+02:00",
    "level": "intermediate",
    "next_session": "CLTGAH",
    "prev_session": "XZNTGY",
    "resources": [
      {
        "description": "GitHub repo",
        "resource": "https://github.com/druzhinin-kirill/asgi-beyond-http"
      }
    ],
    "room": "North Hall",
    "session_type": "Talk",
    "sessions_after": [
      "ABDUU8",
      "AUAVX7",
      "BTV3ZJ",
      "CLTGAH",
      "LQXQVD",
      "LZPFTY",
      "SRM97H",
      "WDDYM8"
    ],
    "sessions_before": [
      "8QFLC9",
      "CAWMEZ",
      "SXWDSA",
      "WKDYUH",
      "XZNTGY",
      "Z9DWTW"
    ],
    "sessions_in_parallel": [
      "AKQNBF",
      "AMMYXT",
      "CYMWKD",
      "FGA7ZN",
      "G3QBAF"
    ],
    "slug": "breaking-http-boundaries-asgi-to-build-a-fleet-management-system-in-python",
    "speakers": [
      "EGNUSU"
    ],
    "start": "2025-07-17T12:45:00+02:00",
    "title": "Breaking HTTP Boundaries: ASGI to build a fleet management system in Python",
    "track": "Web Development, Web APIs, Front-End Integration (2025)",
    "tweet": "Breaking HTTP Boundaries: Leverage ASGI to support custom telematics protocols and build a fleet management system in Python",
    "website_url": "https://ep2025.europython.eu/session/breaking-http-boundaries-asgi-to-build-a-fleet-management-system-in-python",
    "youtube_url": "https://youtube.com/watch?v=sAzvJ91qt-c"
  },
  "YQ79RE": {
    "abstract": "As AI becomes a more significant part of our everyday lives, ensuring these systems are fair is more important than ever. In this session, we\u2019ll discuss how to define fairness and the potential harms our algorithms can have on people and society. We\u2019ll introduce fairlearn, a community-driven, open-source project that offers practical tools for assessing and mitigating harm in AI systems. We\u2019ll also explore how to discuss bias, different types of harm, the idea of group fairness and how they all relate to fairlearn\u2019s toolkit. To make it all concrete, we\u2019ll walk through a real-world example of assessing fairness and share some hands-on strategies you can use to mitigate harm in your own ML projects. The tools fairlearn provides can be integrated into your existing scikit-learn pipelines.",
    "code": "YQ79RE",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T12:10:00+02:00",
    "level": "intermediate",
    "next_session": "ZNVECA",
    "prev_session": "XCN9MD",
    "resources": null,
    "room": "South Hall 2B",
    "session_type": "Talk",
    "sessions_after": [
      "3ZNVQQ",
      "AEAK3B",
      "DKECGU",
      "GMKTFY",
      "GS8GHZ",
      "L8YSMU",
      "PBNRMR",
      "ZLMT3Q",
      "ZNVECA"
    ],
    "sessions_before": [
      "78GQHG",
      "DQFMNM",
      "KCJRPT",
      "KFQSZK",
      "QHFKGT",
      "XCN9MD"
    ],
    "sessions_in_parallel": [
      "AD3TGW",
      "D8FJPN",
      "NKTHSJ",
      "P9DT7T",
      "YGXMN9"
    ],
    "slug": "fairlearn-practical-approach-to-assessing-and-mitigating-harm-in-ai-systems",
    "speakers": [
      "ACTDC3"
    ],
    "start": "2025-07-16T11:40:00+02:00",
    "title": "Fairlearn:practical approach to assessing and mitigating harm in AI systems",
    "track": "Ethics, Social Responsibility, Sustainability, Legal (2025)",
    "tweet": "As AI becomes essential, ensuring fairness is vital. Discover Fairlearn, a community-driven toolkit for assessing and mitigating harm in AI systems.",
    "website_url": "https://ep2025.europython.eu/session/fairlearn-practical-approach-to-assessing-and-mitigating-harm-in-ai-systems",
    "youtube_url": null
  },
  "YZLKAP": {
    "abstract": "Managing how microservices communicate with each other can quickly become overwhelming in large scale systems. Specially for non-cloud antive applications that we want to migrate to Kubernetes like environments. Ensuring secure connections, balancing traffic, and tracking interactions across services is critical.\r\n\r\nDuring this session, we will introduce the  concept of a service mesh and explain why it\u2019s essential for modern microservices architectures.  From there, we\u2019ll explore Istio and how it can be used with Python applications to handle these challenges seamlessly. By the end of this talk, you\u2019ll understand how Istio can help you simplify operations, enhance security, and improve observability for Python microservices.\r\n\r\nWhether you\u2019re new to service meshes or looking for practical ways to adopt Istio in your Python ecosystem, this session will provide clear and actionable steps to get started.\r\n\r\nIf managing microservices feels like a continuous battle, Istio might just be the tool you need...",
    "code": "YZLKAP",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-18T12:15:00+02:00",
    "level": "advanced",
    "next_session": "WB3SJP",
    "prev_session": "RRXUA7",
    "resources": null,
    "room": "South Hall 2A",
    "session_type": "Talk",
    "sessions_after": [
      "3NB3PX",
      "9D8XMG",
      "ETFNZG",
      "HP83AE",
      "NHUECR",
      "WB3SJP"
    ],
    "sessions_before": [
      "8BM8PG",
      "9QNGYF",
      "PYKCUL",
      "RRXUA7",
      "SVTXGC",
      "T3WXME"
    ],
    "sessions_in_parallel": [
      "3STLTA",
      "BW7ZBU",
      "HXJ3RP",
      "K3HRVS",
      "URZCXT"
    ],
    "slug": "navigating-the-mesh-istio-for-python-applications",
    "speakers": [
      "BMMZFS"
    ],
    "start": "2025-07-18T11:45:00+02:00",
    "title": "Navigating the mesh: Istio for Python applications",
    "track": "DevOps, Cloud, Scalable Infrastructure (2025)",
    "tweet": "Do you know what is a Service Mesh? Are you interested on a way to manage easily cloud applications? This talk is for you",
    "website_url": "https://ep2025.europython.eu/session/navigating-the-mesh-istio-for-python-applications",
    "youtube_url": "https://youtube.com/watch?v=y84YtY0XLF4"
  },
  "Z9DWTW": {
    "abstract": "After making a splash with major performance improvements in Python 3.11, things were relatively quiet for 3.12 and 3.13. CPython got faster, but not by much. \r\n\r\nFor 3.14, performance is up again. CPython 3.14 will be quite a bit faster than 3.13 and, we hope, 3.15 will be quite a bit faster again.\r\n\r\nIn this talk, I will cover the most important ways in which we are speeding up CPython 3.14 and plan to speed up 3.15, including:\r\n* A faster interpreter\r\n* The JIT compiler\r\n* Faster garbage collection\r\n* Lower overhead reference counting\r\n* Tagged integers",
    "code": "Z9DWTW",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T12:35:00+02:00",
    "level": "intermediate",
    "next_session": "FGA7ZN",
    "prev_session": "SRVL9W",
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Talk",
    "sessions_after": [
      "ABDUU8",
      "AKQNBF",
      "AMMYXT",
      "AUAVX7",
      "CYMWKD",
      "FGA7ZN",
      "G3QBAF",
      "YN3MWG"
    ],
    "sessions_before": [
      "G3SBMR",
      "GKRLGM",
      "SRVL9W",
      "UCHDYW",
      "UDNNWJ",
      "URXNP8"
    ],
    "sessions_in_parallel": [
      "8QFLC9",
      "CAWMEZ",
      "SXWDSA",
      "WKDYUH",
      "XZNTGY"
    ],
    "slug": "performance-improvements-in-3-14-and-maybe-3-15",
    "speakers": [
      "LUY39H"
    ],
    "start": "2025-07-17T12:05:00+02:00",
    "title": "Performance improvements in 3.14 and maybe 3.15",
    "track": "Python Core, Internals, Extensions (2025)",
    "tweet": "Find out how we are making Python 3.14 the fastest yet, and how 3.15 will be faster still",
    "website_url": "https://ep2025.europython.eu/session/performance-improvements-in-3-14-and-maybe-3-15",
    "youtube_url": "https://youtube.com/watch?v=BapKp2Zytb8"
  },
  "ZCPJFG": {
    "abstract": "Welcome to EuroPython 2025! Please notice the registration will happen on the Forum Hall Foyer on the 1st Floor.\r\nYou can pick up your badges at any time during the week as long as we are open!\r\nIf you want to avoid the morning rush on Wednesday, come on Monday and Tuesday!",
    "code": "ZCPJFG",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T09:00:00+02:00",
    "level": "beginner",
    "next_session": "SLSM8T",
    "prev_session": null,
    "resources": null,
    "room": "Forum Hall",
    "session_type": "Announcements",
    "sessions_after": [
      "SLSM8T"
    ],
    "sessions_before": [],
    "sessions_in_parallel": [],
    "slug": "wednesday-registration-welcome-forum-hall-foyer-1st-floor",
    "speakers": [],
    "start": "2025-07-16T08:00:00+02:00",
    "title": "Wednesday Registration & Welcome @ Forum Hall Foyer 1st Floor",
    "track": null,
    "tweet": "Wednesday Registration & Welcome @ Forum Hall Foyer 1st Floor",
    "website_url": "https://ep2025.europython.eu/session/wednesday-registration-welcome-forum-hall-foyer-1st-floor",
    "youtube_url": null
  },
  "ZKABJR": {
    "abstract": "https://www.youtube.com/watch?v=_C8GFtYwyv4\r\n\r\nFriends of Michael Foord are welcome to share their memories. **Use [this form](https://forms.gle/udNFipk2GVP1qinJA) to let us know you'd like to contribute something.**\r\n\r\nOur Python brother Michael Foord (1974-2025) tragically and unexpectedly passed away in January. He was a significant presence in the Python community and made considerable and sustained contributions both as a CPython core maintainer, as a speaker at conferences, and as a welcoming, friendly and compassionate member of the community. He was a friend and mentor to many. He was also a lot of fun.\r\n\r\nA core Python developer and the creator of the influential unittest.mock module, he played a pivotal role in shaping testing practices and helped establish the Language Summit at PyCon. More than a brilliant engineer, Michael was a beloved mentor and friend, known for his elaborate vaping setup, colourful attire, and heartfelt conversations. His passing left a profound void in the community, but his legacy lives on through his contributions to Python, his generous spirit, and the countless moments of camaraderie he inspired.\r\n\r\nThis session, organised with the blessing of the Foord family, will be an opportunity for us to remember Michael, reminisce and share stories. This will be an emotional, funny, sad and celebratory event at which you will all be welcomed to contribute in a compassionate and dignified place of remembrance.\r\n\r\nPlease note that we plan to record this session and gift the recording to Michael's family.",
    "code": "ZKABJR",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-17T16:20:00+02:00",
    "level": "beginner",
    "next_session": "DCBMJY",
    "prev_session": "MS8ZT7",
    "resources": null,
    "room": "Terrace 2B",
    "session_type": "Talk",
    "sessions_after": [
      "DCBMJY"
    ],
    "sessions_before": [
      "9FQDQS",
      "ABDUU8",
      "AUAVX7",
      "LDD9KB",
      "MS8ZT7",
      "T9ZYJD",
      "TTA8LT",
      "WDDYM8"
    ],
    "sessions_in_parallel": [
      "78CWUW",
      "9R9R97",
      "AVUQVA",
      "C8B7QH",
      "M8LTAJ"
    ],
    "slug": "in-memoriam-michael-foord-1974-2025",
    "speakers": [
      "WADEN9"
    ],
    "start": "2025-07-17T15:50:00+02:00",
    "title": "In memoriam: Michael Foord (1974-2025)",
    "track": "~ None of these topics (2025)",
    "tweet": "In memoriam: Michael Foord (1974-2025). Join to hear who Michael was and the impact he had in our community.",
    "website_url": "https://ep2025.europython.eu/session/in-memoriam-michael-foord-1974-2025",
    "youtube_url": "https://youtube.com/watch?v=_C8GFtYwyv4"
  },
  "ZLMT3Q": {
    "abstract": "Which LLM provider should you choose based on latency? \r\n\r\nAs LLMs become integral to modern applications, speed can make or break your UX. This poster highlights the performance trade-offs of OpenAI, Anthropic, local models, and other providers.\r\n\r\nI will show how different models and providers perform across key metrics, helping you determine which option delivers the best user experience. I will show not only the raw numbers but also how each metric influences user perception.\r\n\r\nWe will measure:\r\n- Time to first token  \r\n- Time to last token  \r\n- Latency variability throughout the day  \r\n- How structured responses affect performance  \r\n\r\nWe will evaluate:\r\n- State-of-the-art models  \r\n- Open-source models hosted by cloud providers\r\n- Local models you can run on your own infrastructure\r\n\r\nWhat you will learn\r\n- Which model to use based on its latency \r\n- How does prompt caching affects performance\r\n\r\nYou\u2019ll have a clearer view of which solution fits your needs and how to balance performance, costs, and practical considerations.",
    "code": "ZLMT3Q",
    "delivery": "in-person",
    "duration": "60",
    "end": "2025-07-16T13:50:00+02:00",
    "level": "intermediate",
    "next_session": null,
    "prev_session": null,
    "resources": null,
    "room": "Exhibit Hall",
    "session_type": "Poster",
    "sessions_after": [
      "AR7VP8",
      "BXWQYK",
      "PRDDPR",
      "TU3D7R",
      "XEXS3Y",
      "ZNMPFX"
    ],
    "sessions_before": [
      "3ZNVQQ",
      "DKECGU",
      "GMKTFY",
      "GS8GHZ",
      "PBNRMR",
      "ZNVECA"
    ],
    "sessions_in_parallel": [
      "AEAK3B",
      "L8YSMU"
    ],
    "slug": "exploring-llm-latency",
    "speakers": [
      "MTEUCU"
    ],
    "start": "2025-07-16T12:50:00+02:00",
    "title": "Exploring LLM latency",
    "track": "Data Engineering and MLOps (2025)",
    "tweet": "Which LLM provider should you choose based on latency? As LLMs become integral to modern applications, speed can make or break your UX.",
    "website_url": "https://ep2025.europython.eu/session/exploring-llm-latency",
    "youtube_url": null
  },
  "ZNMPFX": {
    "abstract": "Writing code from scratch, especially with recent progress in AI, has never been easier, however maintaining and fixing the code as your codebase grows has been and still remains one of the biggest challenges. \r\n\r\nI'll go over practical advice on programming something that will make your team's and your life easier in years to come instead of be the constant source of frustrations.",
    "code": "ZNMPFX",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T14:20:00+02:00",
    "level": "beginner",
    "next_session": "SCKCAV",
    "prev_session": "3ZNVQQ",
    "resources": null,
    "room": "Terrace 2A",
    "session_type": "Talk",
    "sessions_after": [
      "3FYGDN",
      "GQGKNS",
      "MUAVCX",
      "SCKCAV",
      "TXZMRS",
      "US9HWQ"
    ],
    "sessions_before": [
      "3ZNVQQ",
      "AEAK3B",
      "DKECGU",
      "GMKTFY",
      "GS8GHZ",
      "L8YSMU",
      "PBNRMR",
      "ZLMT3Q",
      "ZNVECA"
    ],
    "sessions_in_parallel": [
      "AR7VP8",
      "BXWQYK",
      "PRDDPR",
      "TU3D7R",
      "XEXS3Y"
    ],
    "slug": "refactoring-and-maintaing-software-building-code-you-won-t-hate-tomorrow",
    "speakers": [
      "CHTAPC"
    ],
    "start": "2025-07-16T13:50:00+02:00",
    "title": "Refactoring and Maintaing Software : Building code you won't hate tomorrow",
    "track": "~ None of these topics (2025)",
    "tweet": "While has made it easy to generate code that \"works\",  learn how to make a software that can stand the test of time",
    "website_url": "https://ep2025.europython.eu/session/refactoring-and-maintaing-software-building-code-you-won-t-hate-tomorrow",
    "youtube_url": "https://youtube.com/watch?v=U71dOQr6lE8"
  },
  "ZNVECA": {
    "abstract": "With the rise of LLMs, prompt engineering has become a highly impactful skill in the AI industry. However, manual prompt tuning is challenging, time-consuming, and not always generalizable across different models. This raises a reasonable question: can prompts be automatically learned from data? The answer is yes, and in this talk, we will explore how.\r\n\r\nFirst, we will provide a high-level overview of various prompt optimization approaches, starting with a simple technique like bootstrapped few-shot, which automatically generates and selects an optimal set of demonstrations for each step in the LLM chain. Then, we will discuss more complex approaches, such as MIPRO and TextGrad, which directly optimize the instructions.\r\n\r\nAfterwards, we will move on to a more practical part by showcasing how these techniques can be used via popular frameworks such as DSPy and AdalFlow.\r\n\r\nFinally, we will discuss the benefits and trade-offs of these approaches and frameworks in terms of costs, complexity and performance, so the audience can decide whether prompt engineering is truly dead.\r\n\r\n**Target Audience**\r\nThis talk will be particularly interesting for people working with LLMs. Some familiarity with the domain will be beneficial.\r\n\r\n**Key Takeaway**\r\nChallenges with manual prompt engineering and potential solutions provided by automatic prompt optimization techniques.",
    "code": "ZNVECA",
    "delivery": "in-person",
    "duration": "30",
    "end": "2025-07-16T12:50:00+02:00",
    "level": "intermediate",
    "next_session": "TU3D7R",
    "prev_session": "YQ79RE",
    "resources": null,
    "room": "South Hall 2B",
    "session_type": "Talk",
    "sessions_after": [
      "AEAK3B",
      "AR7VP8",
      "BXWQYK",
      "L8YSMU",
      "PRDDPR",
      "TU3D7R",
      "XEXS3Y",
      "ZLMT3Q",
      "ZNMPFX"
    ],
    "sessions_before": [
      "AD3TGW",
      "D8FJPN",
      "NKTHSJ",
      "P9DT7T",
      "YGXMN9",
      "YQ79RE"
    ],
    "sessions_in_parallel": [
      "3ZNVQQ",
      "DKECGU",
      "GMKTFY",
      "GS8GHZ",
      "PBNRMR"
    ],
    "slug": "is-prompt-engineering-dead-how-auto-optimization-is-changing-the-game",
    "speakers": [
      "EACXYX",
      "NWAQCX"
    ],
    "start": "2025-07-16T12:20:00+02:00",
    "title": "Is Prompt Engineering Dead? How Auto-Optimization is Changing the Game",
    "track": "Machine Learning, NLP and CV (2025)",
    "tweet": "The talk explores various automatic prompt optimization approaches, showcasing their practical applications through frameworks like DSPy & AdalFlow.",
    "website_url": "https://ep2025.europython.eu/session/is-prompt-engineering-dead-how-auto-optimization-is-changing-the-game",
    "youtube_url": "https://youtube.com/watch?v=rPnhJ8uNoJg"
  }
}