python / python/mypy

Define and document workflows for librt updates

Open
#20,062 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

topic-developer
Dominant language
Python
Stars
20.6k
Forks
3.3k
PR merge metrics
PR metrics pending

Description

We now have the project librt on PyPI (GitHub link, PyPI link) that has functionality that mypy cache (de)serialization depends on (at least when using an interpreted mypy). It's a C extension that is based on the code under mypyc/lib-rt. We'll need to publish a new version of librt if we change certain things in mypyc/lib-rt, and it's important that multiple maintainers are able to do this so that this wouldn't block mypy/mypyc releases or development.

Here are things we need to define/document:

  • Have at least 3 experienced maintainers that have enough access and knowledge to make librt releases (both GitHub and PyPI project access). We need at least two owners so that we can also give access to new maintainers as needed and revoke access.
  • Decide where to put the relevant documentation (Mypy GitHub wiki? File in the librt GitHub repo?).
  • Document how to make a librt release somewhere in the mypy repo (possible just a link to a doc in the librt repo).
  • Document when we need to update the librt pin in mypy-requirements.txt and test-requirements.txt.
  • Document when we need to release a new version of librt (after every lib-rt change or only before a mypy release?).
  • Document how to make backward incompatible changes to librt, with a detailed description of PRs and timelines. E.g. we'll need to keep old functions in capsules around indefinitely, so we'd always need to add a new function but also keep the old one. Also some backward incompatible changes are probably not supported.
  • Document how versioning works.

cc @ilevkivskyi

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the unchecked items in this issue and inspect mypy-requirements.txt, test-requirements.txt, and the mypy/lib-rt code they pin or mirror. Review the existing release documentation location and the librt repository before documenting when to update pins, release librt, handle incompatible changes, and version it. Done means maintainers can follow the documented workflows without relying on one person.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, python
Domain
documentation, release
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.