This summer, unlike any other summers, started with a lot of excitement as I was selected to work on the GSoC project, “Implementing a Python library for GraphSpace REST API“, under NRNB. The excitement continued throughout the 12 weeks of the program, within which I was able to complete my project, as there was always something new to learn, something new to implement.
I got a pretty good head start as my mentor, Aditya Bharadwaj, had already started work on the project. We resumed the work on the project. As it is very important to have an organized architecture for any library, our first job was to design the architecture for the graphspace_python library and we implemented it. Next, we had to make the library completely object oriented for which we discussed and planned on how to represent the entities (graphs, layouts, and groups) of the library in the form of easily usable objects. Once we were done implementing that, we moved on to writing APIs for the library which would consume the GraphSpace REST API. We had to implement several APIs in the library for different endpoints of the REST API to facilitate users to work on their graphs and layouts and manage groups from their Python based applications.
Following the implementation of APIs, we worked on exception handling. To make the library robust, we wrote an exception handling module, which handles the exceptions occurring when consuming the REST API. We also maintained documentation for the APIs and classes of the library throughout the development. The library is well documented and we use the Google Style Python Docstrings to document the code. Also, all the APIs of the library have been covered by tests ensuring their proper functionality. We have also integrated Travis CI with our GitHub Repository for continuously checking that all the tests pass whenever a new commit is made.
Moreover, we worked on documenting the GraphSpace REST API using RAML. All endpoints under the GraphSpace REST API were documented in the process, which involved the request, response and error details in a machine readable form.
Links to the work done in my project:
1. Implementation of graphspace_python library:
All work can be found on the develop branch of the graphspace_python repository. Link: https://github.com/adbharadwaj/graphspace-python/tree/develop
2. Documentation of GraphSpace REST API:
Link to the commit of documenting the REST API in the GraphSpace repository: https://github.com/Murali-group/GraphSpace/commit/c4b1445fff6f23b1be6632c7e706f510429d7a7c
3. Links to blog posts on my work:
Throughout the summer, I have learned a lot in the process of development of the library. Maintaining the standards of open source development, writing proper documentation and employing effective techniques for testing have been one of the many useful things that I have learned in this journey. I am thankful to Google for conducting such a program for the students. Lastly, I would like to thank my mentors Aditya Bharadwaj and T.M. Murali, who have been very supportive and always helped me whenever I was stuck or needed suggestions on the project.