1
1
import sys
2
- from typing import Any , IO , Optional , Tuple , Callable , Dict , List , Union
2
+ from typing import Any , IO , Optional , Tuple , Callable , Dict , List , Union , Protocol
3
3
4
4
from .decoder import JSONDecoder as JSONDecoder
5
5
from .encoder import JSONEncoder as JSONEncoder
@@ -31,7 +31,11 @@ def dump(obj: Any,
31
31
sort_keys : bool = ...,
32
32
** kwds : Any ) -> None : ...
33
33
34
- def loads (s : Union [str , bytes , bytearray ],
34
+ if sys .version_info >= (3 , 6 ):
35
+ _LoadsString = Union [str , bytes , bytearray ]
36
+ else :
37
+ _LoadsString = str
38
+ def loads (s : _LoadsString ,
35
39
encoding : Any = ..., # ignored and deprecated
36
40
cls : Any = ...,
37
41
object_hook : Optional [Callable [[Dict ], Any ]] = ...,
@@ -41,11 +45,10 @@ def loads(s: Union[str, bytes, bytearray],
41
45
object_pairs_hook : Optional [Callable [[List [Tuple [Any , Any ]]], Any ]] = ...,
42
46
** kwds : Any ) -> Any : ...
43
47
44
- if sys .version_info >= (3 , 6 ):
45
- _LoadIO = IO [Any ]
46
- else :
47
- _LoadIO = IO [str ]
48
- def load (fp : _LoadIO ,
48
+ class _Reader (Protocol ):
49
+ def read (self ) -> _LoadsString : ...
50
+
51
+ def load (fp : _Reader ,
49
52
cls : Any = ...,
50
53
object_hook : Optional [Callable [[Dict ], Any ]] = ...,
51
54
parse_float : Optional [Callable [[str ], Any ]] = ...,
0 commit comments