1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
U
P±dœ£ã@sÖdZddlZddlZddlZddlZddlmZddlZddl    m
Z
m Z m Z m Z mZmZmZddlmZddlmZejejejejejejejejejejejej e!g Z"gZ#e"D]€Z$dD]vZ%e &e$¡ 'e%¡Z&e (d¡ )e&¡Z*e# +ej,ge&d    ej,d
e&d    e*e* -d ¡e* -d ¡j.e* -d ¡ddd …ddd …fg¡qºq²dddgZ/dd gddgddggdfddgddgddggdfgZ0ddddddddd gfdd!gfd"d#d$d%gfddgZ1dd gd&dd'd&d(gddgd)d gfd*d+fd,d-ddgddggdfddgd.dd/d.d0gddgd d)gfd1d2fd3d4ddgddggdfgZ2ej,e0e &e/¡ 'd5¡d    ej,e2e &e1¡ 'd5¡d    ej,e0e &e/¡ 'd6¡d    ej,e2e &e1¡ 'd6¡d    ej3d)d7gd    gZ4Gd8d9„d9eƒZ5d:d;„Z6d<d=„Z7d>d?„Z8d@dA„Z9dBdC„Z:dDdE„Z;dFdG„Z<dHdI„Z=ej>j?edJdKej>j@dLdM„ƒƒZAdNdO„ZBej&dPd+dQZCe &dRdSgdTdTgd)dUgdVœ¡ZDe &dWdXgdTeDgdYœ¡ZEe &dRdZdSgdTgddYœ¡ZFe &dRdSgdTdTgd)dUgd[d\gd]œ¡ZGe &ggdd^œ¡ZHej> Id_eCeDeEeFeGeHg¡d`da„ƒZJej>jKedbdKdcdd„ƒZLdedf„ZMdgdh„ZNej> Id_e &ej&dRejfdSejfdWejfgd+dQdi¡e &dje &dRdSgdkdkgddgddlœdi¡dmfg¡e &dng¡e &dje &e &e &dRdSgdkdkgddgddlœ¡dif¡dmf¡fg¡e &dRe &e &e &e &dReOfdSe &dRdSgdkdkgddgddlœ¡fg¡dif¡dmf¡dof¡fg¡g¡dpdq„ƒZPdrds„ZQej>j?edJdKdtdu„ƒZRej> Idvdwdg¡dxdy„ƒZSdzd{„ZTd|d}„ZUd~dd€dd‚dƒgZVd„d…d†d‡dˆd‰dŠgZWd‹dŒ„ZXddŽ„ZYdd„ZZd‘d’„Z[d“d”„Z\d•d–„Z]d—d˜„Z^d™dš„Z_d›dœ„Z`ej>j?eddKej>j?e &eja¡jbdkdždKej>j@edŸd d¡d¢„ƒƒƒƒZcd£d¤„Zdd¥d¦„Zed§d¨„Zfej> Id©e &dRdSgegej&dªd«d¬id­gdYœ¡d+fej&eOd«d¬id­d2fej&d®eOd¯ffgd«d¬id­d2fe &dRdSgege &dWgej&eOid­gdYœ¡gdYœ¡d2fg¡ej>j?eoÀejhjid°kd±dKd²d³„ƒƒZjdS)´a¹D Test the .npy file format.
 
Set up:
 
    >>> import sys
    >>> from io import BytesIO
    >>> from numpy.lib import format
    >>>
    >>> scalars = [
    ...     np.uint8,
    ...     np.int8,
    ...     np.uint16,
    ...     np.int16,
    ...     np.uint32,
    ...     np.int32,
    ...     np.uint64,
    ...     np.int64,
    ...     np.float32,
    ...     np.float64,
    ...     np.complex64,
    ...     np.complex128,
    ...     object,
    ... ]
    >>>
    >>> basic_arrays = []
    >>>
    >>> for scalar in scalars:
    ...     for endian in '<>':
    ...         dtype = np.dtype(scalar).newbyteorder(endian)
    ...         basic = np.arange(15).astype(dtype)
    ...         basic_arrays.extend([
    ...             np.array([], dtype=dtype),
    ...             np.array(10, dtype=dtype),
    ...             basic,
    ...             basic.reshape((3,5)),
    ...             basic.reshape((3,5)).T,
    ...             basic.reshape((3,5))[::-1,::2],
    ...         ])
    ...
    >>>
    >>> Pdescr = [
    ...     ('x', 'i4', (2,)),
    ...     ('y', 'f8', (2, 2)),
    ...     ('z', 'u1')]
    >>>
    >>>
    >>> PbufferT = [
    ...     ([3,2], [[6.,4.],[6.,4.]], 8),
    ...     ([4,3], [[7.,5.],[7.,5.]], 9),
    ...     ]
    >>>
    >>>
    >>> Ndescr = [
    ...     ('x', 'i4', (2,)),
    ...     ('Info', [
    ...         ('value', 'c16'),
    ...         ('y2', 'f8'),
    ...         ('Info2', [
    ...             ('name', 'S2'),
    ...             ('value', 'c16', (2,)),
    ...             ('y3', 'f8', (2,)),
    ...             ('z3', 'u4', (2,))]),
    ...         ('name', 'S2'),
    ...         ('z2', 'b1')]),
    ...     ('color', 'S2'),
    ...     ('info', [
    ...         ('Name', 'U8'),
    ...         ('Value', 'c16')]),
    ...     ('y', 'f8', (2, 2)),
    ...     ('z', 'u1')]
    >>>
    >>>
    >>> NbufferT = [
    ...     ([3,2], (6j, 6., ('nn', [6j,4j], [6.,4.], [1,2]), 'NN', True), 'cc', ('NN', 6j), [[6.,4.],[6.,4.]], 8),
    ...     ([4,3], (7j, 7., ('oo', [7j,5j], [7.,5.], [2,1]), 'OO', False), 'dd', ('OO', 7j), [[7.,5.],[7.,5.]], 9),
    ...     ]
    >>>
    >>>
    >>> record_arrays = [
    ...     np.array(PbufferT, dtype=np.dtype(Pdescr).newbyteorder('<')),
    ...     np.array(NbufferT, dtype=np.dtype(Ndescr).newbyteorder('<')),
    ...     np.array(PbufferT, dtype=np.dtype(Pdescr).newbyteorder('>')),
    ...     np.array(NbufferT, dtype=np.dtype(Ndescr).newbyteorder('>')),
    ... ]
 
Test the magic string writing.
 
    >>> format.magic(1, 0)
    '\x93NUMPY\x01\x00'
    >>> format.magic(0, 0)
    '\x93NUMPY\x00\x00'
    >>> format.magic(255, 255)
    '\x93NUMPY\xff\xff'
    >>> format.magic(2, 5)
    '\x93NUMPY\x02\x05'
 
Test the magic string reading.
 
    >>> format.read_magic(BytesIO(format.magic(1, 0)))
    (1, 0)
    >>> format.read_magic(BytesIO(format.magic(0, 0)))
    (0, 0)
    >>> format.read_magic(BytesIO(format.magic(255, 255)))
    (255, 255)
    >>> format.read_magic(BytesIO(format.magic(2, 5)))
    (2, 5)
 
Test the header writing.
 
    >>> for arr in basic_arrays + record_arrays:
    ...     f = BytesIO()
    ...     format.write_array_header_1_0(f, arr)   # XXX: arr is not a dict, items gets called on it
    ...     print(repr(f.getvalue()))
    ...
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '|u1', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '|u1', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '|u1', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '|i1', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '|i1', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '|i1', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<u2', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<u2', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<u2', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<u2', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<u2', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<u2', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>u2', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>u2', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>u2', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>u2', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>u2', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>u2', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<i2', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<i2', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<i2', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<i2', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<i2', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<i2', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>i2', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>i2', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>i2', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>i2', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>i2', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>i2', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<u4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<u4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<u4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<u4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<u4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<u4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>u4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>u4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>u4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>u4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>u4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>u4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<i4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<i4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<i4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<i4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<i4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<i4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>i4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>i4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>i4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>i4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>i4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>i4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<u8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<u8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<u8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<u8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<u8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<u8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>u8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>u8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>u8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>u8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>u8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>u8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<i8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<i8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<i8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<i8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<i8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<i8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>i8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>i8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>i8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>i8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>i8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>i8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<f4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<f4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<f4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<f4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<f4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<f4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>f4', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>f4', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>f4', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>f4', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>f4', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>f4', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<f8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<f8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<f8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<f8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<f8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<f8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>f8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>f8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>f8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>f8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>f8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>f8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<c8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '<c8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '<c8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '<c8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '<c8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '<c8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '>c8', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': '>c8', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': '>c8', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': '>c8', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': '>c8', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': '>c8', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': '<c16', 'fortran_order': False, 'shape': (0,)}             \n"
    "F\x00{'descr': '<c16', 'fortran_order': False, 'shape': ()}               \n"
    "F\x00{'descr': '<c16', 'fortran_order': False, 'shape': (15,)}            \n"
    "F\x00{'descr': '<c16', 'fortran_order': False, 'shape': (3, 5)}           \n"
    "F\x00{'descr': '<c16', 'fortran_order': True, 'shape': (5, 3)}            \n"
    "F\x00{'descr': '<c16', 'fortran_order': False, 'shape': (3, 3)}           \n"
    "F\x00{'descr': '>c16', 'fortran_order': False, 'shape': (0,)}             \n"
    "F\x00{'descr': '>c16', 'fortran_order': False, 'shape': ()}               \n"
    "F\x00{'descr': '>c16', 'fortran_order': False, 'shape': (15,)}            \n"
    "F\x00{'descr': '>c16', 'fortran_order': False, 'shape': (3, 5)}           \n"
    "F\x00{'descr': '>c16', 'fortran_order': True, 'shape': (5, 3)}            \n"
    "F\x00{'descr': '>c16', 'fortran_order': False, 'shape': (3, 3)}           \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': 'O', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (0,)}              \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': ()}                \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (15,)}             \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (3, 5)}            \n"
    "F\x00{'descr': 'O', 'fortran_order': True, 'shape': (5, 3)}             \n"
    "F\x00{'descr': 'O', 'fortran_order': False, 'shape': (3, 3)}            \n"
    "v\x00{'descr': [('x', '<i4', (2,)), ('y', '<f8', (2, 2)), ('z', '|u1')],\n 'fortran_order': False,\n 'shape': (2,)}         \n"
    "\x16\x02{'descr': [('x', '<i4', (2,)),\n           ('Info',\n            [('value', '<c16'),\n             ('y2', '<f8'),\n             ('Info2',\n              [('name', '|S2'),\n               ('value', '<c16', (2,)),\n               ('y3', '<f8', (2,)),\n               ('z3', '<u4', (2,))]),\n             ('name', '|S2'),\n             ('z2', '|b1')]),\n           ('color', '|S2'),\n           ('info', [('Name', '<U8'), ('Value', '<c16')]),\n           ('y', '<f8', (2, 2)),\n           ('z', '|u1')],\n 'fortran_order': False,\n 'shape': (2,)}      \n"
    "v\x00{'descr': [('x', '>i4', (2,)), ('y', '>f8', (2, 2)), ('z', '|u1')],\n 'fortran_order': False,\n 'shape': (2,)}         \n"
    "\x16\x02{'descr': [('x', '>i4', (2,)),\n           ('Info',\n            [('value', '>c16'),\n             ('y2', '>f8'),\n             ('Info2',\n              [('name', '|S2'),\n               ('value', '>c16', (2,)),\n               ('y3', '>f8', (2,)),\n               ('z3', '>u4', (2,))]),\n             ('name', '|S2'),\n             ('z2', '|b1')]),\n           ('color', '|S2'),\n           ('info', [('Name', '>U8'), ('Value', '>c16')]),\n           ('y', '>f8', (2, 2)),\n           ('z', '|u1')],\n 'fortran_order': False,\n 'shape': (2,)}      \n"
éN)ÚBytesIO)Úassert_Úassert_array_equalÚ assert_raisesÚassert_raises_regexÚ assert_warnsÚIS_PYPYÚIS_WASM)Úrequires_memory)Úformatz<>iÜ©Údtypeé
)éé2éÿÿÿÿé)ÚxÚi4©r)ÚyÚf8©rr)ÚzÚu1ég@g@éég@g@é    ZInfo)ÚvalueÚc16)Úy2rZInfo2)ÚnameÚS2)rr r)Zy3rr)Zz3Zu4r)Zz2Zb1)Úcolorr#Úinfo)ÚNameZU8)ÚValuer ù@Únny@éÚNNTÚcc)r+r(ù@Zooy@ÚOOFÚdd)r.r-ú<ú>)Úc©z<f8©ércseZdZd‡fdd„    Z‡ZS)ÚBytesIOSRandomSizeNcs ddl}| d|¡}tƒ |¡S)Nrr*)ÚrandomÚrandintÚsuperÚread)ÚselfÚsizer7©Ú    __class__©úRd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\numpy/lib/tests/test_format.pyr:‘s zBytesIOSRandomSize.read)N)Ú__name__Ú
__module__Ú __qualname__r:Ú __classcell__r?r?r=r@r6sr6cCs0tƒ}t ||¡t| ¡ƒ}tj|dd}|S)NT©Ú allow_pickle©rr Ú write_arrayÚgetvalueÚ
read_array©ÚarrÚfÚf2Úarr2r?r?r@Ú    roundtrip—s
  rPcCs,tƒ}t ||¡t| ¡ƒ}t |¡}|S©N)rr rHr6rIrJrKr?r?r@Úroundtrip_randsizeŸs
 
rRcCs4tƒ}t ||¡t| ¡dd…ƒ}t |¡}|S)NrrrGrKr?r?r@Úroundtrip_truncated§s
 
rScCst||kƒdSrQ)r)Zo1Zo2r?r?r@Ú assert_equal_°srTcCs$ttD]}t|ƒ}t||ƒqdSrQ)Ú basic_arraysÚ record_arraysrPr©rLrOr?r?r@Útest_roundtrip´s rXcCs.ttD] }|jtkrt|ƒ}t||ƒqdSrQ)rUrVr ÚobjectrRrrWr?r?r@Útest_roundtrip_randsizeºs 
rZcCs$tD]}|jtkrttt|ƒqdSrQ)rUr rYrÚ
ValueErrorrS©rLr?r?r@Útest_roundtrip_truncatedÁs
r]cCs4tjdt ttjdf¡d}t|ƒ}t||ƒdS)Nr*r )ÚnpÚonesr Ústrr Ú BUFFER_SIZErPr)Z long_str_arrZ long_str_arr2r?r?r@Ú test_long_strÇsrbzmemmap doesn't work correctly)Úreasonc
 
CstttƒD]ö\}}|jjrq tj |d|›d¡}tj |d|›d¡}t|dƒ}t     
||¡W5QRX|j j o||j j }t    j|d|j|j|d}||d<| ¡t|dƒ}| ¡}W5QRXt|dƒ}| ¡}    W5QRXt||    ƒt    j|d    d
}| ¡q dS) NÚnormalz.npyZmemmapÚwbúw+)Úmoder ÚshapeÚ fortran_order.ÚrbÚr)rg)Ú    enumeraterUrVr Z    hasobjectÚosÚpathÚjoinÚopenr rHÚflagsÚ f_contiguousÚ c_contiguousÚ open_memmaprhÚflushr:rT)
ÚtmpdirÚirLZnfnZmfnÚfpriÚmaZ normal_bytesZ memmap_bytesr?r?r@Útest_memmap_roundtripÎs, ÿ ÿ  
rzc    CsVtj dd¡}tj |d¡}tj||dt |¡}|d}W5QRXt||ƒdS)NéÈzcompressed.npzr\rL)    r^r7ZrandrmrnroZsavez_compressedÚloadr)rvrLÚnpz_fileÚnpzÚarr1r?r?r@Útest_compressed_roundtripîs  r€z
i1, i4, i1)ZalignÚaÚbré)ÚnamesÚformatsÚoffsetsr2Úd)r„r…ÚZaaZbb)r„r…r†Útitles)r„r…ÚitemsizeÚdtc    Csnt d|¡}tdƒD]}|d||<qtj |d¡}tj||dt |¡}|d}W5QRXt||ƒdS)Nrr5z aligned.npzr\rL)    r^ÚzerosÚrangermrnroÚsavezr|r)rvr‹rLrwr}r~rr?r?r@Útest_load_padded_dtypes   rz!Emscripten NODEFS has a buggy dupcCs:d}tj tj t¡d|¡}t |¡}t|t d¡ƒdS)Nzwin64python2.npyÚdatar)    rmrnroÚdirnameÚ__file__r^r|rr_)Úfnamernrr?r?r@Ú%test_python2_python3_interoperabilitys
r”c    Cs„tj tj t¡d¡}tjdtddgtd}dD]L}tj ||¡}dD]¨}tj    |d|d}| 
d    ¡rx|d
}|  ¡n|}|d krÔ|  d ¡rÔt t|d tƒƒt|dd…|dd…ƒt|d |¡|dƒqHt t|d tƒƒt||ƒqH|  d ¡r0| 
d    ¡rVtj    |dd}tt|jd
ƒ|  ¡tj    |ddd d}tt|jd
ƒ|  ¡q0tttj    |ddtttj    |ddd dq0dS)Nru優良s不良r )úpy2-objarr.npyúpy2-objarr.npzzpy3-objarr.npyzpy3-objarr.npz)ÚbytesÚlatin1T©rFÚencodingz.npzrr˜Zpy2rrrEF)rFÚ fix_importsrš)rmrnror‘r’r^ÚarrayrrYr|ÚendswithÚcloseÚ
startswithrÚ
isinstancer`rÚencoder—rÚ UnicodeErrorÚ __getitem__Ú ImportError)Údata_dirÚexpectedr“rnršZdata_frr?r?r@Útest_pickle_python2_python3sL
ÿþ
 
 
 
 
ÿ
 
ÿ
þr§c    Cs¢tj tj t¡d¡}tj |d¡}tttj|dddtj |d¡}tj|ddd}tt|j    dƒW5QRXtj |d¡}tttj
|tj dgt d    dd
dS) Nrr•Fr˜r™r–rzpickle-disabled.npyr rE) rmrnror‘r’rr[r^r|r£ÚsaverœrY)rvr¥rnrMr?r?r@Útest_pickle_disallowHs
ÿÿr©)rrÚi1)r„r…r†rŠ)r)rr3rr4cCs8t |j¡}t||ƒt d|¡}t|ƒ}t||ƒdS)Nr)r Zdescr_to_dtypeÚdescrrTr^rŒrPr)r‹Údt1rrOr?r?r@Útest_descr_to_dtypeWs
2 
 r­c    CsÚtƒ}dd„tdƒDƒ}tjd|d}tj||ddtjdd    2}t d
d t    ¡t ||¡t
|d j t    kƒW5QRX|  d ¡|  ¡}t
t|ƒtjd kƒ|  d ¡tj|d d}t||ƒtttj||dƒdS)NcSsg|]}d|dtf‘qS©z%déd©Úfloat©Ú.0rwr?r?r@Ú
<listcomp>’sz$test_version_2_0.<locals>.<listcomp>éôéèr ©rr©ÚversionT©ÚrecordÚalwaysrˆré@ ©Úmax_header_size©r*r)rrr^r_r rHÚwarningsÚcatch_warningsÚfilterwarningsÚ UserWarningrÚcategoryÚseekÚreadlineÚlenÚ ARRAY_ALIGNrJrrr[)rMr‹r‡ÚwÚheaderÚnr?r?r@Útest_version_2_0s 
 
 
rÍc    Csdd„tdƒDƒ}tjd|d}tj |d¡}tj |d¡}tttj    |d|j
|j d    d
tj    |d|j
|j d d
}||d <|  ¡tj    |d dd}t ||ƒtjddN}t ddt¡tj    |d|j
|j dd
}t|djtkƒ||d <|  ¡W5QRXtj    |d dd}t ||ƒdS)NcSsg|]}d|dtf‘qSr®r°r²r?r?r@r´«sz+test_version_2_0_memmap.<locals>.<listcomp>rµr¶r zversion2_01.npyzversion2_02.npyrfrÀ)rgr rhr¹r·.rkr½)rgr¿Trºr¼rˆr)rr^r_rmrnrorr[r rtr rhrurrÁrÂrÃrÄrrÅ)rvr‹r‡Ztf1Ztf2ryrÊr?r?r@Útest_version_2_0_memmap¨s6ÿ ÿ
 ÿrÎÚ    mmap_moderkc    CsÔtj |d¡}tjddddd}tjtddt ||¡W5QRXtj    t
d    dtj ||d
W5QRXtj    t
d    dtj ||d d W5QRXtj ||d d}t ||ƒtj ||dd }t ||ƒdS)Nzlarge_header.npyr*úi,é'rwr ú .*format 2.0©Úmatchú Header.*large)rÏé N)rÏr¿T)rÏrFé ¿) rmrnror^rœÚpytestÚwarnsrÄr¨Úraisesr[r|r)rvrÏrMrLÚresr?r?r@Útest_huge_headerÇs
rÜc    CsÜtj |d¡}tjddddd}tjtddtj||d    W5QRXtj    t
d
dt  |¡d W5QRXtj    t
d
dtj |d d d W5QRXtj |ddd }t ||ƒtj |dd d }t ||ƒdS)Nzlarge_header.npzr*rÐrÑrwr rÒrÓr\rÕrLrÖr¾TrEr×) rmrnror^rœrØrÙrÄrŽrÚr[r|r)rvrMrLrÛr?r?r@Útest_huge_header_npzÛs
rÝc
Cs¦tƒ}t d¡}tj||ddt ||¡tj||ddt ||¡tj||ddt ||¡ddddd    g}|D]*}ttd
ƒtj|||dW5QRXqvdS) Nr*rÀr¸r·)r*r*)rr)rr*r)éÿrÞz we only support format version.*)rr^Úaranger rHrr[)rMrLZ bad_versionsr¹r?r?r@Útest_write_versionïs&
   ûÿràs“NUMPYs“NUMPYs“NUMPYs“NUMPYs“NUMPYs“NUMPYÿÿs’NUMPYsNUMPYs“numpys“MATLBs“NUMPYs“NUMPYócCs¢tƒ}tƒ}tjdtd}tj||ddtj||dd| d¡| d¡t |¡}t |¡}t|dkƒt|dkƒt|     ¡tj
kƒt|     ¡tj
kƒdS)N©rrƒr rÀr¸r·r) rr^r_r±r rHrÆZ
read_magicrÚtellÚ    MAGIC_LEN)Ús1Ús2rLZversion1Zversion2r?r?r@Útest_read_magics
 
 
 
  rçcCs$tD]}t|ƒ}tttj|ƒqdSrQ)Úmalformed_magicrrr[r rJ©ÚmagicrMr?r?r@Útest_read_magic_bad_magic1srëcCs(ttD]}t|ƒ}tttj|ƒqdSrQ)Úbad_version_magicrèrrr[r rJrér?r?r@Útest_read_version_1_0_bad_magic7s rícCsDtttjddƒtttjddƒtttjddƒtttjddƒdS)Nrr*é)rr[r rêr?r?r?r@Útest_bad_magic_args=srïcCsLtƒ}tƒdddœ}t ||¡tƒ}dddfg|d<tttj||ƒdS)NFz<i8©rhrir«Axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrîr«)rÚtupler Úwrite_array_header_1_0rr[©Úsr‡r?r?r@Útest_large_headerDs  rõcCsrtƒ}tjdtd}tj||dd| tj¡t |¡\}}}t    | 
¡tj dkƒt    |||fddtfkƒdS)Nrâr rÀr¸rF) rr^r_r±r rHrÆräÚread_array_header_1_0rrãrÉ©rôrLrhZfortranr r?r?r@Útest_read_array_header_1_0Ns røcCsrtƒ}tjdtd}tj||dd| tj¡t |¡\}}}t    | 
¡tj dkƒt    |||fddtfkƒdS)Nrâr r·r¸rF) rr^r_r±r rHrÆräZread_array_header_2_0rrãrÉr÷r?r?r@Útest_read_array_header_2_0[s rùcCsˆtƒ}tttj|ƒtdƒ}tttj|ƒtdƒ}tttj|ƒtdƒ}tttj|ƒdddddœ}tƒ}t ||¡tttj|ƒdS)    Nó1ss@“NUMPY6{'descr': 'x', 'shape': (1, 2), }                    
©r*rFrr)rhrir«Zextrakey)rrr[r röròrór?r?r@Útest_bad_headerhs$ÿý rüc    CsØtjdkstjdkrt d¡tj |d¡}zddl}| ddd|g¡Wnt    k
rht d    ¡YnXt
|d
ƒ&}|  d ¡t   d ¡}t  ||¡W5QRXt
|d ƒ}|  d ¡t  |¡}W5QRXt||ƒdS)NÚwin32Úcygwinz)Unknown if Windows has sparse filesystemsZ sparse_filerÚtruncatez-sZ
5368709120zCould not create 5GB large filerelr5rj)ÚsysÚplatformrØÚskiprmrnroÚ
subprocessÚ
check_callÚ    ExceptionrprÆr^rßr¨r|r)rvZtf_nameÚsprMr‡rkr?r?r@Útest_large_file_support…s 
 
 
 
rz flaky on PyPyztest requires 64-bit systeml)Z
free_bytesc    Cs¢d}ztj|tjd}Wntk
r6t d¡YnXtj |d¡}t    |dƒ}tj
||dW5QRX~t    |dƒ}t  |¡d}W5QRX|j |ksžt ‚dS)    N)i@rr zCould not create large fileZ large_archiverer\rjrL)r^ÚemptyÚuint8Ú MemoryErrorrØrrmrnrorprŽr|rhÚAssertionError)rvrhrr“rMÚnew_ar?r?r@Útest_large_archivežs  r c    Cs2tj |d¡}t |¡t |¡}W5QRXdS)Nz nothing.npz)rmrnror^rŽr|)rvr“Znpsr?r?r@Útest_empty_npz¹s
 rc
Cs¾tjddddgdtfdtfgd}tj |d¡}t|dƒ}tj||dd    W5QRXt|d
ƒ}t     |¡}W5QRXt
||ƒt|dƒ*}t t ƒtj||dd    W5QRXW5QRXdS) N)r*rrûÚintu整形r z unicode.npyre)rrr¸rj) r^rœrrmrnrorpr rHrJrrrÄ)rvrLr“rMrOr?r?r@Útest_unicode_field_namesÁs&üþû      
 
rc CsœdddgdddgdddgdddgfD]r\}}}dd    „ttjƒDƒD]R}tƒ}t ||r^d
|fn|d
f|t d |tfg¡d œ¡t|     ¡ƒ|ksBt
‚qBq$dS) NFéé€ééÀTécSsg|] }d|‘qS)rr?r²r?r?r@r´Üsz+test_header_growth_axis.<locals>.<listcomp>rú rð) rr ZGROWTH_AXIS_MAX_DIGITSrròr^r rrÈrIr )Zis_fortran_arrayZ dtype_spaceZexpected_header_lengthr<rxr?r?r@Útest_header_growth_axisØsÿýrzdt, failZS3ZsomeÚstuff)ÚmetadataZsubarrayr)érrzPyPy bug in error formattingc    Cs¢tjd|d}tƒ}ttƒt ||¡W5QRX| d¡|rbttƒt     |¡W5QRXn<t     |¡}ddl
m }t ||ƒ||j ƒst‚||j ƒržt‚dS)Nrr r)Ú _has_metadata)r^r_rrrÄr¨rÆrr[r|Znumpy.lib.formatrrr r )r‹ZfailrLÚbufrOrr?r?r@Útest_metadata_dtypeæs
 
 
 
 
r)kÚ__doc__rrmrÁrØÚiorÚnumpyr^Z numpy.testingrrrrrrr    Znumpy.testing._private.utilsr
Z    numpy.libr r    Zint8Zuint16Úint16Zuint32Úint32Zuint64Úint64Úfloat32Úfloat64Z    complex64Z
complex128rYZscalarsrUZscalarZendianr Z newbyteorderrßZastypeÚbasicÚextendrœZreshapeÚTZPdescrZPbufferTZNdescrZNbufferTrŒrVr6rPrRrSrTrXrZr]rbÚmarkZskipifZslowrzr€r¬Zdt2Zdt3Zdt4Zdt5Zdt6Z parametrizerZxfailr”r§r©rr­rÍrÎrÜrÝràrìrèrçrërírïrõrørùrürZintprŠr rrrr±Úimplementationr¹rr?r?r?r@Ú<module>sÄ $  ó  
ô
ýýü÷
þï&ÿ&ÿú û
     
ÿÿ
 
/þýüýûú
 
 
ýûø
 ýþø
õ òÿã1
 
 
ú    ù
 
  ÿÿ ÿ
ÿþú
ÿ