Characterizing Python Library Migrations
- URL: http://arxiv.org/abs/2207.01124v2
- Date: Mon, 29 Jan 2024 17:28:50 GMT
- Title: Characterizing Python Library Migrations
- Authors: Mohayeminul Islam and Ajay Kumar Jha and Ildar Akhmetov and Sarah Nadi
- Abstract summary: We label 3,096 migration-related code changes in 335 Python library migrations.
We find that 40% of library pairs have API mappings that involve non-function program elements.
On average, a developer needs to learn about 4 APIs and 2 API mappings to perform a migration.
- Score: 2.2557806157585834
- License: http://creativecommons.org/licenses/by/4.0/
- Abstract: Developers heavily rely on Application Programming Interfaces (APIs) from
libraries to build their software. As software evolves, developers may need to
replace the used libraries with alternate libraries, a process known as library
migration. Doing this manually can be tedious, time-consuming, and prone to
errors. Automated migration techniques can help alleviate some of this burden.
However, designing effective automated migration techniques requires
understanding the types of code changes required to transform client code that
used the old library to the new library. This paper contributes an empirical
study that provides a holistic view of Python library migrations, both in terms
of the code changes required in a migration and the typical development effort
involved. We manually label 3,096 migration-related code changes in 335 Python
library migrations from 311 client repositories spanning 141 library pairs from
35 domains. Based on our labeled data, we derive a taxonomy for describing
migration-related code changes, PyMigTax. Leveraging PyMigTax and our labeled
data, we investigate various characteristics of Python library migrations, such
as the types of program elements and properties of API mappings, the
combinations of types of migration-related code changes in a migration, and the
typical development effort required for a migration. Our findings highlight
various potential shortcomings of current library migration tools. For example,
we find that 40% of library pairs have API mappings that involve non-function
program elements, while most library migration techniques typically assume that
function calls from the source library will map into (one or more) function
calls from the target library. As an approximation for the development effort
involved, we find that, on average, a developer needs to learn about 4 APIs and
2 API mappings to perform a migration, and ... (truncated)
Related papers
- Example-Based Automatic Migration of Continuous Integration Systems [2.2836654317217326]
Continuous Integration (CI) is a widely adopted practice for faster code change integration and testing.
Developers often migrate between CI systems in pursuit of features like matrix building or better logging.
This migration is effort intensive and error-prone owing to limited knowledge of the new CI system and its syntax.
We propose a novel approach for CI system's automatic migration: CIMig.
arXiv Detail & Related papers (2024-07-02T20:19:21Z) - Executable Code Actions Elicit Better LLM Agents [76.95566120678787]
This work proposes to use Python code to consolidate Large Language Model (LLM) agents' actions into a unified action space (CodeAct)
integrated with a Python interpreter, CodeAct can execute code actions and dynamically revise prior actions or emit new actions upon new observations through multi-turn interactions.
The encouraging performance of CodeAct motivates us to build an open-source LLM agent that interacts with environments by executing interpretable code and collaborates with users using natural language.
arXiv Detail & Related papers (2024-02-01T21:38:58Z) - Adaptoring: Adapter Generation to Provide an Alternative API for a
Library [5.710971447109951]
Third-party libraries are a cornerstone of fast application development.
An obscure API instead slows down the learning process and can lead to erroneous use.
This paper explores the use of the adapter pattern to provide a new API as a new library that calls the original library internally.
arXiv Detail & Related papers (2024-01-13T11:48:45Z) - Interactive, Iterative, Tooled, Rule-Based Migration of Microsoft Access
to Web Technologies [0.11650821883155184]
We are working on migrating Microsoft Access monolithic applications to the web front-end and producing back-end.
To enable the developers to drive the migration to the target systems, we propose an Interactive, Iterative, Tooled, Rule-Based Migration approach.
arXiv Detail & Related papers (2023-09-07T06:46:28Z) - MELT: Mining Effective Lightweight Transformations from Pull Requests [8.012294395224707]
MELT generates API migration rules directly from pull requests in popular library repositories.
We infer transformation rules in comby, a language for structural code search and replace.
Unlike previous work, our approach enables inference rule to seamlessly integrate into the library workflow.
arXiv Detail & Related papers (2023-08-28T16:21:52Z) - Causal-learn: Causal Discovery in Python [53.17423883919072]
Causal discovery aims at revealing causal relations from observational data.
$textitcausal-learn$ is an open-source Python library for causal discovery.
arXiv Detail & Related papers (2023-07-31T05:00:35Z) - SequeL: A Continual Learning Library in PyTorch and JAX [50.33956216274694]
SequeL is a library for Continual Learning that supports both PyTorch and JAX frameworks.
It provides a unified interface for a wide range of Continual Learning algorithms, including regularization-based approaches, replay-based approaches, and hybrid approaches.
We release SequeL as an open-source library, enabling researchers and developers to easily experiment and extend the library for their own purposes.
arXiv Detail & Related papers (2023-04-21T10:00:22Z) - Repro: An Open-Source Library for Improving the Reproducibility and
Usability of Publicly Available Research Code [74.28810048824519]
Repro is an open-source library which aims at improving the usability of research code.
It provides a lightweight Python API for running software released by researchers within Docker containers.
arXiv Detail & Related papers (2022-04-29T01:54:54Z) - ADAPT : Awesome Domain Adaptation Python Toolbox [5.932280316886339]
ADAPT is an open-source python library providing the implementation of several domain adaptation methods.
The library is suited for scikit-learn estimator object (object which implement fit and predict methods) and tensorflow models.
arXiv Detail & Related papers (2021-07-07T07:20:21Z) - BOML: A Modularized Bilevel Optimization Library in Python for Meta
Learning [52.90643948602659]
BOML is a modularized optimization library that unifies several meta-learning algorithms into a common bilevel optimization framework.
It provides a hierarchical optimization pipeline together with a variety of iteration modules, which can be used to solve the mainstream categories of meta-learning methods.
arXiv Detail & Related papers (2020-09-28T14:21:55Z) - SacreROUGE: An Open-Source Library for Using and Developing
Summarization Evaluation Metrics [74.28810048824519]
SacreROUGE is an open-source library for using and developing summarization evaluation metrics.
The library provides Python wrappers around the official implementations of existing evaluation metrics.
It provides functionality to evaluate how well any metric implemented in the library correlates to human-annotated judgments.
arXiv Detail & Related papers (2020-07-10T13:26:37Z)
This list is automatically generated from the titles and abstracts of the papers in this site.
This site does not guarantee the quality of this site (including all information) and is not responsible for any consequences.