21
21
22
22
23
23
if typing .TYPE_CHECKING :
24
- from .SExp import SExp
24
+ from .SExp import CastableType , SExp
25
25
26
26
27
27
MAX_SINGLE_BYTE = 0x7F
30
30
31
31
T = typing .TypeVar ("T" )
32
32
33
+ ToSExp = typing .Callable [["CastableType" ], CLVMStorage ]
33
34
34
35
OpCallable = typing .Callable [
35
- ["OpStackType" , "ValStackType" , typing .BinaryIO , typing . Type ], None
36
+ ["OpStackType" , "ValStackType" , typing .BinaryIO , ToSExp ], None
36
37
]
37
38
38
- ValStackType = typing .List ["SExp" ]
39
+ ValStackType = typing .List [CLVMStorage ]
39
40
OpStackType = typing .List [OpCallable ]
40
41
41
42
@@ -100,7 +101,7 @@ def sexp_to_stream(sexp: SExp, f: typing.BinaryIO) -> None:
100
101
101
102
102
103
def _op_read_sexp (
103
- op_stack : OpStackType , val_stack : ValStackType , f : typing .BinaryIO , to_sexp : typing . Callable [[ bytes ], SExp ] ,
104
+ op_stack : OpStackType , val_stack : ValStackType , f : typing .BinaryIO , to_sexp : ToSExp ,
104
105
) -> None :
105
106
blob = f .read (1 )
106
107
if len (blob ) == 0 :
@@ -118,14 +119,14 @@ def _op_cons(
118
119
op_stack : OpStackType ,
119
120
val_stack : ValStackType ,
120
121
f : typing .BinaryIO ,
121
- to_sexp : typing . Callable [[ typing . Tuple [ SExp , SExp ]], SExp ] ,
122
+ to_sexp : ToSExp ,
122
123
) -> None :
123
124
right = val_stack .pop ()
124
125
left = val_stack .pop ()
125
126
val_stack .append (to_sexp ((left , right )))
126
127
127
128
128
- def sexp_from_stream (f : typing .BinaryIO , to_sexp : typing . Callable [[ SExp ], T ] ) -> T :
129
+ def sexp_from_stream (f : typing .BinaryIO , to_sexp : ToSExp ) -> CLVMStorage :
129
130
op_stack : OpStackType = [_op_read_sexp ]
130
131
val_stack : ValStackType = []
131
132
@@ -188,8 +189,8 @@ def sexp_buffer_from_stream(f: typing.BinaryIO) -> bytes:
188
189
189
190
190
191
def _atom_from_stream (
191
- f : typing .BinaryIO , b : int , to_sexp : typing . Callable [[ bytes ], T ]
192
- ) -> T :
192
+ f : typing .BinaryIO , b : int , to_sexp : ToSExp
193
+ ) -> CLVMStorage :
193
194
if b == 0x80 :
194
195
return to_sexp (b"" )
195
196
if b <= MAX_SINGLE_BYTE :
0 commit comments