variance of `functools.py`'s `_T` TypeVar
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 5.1k
- Forks
- 2.1k
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 82
Description
The TypeVar _T in functools.py is defined to be invariant, but is used mostly as the return type of Callables or in similar situations (and not in the argument types, except in reduce, total_ordering and cmp_to_key).
I think it should be replaced by some covariant TypeVar where applicable (like the return type of Callable).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Review functools.py and trace each use of the _T TypeVar, distinguishing return-type uses from argument-type uses in reduce, total_ordering, and cmp_to_key. Determine where covariance is valid without changing argument relationships; done means applicable uses use the appropriate variance and the affected stubs remain type-correct.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- tooling
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100