Process, Analyze, and Transform Python Code with ASTs

Stefanie Molin

Python Language & Ecosystem
Python Skill Intermediate
Domain Expertise Novice
Wednesday 10:15 in None

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.

Topics covered:

  • Introduction to the term and concept of Abstract Syntax Trees (ASTs)
  • Some of the ways ASTs are used by Python itself and by popular tools
  • Parsing code into an AST and inspecting it
  • Walking the tree: ast.iter_fields(), ast.iter_child_nodes(), ast.walk()
  • Modifying the code before running it
  • Converting an AST into source code again with ast.unparse() and its caveats
  • Finding missing docstrings
  • ast.NodeVisitor and ast.NodeTransformer
  • generic_visit() method — what it does and why we need it using animation
  • 4 exercise breaks spread throughout accounting for ~45 minutes

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.