PyCon Portugal 2025

To see our schedule with full functionality, like timezone conversion and personal scheduling, please enable JavaScript and go here.
08:00
08:00
60min
Registration
Auditorium
09:00
09:00
15min
Welcome Session

Welcome Session

Auditorium
09:15
09:15
60min
Keynote 1
Auditorium
10:20
10:20
30min
An A11y for better SEO
Sandro Costa

As applications grow increasingly complex and AI transforms development practices, accessibility has never been more critical. Making your digital products work for people with disabilities doesn't just promote inclusion—it directly improves your SEO performance. This presentation explores the powerful correlation between accessibility and search rankings, providing practical strategies to leverage this relationship for enhanced user experiences and outcomes.

Auditorium
10:50
10:50
30min
Coffee Break
Auditorium
12:00
12:00
30min
Property-based testing the Python way
Emma Saroyan

What if I told you that you could write simpler tests but get better results?

What if I told you can automatically generate your test data?

This may sound difficult to your traditional testing approach but can be easily done with Hypothesis, the Python library used for property-based testing.

Auditorium
12:40
12:40
30min
Python-Driven Robotics: Where Bytes Meet Biopsies
Lilinoe Harbottle

Python's innovation in MedTech: Robotics for precise lung biopsies. See how Python advances healthcare's future.

Auditorium
13:10
13:10
60min
Lunch Break
Auditorium
14:10
14:10
30min
Build without limits - lessons learned from using generative AI dev tools
Ricardo Sueiras

Next generation developer tools that incorporate generative AI are everywhere, but how good are they, and. more importantly, how useful. In this talk I am going to share what I have learned from using these tools over the last 12 months.

Auditorium
14:50
14:50
30min
RAG: Tricks from the trenches.
Duarte Carmo

RAG. You’ve heard about it. Your entire family has heard about it. However, most LLM based projects never make it to production. In this talk, I’ll teach you some tricks on how to make a successful RAG app - so you don’t have to make the same mistakes.

Auditorium
15:20
15:20
30min
Coffee Break
Auditorium
16:30
16:30
30min
Tools to setup great Python projects: 2025 update
Duarte Pompeu

In 2023, I talked about my approach to setup reliable python projects, using tools to manage dependencies robustly and level up the team's code automatically. Since then, new tools have come out and my preferences have changed a bit:

  • Package manger: uv (previously: poetry)
  • Python manager: uv (previously: pyenv)
  • Python binaries manager: uv (previously: pipx)
  • Formatter: ruff + reorder-python-imports (previously: black + isort)
  • Linter: ruff
  • Tester: pytest

I still find it important to centralize your configurations and assure consistent behavior across CLIs, IDEs, CI/CDs, etc. I keep storing all configurations in pyproject.toml and setup a script that calls these tools (usually pre-commit).

Results:
- configure once, get helpful checks forever
- improve workflow for all team members, present and future
- deploy projects deterministically with little surprises
- consistent behavior across different environments

Auditorium
17:10
17:10
30min
Lightning Talks

Lightning Talks

Auditorium
08:00
08:00
60min
Registration
Auditorium
09:00
09:00
60min
Keynote 2
Auditorium
10:10
10:10
30min
Django & HTMX: Patterns for Success
Lucas Pires

This talk explores effective patterns for combining Django and HTMX, addressing common challenges and gaps in standards.
Drawing from real-world experience, it provides practical insights into hypermedia-focused development, covering topics like server-side state management, on-demand resource handling, and component-based templating to enhance your Django projects.

Auditorium
10:40
10:40
30min
Coffee Break
Auditorium
11:10
11:10
30min
Building a Thriving Tech Ecosystem: The Role of PyLadies in Fostering Growth and Inclusion
Gertrude Abagale

The global tech ecosystem continues to grow, yet challenges like limited mentorship, a lack of role models, and fragmented community support hinder progress for underrepresented groups. PyLadies offers a powerful model for bridging these gaps. This talk explores how PyLadies chapters worldwide foster technical growth, increase mentorship opportunities, and drive collaboration to create a more inclusive and sustainable global tech community.

Auditorium
11:50
11:50
30min
Inside the Black Box: The Anatomy of Virtual Environments
Daniel Hervás

Virtual environments are a fundamental part of Python development, but to most developers, they’re largely a ‘black box’. In this talk, we’re gonna dissect the code, file structure and utilities that make them up to deeply learn, and not just have superficial knowledge of, how venvs actually work.

Auditorium
12:30
12:30
30min
QuerySet.explain(): make it make sense
Aivars Kalvāns

We have tools that show what queries are executed and the time it takes. But what next? What is going on there? Is it good that it's doing that? Will some indexes help?
In this talk, I will help you decipher database query plans and give some rules of thumb to understand if the database is doing the best it can. We will learn about different ways databases retrieve the data and how they estimate the cost of those operations. We will also use query plans to find the best function-based and partial indexes for different kinds of Django filter conditions. JSON fields? We will cover those as well! I will also share several anti-patterns I have seen in Django projects and show how to rewrite them in a database-friendly way.

Auditorium
13:00
13:00
60min
Lunch Break
Auditorium
14:00
14:00
30min
Real-time visualization using dash and plotly
Hampo, JohnPaul A.C.

In this paper, a simple live dashboard will be developed using plotly and dash on a practical dataset. This will ease the presentation of data job by abstracting the technicalities and codes from the non-data persons.

Auditorium
14:40
14:40
30min
Unifying Data Management in Python with Ibis
Daniel Mesejo

Discover how Ibis provides a single DataFrame API across pandas, DuckDB, and SQL databases, bridging the gap between data science prototypes and production code.

Auditorium
15:10
15:10
30min
Coffee Break
Auditorium
15:40
15:40
30min
What if you became an open source contributor in 2025?
Amanda Savluchinske

The classic open source dichotomy is well known: everyone uses it, but few give back for the convenience we've all grown so used to. What sustains a community? And how can we help ensure that the frameworks and libraries we rely on daily remain viable and healthy in the long run? In this talk, I intend to show how easy it is to get started with your open source contributions, regardless of your seniority.

Auditorium
16:20
16:20
30min
Simulation of life and of a society
Edson Bomfim

Let's create and observe very simple AI agents in action, seeing in detail how they interact with each other in a competitive situation analogous to our real world. There are many lessons to be learned from the evolution of these “artificial societies”.

Auditorium
17:00
17:00
30min
Lightning Talks

Lightning Talks

Auditorium
17:30
17:30
15min
Closing Session

Closing Session

Auditorium
09:30
09:30
30min
Registration
Workshops 1
09:30
30min
Registration
Workshops 2
10:30
10:30
120min
FastAPI Meets Langchain: crafting a RAG AI-powered chatbot
Giunio De Luca

During the workshop we will create an HTTP-based API that interacts as a chatbot.

It will cover key concepts and delines core challenges such as:
- including integrating a vector database for document retrieval,
- enhancing the capabilities of large language models with retrieved context with Langchain,
- and finally exposing the core operations through endpoints with FastAPI for seamless interaction.

Whether you're a developer aiming to expand your AI toolkit or a data enthusiast exploring RAG, the aims to provide you with the knowledge and skills to design and deploy intelligent, context-driven applications.

Workshops 1
10:30
120min
What We Can Learn from Exemplary Python Documentation
Christian Heitzmann

Let us build on examples from NumPy, pandas, and Matplotlib to explore techniques and tools with the Sphinx documentation generator. Learn how to implement styles, include advanced elements, and overcome challenges in creating clear, maintainable docs. 📑✨

Workshops 2
12:30
12:30
60min
Lunch Break
Workshops 1
12:30
60min
Lunch Break
Workshops 2
13:30
13:30
120min
Building pure Django REST API
Maxim Danilov

The new version of Django has several important features that allow us to avoid installing additional modules. Libraries like DRF, yasg, spectacular have always been recommended for REST API development. Now the rules have changed. In this workshop:
1. The modern art of project development in Django. (µ-Django style).
2. Built-in serializer tools.
3. Json response, an underrated tool.
4. Async ORM and class based views . The best parts of modern Django.

After this workshop, all participants got information about the new features of Django.

Workshops 1
13:30
120min
The Pokémon trainer's guide to Polars
Rodrigo Girão Serrão

Polars is lightning fast, easy to use, dataframe library.
It's clean API and its contexts and expressions allow writing readable but performant data wrangling code.

Aimed at both data newbies and pandas experts (Polars != pandas), in this hands-on tutorial we'll use data from the Pokémon franchise to explore the Polars API and the ideas that set it apart from pandas and other dataframe libraries.

Workshops 2
15:30
15:30
30min
Coffee Break
Workshops 1
15:30
30min
Coffee Break
Workshops 2
16:00
16:00
120min
(Pre-)Commit to Better Code
Stefanie Molin

Maintaining code quality can be challenging, no matter the size of your project or number of contributors. Different team members may have different opinions on code styling and preferences for code structure, while solo contributors might find themselves spending a considerable amount of time making sure the code conforms to accepted conventions. However, manually inspecting and fixing issues in files is both tedious and error-prone. As such, computers are much more suited to this task than humans. Pre-commit hooks are a great way to have a computer handle this for you.

Pre-commit hooks are code checks that run whenever you attempt to commit your changes with Git. They can detect and, in some cases, automatically correct code-quality issues before they make it to your codebase. In this tutorial, you will learn how to install and configure pre-commit hooks for your repository to ensure that only code that passes your checks makes it into your code base. We will also explore how to build custom pre-commit hooks for novel use cases.

Workshops 2