2828
2929import  re 
3030
31+ try :
32+     from  typing  import  Any , AnyStr , Callable , Dict , List , Optional , Sequence , Tuple 
33+ except  ImportError :
34+     pass 
35+ 
3136from  adafruit_wsgi .request  import  Request 
3237
3338__version__  =  "0.0.0-auto.0" 
@@ -43,7 +48,7 @@ def __init__(self):
4348        self ._routes  =  []
4449        self ._variable_re  =  re .compile ("^<([a-zA-Z]+)>$" )
4550
46-     def  __call__ (self , environ ,  start_response ):
51+     def  __call__ (self , environ :  Dict [ str ,  str ],  start_response :  Callable ):
4752        """ 
4853        Called whenever the server gets a request. 
4954        The environ dict has details about the request per wsgi specification. 
@@ -66,7 +71,7 @@ def __call__(self, environ, start_response):
6671        start_response (status , headers )
6772        return  resp_data 
6873
69-     def  on_request (self , methods , rule , request_handler ):
74+     def  on_request (self , methods :  List [ str ] , rule :  str , request_handler :  Callable ):
7075        """ 
7176        Register a Request Handler for a particular HTTP method and path. 
7277        request_handler will be called whenever a matching HTTP request is received. 
@@ -95,7 +100,7 @@ def on_request(self, methods, rule, request_handler):
95100            (re .compile (regex ), {"methods" : methods , "func" : request_handler })
96101        )
97102
98-     def  route (self , rule , methods = None ):
103+     def  route (self , rule :  str , methods :  Optional [ List [ str ]]  =   None ):
99104        """ 
100105        A decorator to register a route rule with an endpoint function. 
101106        if no methods are provided, default to GET 
@@ -104,9 +109,11 @@ def route(self, rule, methods=None):
104109            methods  =  ["GET" ]
105110        return  lambda  func : self .on_request (methods , rule , func )
106111
107-     def  _match_route (self , path , method ):
112+     def  _match_route (
113+         self , path : str , method : str 
114+     ) ->  Optional [Tuple [Sequence [AnyStr ], Dict [str , Any ]]]:
108115        for  matcher , route  in  self ._routes :
109116            match  =  matcher .match (path )
110117            if  match  and  method  in  route ["methods" ]:
111-                 return  ( match .groups (), route ) 
118+                 return  match .groups (), route 
112119        return  None 
0 commit comments