<?xml version='1.0' encoding='utf-8' ?>
<iCalendar xmlns:pentabarf='http://pentabarf.org' xmlns:xCal='urn:ietf:params:xml:ns:xcal'>
    <vcalendar>
        <version>2.0</version>
        <prodid>-//Pentabarf//Schedule//EN</prodid>
        <x-wr-caldesc></x-wr-caldesc>
        <x-wr-calname></x-wr-calname>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>X7QJN9@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-X7QJN9</pentabarf:event-slug>
            <pentabarf:title>Welcome Session</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250724T090000</dtstart>
            <dtend>20250724T091500</dtend>
            <duration>0.01500</duration>
            <summary>Welcome Session</summary>
            <description>Welcome Session</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Other</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/X7QJN9/</url>
            <location>Auditorium</location>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>TQBNLH@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-TQBNLH</pentabarf:event-slug>
            <pentabarf:title>From Lisbon to Space: Data Science at ExoPlanetary Scale with Python</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250724T091500</dtstart>
            <dtend>20250724T101500</dtend>
            <duration>1.00000</duration>
            <summary>From Lisbon to Space: Data Science at ExoPlanetary Scale with Python</summary>
            <description>What does it mean to lead a boutique data science company in Portugal working with clients across the globe, including the European Space Agency? In this talk, we’ll share the journey of building a specialized team that operates in banking, telecom, pharma, and space, with a spotlight on one of our contributions to the European Space Agency’s ARIEL mission.

As part of this collaboration, we’ll showcase an interactive Streamlit app we developed as an educational tool to explore exoplanet data, from raw light curves to atmospheric spectra, and to experiment with machine learning models that estimate those spectra. This example illustrates how Python can power real-world scientific collaboration and make complex space science accessible, explainable, and interactive.</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Keynote</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/TQBNLH/</url>
            <location>Auditorium</location>
            
            <attendee>Marília Felismino Simões</attendee>
            
            <attendee>Nikki Grens</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>S7NMTF@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-S7NMTF</pentabarf:event-slug>
            <pentabarf:title>An A11y for better SEO</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250724T104000</dtstart>
            <dtend>20250724T111000</dtend>
            <duration>0.03000</duration>
            <summary>An A11y for better SEO</summary>
            <description>Web accessibility and search engine optimization (SEO) share a symbiotic relationship that increasingly defines digital success. When websites are designed to be accessible to people with disabilities, they inherently incorporate many elements that search engines value for ranking purposes. Proper semantic HTML structure, descriptive alt text for images, clear navigation hierarchies, and readable content benefit both users with disabilities and search engine crawlers. This overlap is not coincidental but reflects a fundamental truth: what makes content accessible to humans with diverse needs also makes it more comprehensible to algorithmic systems. As search engines evolve to prioritize user experience metrics, the connection between accessibility and SEO grows stronger, with improved page speed, reduced bounce rates, and enhanced engagement serving both purposes. 
During this presentation, we&#x27;ll explore a small flask app, improve it&#x27;s accessibility and document best practices, while discussing accessibility fundamentals.
Accessibility is a key feature of your application and should always be viewed as an ally for your SEO.

Presentation topics:
- How do people with disabilities interact with our applications
- Web accessibility and the WCAG
- Proper content and structure of a good web app
- Description and context are everything
- HTML Semantics
- Image alt text, video transcriptions and audio descriptions
- Responsiveness and optimized navigation
- Speed and optimization
- Continuous testing and improvements</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Talk</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/S7NMTF/</url>
            <location>Auditorium</location>
            
            <attendee>Sandro Costa</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>J3JQBR@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-J3JQBR</pentabarf:event-slug>
            <pentabarf:title>Unifying Data Management in Python with Ibis</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250724T114000</dtstart>
            <dtend>20250724T121000</dtend>
            <duration>0.03000</duration>
            <summary>Unifying Data Management in Python with Ibis</summary>
            <description>The data ecosystem in Python is fragmented: data scientists typically use pandas or polars, engineers favor SQL or PySpark, and web developers depend on ORMs. This fragmentation leads to silos where code cannot be shared, prototypes have to be rewritten for production, and knowledge transfer is hindered, even though everyone is working with the same underlying data.
As a contributor to Ibis for the past two years, I&#x27;ll demonstrate how this portable DataFrame library provides a unified API across pandas, DuckDB, PostgreSQL, and more, enabling true collaboration between teams without sacrificing performance.
The presentation will begin with a practical demonstration of the same data query written three different ways - in pandas, SQL, and an ORM - highlighting the costs of this fragmentation. Attendees will then see an overview of the tools different roles typically use and their limitations through a simple demo task.
Next, the talk will dive into Ibis core concepts, explaining its architecture that separates interface from execution engine, its deferred execution model, and support for 20+ backends. This section includes a short demo of building an analytics query step by step.
The heart of the presentation will be two real-world examples: first, taking a data exploration workflow to production using the same Ibis code across pandas, DuckDB, and PostgreSQL with performance comparisons; second, integrating analytics into web applications, showing how data science and web development teams can share code.
The talk will conclude with strategic considerations on when to leverage native SQL capabilities and performance optimization tips.
Attendees will learn to write Pythonic data code that works across multiple engines, strategically use SQL while keeping most code in Python, share code between prototyping and production, and process data significantly faster than with pandas alone.
This talk is for data scientists, engineers, web developers, and anyone working with tabular data. No specific SQL knowledge is required, though familiarity with pandas or other DataFrame libraries will be helpful.</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Talk</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/J3JQBR/</url>
            <location>Auditorium</location>
            
            <attendee>Daniel Mesejo</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>KCQ3MA@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-KCQ3MA</pentabarf:event-slug>
            <pentabarf:title>Property-based testing the Python way</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250724T121000</dtstart>
            <dtend>20250724T124000</dtend>
            <duration>0.03000</duration>
            <summary>Property-based testing the Python way</summary>
            <description>This is an introductory talk about property-based testing. The talk requires some previous knowledge about testing to make the most out of it but if you are new and curious I think you would get something out of it.
The talk approaches a simple problem from two different testing perspectives. Giving you an idea about property-based testing and how it’s different from the traditional approach with Python.

The main focus of the topic would be Hypothesis and how you can achieve your testing goals with it.
By the end of this talk you would have a solid understanding of property-based testing with Hypothesis, that would help you decide which testing approach fits your need.

Given below is a rough overview of the talk structure:
The testing problem. (10 mins)
The traditional approach. 
Cons of traditional approach.
What is property-based testing. 
Intro to Hypothesis. (20 mins)
Same problem solution with Hypothesis. 
Why choose Hypothesis as a go-to property-based testing tool. 
Parameterized testing with Pytest vs Hypothesis approach. 
When or when not to use property based testing. 
How you can adopt Hypothesis in your code base.</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Talk</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/KCQ3MA/</url>
            <location>Auditorium</location>
            
            <attendee>Emma Saroyan</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>3KPGAT@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-3KPGAT</pentabarf:event-slug>
            <pentabarf:title>Python-Driven Robotics: Where Bytes Meet Biopsies</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250724T124000</dtstart>
            <dtend>20250724T131000</dtend>
            <duration>0.03000</duration>
            <summary>Python-Driven Robotics: Where Bytes Meet Biopsies</summary>
            <description>Explore how Python&#x27;s robust ecosystem is driving innovation in medical robotics. This talk will showcase Python&#x27;s potential to enable minimally-invasive robot-assisted lung biopsies with unprecedented accuracy, including high sensitivity and specificity on hundreds of medical images.

&lt;b&gt;Minimally-Invasive Robotic Systems:&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Understand the system for biopsy procedures, focusing on precision and minimally-invasive techniques.&lt;/li&gt;
&lt;li&gt;Examine Python libraries for imaging, highlighting algorithmic solutions for nodule targeting.&lt;/li&gt;
&lt;li&gt;Discuss challenges encountered when achieving high accuracy and sensitivity, and solutions developed to overcome them.&lt;/li&gt;&lt;/ul&gt;
&lt;b&gt;Algorithmic Diagnostics:&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;Delve into the application of 3D Convolutional Neural Networks (TensorFlow, Keras) for enhanced lung nodule detection.&lt;/li&gt;
&lt;li&gt;Analyze the model&#x27;s performance on large-scale medical image datasets, key metrics, and complexities of training such models.&lt;/li&gt;
&lt;/ul&gt;
We&#x27;ll explore how Python empowers advanced medical imaging, predictive maintenance, and real-time telemetry, shaping the future of AI-driven surgery. This presentation aims to inspire the PyCon Portugal community (and beyond!), highlighting Python&#x27;s potential to advance MedTech and improve patient care through innovative robotic solutions.</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Talk</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/3KPGAT/</url>
            <location>Auditorium</location>
            
            <attendee>Lilinoe Harbottle</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>VJQRJZ@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-VJQRJZ</pentabarf:event-slug>
            <pentabarf:title>Build without limits - lessons learned from using generative AI dev tools</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250724T141000</dtstart>
            <dtend>20250724T144000</dtend>
            <duration>0.03000</duration>
            <summary>Build without limits - lessons learned from using generative AI dev tools</summary>
            <description>This talk is always evolving as the AI coding landscape changes.

I will cover the kinds of day-to-day scenarios and use cases I am finding them useful for, how they are helping me address some of my developer problems, and tips I have learned to more effectively use these tools. This builds upon a series of blogs posts where I have been sharing my experiences (and code) in 2024.

This session contains live coding/demos that will help you see this in action.</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Talk</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/VJQRJZ/</url>
            <location>Auditorium</location>
            
            <attendee>Ricardo Sueiras</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>PFTBFK@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-PFTBFK</pentabarf:event-slug>
            <pentabarf:title>What&#x27;s new in Python 3.14</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250724T145000</dtstart>
            <dtend>20250724T152000</dtend>
            <duration>0.03000</duration>
            <summary>What&#x27;s new in Python 3.14</summary>
            <description>In this talk we&#x27;ll explore the new features in Python 3.14 through live coding examples that show how they work in practice. This includes:

* Free threaded Python
* Multiple interpreters
* Deferred evaluation of annotations
* Template strings
* Asyncio introspection
* Remote attaching to a running Python process
* Better error messages

If you prefer seeing new features in action over reading release notes this is the talk for you!</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Talk</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/PFTBFK/</url>
            <location>Auditorium</location>
            
            <attendee>Anže Pečar</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>GLYSA7@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-GLYSA7</pentabarf:event-slug>
            <pentabarf:title>A tour of the module `itertools`</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250724T155000</dtstart>
            <dtend>20250724T162000</dtend>
            <duration>0.03000</duration>
            <summary>A tour of the module `itertools`</summary>
            <description>The talk proposes splitting the module itertools in 5 categories of iterables: combinatorial, reshaping, infinite, filtering, and complementary.

For each category, we will explore the tools available, look at examples of usage, and understand when each iterable can be useful.

Oh, and there’s also `tee`. Let us not forget `tee`!</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Talk</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/GLYSA7/</url>
            <location>Auditorium</location>
            
            <attendee>Rodrigo Girão Serrão</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>UJJX3N@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-UJJX3N</pentabarf:event-slug>
            <pentabarf:title>Tools to setup great Python projects: 2025 update</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250724T163000</dtstart>
            <dtend>20250724T170000</dtend>
            <duration>0.03000</duration>
            <summary>Tools to setup great Python projects: 2025 update</summary>
            <description># Summary 

In 2023, I presented &quot;How to setup great Python projects&quot; in PyCon Portugal. I talked about my setup that brought some goodies to me and my team with little effort: good package management, automatic formatting, lint with auto-fixing, and others.

2 years later, I&#x27;ve changed my workflow to include recent tooling and I&#x27;m getting even better results, so I&#x27;d like to share my experience again.

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

# Tools

## Package/python/binaries manager

2025: `uv`
2023: `poetry` / `pyenv` / `pipx`

After creating the widely popular `ruff`, the code formatter and linter, astral created `uv`, a package manager with similar principles behind: speed and quality.

I like how fast it is, and how you can also manage python versions and standalone binaries with it.

My favorite features:
- good dependency solving and locking: makes deployments very deterministic
- speed: it&#x27;s fast and pleasing to use
- batteries included:  does what previously required 3 different tools
- backwards-compatibility with pip: I can immediately migrate projects that use `pip` and `requirements.txt` to `uv`

## Formatters

2025: `uv` + `reorder-python-imports`
2023: `black` + `isort`

`uv` has introduced the option to format code, which is very similar to `black` and `isort` but much quicker, and will also allow linting code. So I&#x27;m using it and I&#x27;m quite happy.

`reorder-python-imports` first felt a bit strange, but has reduced the amount of git conflicts when different people change imports, so I&#x27;m fully onboard.

My favorite features of `ruff`:
- it&#x27;s fast
- it also lints code

My favorite features of `reorder-python-imports`:
- it reduces git conflicts

## Linters

2025: `ruff`
2023: `ruff`

I&#x27;m still using ruff: it was promising before, and it&#x27;s the best nowadays.

My favorite features:
- it&#x27;s fast
- it supports a lots of rules, and keeps growing
- it also formats code

## Tester

2025: pytest
2023: pytest

I still find pytest a nice solution for tests, and more pythonic than the native `unittest` module.

My favorite features:

- it&#x27;s more pythonic than `unittest`
- it allows re-usable fixtures and parametrization out of the box

# Centralizing the configurations

1. I store all configs in `pyproject.toml`, which is the default place for configuration nowadays. 
2.  I write some script (Makefile, or pre-commit, or shell) to invoke the formatters, linters, etc WITHOUT any flag - (they will check `pyproject.toml` automatically)

The result:
- it&#x27;s easy to apply the checks in the CLI (run the script)
- it&#x27;s easy for IDEs to emit warnings and format on save (check pyproject.toml)
- it&#x27;s easy for CI/CD processes to check PRs (run the script)

And all this happens consistently without drift across different processes!

# Results

I find these to be the most important results:

- configure once, get helpful checks forever
- improve workflow for all team members (present and future)
- deploy projects deterministically with little surprises
- achieve consistent behavior across different environments</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Talk</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/UJJX3N/</url>
            <location>Auditorium</location>
            
            <attendee>Duarte Pompeu</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>YNU98X@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-YNU98X</pentabarf:event-slug>
            <pentabarf:title>Lightning Talks</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250724T171000</dtstart>
            <dtend>20250724T174000</dtend>
            <duration>0.03000</duration>
            <summary>Lightning Talks</summary>
            <description>Lightning Talks</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Talk</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/YNU98X/</url>
            <location>Auditorium</location>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>7QLPMN@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-7QLPMN</pentabarf:event-slug>
            <pentabarf:title>Um Siri fazendo barra</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250725T090000</dtstart>
            <dtend>20250725T100000</dtend>
            <duration>1.00000</duration>
            <summary>Um Siri fazendo barra</summary>
            <description>Sometimes the best way forward is to parse through unexpected choices, backtrack when needed, and commit to what works. This keynote is about a  journey exploring how we navigate through ordered attempts, pattern matching, and discovering that successful parsing often depends on the right lookahead. Stories of memoizing the lessons that matter and learning when to fail fast versus when to keep trying alternative paths.</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Keynote</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/7QLPMN/</url>
            <location>Auditorium</location>
            
            <attendee>Pablo Galindo Salgado</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>ZQUSTH@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-ZQUSTH</pentabarf:event-slug>
            <pentabarf:title>Django &amp; HTMX: Patterns for Success</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250725T101000</dtstart>
            <dtend>20250725T104000</dtend>
            <duration>0.03000</duration>
            <summary>Django &amp; HTMX: Patterns for Success</summary>
            <description>This talk is designed for Python developers who are either interested in HTMX development or have some experience working with it. 
The Python and Django communities have been at the forefront of the “hypermedia revolution,” serving as one of the early adopters of HTMX.

While there are numerous introductory tutorials and presentations detailing the shift from SPAs to HTMX with great success, there&#x27;s a noticeable gap when it comes to established patterns and practical, technical examples drawn from real, in-production applications.

In this talk, I&#x27;ll start by explaining why Django and HTMX make such a powerful combination and offer solutions to common challenges and gaps in standards that arise during HTMX-driven application development.

Drawing from my experience working on various projects with this tech stack, I’ll share practical insights on how to structure Django projects with a stronger focus on the hypermedia approach.

Topics such as server-side state management, on-demand resource handling and component-based templating are just some of the topics that will be delved into in order to show the strengths of the hypermedia approach.</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Talk</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/ZQUSTH/</url>
            <location>Auditorium</location>
            
            <attendee>Lucas Pires</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>KWZZZS@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-KWZZZS</pentabarf:event-slug>
            <pentabarf:title>Data Morph: A Cautionary Tale of Summary Statistics</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250725T111000</dtstart>
            <dtend>20250725T114000</dtend>
            <duration>0.03000</duration>
            <summary>Data Morph: A Cautionary Tale of Summary Statistics</summary>
            <description>Statistics do not come intuitively to humans; they always try to find simple ways to describe complex things. Given a complex dataset, they may feel tempted to use simple summary statistics like the mean, median, or standard deviation to describe it. However, these numbers are not a replacement for visualizing the distribution.

To illustrate this fact, researchers have generated many datasets that are very different visually, but share the same summary statistics. In this talk, I will discuss [Data Morph](https://github.com/stefmolin/data-morph), an open source package that builds on previous research using simulated annealing to perturb an arbitrary input dataset into a variety of shapes, while preserving the mean, standard deviation, and correlation to multiple decimal points. I will showcase how it works, discuss the challenges faced during development, and explore the limitations of this approach.</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Talk</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/KWZZZS/</url>
            <location>Auditorium</location>
            
            <attendee>Stefanie Molin</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>9PNTEV@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-9PNTEV</pentabarf:event-slug>
            <pentabarf:title>Inside the Black Box: The Anatomy of Virtual Environments</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250725T115000</dtstart>
            <dtend>20250725T122000</dtend>
            <duration>0.03000</duration>
            <summary>Inside the Black Box: The Anatomy of Virtual Environments</summary>
            <description>We all use virtual environments, but do we know how they work? What’s inside a virtual environment? Why do we even have to ‘activate’ them anyways, and what does that mean in the first place? In this talk, we’re gonna discover that.

First, we’ll need to go over how Python installs work in modern operating systems (hopefully, the days of xkcd 1987 https://xkcd.com/1987/ are long gone), and how we can’t isolate projects without the aid of a tool such as these virtual environments. 

Then, we’ll go over the files and folders inside venvs, examine their purpose, and browse through the venv module source code to understand the CLI tool we use every day. We’ll install some deps and see how those fit inside this virtual environment structure.

Lastly, we’ll check which problems are not solved by virtual environments, its limitations depending on the scope we’re looking for (i.e, a venv is not a container! And shouldn’t be used as such!), and how, lately, many libraries which purpose overlap with those of venvs are actually wrapping over this functionality so that you don’t have to manage it yourself (beware the law of leaky abstractions!).</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Talk</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/9PNTEV/</url>
            <location>Auditorium</location>
            
            <attendee>Daniel Hervás</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>3KBMXY@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-3KBMXY</pentabarf:event-slug>
            <pentabarf:title>QuerySet.explain(): make it make sense</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250725T123000</dtstart>
            <dtend>20250725T130000</dtend>
            <duration>0.03000</duration>
            <summary>QuerySet.explain(): make it make sense</summary>
            <description>This might change: introduce explain plan, overview of table/index/parallel scans, nested loop/hash joins. Different approaches when we need less than 5-10% of data or more. Query cost calculation, why database will not choose multiple indexes on separate fields. Nulls in indexes, &quot;NOT IN&quot; queries, how to transform them into &quot;IN&quot; queries.  Creating indexes for specific queries including the proper typecast, lower/upper/like. Using explain plan to see what index the database is looking for. Partial indexes. How active searches over multiple tables fail (OR conditions) and how to fix that (actually did it for clients and had some revelations about Postgres). Will have a demo django code for that.</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Talk</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/3KBMXY/</url>
            <location>Auditorium</location>
            
            <attendee>Aivars Kalvāns</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>Z93RGG@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-Z93RGG</pentabarf:event-slug>
            <pentabarf:title>Visualizing complexity</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250725T140000</dtstart>
            <dtend>20250725T143000</dtend>
            <duration>0.03000</duration>
            <summary>Visualizing complexity</summary>
            <description>Sun Tzu said in The Art of War: &quot;If you know your enemy and know yourself, you have nothing to fear from the outcome of a hundred battles&quot;. 
In this talk we will talk about how to measure project complexity and how to visualize this complexity for successful follow-up actions to reduce complexity.

In each part of the talk, examples of complexity measurements in well-known OS projects will be given. Thanks to visualization tools we will be able to take a closer look at our enemy.

In this talk:
1. Arts of Complexity
2. Critical mass of tech debt
3. Managed complexity
4. Measuring complexity
5. CCL index
6. OOP vs FB style measurement.
7. Coupling/Cohesion index.
8. Cognitive Complexity Index
9. Cyclomatic Complexity
10. Composite code quality Index
11. Strategies to distribute or reduce complexity
12. Refactoring
13. Defining refactoring Hot Zones
14. Visual «heatmaps» of changes
15. Changing abstraction level
16. Increasing modularity
17. Extracting Dependency
18. Isolation without refactoring
19. Imports control
20. KIS- Keep Imports Short
21. TDD - Three dots deprecation
22. Alternatives for Type-Hinting
23. Documentation
24. LLMs
25. Summary + Q&amp;A

This workshop will offer participants a list of tools to measure and visualize complexity in any project.</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Talk</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/Z93RGG/</url>
            <location>Auditorium</location>
            
            <attendee>Maxim Danilov</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>TC8ZAX@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-TC8ZAX</pentabarf:event-slug>
            <pentabarf:title>Pablo does random stuff</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250725T143500</dtstart>
            <dtend>20250725T150500</dtend>
            <duration>0.03000</duration>
            <summary>Pablo does random stuff</summary>
            <description>Join Pablo in an exploration of random Python stuff!</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Talk</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/TC8ZAX/</url>
            <location>Auditorium</location>
            
            <attendee>Pablo Galindo Salgado</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>EDNLWT@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-EDNLWT</pentabarf:event-slug>
            <pentabarf:title>What if you became an open source contributor in 2025?</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250725T151000</dtstart>
            <dtend>20250725T154000</dtend>
            <duration>0.03000</duration>
            <summary>What if you became an open source contributor in 2025?</summary>
            <description>The classic open source dichotomy is well known: everyone uses it, but few give back for the convenience we&#x27;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?

Contributing is easier than it seems. Maintainers are, more often than not, more welcoming and kind than you&#x27;d expect, and I want to show you how simple it can be to take your first steps in this world. After all, it wasn&#x27;t that long ago that I was in that exact same place.

In this talk, you can expect to:

- Learn a bit more about the open source ecosystem;
- Understand how these decentralized communities operate at a basic level;
- Get practical tips on how to start contributing and explore possible paths you can take.

Talk outline:

- Personal introduction
- Open source and its sustainability
- Demystifying barriers to contributing
    - Maintainers — what do they want?
    - How senior do I need to be to contribute?
- How to start contributing?
    - Mentorship programs
        - Djangonaut Space
    - Getting involved in communities and forums
- Practical tips for contributing to OSS projects
    - Navigating repositories
    - Using AI to help understand codebases
    - Finding good issues to start contributing
    - Best practices for contributing
        - Conventional Commits
        - TDD
        - Documentation updates
    - Communicating with maintainers</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Talk</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/EDNLWT/</url>
            <location>Auditorium</location>
            
            <attendee>Amanda Savluchinske</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>7YHMDK@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-7YHMDK</pentabarf:event-slug>
            <pentabarf:title>The role of C++ in the Python ecosystem: the case of the Qt framework</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250725T162000</dtstart>
            <dtend>20250725T165000</dtend>
            <duration>0.03000</duration>
            <summary>The role of C++ in the Python ecosystem: the case of the Qt framework</summary>
            <description>With the recent popularity of new programming languages that are improving the Python ecosystem, one cannot dismiss the role of “old” languages like C++, and how the new versions might stay relevant.

With these ideas in mind, how do you bring a huge project, as old as Python, written in C++ to Python? If you are thinking: «…just create some bindings and call it a day» you will be surprised.

On this talk, we will dive directly into the internals on how the Qt for Python project brought one of the most popular C++ frameworks into Python - but not only with 1-to1 bindings.

We will discuss about build systems, packaging, limited API, interpreters support, Platform and API compatibility, Python and C++ types, ecosystem awareness, CPython code generation, communities, documentation, and many more challenging aspects of maintaining and developing a C++ library in Python.

After this talk, you will not only understand why exposing an existing library from one language to another is much more than just binding them together, but also you will be able to start developing Python applications with Qt.

Outline
- Introduction to C++ and quick summary of changes from the recent versions
- Describing the Qt framework, history, features and scope.
- Exposing C++ projects into Python
 + Build system details
 + Limited API and CPython
 + Packaging and distribution
- [demo] Developing an hybrid Python and C++ application
- [demo] Developing a Qt for Python application from Scratch</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Talk</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/7YHMDK/</url>
            <location>Auditorium</location>
            
            <attendee>Cristián Maureira-Fredes</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>3YB3VB@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-3YB3VB</pentabarf:event-slug>
            <pentabarf:title>Lightning Talks</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250725T170000</dtstart>
            <dtend>20250725T173000</dtend>
            <duration>0.03000</duration>
            <summary>Lightning Talks</summary>
            <description>Lightning Talks</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Talk</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/3YB3VB/</url>
            <location>Auditorium</location>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>KSJDHU@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-KSJDHU</pentabarf:event-slug>
            <pentabarf:title>Closing Session</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250725T173000</dtstart>
            <dtend>20250725T174500</dtend>
            <duration>0.01500</duration>
            <summary>Closing Session</summary>
            <description>Closing Session</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Other</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/KSJDHU/</url>
            <location>Auditorium</location>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>BRPBEV@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-BRPBEV</pentabarf:event-slug>
            <pentabarf:title>Understanding and expanding Python: hand-on experience with the Python internals</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250726T103000</dtstart>
            <dtend>20250726T123000</dtend>
            <duration>2.00000</duration>
            <summary>Understanding and expanding Python: hand-on experience with the Python internals</summary>
            <description>(check [the repository](https://github.com/cmaureir/cpython_tutorial))
On this tutorial you will learn to:

* Explore the core of the standard Python implementation
* Modify the interpreter by adding new functions
* Extend Python with C, Rust, and Zig.

The session will be a combination of a theoretical introduction of the topics, followed by a hand-on experience on each step.

Here is an outline of what will be done:

* Navigating CPython (short presentation)
* Setting up a development environment
* Compiling CPython from source
* Adding a free function to the interpreter
* Adding a new method to a Python container (list or set)
* Extending CPython (short presentation)
* Minimal C-extension for &quot;Hello World&quot;
* Minimal Rust, and Zig extensions for &quot;Hello World&quot;,
* Create a new extension replacing Python functionality with C, Rust and Zig.</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Workshop</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/BRPBEV/</url>
            <location>D -112, Floor -1 (Room Madeira)</location>
            
            <attendee>Cristián Maureira-Fredes</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>HAD3VX@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-HAD3VX</pentabarf:event-slug>
            <pentabarf:title>The Pokémon trainer&#x27;s guide to Polars</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250726T133000</dtstart>
            <dtend>20250726T153000</dtend>
            <duration>2.00000</duration>
            <summary>The Pokémon trainer&#x27;s guide to Polars</summary>
            <description>**Set-up instructions**: install Polars (1.12+); jupyter notebooks are optional.

---

The [Polars](https://github.com/pola-rs/polars) dataframe library leverages a couple of key concepts to allow you to write lightning-fast data manipulation code: contexts and expressions.

The tutorial is split in 4 sections of roughly 30 minutes:
1. The basics
2. Expression expansion
3. Data transformations
4. The lazy API
### 1. The basics

Early on in the tutorial we will introduce the concept of expression and explain that expressions simply _represent_ computations, but do not compute anything.
Then, using Polars contexts (`select`, `group_by`, etc), Polars takes expressions and performs computations, producing a result that depends on the context used.
The first 30 minutes of the tutorial are spent exploring the four basic contexts that Polars provides:
1. `select`
2. `with_columns`
3. `filter`
4. `group_by`

### 2. Expression expansion

Effective use of the Polars API can only be attained if you become comfortable with expression expansion, a Polars feature that is highly intuitive but that requires some practising to recognise all of the opportunities where it could be used.
During this section, we explore how to select columns based on names, patterns, data types, and how to use the Polars column selectors `polars.selectors`.

### 3. Data transformations

During this section we spend some time playing with some general-purpose transformations and we see how the Polars API exposes them, namely pivots and unpivots, as well as several types of joins: equi-joins, the join asof, and a non-equi join.

### 4. The lazy API

Finally, we conclude the tutorial by going through one of the most important features of Polars, which is what enables Polars uses to process enormous amounts of data at impressive speeds: the lazy API.
During this section, we explore how the lazy API differs from the eager API, how to write queries with the lazy API and how to execute them, how to use streaming, and how to do profiling.

---

I will present the tutorial in a notebook and the whole tutorial will be practical and the audience is supposed to follow along while I live-code.
In each section, there will be around 15 minutes for participants to work on exercises to practise the concepts introduced.

(During the whole tutorial I will have a script that continuously synchronises my live-coded demos with a GitHub repository so that everyone can pull my code locally if they get lost.)</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Workshop</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/HAD3VX/</url>
            <location>D -112, Floor -1 (Room Madeira)</location>
            
            <attendee>Rodrigo Girão Serrão</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>KYUBDF@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-KYUBDF</pentabarf:event-slug>
            <pentabarf:title>(Pre-)Commit to Better Code</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250726T160000</dtstart>
            <dtend>20250726T180000</dtend>
            <duration>2.00000</duration>
            <summary>(Pre-)Commit to Better Code</summary>
            <description>## Section 1: Setting Up Pre-Commit Hooks

After laying the foundation with an overview of Git hooks, we will discuss the use cases for hooks at the pre-commit stage (called pre-commit hooks), as well as a high-level explanation of how to set them up without any external tools. We will then introduce the `pre-commit` tool and disambiguate it from pre-commit hooks, before commencing a detailed walkthrough of the pre-commit hooks setup process when using `pre-commit`.

## Section 2: Creating a Pre-Commit Hook
While there are a lot of pre-made hooks in existence, sometimes they aren&#x27;t sufficient for the task at hand. In this section, we will walk step-by-step through the process of creating and distributing a custom hook. After wiring everything up, we will discuss best practices for sharing, documenting, testing, and maintaining the codebase.

## Audience
This tutorial is for anyone with intermediate knowledge of Python and basic knowledge of `git`. You must be comfortable writing Python code and working with `git` on the command line and using basic commands (`git clone`, `git add`, `git status`, `git commit`, `git push`). Attendees should have Python and `git` installed on their computers, as well as a text editor for writing code (e.g., Visual Studio Code).</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Workshop</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/KYUBDF/</url>
            <location>D -112, Floor -1 (Room Madeira)</location>
            
            <attendee>Stefanie Molin</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>38R3EF@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-38R3EF</pentabarf:event-slug>
            <pentabarf:title>FastAPI Meets Langchain: crafting a RAG AI-powered chatbot</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250726T103000</dtstart>
            <dtend>20250726T123000</dtend>
            <duration>2.00000</duration>
            <summary>FastAPI Meets Langchain: crafting a RAG AI-powered chatbot</summary>
            <description># Description
*RAG* (Retrieval-Augmented Generation) is an emerging paradigm in AI that combines the strengths of retrieval systems and generative models to deliver context-aware, highly relevant responses.

By leveraging FastAPI and Langchain, a modular tool for interacting with language models and knowledge sources, you&#x27;ll learn how to create an AI assistant application for a shop.

The purpose of the workshop is to outline the core challenges to face when building a chatbot, covering key concepts, including the integration of a vector database for document retrieval, configuring FastAPI endpoints for seamless interaction, and using Langchain to enhance the capabilities of large language models with retrieved context. 

## Prerequisites
- good understanding of Python syntax, 
- familiarity with the asyncio library and aync await syntax. 
- basic knowledge of HTTP services, such as HTTP requests, methods etc.., 
- prior experience with FastAPI is not required, it can be helpful for following along. 
- general understanding or interest in Generative AI is beneficial but not essential.</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Workshop</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/38R3EF/</url>
            <location>D -114, Floor -1 (Room Azores)</location>
            
            <attendee>Giunio De Luca</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>PPZBB8@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-PPZBB8</pentabarf:event-slug>
            <pentabarf:title>Building pure Django REST API</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250726T133000</dtstart>
            <dtend>20250726T153000</dtend>
            <duration>2.00000</duration>
            <summary>Building pure Django REST API</summary>
            <description>In this workshop: 
1. Modern art of Django project development. Theory
2. Starting a project using the Documentation first approach.
3. Adding API visualization and manual testing utility.
4. Create the first django api view
break 
6. Using the serializer tools.
7. Adding validators
*8. Async ORM and class-based views
*9. Testing

After this workshop, all participants got information about the new features of Django.</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Workshop</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/PPZBB8/</url>
            <location>D -114, Floor -1 (Room Azores)</location>
            
            <attendee>Maxim Danilov</attendee>
            
        </vevent>
        
        <vevent>
            <method>PUBLISH</method>
            <uid>EMWGJK@@pretalx.evolutio.pt</uid>
            <pentabarf:event-id></pentabarf:event-id>
            <pentabarf:event-slug>-EMWGJK</pentabarf:event-slug>
            <pentabarf:title>Advanced decorators – decorators &amp; classes</pentabarf:title>
            <pentabarf:subtitle></pentabarf:subtitle>
            <pentabarf:language>en</pentabarf:language>
            <pentabarf:language-code>en</pentabarf:language-code>
            <dtstart>20250726T160000</dtstart>
            <dtend>20250726T180000</dtend>
            <duration>2.00000</duration>
            <summary>Advanced decorators – decorators &amp; classes</summary>
            <description>This hands-on workshop is divided into 4 sections of 30 minutes each:

 1. Decorators refresher.
 2. Advanced function decorators.
 3. Classes as decorators.
 4. Decorating classes.

Each section is divided into 15 minutes of live-coded lecture and 15 minutes for exercises where participants work in pairs to solve coding exercises.

The first section briefly recaps the fundamental concepts behind function decorators and the second section introduces the concepts required to write decorators with arguments.

The third section shows how classes can also be decorators, allowing you to create flexible and powerful decorators that leverage the full strength of OOP.

Finally, the fourth section shows how to apply decorators to classes, typically for the purpose of streamlining the definition of some boilerplate code.

**Pre-requisites**: attendees are expected to have used decorators before and to have written one or two decorators for themselves. Attendees are expected to be comfortable writing classes, methods, and implementing the dunder method `__init__`.

**Set-up**: your IDE of choice and Python 3.12+.

**Reference materials**: the reference materials can be found online at &lt;https://decorators.mathspp.com&gt;</description>
            <class>PUBLIC</class>
            <status>CONFIRMED</status>
            <category>Workshop</category>
            <url>https://pretalx.evolutio.pt//pycon-portugal-2025/talk/EMWGJK/</url>
            <location>D -114, Floor -1 (Room Azores)</location>
            
            <attendee>Rodrigo Girão Serrão</attendee>
            
        </vevent>
        
    </vcalendar>
</iCalendar>
