This tutorial will be a roughly 50/50 split of lecture and exercises. Attendees will get hands-on experience working with ASTs in Python, using only the standard library. By recreating common code-quality checks from scratch, attendees will both learn how common tools work under the hood and how to work with the AST in an easy-to-understand fashion. If I’m short on time, I will cut from the final section as that builds upon the previous ones and having a foundation from the other topics will be a more than sufficient base for attendees to continue their studies after the tutorial.
- Introduction to ASTs
- Introduction to me and the plan for the session
- Introduce the term and concept of Abstract Syntax Trees (ASTs)
- Mention some of the ways ASTs are used by Python itself and by popular tools
- Parsing code into an AST and printing it
- Converting an AST into source code again
- Exercise break
- AST traversal, part 1
- Walking the tree
- Overview of AST node types encountered during our walk (ast.Module, ast.ClassDef, ast.FunctionDef, etc.)
- Exercise break
- AST traversal, part 2 (90 minutes)
- Creating an ast.NodeVisitor for basic traversal covering the visit() and generic_visit() methods
- Exercise break, preceded with an introduction to any new AST node types, where necessary
- Visualization of how the traversal was performed and discuss the need to track node ancestry in some applications as a result
- Tracking node ancestry during traversal with a stack
- Exercise break, preceded with an introduction to any new AST node types, where necessary
Stefanie Molin
Stefanie Molin is a software engineer at Bloomberg in New York City, where she tackles tough problems in information security, particularly those revolving around data wrangling/visualization, building tools for gathering data, and knowledge sharing. She is also a core developer of numpydoc and the author of “Hands-On Data Analysis with Pandas: A Python data science handbook for data collection, wrangling, analysis, and visualization,” which is currently in its second edition and has been translated into Korean and Chinese. She holds a bachelor’s of science degree in operations research from Columbia University's Fu Foundation School of Engineering and Applied Science, as well as a master’s degree in computer science, with a specialization in machine learning, from Georgia Tech. In her free time, she enjoys traveling the world, inventing new recipes, and learning new languages spoken among both people and computers.