idldZddlZddlZddlZddlZddlmZddlZddl m Z m Z m Z m Z mZmZmZddlmZddlmZejejejejejejejejejejejej e!g Z"gZ#e"D]Z$dD]Z%ej&e$'e%Z&ej(d)e&Z*e#+ej,ge& ej,d e& e*e*-d e*-d j.e*-d ddd ddd fgЌgdZ/dd gddgddggdfddgddgddggdfgZ0dddddgdfddgfdd d!d"gfd#d$gZ1dd gd%dd&d%d'gddgd(d gfd)d*fd+d,ddgddggdfddgd-dd.d-d/gddgd d(gfd0d1fd2d3ddgddggdfgZ2ej,e0ej&e/'d4 ej,e2ej&e1'd4 ej,e0ej&e/'d5 ej,e2ej&e1'd5 ej3d(d6g gZ4Gd7d8eZ5d9Z6d:Z7d;Z8d<Z9d=Z:d>Z;d?Z?edABej>j@dCZAdDZBej&dEd*FZCej&dGdHgdIdIgd(dJgdKZDej&dLdMgdIeDgdNZEej&gdOdIgdzdNZFej&dGdHgdIdIgd(dJgdPdQgdRZGej&ggddSZHej>IdTeCeDeEeFeGeHgdUZJej>KedVBdWZLdXZMdYZNej>IdTej&ej&dGejfdHejfdLejfgd*FdZej&d[ej&dGdHgd\d\gddgdd]dZd^fgej&d_gej&d[ej&ej&ej&dGdHgd\d\gddgdd]dZfd^ffgej&dGej&ej&ej&ej&dGeOfdHej&dGdHgd\d\gddgdd]fgdZfd^fd`ffggdaZPdbZQej>?edABdcZRej>IdddedgdfZSdgZTdhZUgdiZVgdjZWdkZXdlZYdmZZdnZ[doZ\dpZ]dqZ^drZ_dsZ`ej>?edtBej>?ej&ejajbdkduBej>j@edvwdxZcdyZddzZed{Zfej>Id|ej&dGdHgegej&d}d~digdNd*fej&eOd~did1fej&deOdffgd~did1fej&dGdHgegej&dLgej&eOigdNgdNd1fgej>?eoejhjidkdBdZjdS)aD 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': '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': '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': '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': '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': '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" N)BytesIO)assert_assert_array_equal assert_raisesassert_raises_regex assert_warnsIS_PYPYIS_WASM)requires_memory)formatz<>idtype )2)xi4ryf8rrzu1g@g@g@g@ rInfo)valuec16)y2rInfo2)nameS2)r$r%r)y3rr)z3u4rr()z2b1)colorr*info)NameU8)Valuer%rr@nny@NNTcc)r8r5@ooy@OOFdd)r<r:<>)czm+&&~~3%%%%&&rOcttzD]1}|jtkrt |}t ||2dSrP)rkrlrobjectrcrrms rNtest_roundtrip_randsizerqsKm+** 9  %c**D sD ) ) )**rOcptD]-}|jtkrttt |.dSrP)rkrrpr ValueErrorrer]s rNtest_roundtrip_truncatedrus@@@ 9   *&93 ? ? ?@@rOctjdtjttjdzf}t |}t||dS)Nr7r )nponesrstrr BUFFER_SIZErar) long_str_arr long_str_arr2s rN test_long_strr}sP71BHc63E3I-J$K$KLLLLl++M|]33333rOzmemmap doesn't work correctly)reasonctttzD]\}}|jjrt j|d|d}t j|d|d}t|d5}tj ||dddn #1swxYwY|j j o |j j }tj|d|j|j|}||d<|t|d5}|}dddn #1swxYwYt|d5}|} dddn #1swxYwYt%|| tj|d }|dS) Nnormalz.npymemmapwbw+)modershape fortran_order.rbr)r) enumeraterkrlr hasobjectospathjoinopenr rYflags f_contiguous c_contiguous open_memmaprflushrJri) tmpdirir]nfnmfnfprma normal_bytes memmap_bytess rNtest_memmap_roundtriprs`L=8993 9   gll6#3A#3#3#344gll6#3A#3#3#344 #t__ (  r3 ' ' ' ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( I " A39+A'A   $ci&)i}NNN3  #t__ %7799L % % % % % % % % % % % % % % % #t__ %7799L % % % % % % % % % % % % % % %lL111 # . . .  5s6B**B. 1B. D;;D? D? E77E; >E; c:tjdd}tj|d}tj||tj|5}|d}dddn #1swxYwYt||dS)Nzcompressed.npzrtr]) rwrGrandrrrsavez_compressedloadr)rr]npz_filenpzarr1s rNtest_compressed_roundtriprs )..c " "Cw||F$455Hc****   c5zsD!!!!!s+ BBBz i1, i4, i1)alignabr)namesformatsoffsetsr@d)rr)rraabb)rrrtitles)rritemsizedtcXtjd|}tdD] }|dz||< tj|d}tj||tj|5}|d}dddn #1swxYwYt||dS)NrrCz aligned.npzrtr]) rwzerosrangerrrsavezrr)rrr]rrrrs rNtest_load_padded_dtypers (1b//C 1XXQAw||FM22HHX3   c5zsD!!!!!s: BBBz!Emscripten NODEFS has a buggy dupcbd}tjtjtd|}t jtd5tj |}dddn #1swxYwYt|tj ddS)Nzwin64python2.npydatazReading.*this warning\.matchr) rrrdirname__file__pytestwarns UserWarningrwrrrx)fnamerrs rN%test_python2_python3_interoperabilityrs E 7<<1165 A AD k)C D D Dwt}}tRWQZZ(((((s!BB Bc Vtjtjtd}t jdtddgt}dD]>}tj||}dD]}t j |d|}| d r|d }| n|}|d kr| d rxtt|d tt!|dd|ddt!|d||dtt|d t$t!||| d r| d rt j |d}t't(|jd | t j |ddd }t't,|jd | t't(t j |dt't,t j |ddd @dS)Nru優良s不良r )py2-objarr.npypy2-objarr.npzzpy3-objarr.npyzpy3-objarr.npz)byteslatin1TrWencodingz.npzrrpy2rrrVF)rW fix_importsr)rrrrrrwarrayrrprendswithclose startswithr isinstanceryrencoderr UnicodeError __getitem__ ImportError)data_direxpectedrrrdata_frs rNtest_pickle_python2_python3rsrw||BGOOH55v>>Hxun46$&&&H6#1#1w||He,,+ 3 3HWTxHHHF~~f%% c{ 8##(8(8(?(?# 47C00111"49hssm<<<"48??8#<#>H 7<<"2 3 3D*bgt$x9999 7<<"2 3 3D EH = = =6j!-555666666666666666 7<< 5 6 6D*bgtRXtfF-K-K-K$&&&&&&s=C%%C),C))rri1)rrrr)r!)rrArrBctj|j}t||t jd|}t |}t||dS)Nr)r descr_to_dtypedescrrirwrrar)rdt1rr`s rNtest_descr_to_dtyperXsWd   ) )C#r 8Ar??D T??DtT"""""rOct}dtdD}tjd|}t j||dt jd5}t jd d tt j||t|d j tudddn #1swxYwY| d | }tt|tjzd k| d t j|d }t#||t%t&tj||ddS)Nc,g|]}d|zdztfSz%ddfloat.0rs rN z$test_version_2_0..& 8 8 8D1H U # 8 8 8rOr rrversionTrecordalwaysrr@ max_header_sizer7r)rrrwrxr rYwarningscatch_warningsfilterwarningsrrcategoryseekreadlinelen ARRAY_ALIGNr[rrrs)r^rrwheaderns rNtest_version_2_0rs A 8 8U3ZZ 8 8 8B BA q!V,,,,   - - -."k:::1a   ! ,---............... FF1III ZZ\\F CKK&, , 1222FF1III!V444Aq!*f0!Q?????s*ACC C c dtdD}tjd|}tj|d}tj|d}t ttj |d|j |j d tj |d|j |j d }||d <| tj |d d }t||tjd5}tjddt"tj |d|j |j d }t%|djt"u||d <| dddn #1swxYwYtj |d d }t||dS)Nc,g|]}d|zdztfSrrrs rNrz+test_version_2_0_memmap..rrOrrr zversion2_01.npyzversion2_02.npyrr)rrrrr.rr)rrTrrrr)rrwrxrrrrrsr rrrrrrrrrrr)rrrtf1tf2rrs rNtest_version_2_0_memmapr s 9 8U3ZZ 8 8 8B BA ',,v1 2 2C ',,v1 2 2C*f0#D"#'6;;;;  Cd!'"#'6 ; ; ;BBsGHHJJJ  Cc6 B B BBr1   - - -"k:::  $ag&'gt===! ,---3    Cc6 B B BBr1sA9FF #F  mmap_moderctj|d}tjdddzdz}t jtd5tj||dddn #1swxYwYt j td 5tj || dddn #1swxYwYt j td 5tj ||d dddn #1swxYwYtj ||d }t||tj ||d }t||dS)Nzlarge_header.npyr7i,'rr .*format 2.0r Header.*large)r  N)r rT)r rW ) rrrrwrrrrrraisesrsrr)rr r^r]ress rNtest_huge_headerrs  V011A (1DJsN + + +C k 8 8 8 3 z 9 9 9(( Y''''((((((((((((((( z 9 9 9?? Y>>>>??????????????? '!yt < < A> CC C)D  DDctj|d}tjdddzdz}t jtd5tj|| dddn #1swxYwYt j td 5tj |d dddn #1swxYwYt j td 5tj |d d dddn #1swxYwYtj |dd }t||tj |d d }t||dS)Nzlarge_header.npzr7r r rr rrrtrr]rrTrVr) rrrrwrrrrrrrsrr)rr^r]rs rNtest_huge_header_npzrs  V011A (1DJsN + + +C k 8 8 8  z 9 9 9  5 z 9 9 911 5)))%00111111111111111 '!$ ' ' ' .CsC   '!V , , ,U 3CsC     s6A;;A?A?!CC C .DDDct}tjd}tj||dtj||tj||dtj||tj||dtj||gd}|D]F}t t d5tj|||dddn #1swxYwYGdS)Nr7rrr))r7r7)rr)rr7r)rz we only support format version.*)rrwaranger rYrrs)r^r] bad_versionsrs rNtest_write_versionrsJ A )A,,C q#v.... q# q#t,,,, q# q#v.... q#L 88 !CEE 8 8  q#w 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 888sC((C, /C, )sNUMPYsNUMPYsNUMPYsNUMPYsNUMPYsNUMPY)sNUMPYsNUMPYsnumpysMATLBsNUMPYsNUMPYrOc|t}t}tjdt}t j||dt j||d|d|dt j|}t j|}t|dkt|dkt| tj kt| tj kdS)Nrrr rrrr) rrwrxrr rYr read_magicrtell MAGIC_LEN)s1s2r]version1version2s rNtest_read_magicr%s B B '& & & &C r3//// r3////GGAJJJGGAJJJ $$H $$H H  H  BGGII) )*** BGGII) )*****rOcxtD]1}t|}tttj|2dSrP)malformed_magicrrrsr r[magicr^s rNtest_read_magic_bad_magicr*2s> 88 ENNj&"3Q777788rOcttzD]1}t|}ttt j|2dSrP)bad_version_magicr'rrrsr r[r(s rNtest_read_version_1_0_bad_magicr-8sC"_488 ENNj&"3Q777788rOctttjddtttjddtttjddtttjdddS)Nrr7)rrsr r)rOrNtest_bad_magic_argsr1>s`*flB222*flC333*flAr222*flAs33333rOct}tddd}tj||t}ddzdfg|d<t t tj||dS)NFzO A '& & & &C q#v....FF6 "8;;E7E AFFHHv) )Q ./// UGU #u'= =>>>>>rOct}tjdt}t j||d|tjt j|\}}}t| tj zdkt|||fddtfkdS)Nrr rrrF) rrwrxrr rYrr read_array_header_2_0rrrr<s rNtest_read_array_header_2_0rB\r?rOct}tttj|td}tttj|td}tttj|td}tttj|ddddd}t}tj||tttj|dS) N1ss@NUMPY6{'descr': 'x', 'shape': (1, 2), } r7rFrr)rrrextrakey)rrrsr r;r6r7s rNtest_bad_headerrGis A*f:A>>> A*f:A>>>  A*f:A>>>  "  A*f:A>>>  A  A !!Q'''*f:A>>>>>rOctjdkstjdkrtjdtj|d} ddl}|ddd|gn$#t$rtjd YnwxYwt|d 5}| d tj d }tj||dddn #1swxYwYt|d 5}| d tj|}dddn #1swxYwYt!||dS)Nwin32cygwinz)Unknown if Windows has sparse filesystems sparse_filertruncatez-s 5368709120zCould not create 5GB large filerlrCr)sysplatformrskiprrr subprocess check_call Exceptionrrrwrrrr)rtf_namespr^rrs rNtest_large_file_supportrVs 3<8#;#; ?@@@gll6=11G7  z4w?@@@@ 777 5666667 gt   z IaLL 1  gt   z GAJJq!s6A44BB(?C33C7:C7*EE Ez flaky on PyPyztest requires 64-bit systeml) free_bytescd} tj|tj}n$#t$rt jdYnwxYwt j|d}t|d5}tj ||dddn #1swxYwY~t|d5}tj |d}ddddS#1swxYwYdS) N)i@rr zCould not create large file large_archiverrtrr]) rwemptyuint8 MemoryErrorrrPrrrrrr)rrrrr^new_as rNtest_large_archiver^sn E3 HU"( + + + 333 1222223 GLL 1 1E eT  a  eT  "a 5!""""""""""""""""""s3 %AA9BB #B 8C  C$'C$ctj|d}tj|tj|5} ddddS#1swxYwYdS)Nz nothing.npz)rrrrwrr)rrnpss rNtest_empty_npzras GLL / /EHUOOO  3                   s AAActjgddtfdtfg}tj|d}t |d5}tj||ddddn #1swxYwYt |d 5}tj |}dddn #1swxYwYt||t |d5}tt5tj||ddddn #1swxYwYddddS#1swxYwYdS) N)r7rrErcrEintu整形r z unicode.npyr)rrrr) rwrrdrrrrr rYr[rrr)rr]rr^r`s rNtest_unicode_field_namesres> (  GM    C GLL / /E eT  3a1c62222333333333333333 eT  $a ##$$$$$$$$$$$$$$$sD!!! eT  5a + & & 5 5  q#t 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5555555555555555555sZA==BBB99B=B=$D59D D5D! !D5$D! %D55D9<D9c gdgdgdgdfD]x\}}}dttjDD]N}t}tj||rd|fn|df|t jd|ztfgdOydS) N)F)F)Trirh)Trjcg|]}d|zS)rr0rs rNrz+test_header_growth_axis..sIIIqRUIIIrOr r3)rr GROWTH_AXIS_MAX_DIGITSrr6rwrrd)is_fortran_array dtype_spaceexpected_header_lengthrLrs rNtest_header_growth_axisrrs***OOO___B @ @=+'=JIE&*G$H$HIII @ @DB  )"&6E!TT1I!1C OS#9":;;//     @ @ @rOzdt, failS3somestuff)metadatasubarrayr)rr zPyPy bug in error formattingctjd|}t}tt5tj||dddn #1swxYwY|d|rCtt5tj |ddddS#1swxYwYdStj |}ddl m }t||dS)Nrr r) drop_metadata) rwrxrrrrrrrsrnumpy.lib.utilsrzr)rfailr]bufr`rzs rNtest_metadata_dtyper~sc '"B   C ))C k " " SHHQKKK 7 : & &   GCLLL                  ws||1111113%%%%%s#AA"AB33B7:B7)k__doc__rNrrriornumpyrw numpy.testingrrrrrr r numpy.testing._private.utilsr numpy.libr r[int8uint16int16uint32int32uint64int64float32float64 complex64 complex128rpscalarsrkscalarendianr newbyteorderrastypebasicextendrreshapeTPdescrPbufferTNdescrNbufferTrrlrErarcrerirnrqrur}markskipifslowrrrdt2dt3dt4dt5dt6 parametrizerxfailrrrrdrrr rrrr,r'r%r*r-r1r9r>rBrGrVintprr^rarerrrimplementationrr~r0rOrNrsW RRf  988888 HGIHIHIHJJLM     F    --f55 $&&u-- BHRu % % % BHRu % % %  MM( # # MM( # # % MM( # #DDbD##A#I .   4   Vr2hR !1%Vr2hR !1% (      !    # .Vb"tb"XBx!Q8$ E :R2r(+Q0Vb"tb"XBx!Q8$ F :R2r(+Q0   BHXXRXf--::3??@@@ BHXXRXf--::3??@@@ BHXXRXf--::3??@@@ BHXXRXf--::3??@@@ BHQ12333  """"""""&&& ***@@@ 444G$CDDED<"""bh|4(((bh#st q6##$$bh#ss <<==bhTF1H==>>bh#st q6dD\;;<<bh::;;S#sC=>>""?>"7#FGG))HG),1,1,1^ & & & BHXRXRW~RXRX $%%%   BHsHBHs3i)-d )*1)*     BH BHsHBH BHs3i!%d !"1!"$$ % %              BH hbh BHBHc hbhS 37+34Q%34(6(6778              ;/ //b##c//b#@@@2G$CDDED<sDk22!!32!&!!!(8886+++*888 888 444CCC ? ? ? ? ? ????:2GO44HBHRW%%.28::I&&&  '&::54  ,   555. @ @ @ RXc !7+9-9-9-1.//00157 RXcVW-...6 RX S$K()VW4EFFFN RXc  xrx3%XRXcB5O5O5O4PQQRR0  &  GG 2 :i G-//77//  777rO