Message330616
The other collections from the collections module (namedtuple, deque, ChainMap, Counter, defaultdict) have generic versions in the typing module for use in type annotations.
The problem is currently the following:
from __future__ import annotations
import typing
from collections import OrderedDict
# Understood by mypy
def f(d: OrderedDict[str, str]) -> None:
pass
typing.get_type_hints(f)
gives:
Traceback (most recent call last):
File "foo.py", line 9, in <module>
typing.get_type_hints(f)
File "/usr/lib/python3.7/typing.py", line 1001, in get_type_hints
value = _eval_type(value, globalns, localns)
File "/usr/lib/python3.7/typing.py", line 260, in _eval_type
return t._evaluate(globalns, localns)
File "/usr/lib/python3.7/typing.py", line 464, in _evaluate
eval(self.__forward_code__, globalns, localns),
File "<string>", line 1, in <module>
TypeError: 'type' object is not subscriptable
To fix this, a line like the following could be added to Lib/typing.py near line 1250:
OrderedDict = _alias(collections.OrderedDict, (KT, VT))
There might be a reasoning for why this has not been done yet, but I have not been able to find any.
If this is acceptable, I could prepare a PR.
I suppose there is no hope of a backport to 3.7, since this is a new feature (though very minor). |
|
Date |
User |
Action |
Args |
2018-11-28 17:17:38 | itoijala | set | recipients:
+ itoijala |
2018-11-28 17:17:38 | itoijala | set | messageid: <1543425458.24.0.788709270274.issue35341@psf.upfronthosting.co.za> |
2018-11-28 17:17:38 | itoijala | link | issue35341 messages |
2018-11-28 17:17:38 | itoijala | create | |
|