aboutsummaryrefslogtreecommitdiffhomepage
path: root/blog/2020/gsoc/article/3.md
blob: 0a7812924cfe1bfad22fffc3b017bde5ffbe5a6d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
+++
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](/assets/lazy-wheel.jpg)

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.

[cheese-shop]: https://github.com/McSinyx/cheese-shop
[Cheese Shop]: https://pypi.org