In this blog post I will write a short summary in which I will present my GSoC progress so far and include some proofs to what I have worked on.
Currently, most of my project’s aims have been achieved. However, there’s still some little work to be done. I loved working on my project and I really had fun, while I learnt a lot of cool stuff!
If I’d have to approximate, I’d say around 80% of what I proposed myself to do this summer I have achieved.
Why have I not finished it? Because I wanted to do too much?
No. This is not the reason. The real reason for not finishing is that I’ve spent a lot of time designing and thinking in advance for the tools and how everything was going to be, because I’ve wanted everything to be well thought and to be actually usable. Instead of going blindly on the first option of uploading, or installing, I took some time and discussed with everyone around coala how this is going to be done and why. This thinking took a lot of time.
Another reason for still not having everything done is that the review process takes a while. Here, at coala, we do not merge things just to have something partially usable. We review it. Hard. Until every line of code is used at its maximum efficiency and makes sense and is optimized.
What I have already done with success
I have fulfilled 90% of the bears with their REQUIREMENTS as a metadata attribute. This REQUIREMENTS attribute is a tuple that contains instances of PackageRequirement classes, classes which contain package names, versions, package managers. I have also created metadata attributes specific to each bear and fulfilled all the bears with them.
I have created a tool that uploads ALL bears correctly to PyPI, taking data from the bears themselves, including from the metadata attributes I’ve written to them.
I have created a tool that installs bears while interacting with the user, giving him the options to install ALL bears, SOME bears or None. This tool will also install the REQUIREMENTS, gathered from the attribute existent in most bears, using an installation_method() that each PackageRequirement instance has, specific to that manager.
I have tied the bears to be discovered by coala using entry points, as coala gathers bears searching for installed PyPI packages that have the ‘coalabears’ entry point.
What is left to do
However, with all the work spent, there’s still some things that I’d love to do next!
Also, I will make some cool improvements and enhancements to the installation tool, some of which I started working on, and some of which will be shown here https://gitlab.com/coala/bear_installation_tool/issues . Some of these enhancements include:
- Changing the output given by PyPI to a cooler output
- Showing all bears that failed installation at the end as a list
- Fix a bug in which coala does not correctly find all bear packages installed
For a full list of my work this summer, these links can be consulted: