Skip to content

bpo-32226: PEP 560: improve typing module #4906

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 88 commits into from
Jan 20, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
26afdc6
POC implementation of __base_subclass__
ilevkivskyi Jul 19, 2017
3285fb6
POC implementation of __class_getitem__
ilevkivskyi Jul 19, 2017
779f85d
Modify __base_subclass__ API to support dynamic evaluation and base r…
ilevkivskyi Jul 20, 2017
5d5211d
Make __base_subclass__ faster and safer
ilevkivskyi Jul 20, 2017
41fa7e9
Factor out base update in a separate helper
ilevkivskyi Jul 20, 2017
5aeebab
Formatting
ilevkivskyi Jul 20, 2017
e858ea7
Also make __class_getitem__ safer
ilevkivskyi Jul 20, 2017
5b8d453
Simplify some code
ilevkivskyi Jul 21, 2017
b3e52f1
Initial work on typing2
ilevkivskyi Jul 22, 2017
6e7b575
Remove test implementation for typing
ilevkivskyi Sep 3, 2017
a8437fa
Rename base_subclass to subclass_base
Sep 7, 2017
c2d8ac2
Start adding tests
Sep 7, 2017
bc06c6b
Add tests for __subclass_base__
Sep 8, 2017
86c5d61
Add tests for __class_getitem__
Sep 8, 2017
2cef78a
Fix trailing whitespace
ilevkivskyi Sep 9, 2017
b9bbf7c
Alternative implementation of __class_getitem__
ilevkivskyi Sep 10, 2017
2495e94
Simplify code and fix reference counting
ilevkivskyi Sep 10, 2017
9ca8dfc
Rename __base_subclass__ to __mro_entry__
ilevkivskyi Nov 11, 2017
74bd36f
Add types.resolve_bases
ilevkivskyi Nov 11, 2017
6f20c45
Make Python and C versions as similar as possible
ilevkivskyi Nov 11, 2017
bcfbcf6
More tests
ilevkivskyi Nov 11, 2017
d7bd630
Fail fast in type.__new__
ilevkivskyi Nov 11, 2017
29e54c3
Fix a test
ilevkivskyi Nov 11, 2017
cba2a58
Test error message
ilevkivskyi Nov 11, 2017
966a9ea
Test error message
ilevkivskyi Nov 11, 2017
734c7e9
Test error message
ilevkivskyi Nov 11, 2017
042760b
First sketches of typing refactoring
ilevkivskyi Nov 11, 2017
450d66f
More work on new typing
ilevkivskyi Nov 12, 2017
e764c61
More fixes
ilevkivskyi Nov 12, 2017
c75d80c
Return old _TypeAlias; more fixes
ilevkivskyi Nov 12, 2017
2948724
Return old _TypeAlias; more fixes
ilevkivskyi Nov 12, 2017
4b8d8f3
Some more fixes
ilevkivskyi Nov 12, 2017
85e1f58
Even more fixes; use f-strings
ilevkivskyi Nov 12, 2017
4a0bf10
Some more ideas
ilevkivskyi Nov 13, 2017
152d2f6
Allow expansion to multiple bases
Nov 13, 2017
73e0693
Merge branch 'base-subclass' into new-typing
Nov 13, 2017
6788cba
Update __mro_emtry__ in typing
Nov 13, 2017
57da017
Start using new __mro_entry__
Nov 13, 2017
cf016fb
Some progress towards new scheme
ilevkivskyi Nov 13, 2017
f581aa3
Some fixes; use _special
ilevkivskyi Nov 14, 2017
1a218e0
Prohibit returning non-tuple
ilevkivskyi Nov 14, 2017
7cc8d8f
Rename to __mro_entries__
ilevkivskyi Nov 14, 2017
40f98f4
Merge branch 'base-subclass' into new-typing
ilevkivskyi Nov 14, 2017
9f9bf2d
Use new name __mro_entries__; few more fixes
ilevkivskyi Nov 14, 2017
d50ffa1
Simplify class structure
ilevkivskyi Nov 14, 2017
cac30d4
Use _GenericAlias also for Callable
ilevkivskyi Nov 14, 2017
3a608b7
Reorganize code
ilevkivskyi Nov 14, 2017
1492a4c
Get rid of _make_subclasshook
ilevkivskyi Nov 14, 2017
c0cd0ca
Make ForwardRef public
ilevkivskyi Nov 14, 2017
99d3ce9
Some minor fixes
ilevkivskyi Nov 14, 2017
68a0c18
Fix slots test and remove irrelevant
ilevkivskyi Nov 14, 2017
1f32259
Fix _Protocol (temporary)
ilevkivskyi Nov 14, 2017
57855bc
Wrap lines longer than 90
ilevkivskyi Nov 14, 2017
0555326
Factor out variadic aliases; use slots for special forms
ilevkivskyi Nov 14, 2017
23e63e0
Factor out variadic aliases; use slots for special forms
ilevkivskyi Nov 14, 2017
fb0bde7
Revert the repr part
ilevkivskyi Nov 14, 2017
2f07026
Docstring formatting
ilevkivskyi Nov 14, 2017
d4f8258
Simplify type vars collection
ilevkivskyi Nov 14, 2017
c6f51fe
Simplify type vars collection
ilevkivskyi Nov 14, 2017
8afdee2
Simplify type evaluation
ilevkivskyi Nov 14, 2017
ab0f678
Abandon _subcls
ilevkivskyi Nov 14, 2017
322e9c0
Last fixes; now all tests pass
ilevkivskyi Nov 14, 2017
deb04a4
Minor simplification
ilevkivskyi Nov 14, 2017
b15eab8
Minor simplifications; docstrings; formatting
ilevkivskyi Nov 14, 2017
13fa73c
Add a small FIXME
ilevkivskyi Nov 26, 2017
078c9f3
Merge remote-tracking branch 'upstream/master' into new-typing
ilevkivskyi Dec 16, 2017
252656e
Fix merge
ilevkivskyi Dec 16, 2017
6b5a13c
Enable previously skipped tests
ilevkivskyi Dec 16, 2017
5bf51d1
Fix __all__
ilevkivskyi Dec 16, 2017
2cf4929
Fix tests
ilevkivskyi Dec 16, 2017
eebe228
Add one more TODO item
ilevkivskyi Dec 28, 2017
41a1f4a
Merge remote-tracking branch 'upstream/master' into new-typing
ilevkivskyi Dec 28, 2017
bec3483
Merge remote-tracking branch 'upstream/master' into new-typing
Jan 11, 2018
9b4911b
Fix __class_getitem__ calling convention
Jan 11, 2018
18bdfbc
Address review comments
Jan 11, 2018
3296b1b
Minor style fix
Jan 11, 2018
bee8838
Some style changes; use f-strings for speed
Jan 14, 2018
022e11b
Fix remaining FIXMEs
Jan 14, 2018
73b7b0b
Add some whitespace; pospone proper solution for typing/#512
Jan 14, 2018
2ca8e6e
Simplify generating special aliases for ABCs
Jan 14, 2018
1f57186
Merge remote-tracking branch 'upstream/master' into new-typing
Jan 14, 2018
5114efe
Get rid of unused and rarely used names
Jan 14, 2018
ff2b2ad
Add missing r converters
Jan 14, 2018
19a7563
Return the dot back
Jan 14, 2018
ddc9204
Fix binary bool ops adter newline
Jan 14, 2018
2a3ecb0
Fix corner case in multiple inheritance of special generics
Jan 14, 2018
3e7ee82
Another round of review
Jan 14, 2018
bc936e6
Fix refleak hunting mode (-R)
Jan 14, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Lib/dataclasses.py
Original file line number Diff line number Diff line change
Expand Up @@ -389,7 +389,8 @@ def _get_field(cls, a_name, a_type):
if typing is not None:
# This test uses a typing internal class, but it's the best
# way to test if this is a ClassVar.
if type(a_type) is typing._ClassVar:
if (type(a_type) is typing._GenericAlias and
a_type.__origin__ is typing.ClassVar):
# This field is a ClassVar, so it's not a field.
f._field_type = _FIELD_CLASSVAR

Expand Down
5 changes: 0 additions & 5 deletions Lib/test/libregrtest/refleak.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,11 +135,6 @@ def dash_R_cleanup(fs, ps, pic, zdc, abcs):
# Clear ABC registries, restoring previously saved ABC registries.
abs_classes = [getattr(collections.abc, a) for a in collections.abc.__all__]
abs_classes = filter(isabstract, abs_classes)
if 'typing' in sys.modules:
t = sys.modules['typing']
# These classes require special treatment because they do not appear
# in direct subclasses of collections.abc classes
abs_classes = list(abs_classes) + [t.ChainMap, t.Counter, t.DefaultDict]
for abc in abs_classes:
for obj in abc.__subclasses__() + [abc]:
obj._abc_registry = abcs.get(obj, WeakSet()).copy()
Expand Down
2 changes: 1 addition & 1 deletion Lib/test/test_pydoc.py
Original file line number Diff line number Diff line change
Expand Up @@ -827,7 +827,7 @@ class C(typing.Generic[T], typing.Mapping[int, str]): ...
'f\x08fo\x08oo\x08o(data: List[Any], x: int)'
' -> Iterator[Tuple[int, Any]]')
self.assertEqual(pydoc.render_doc(C).splitlines()[2],
'class C\x08C(typing.Mapping)')
'class C\x08C(collections.abc.Mapping, typing.Generic)')

def test_builtin(self):
for name in ('str', 'str.translate', 'builtins.str',
Expand Down
Loading