Anastasis Georgoulas
Anastasis Georgoulas is a Software Engineering Trainer at Bloomberg. He has been using Python for 10 years for personal projects, scientific modelling, and many things in between. He still has to look up the rules for hashability and mutability every now and then.
Session
Description
Since its introduction, the use of pyproject.toml has expanded to hold more than project metadata and packaging configuration. It now serves as an entry point for working with Python codebases, which many tools like linters and style checkers rely on. However, many projects still use older setups with multiple configuration files, which are harder to manage, especially for newcomers.
In this tutorial, we will work with an existing codebase to show how pyproject.toml can be used for different goals, including setting up packaging, configuring linting, type checking, and testing.
Outcomes
After this tutorial, participants will be able to:
- Declare dependencies and set up command-line entry points for a package
- Explain the purpose of linters, formatters, and static type analyzers
- Install and use tools like flake8, mypy, and tox, as well as configure them through pyproject.toml
Format
After a brief introduction, this will be a hands-on workshop following written instructions for an existing codebase. Participants will have some freedom to focus on different aspects, depending on their experience level and interests (see Audience section). The expected time breakdown is 15% intro/explanations, 75% hands-on exercises, 10% Q&A.
Audience
This tutorial is mainly aimed at beginner and intermediate Python users. No knowledge of particular libraries is required beyond basic familiarity with Python. Participants who are familiar with the concepts and tools can focus on how to convert an existing set of configurations to pyproject.toml, while less experienced members will focus on the purpose of the different tools.
Speaker Experience
I have been involved in programming training for more than 7 years in both academia and industry. I have experience in developing and delivering lectures, workshops, and tutorials to audiences with varied experience levels and backgrounds. In my current role as an engineering trainer, I deliver courses on deeper Python topics, while also helping maintain a series of tools written in Python and other languages.