Published 2024 | Version v4
Software Open

TypeEvalPy: A Micro-benchmarking Framework for Python Type Inference Tools

Description

GitHub link: https://github.com/secure-software-engineering/TypeEvalPy

A Micro-benchmarking Framework for Python Type Inference Tools

πŸ“Œ Features:

  • πŸ“œ Contains 154 code snippets to test and benchmark.
  • 🏷 Offers 845 type annotations across a diverse set of Python functionalities.
  • πŸ“‚ Organized into 18 distinct categories targeting various Python features.
  • 🚒 Seamlessly manages the execution of containerized tools.
  • πŸ”„ Efficiently transforms inferred types into a standardized format.
  • πŸ“Š Automatically produces meaningful metrics for in-depth assessment and comparison.

 

πŸ› οΈ Supported Tools

Supported βœ… In-progress πŸ”§ Planned πŸ’‘
HeaderGen Intellij PSI Llama 2
Jedi Pyre ChatGPT
Pyright PySonar2  
HiTyper Pytype  
Scalpel TypeT5  
Type4Py    

πŸ† TypeEvalPy Leaderboard

Below is a comparison showcasing exact matches across different tools, coupled with top_n predictions for ML-based tools.

Rank πŸ› οΈ Tool Top-n Function Return Type Function Parameter Type Local Variable Type Total
1 HeaderGen 1 186 56 322 564
2 Jedi 1 122 0 293 415
3 Pyright 1 100 8 297 405
4 HiTyper 1
3
5
163
173
175
27
37
37
179
225
229
369
435
441
5 HiTyper (static) 1 141 7 102 250
6 Scalpel 1 155 32 6 193
7 Type4Py 1
3
5
39
103
109
19
31
31
99
167
174
157
301
314

(Auto-generated based on the the analysis run on 20-10-23 14:51)

🐳 Running with Docker

 

1️⃣ Clone the repo

git clone https://github.com/ashwinprasadme/TypeEvalPy.git
 

2️⃣ Build Docker image

docker build -t typeevalpy .
 

3️⃣ Run TypeEvalPy

πŸ•’ Takes about 30mins on first run to build Docker containers.

πŸ“‚ Results will be generated in the results folder within the root directory of the repository. Each results folder will have a timestamp, allowing you to easily track and compare different runs.

docker run \
      -v /var/run/docker.sock:/var/run/docker.sock \
      -v ./results:/app/results \
      typeevalpy
 

πŸ”§ Optionally, run analysis on specific tools:

docker run \
      -v /var/run/docker.sock:/var/run/docker.sock \
      -v ./results:/app/results \
      typeevalpy --runners headergen scalpel
 

πŸ› οΈ Available options: headergen, pyright, scalpel, jedi, hityper, type4py, hityperdl

Files

TypeEvalPy-main.zip

Files (651.9 kB)

Name Size Download all
md5:8513f95f0eadd58ac1b403211e89e28f
651.9 kB Preview Download