RightTyper: Effective and Efficient Type Annotation for Python
By: Juan Altmayer Pizzorno, Emery D. Berger
Potential Business Impact:
Finds mistakes in computer code automatically.
Python type annotations bring the benefits of static type checking to the language. However, manually writing annotations can be time-consuming and tedious. The result is that most real-world Python code remains largely untyped. Past approaches to annotating types in Python code fall short in a number of ways. Static approaches struggle with dynamic features and infer overly broad types. AI-based methods are inherently unsound and can miss rare or user-defined types. Dynamic methods can impose extreme runtime overheads, degrading performance by up to 270x, abort execution as they exhaust resources, and even infer incorrect types that lead to runtime errors. Crucially, all prior work assumes implicitly that the code to be annotated is already correct. This assumption is generally unwarranted, especially for large codebases that have been untyped. This paper presents RightTyper, a novel approach for Python that overcomes these disadvantages. RightTyper not only generates precise type annotations based on actual program behavior, improving recall in type checking relative to prior approaches. It also turns type checking into anomaly detection, allowing the type checker to identify corner cases that the programmer can audit for unintended behavior. RightTyper is also fast and space-efficient, imposing just 30% performance overhead on average. RightTyper achieves these characteristics by a principled yet pervasive use of sampling--guided by self-profiling--along with statistical filtering and careful resolution and aggregation of type information.
Similar Papers
Automated Type Annotation in Python Using Large Language Models
Programming Languages
Helps computers understand code better automatically.
Combining Type Inference and Automated Unit Test Generation for Python
Software Engineering
Helps programs find errors by watching them run.
Practical Type-Based Taint Checking and Inference (Extended Version)
Programming Languages
Finds secret data leaks in computer programs faster.