  In modern software development, Python third-party libraries have become
crucial, particularly due to their widespread use in fields such as deep
learning and scientific computing. However, the parameters of APIs in
third-party libraries often change during evolution, causing compatibility
issues for client applications that depend on specific versions. Due to
Python's flexible parameter-passing mechanism, different methods of parameter
passing can result in different API compatibility. Currently, no tool is
capable of automatically detecting and repairing Python API parameter
compatibility issues. To fill this gap, we propose PCART, the first to
implement a fully automated process from API extraction, code instrumentation,
and API mapping establishment, to compatibility assessment, and finally to
repair and validation, for solving various types of Python API parameter
compatibility issues, i.e., parameter addition, removal, renaming, reordering
of parameters, as well as the conversion of positional parameters to keyword
parameters. We construct a large-scale benchmark PCBENCH, including 47,478 test
cases mutated from 844 parameter-changed APIs of 33 popular Python libraries,
to evaluate PCART. The evaluation results show that PCART is effective yet
efficient, significantly outperforming existing tools (MLCatchUp and Relancer)
and the large language model ChatGPT-4, achieving an F-measure of 96.49% in
detecting API parameter compatibility issues and a repair accuracy of 91.36%.
The evaluation on 14 real-world Python projects from GitHub further
demonstrates that PCART has good practicality. We believe PCART can help
programmers reduce the time spent on maintaining Python API updates and
facilitate automated Python API compatibility issue repair.
