pyDataverse icon indicating copy to clipboard operation
pyDataverse copied to clipboard

Refactor `api.py` into sub-modules

Open JR-1991 opened this issue 1 year ago • 0 comments

The entire API is currently implemented in api.py, which consists of almost 3k lines. This makes maintenance, extension, and gaining a general overview difficult. It would be beneficial to separate the implementation of endpoints or groups of endpoints into individual files and then reference them in NativeApi/DataAccessApi.

I suggest grouping similar endpoints into modules to improve the user experience. Currently, all endpoints are accessible through the NativeApi interface, which means one must know if a certain function is related to a dataset, collection, and so on. This results in a naming problem as we rely on encoding this information into the function name. Making the API more intuitive would involve something like the following:

native_api = NativeApi(...)

# Get the version
native_api.info.version()

# Create a dataset
native_api.datasets.create()

By utilizing this approach, collaborative work is streamlined, enabling team members to independently focus on different components without the concern of conflicting changes or merge issues.

JR-1991 avatar May 17 '24 10:05 JR-1991