gdcc / pyDataverse

Python module for Dataverse Software (dataverse.org).
http://pydataverse.readthedocs.io/
MIT License
64 stars 45 forks source link

Refactor `api.py` into sub-modules #189

Open JR-1991 opened 4 months ago

JR-1991 commented 4 months ago

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.