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