11"""Implementation of special members of typing_extensions."""
22
3- from pytype .overlays import overlay
43from pytype .overlays import typing_overlay
54
65
7- class TypingExtensionsOverlay (overlay . Overlay ):
6+ class TypingExtensionsOverlay (typing_overlay . Redirect ):
87 """A custom overlay for the 'typing_extensions' module."""
98
109 def __init__ (self , ctx ):
11- ast = ctx .loader .import_name ("typing_extensions" )
12- member_map = {
13- "runtime" : _build ("typing.runtime_checkable" ),
14- }
15- for pyval in ast .aliases + ast .classes + ast .constants + ast .functions :
16- # Any public typing_extensions members that are not explicitly implemented
17- # are unsupported.
18- _ , name = pyval .name .rsplit ("." , 1 )
19- if name .startswith ("_" ):
20- continue
21- if name in typing_overlay .typing_overlay :
22- member_map [name ] = typing_overlay .typing_overlay [name ][0 ]
23- elif f"typing.{ name } " in ctx .loader .typing :
24- member_map [name ] = _build (f"typing.{ name } " )
25- elif name not in member_map :
26- member_map [name ] = _build_not_supported_yet (name , ast )
27- super ().__init__ (ctx , "typing_extensions" , member_map , ast )
10+ aliases = {"runtime" : "typing.runtime_checkable" }
11+ super ().__init__ ("typing_extensions" , aliases , ctx )
2812
2913 def _convert_member (self , name , member , subst = None ):
3014 var = super ()._convert_member (name , member , subst )
@@ -35,11 +19,3 @@ def _convert_member(self, name, member, subst=None):
3519 # on an abstract value.
3620 val .module = "typing"
3721 return var
38-
39-
40- def _build (name ):
41- return lambda ctx : ctx .convert .name_to_value (name )
42-
43-
44- def _build_not_supported_yet (name , ast ):
45- return lambda ctx : typing_overlay .not_supported_yet (name , ctx , ast = ast )
0 commit comments