🤖 AI Summary
Widespread absence of Python type annotations poses challenges for static analysis and tooling. Existing approaches—static inference, dynamic analysis, and AI-based methods—suffer from overly broad types, logical incompleteness, or prohibitive runtime overhead (up to 270×), and all implicitly assume error-free code—a fundamentally unrealistic assumption.
Method: We propose the first type inference framework modeled as anomaly detection. It combines self-profilng-guided lightweight sampling, statistical filtering, and multi-source type information aggregation to achieve high-precision inference at low runtime cost (average +30% overhead).
Contribution/Results: Our approach generates significantly more precise and fine-grained type annotations—substantially improving recall—while actively identifying latent bugs and boundary defects in unannotated code. It is the first method to simultaneously ensure reliability, efficiency, and error-detection capability on large-scale, untyped codebases.
📝 Abstract
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.