~cnx/site

site/blog/2020/gsoc/article/3.md -rw-r--r-- 3.1 KiB
86f72948Nguyễn Gia Phong Fix typos 16 days ago

+++ rss = "GSoC 2020: I'm Not Drowning On My Own" date = Date(2020, 7, 6) tags = ["gsoc", "pip", "python"] +++

#I'm Not Drowning On My Own

\toc

#Cold Water

Hello there! My schoolyear is coming to an end, with some final assignments and group projects left to be done. I for sure underestimated the workload of these and in the last (and probably next) few days I'm drowning in work trying to meet my deadlines.

One project that might be remotely relevant is cheese-shop, which tries to manage the metadata of packages from the real Cheese Shop. Other than that, schoolwork is draining a lot of my time and I can't remember the last time I came up with something new for my GSoC project )-;

#Warm Water

On the bright side, I received a lot of help and encouragement from contributors and stakeholders of pip. In the last week alone, I had five pull requests merged:

  • {{pip 8332}}: Add license requirement to _vendor/README.rst
  • {{pip 8320}}: Add utilities for parallelization
  • {{pip 8504}}: Parallelize pip list --outdated and --uptodate
  • {{pip 8411}}: Refactor operations.prepare.prepare_linked_requirement
  • {{pip 8467}}: Add utitlity to lazily acquire wheel metadata over HTTP

In addition to helping me getting my PRs merged, my mentor Pradyun Gedam also gave me my first official feedback, including what I'm doing right (and wrong too!) and what I should keep doing to increase the chance of the project being successful.

{{pip 7819}}'s roadmap (Danny McClanahan's discoveries and works on lazy wheels) is being closely tracked by hatch's maintainter Ofek Lev, which really makes me proud and warms my heart, that what I'm helping build is actually needed by the community!

#Learning How To Swim

With {{pip 8467}} and {{pip 8530}} merged, I'm now working on {{pip 8532}} which aims to roll out the lazy wheel as the way to obtain dependency information via the CLI flag --use-feature=lazy-wheel.

{{pip 8532}} was failing initially, despite being relatively trivial and that the commit it used to base on was passing. Surprisingly, after rebasing it on top of {{pip 8530}}, it suddenly became green mysteriously. After the first (early) review, I was able to iterate on my earlier code, which used the ambiguous exception RuntimeError.

The rest to be done is just adding some functional tests (I'm pretty sure this will be either overwhelming or underwhelming) to make sure that the command-line flag is working correctly. Hopefully this can make it into the beta of the upcoming release {{pip 8511 "this month"}}.

Lazy wheel

In other news, I've also submitted {{pip 8538 "a patch improving the tests for the parallelization utilities"}}, which was really messy as I wrote them. Better late than never!

Metaphors aside, I actually can't swim d-:

#Diving Plan

After {{pip 8532}}, I think I'll try to parallelize downloads of wheels that are lazily fetched only for metadata. By the current implementation of the new resolver, for pip install, this can be injected directly between the resolution and build/installation process.