OpenAPI (https://spec.openapis.org/oas/latest.html) is an emerging standard for 
defining RESTful interfaces.
OpenAPI is supported by swagger - which provides tools to convert an OpenAPI 
spec into python code (for both backend as well as client).

The proposition I have is to make OpenAPI native to python.  Essentially, this 
involves some of the following:
1. OpenAPI provides definitions of objects, arrays, structures, primitive 
types, collections etc.
2. OpenAPI supports object creation (HTTPS POST), object modification (PUT), 
object deletion (DELETE) and object retrieval (GET). 
3. OpenAPI also supports operations for collections (add to collection, remove 
from collection and modify collection)
4. OpenAPI also supports methods and allows parameters to be passed to these 
APIs.

The Native Python implementation would load in OpenAPI specification and 
provide native Python experience as follows:
1. Primitive types are mapped to python primitive types
2. Objects and structures are treated as classes or dicts wrapped.  The field 
names in the Spec are accessible.
3. Arrays and Collections are mapped to python lists.
4. URLs are converted into object structure.
5.  Python inspection methods (__getattr__, __setattr__, __new__, __del__ and 
others) of this model is changed to manipulate the fetched objects dynamically

Parts of this implementations are found in various places : sushy (OpenStack) 
etc.
However, having a more organized approach would make life easier.

Swagger has a tool that can generate the code.  But this means that every time 
a specification changes you need to ship a new python library.
The methodology presented not require any addition python libraries - the tool 
can download from the REST end point.

By making OpenAPI native to python, we would avoid cumbersome handling of 
request codes etc. and make it as you we are accessing native objects.
I can provide more details and a reference implementation I am working on.

Wanted to know if this is worthy to be submitted as PEP!
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/5DBYKAEXM2Z3UQZGORXMBQTBN22RQPLT/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to