In the past year, I've become a maintainer of Twine, a tool for publishing Python packages to repositories like PyPI (the Python Package Index). Twine uses the .pypirc
file for configuring repository locations and credentials. This is a timeline of how resolving a seemingly trivial bug report related to that file yielded my first release of Twine and my first contribution to CPython.
On May 27th, 2020, a Twine user reported an unhelpful error message due to invalid configuration:
Incorrect URL for .pypirc format · Issue #638 · pypa/twine
I discovered that the details about the .pypirc
format were removed from the Python docs the previous year. Since the format is not exclusive to Twine, it was decided to that the Python Packaging User Guide was a more appropriate place for resolution:
Missing documention for .pypirc format · Issue #730 · pypa/packaging.python.org
I did some research, and on May 30th, submitted a draft of a new specification for .pypirc
:
Add .pypirc specification by bhrutledge · Pull Request #734 · pypa/packaging.python.org
After some edits, the PR was merged on June 5th, and the new page went live immediately:
The .pypirc file — Python Packaging User Guide
I followed up the next day by updating the URLs in Twine:
Update and add links to .pypirc specification by bhrutledge · Pull Request #655 · pypa/twine
However, a little Googling showed at least one blog article with a direct link to the outdated Python docs. So, I took the opportunity to open my first PR to CPython, adding a link to the new specification:
Add link to .pypirc specification by bhrutledge · Pull Request #20680 · python/cpython
Not surprisingly, getting even a small documentation update merged into CPython is more complicated than a typical PR. I had to ask a fellow Twine maintainer to help out, but it finally went live on June 21st:
Distributing Python Modules — Python 3.8.3 documentation
While this was going on, I was coordinating the next release of Twine, which started on May 31st by opening a PR to document the changes since the last release:
Update changelog for next release by bhrutledge · Pull Request #643 · pypa/twine
In addition to the .pypirc
specification, I waited for a few more user-facing improvements before merging on June 23rd. I immediately published a pre-release and opened one more PR for the stable release:
Release 3.2.0 by bhrutledge · Pull Request #667 · pypa/twine
Finally, on June 24th, I merged that PR to publish Twine 3.2.0, which I announced on the Python packaging mailing list:
Twine 3.2.0 released - Distutils-SIG - python.org
To summarize, that's:
- 1 new document
- 2 documentation updates
- 2 lines of code changed
Spanning:
- 28 days
- 3 repositories
- 2 issues
- 5 pull requests
- 2 published packages
- 1 mailing list post
Yielding my first:
- Contribution to CPython
- Release as a Twine maintainer
🎉