Youngkwang Yang한국어
Contents

OSS 26.07

OSS

A chart of open issues in pypa/pip from December 2017 to September 2026. The count stays between 940 and 980 for the last few years, then drops sharply toward 860 in the summer of 2026. Source: sichard.ca/ghstats/pip

A maintainer shared this chart of open issues in the pip repo. (It’s been dropping since June.)

Most of the open issues are more than a year old. My guess is that pip has limited maintainer bandwidth, so recent issues and problems users hit directly have to rank higher than re-checking old ones. That’s probably why old issues stayed open long after they were already fixed.

I started contributing to pip recently. The motivation is simple. I wanted to contribute to a project with a long history and a complex structure. pip carries a lot of backward-compat code for legacy behavior, and plenty of code can’t be changed lightly because users already rely on bugs as features. (Even plain text output may be parsed by someone.)1

These days AI agents write a lot of code in a day. Spending a long time discussing a one- or two-line change can feel slow, but I think it’s also what made the work interesting to me as a developer.

Work (July 12 - August 13)

Code

  • pip
    • Fixed a bug where the self version check under a zipapp read the version of the pip installed in the environment instead of the running zipapp. #13084, #14217
    • Fixed a traceback when entry_points.txt contains a malformed entry. #8573, #14220
    • The (latest) marker in pip index versions was never printed. Changing the output could break tools that depend on its format, so I left the output alone and went with removing only the dead code. #14177, #14178
    • Corrected the macOS configuration docs to describe XDG_DATA_DIRS and XDG_DATA_HOME, which actually work, instead of XDG_CONFIG_*. #14200, #14207
    • Added a regression test that Requires-Python skip reasons appear without debug logging. #14170
    • The Git partial clone opt-out environment variable from last month got merged. #14163

Triage

Reviews

  • pip
    • A bug where pip <subcommand> --version just ran without an error. (By design only pip --version is supported.) #14231
    • Reproduced the issue where pip list --outdated ignored --uploaded-prior-to. #14189, #14190
    • A refactoring PR splitting exceptions.py into separate modules. (Seems like a good improvement.) #14176
    • A PR removing shell=True from pip config edit. The behavior it was changing looked intentional, so I dug through the history before reviewing. #14180
  • django-auditlog
    • Checked and approved the PR making the LogEntry model swappable. #805
    • Approved a docstring fix for the Action class, outdated since Action.ACCESS was added. #817

Next goals

pip

  • Improve pip download and pip install --target, which leave incomplete files behind when the disk fills up. The same pattern appears elsewhere in pip, so I’m aiming for a reusable fix. #9964
  • A bug where the “no matching distributions” hint appeared for packages that were only excluded by version conflicts. The fix is waiting for review. #14193, #14194
  • A PR that warns about ~...dist-info directories left by incomplete removals. Still working on it. #14047
  • Imports break when a submodule is split into a namespace package and the new version is installed over an existing install. A maintainer suggested this one. The history is fairly involved, so I’ll set aside time for it later. #12211

django-auditlog

  • Working on change detection comparing raw values and serialized values separately. #835
  • A workflow that checks in CI whether a PR updated the CHANGELOG. (It seems to get missed often…) #836, #837

Footnotes

  1. xkcd 1172: Workflow ↩