| 2344 | self.ui_methods[name] = fn |
| 2345 | |
| 2346 | def _load_ui_modules(self, modules: Any) -> None: |
| 2347 | if isinstance(modules, types.ModuleType): |
| 2348 | self._load_ui_modules({n: getattr(modules, n) for n in dir(modules)}) |
| 2349 | elif isinstance(modules, list): |
| 2350 | for m in modules: |
| 2351 | self._load_ui_modules(m) |
| 2352 | else: |
| 2353 | assert isinstance(modules, dict) |
| 2354 | for name, cls in modules.items(): |
| 2355 | try: |
| 2356 | if issubclass(cls, UIModule): |
| 2357 | self.ui_modules[name] = cls |
| 2358 | except TypeError: |
| 2359 | pass |
| 2360 | |
| 2361 | def __call__( |
| 2362 | self, request: httputil.HTTPServerRequest |