1313)
1414
1515# deference for performance
16- u8_b_pack = u8_b_t .pack
17- u16_b_pack = u16_b_t .pack
18- u32_b_pack = u32_b_t .pack
19- u64_b_pack = u64_b_t .pack
20- s8_b_pack = s8_b_t .pack
21- s16_b_pack = s16_b_t .pack
22- s32_b_pack = s32_b_t .pack
23- s64_b_pack = s64_b_t .pack
24- f_b_pack = f64_b_t .pack
16+
17+ # u8_b_st = u8_b_t.struct
18+ u16_b_st = u16_b_t .struct
19+ u32_b_st = u32_b_t .struct
20+ u64_b_st = u64_b_t .struct
21+ s8_b_st = s8_b_t .struct
22+ s16_b_st = s16_b_t .struct
23+ s32_b_st = s32_b_t .struct
24+ s64_b_st = s64_b_t .struct
25+ f_b_st = f64_b_t .struct
2526
2627if os .environ .get ("MSGPACK_PACK_FLOAT32" ):
27- f_b_pack = f32_b_t .pack
28+ f_b_st = f32_b_t .struct
29+
30+ # u8_b_pack = u8_b_st.pack
31+ u16_b_pack = u16_b_st .pack
32+ u32_b_pack = u32_b_st .pack
33+ u64_b_pack = u64_b_st .pack
34+ s8_b_pack = s8_b_st .pack
35+ s16_b_pack = s16_b_st .pack
36+ s32_b_pack = s32_b_st .pack
37+ s64_b_pack = s64_b_st .pack
38+ f_b_pack = f_b_st .pack
2839
2940u8_b_unpack = u8_b_t .unpack
3041u16_b_unpack = u16_b_t .unpack
@@ -51,46 +62,35 @@ def pack_stream(stream, obj):
5162 elif i < 0 : # wider negative
5263 u_i = - i
5364 if u_i <= 0x80 :
54- stream .write (b"\xd0 " )
55- s8_b_pack (stream , i )
65+ stream .write (b"\xd0 " + s8_b_pack (i ))
5666 elif u_i <= 0x80_00 :
57- stream .write (b"\xd1 " )
58- s16_b_pack (stream , i )
67+ stream .write (b"\xd1 " + s16_b_pack (i ))
5968 elif u_i <= 0x80_00_00_00 :
60- stream .write (b"\xd2 " )
61- s32_b_pack (stream , i )
69+ stream .write (b"\xd2 " + s32_b_pack (i ))
6270 elif u_i <= 0x80_00_00_00_00_00_00_00 :
63- stream .write (b"\xd3 " )
64- s64_b_pack (stream , i )
71+ stream .write (b"\xd3 " + s64_b_pack (i ))
6572 else :
6673 raise ValueError ("int too large" )
6774 elif i <= 0xFF :
68- stream .write (b"\xcc " )
69- u8_b_pack (stream , i )
75+ stream .write (b"\xcc " + _B [i ])
7076 elif i <= 0xFF_FF :
71- stream .write (b"\xcd " )
72- u16_b_pack (stream , i )
77+ stream .write (b"\xcd " + u16_b_pack (i ))
7378 elif i <= 0xFF_FF_FF_FF :
74- stream .write (b"\xce " )
75- u32_b_pack (stream , i )
79+ stream .write (b"\xce " + u32_b_pack (i ))
7680 elif i <= 0xFF_FF_FF_FF_FF_FF_FF_FF :
77- stream .write (b"\xcf " )
78- u64_b_pack (stream , i )
81+ stream .write (b"\xcf " + u64_b_pack (i ))
7982 else :
8083 raise ValueError ("uint too large" )
8184 elif _type is float :
82- stream .write (b"\xcb " )
83- f_b_pack (stream , obj )
85+ stream .write (b"\xcb " + f_b_pack (obj ))
8486 elif _type is dict :
8587 ml = len (obj )
8688 if ml <= 0x0F :
8789 stream .write (_B [0x80 | ml ])
8890 elif ml <= 0xFF_FF :
89- stream .write (b"\xde " )
90- u16_b_pack (stream , ml )
91+ stream .write (b"\xde " + u16_b_pack (ml ))
9192 elif ml <= 0xFF_FF_FF_FF :
92- stream .write (b"\xdf " )
93- u32_b_pack (stream , ml )
93+ stream .write (b"\xdf " + u32_b_pack (ml ))
9494 else :
9595 raise ValueError ("map too large" , obj )
9696 for k , v in obj .items ():
@@ -101,11 +101,9 @@ def pack_stream(stream, obj):
101101 if al <= 0x0F :
102102 stream .write (_B [0x90 | al ])
103103 elif al <= 0xFF_FF :
104- stream .write (b"\xdc " )
105- u16_b_pack (stream , al )
104+ stream .write (b"\xdc " + u16_b_pack (al ))
106105 elif al <= 0xFF_FF_FF_FF :
107- stream .write (b"\xdd " )
108- u32_b_pack (stream , al )
106+ stream .write (b"\xdd " + u32_b_pack (al ))
109107 else :
110108 raise ValueError ("array too large" , obj )
111109 for v in obj :
@@ -131,14 +129,11 @@ def pack_stream(stream, obj):
131129 elif _type is bytes :
132130 bl = len (obj )
133131 if bl <= 0xFF :
134- stream .write (b"\xc4 " )
135- u8_b_pack (stream , bl )
132+ stream .write (b"\xc4 " + _B [bl ])
136133 elif bl <= 0xFF_FF :
137- stream .write (b"\xc5 " )
138- u16_b_pack (stream , bl )
134+ stream .write (b"\xc5 " + u16_b_pack (bl ))
139135 elif bl <= 0xFF_FF_FF_FF :
140- stream .write (b"\xc6 " )
141- u32_b_pack (stream , bl )
136+ stream .write (b"\xc6 " + u32_b_pack (bl ))
142137 else :
143138 raise ValueError ("bin too large" , obj )
144139 stream .write (obj )
0 commit comments