Published 2024
| Version v4
Software
Open
TypeEvalPy: A Micro-benchmarking Framework for Python Type Inference Tools
Authors/Creators
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 |