| 2176 | self.ui_methods[name] = fn |
| 2177 | |
| 2178 | def _load_ui_modules(self, modules: Any) -> None: |
| 2179 | if isinstance(modules, types.ModuleType): |
| 2180 | self._load_ui_modules(dict((n, getattr(modules, n)) for n in dir(modules))) |
| 2181 | elif isinstance(modules, list): |
| 2182 | for m in modules: |
| 2183 | self._load_ui_modules(m) |
| 2184 | else: |
| 2185 | assert isinstance(modules, dict) |
| 2186 | for name, cls in modules.items(): |
| 2187 | try: |
| 2188 | if issubclass(cls, UIModule): |
| 2189 | self.ui_modules[name] = cls |
| 2190 | except TypeError: |
| 2191 | pass |
| 2192 | |
| 2193 | def __call__( |
| 2194 | self, request: httputil.HTTPServerRequest |