@@ -36,7 +36,7 @@ class RequestHandler(ABC):
3636 """
3737
3838 @abstractmethod
39- def handle (self , request ) :
39+ def handle (self , request : Request ) -> str :
4040 """Handle incoming request."""
4141 raise NotImplementedError
4242
@@ -53,28 +53,28 @@ class helps if downstream developers typically implement request
5353
5454 template_suffix = ".template"
5555
56- def handle (self , request ) :
56+ def handle (self , request : Request ) -> str :
5757 template_name = self .get_template_name (request .url )
5858 if not self .is_valid_template (template_name ):
5959 return self .handle_invalid_template (request )
6060 return self .render_template (template_name )
6161
6262 @abstractmethod
63- def get_template_name (self , request_url ) :
63+ def get_template_name (self , request_url : str ) -> str :
6464 """Get template name."""
6565 raise NotImplementedError
6666
67- def is_valid_template (self , template_name ) :
67+ def is_valid_template (self , template_name : str ) -> bool :
6868 """Check if template name is valid."""
6969 return template_name .endswith (self .template_suffix )
7070
7171 @staticmethod
72- def handle_invalid_template (request ) :
72+ def handle_invalid_template (request : Request ) -> str :
7373 """Handle request for invalid template."""
7474 return f"<p>Invalid entry for { request .url } </p>"
7575
7676 @abstractmethod
77- def render_template (self , template_name ) :
77+ def render_template (self , template_name : str ) -> str :
7878 """Render contents of specified template name."""
7979 raise NotImplementedError
8080
@@ -90,18 +90,18 @@ class AuthHandlerMixin(RequestHandler):
9090 of another mixin in a concrete class MRO.
9191 """
9292
93- def handle (self , request ) :
93+ def handle (self , request : Request ) -> str :
9494 if not self .is_valid_user (request .user ):
9595 return self .handle_invalid_user (request )
96- return super ().handle (request )
96+ return super ().handle (request ) # type: ignore[safe-super]
9797
9898 @abstractmethod
99- def is_valid_user (self , request_user ) :
99+ def is_valid_user (self , request_user : str ) -> bool :
100100 """Check if user is valid."""
101101 raise NotImplementedError
102102
103103 @staticmethod
104- def handle_invalid_user (request ) :
104+ def handle_invalid_user (request : Request ) -> str :
105105 """Handle request for invalid user."""
106106 return f"<p>Access denied for { request .url } </p>"
107107
@@ -114,16 +114,16 @@ class TemplateFolderHandler(TemplateHandlerMixin):
114114 for the `handle` method.
115115 """
116116
117- def __init__ (self , template_dir ) :
117+ def __init__ (self , template_dir : dict [ str , str ]) -> None :
118118 self .template_dir = template_dir
119119
120- def get_template_name (self , request_url ) :
120+ def get_template_name (self , request_url : str ) -> str :
121121 return request_url [1 :]
122122
123- def is_valid_template (self , template_name ) :
123+ def is_valid_template (self , template_name : str ) -> bool :
124124 return super ().is_valid_template (template_name ) and template_name in self .template_dir
125125
126- def render_template (self , template_name ) :
126+ def render_template (self , template_name : str ) -> str :
127127 return self .template_dir [template_name ]
128128
129129
@@ -135,15 +135,15 @@ class but also gets authentication for free just by implementing
135135 the abstract method of the authentication mixin.
136136 """
137137
138- def __init__ (self , admin_users , template_dir ) :
138+ def __init__ (self , admin_users : set [ str ] , template_dir : dict [ str , str ]) -> None :
139139 super ().__init__ (template_dir )
140140 self .admin_users = admin_users
141141
142- def is_valid_user (self , request_user ) :
142+ def is_valid_user (self , request_user : str ) -> bool :
143143 return request_user in self .admin_users
144144
145145
146- def main ():
146+ def main () -> None :
147147 # Handle requests with simple template handler
148148 simple_dir = {"welcome.template" : "<p>Hello world</p>" , "about.template" : "<p>About me</p>" }
149149 simple_handler = TemplateFolderHandler (simple_dir )
0 commit comments