Skip to content

Instantly share code, notes, and snippets.

@bhrutledge
Last active June 29, 2020 13:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bhrutledge/1b94aff34bfc4c32f5a52e70c8a2fa4f to your computer and use it in GitHub Desktop.
Save bhrutledge/1b94aff34bfc4c32f5a52e70c8a2fa4f to your computer and use it in GitHub Desktop.
Documenting .pypirc

Documenting .pypirc

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

🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment