|
1 | 1 | from builtins import range |
2 | 2 | import traceback |
3 | 3 | from io import open |
4 | | -from typing import Union, Any, Dict, List, Set, Tuple, Optional, Callable, TYPE_CHECKING |
| 4 | +from typing import Union, Any, Dict, List, Set, Tuple, Optional, Callable, TYPE_CHECKING, cast, Type |
5 | 5 |
|
6 | 6 | if TYPE_CHECKING: |
7 | | - from eel.types import OptionsDictT, WebSocketT |
| 7 | + from eel.types import OptionsDictT, WebSocketT, JSONEncoder, JSONDecoder |
8 | 8 | else: |
9 | 9 | WebSocketT = Any |
10 | 10 | OptionsDictT = Any |
| 11 | + JSONEncoder = Any |
| 12 | + JSONDecoder = Any |
11 | 13 |
|
12 | 14 | from gevent.threading import Timer |
13 | 15 | import gevent as gvt |
|
28 | 30 | mimetypes.add_type('application/javascript', '.js') |
29 | 31 | _eel_js_file: str = pkg.resource_filename('eel', 'eel.js') |
30 | 32 | _eel_js: str = open(_eel_js_file, encoding='utf-8').read() |
31 | | -_eel_json_dumps_default_function: Callable = lambda o: None |
| 33 | +_eel_json_dumps_default_function: Callable[[Any], Any] = lambda o: None |
32 | 34 | _websockets: List[Tuple[Any, WebSocketT]] = [] |
33 | 35 | _call_return_values: Dict[Any, Any] = {} |
34 | 36 | _call_return_callbacks: Dict[float, Tuple[Callable[..., Any], Optional[Callable[..., Any]]]] = {} |
@@ -302,10 +304,10 @@ def register_eel_routes(app: btl.Bottle) -> None: |
302 | 304 | # Private functions |
303 | 305 |
|
304 | 306 | def _safe_json_loads(obj: str) -> Any: |
305 | | - return jsn.loads(obj, cls=_start_args['json_decoder']) |
| 307 | + return jsn.loads(obj, cls=cast(Optional[Type[JSONDecoder]], _start_args['json_decoder'])) |
306 | 308 |
|
307 | 309 | def _safe_json_dumps(obj: Any) -> str: |
308 | | - return jsn.dumps(obj, cls=_start_args['json_encoder'], |
| 310 | + return jsn.dumps(obj, cls=cast(Optional[Type[JSONEncoder]], _start_args['json_encoder']), |
309 | 311 | default=_eel_json_dumps_default_function if not _start_args['json_encoder'] else None) |
310 | 312 |
|
311 | 313 |
|
|
0 commit comments