DEV Community

Aahnik Daw
Aahnik Daw

Posted on

I want to build a Python wrapper for an API, how should I approach it?

I am planning to build a python wrapper around a rest API.

  • I want to support friendly functions, with autocompletion in the editor.
  • I want 100% test coverage
  • I want the package to be modular, so that, any changes to API, can be easily reflected
  • I want to support both async and normal methods (the core will be implemented thru async, but there will be a wrapper for those who don't want to use async)

example:

import asyncio
from library import Api

api = Api()

async def do_job():
    thing = await api.get_thing()
    print(thing)

asyncio.run(do_job())
Enter fullscreen mode Exit fullscreen mode

or

from library.sync import Api

thing = api.get_thing()

print(thing)
Enter fullscreen mode Exit fullscreen mode

the data that will be passed to the functions should be validated. planning to use pydantic.

planning to create a sub-package library.models to contain all the modules defining the models.

how should I design the entire thing? how should I structure the project?

best practices? guides?

Oldest comments (3)

Collapse
 
nicolasrondon profile image
Nicolás Rondón

You could guide yourself by the code of FastAPI github.com/tiangolo/fastapi They are using wrapers so maybe could be useful

Collapse
 
pretzellogix profile image
PretzelLogix

Here is a 15-part guide that I wrote that addresses 3 of your 4 requirements: pretzellogix.net/2021/12/08/how-to...

Eventually, I'll get around to writing a few extra chapters on how to make async methods. In the meantime, I think this will get you started!

Collapse
 
aahnik profile image
Aahnik Daw

thank you so much... its soooooo helpful