o 6a&O@sddlZddlZddlmZddlmZddlmZddl Z ddl Z ddl m Z mZmZmZmZmZddlmZGdddZGd d d ZGd d d Zd dZdS)N)BytesIO)path)Path)assert_ assert_equalassert_array_equalassert_array_almost_equal assert_raisestemppath)picklec@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'S)(TestFromrecordscCsztjjgdgdgdd}t|ddt|djjdt|djjd t|djjd t|d jjd dS) N)idbeg333333?)de?zcol1,col2,col3namesrcol1icol2U col3f)nprec fromrecordsritemdtypekinditemsizeselfrr$?/usr/lib/python3/dist-packages/numpy/core/tests/test_records.pytest_fromrecordssz TestFromrecords.test_fromrecordscCs0dtfdtfg}tjjg|d}t|jddS)z0 Verify fromrecords works with a 0-length input abrrN)floatrrrrshape)r"rr#r$r$r%test_fromrecords_0lensz%TestFromrecords.test_fromrecords_0lencCsgdgdg}gdgdg}gdgdg}tjj|dtfdtfgd }t|d|t|d|tjj|ddgd }t|d|t|d|t||dS) N))r))))r2r1)r0r/)rr.)r.r/r1)r2r0r)rr0r2)r1r/r.r'r(r)r)rrrintr)r"data expected_a expected_br1r2r$r$r%test_fromrecords_2d sz#TestFromrecords.test_fromrecords_2dcCs*tjjddddd}t|dddS)Nsabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgzi2,a3,i4r/bigformatsr, byteorderr.)idcsefgidcbarrarrayrrr!r$r$r%test_method_array4sz!TestFromrecords.test_method_arraycCs*tjjgddd}t|dddS)N)r. r')rr()r/!c)r0,d)r17ex)r2Br)Mgu1,f4,a1r<r.)rg6@br>r!r$r$r%test_method_array28s z"TestFromrecords.test_method_array2cCs4tjjgddd}t|ddddddS)NrArNrOr.r)r0gF@dr>r!r$r$r%test_recarray_slices=s  z$TestFromrecords.test_recarray_slicescCsttgd}tgd}tgd}tjj|||gdd}t|ddd|d<t|jtgddS) N)r.rr/r0)r'ddxyz12)皙?rr/r0za,b,crr.)rrT@")rr?r fromarraysrrr')r"x1x2x3r#r$r$r%test_recarray_fromarraysBsz(TestFromrecords.test_recarray_fromarrayscCstttd}t|d}t|d}|dtjj|dddd}|dtjj |dddd}|dt }| | |d tjj|dddd}| t||t||dS) Nr4zrecarray_from_file.fitsrbif8,i4,a5r/r:r;r)rjoindirname__file__openseekrrfromfiler?rwritereadcloser)r"data_dirfilenamefdr7r8 bytes_arrayr3r$r$r%test_recarray_fromfileKs       z&TestFromrecords.test_recarray_fromfilecCsd}tj|dd}tj|dd}tj|dd}tt|D] }ttdd||<qtjj|||gdd}tt|D]"}t|j|ttddkt|j |dkt|j |dkq:dS) N Or)f8r.zdate,data1,data2rg) rzerosrangelenlistrrZrdatedata1data2)r"countr'r(rErminer$r$r%test_recarray_from_obj\sz&TestFromrecords.test_recarray_from_objcCstjddgddgd}tj|}tt|tdttjddd}tttj| d tjtjd d d}tt| d d tjtjd dd}tt| dd kdS)N)r.g?)rg?)foo.CN)__name__ __module__ __qualname__r$r$r$r%Csr))r'f4,f4)r(V8)rE)f4r)rGi8rr.r.s11111111r.rr)rrrr)rr?r3int64rrrrrrrrr'r(voidrEfloat32rGint32fieldsr) r"r'r(r#rvrrE test_dtypearrsarrrarr2r$r$r%test_recarray_viewssX    z#TestFromrecords.test_recarray_viewscCsztjjgddd}tjjgddd}t|j|jkt|j|jktt|D]}t|| || kq*dS)N))r.abcg @r)rxyg@r.)r g?rzc1, c2, c3, c4r) rrr?rrrr,rtrur)r"rapakr$r$r%test_recarray_from_namess  z(TestFromrecords.test_recarray_from_namescCstjjgddd}gd|_t|dgdtt|jt|jud|_t|jdkgd|_t |dgdgd |_ t |d gd gtt |j t j jdS) N))r.rgffffff@)rrUg@)r/wrsrzfield, shape, meanr)rWg@gffffff @meanr.r/)ABrr,r1field)r1r1r1)rrr?rrrrvarr,rr isinstance collectionsrCallable)r"rr$r$r%test_recarray_conflict_fieldss   z-TestFromrecords.test_recarray_conflict_fieldscCstjjddgdtfdtfgd}t|jddgt|djdt|jdd gt|d jd tdtfdtfg}tjjddg|d}t|jddgt|djdt|jdd gt|d jd dS) N)r.r')rbbbr'r(r)r.rrrr) rrrr3objectrr'r(r)r"r'ndtyper$r$r%$test_fromrecords_with_explicit_dtypes z4TestFromrecords.test_fromrecords_with_explicit_dtypecCsDtjddgddtfgd}|tj}t|jd|jdkddS) N)abc r.)rrr}rrr)rr.F)rr?r3rrrr}rr$r$r%test_recarray_stringtypess   z)TestFromrecords.test_recarray_stringtypescCstddftddfd}tjjddgddd tfd tfgfd tfd |fgd }tt|jtjtt|dtjtt|j tj tt|dtj t|j jjtj tt|d tj t|j jjtj tt |j jj|tt|jtjtt|d tjtt|dj tj tt|ddtj t|dj jdt|dj d dt|ddjdt|ddd dt|dj jdt|dj ddt|dd jdt|dd dddS)NS5rr2)rD)rrr.)abcdefgehi)r)rr/r.)rjklmnrrrrbazquxr)r}r.sfgehir)rrrr?r3rrr}rrrrrdictrrrr)r" qux_fieldsr'r$r$r%test_recarray_returntypess: z)TestFromrecords.test_recarray_returntypescCsdgddgdg}tj|}t|dgdt|dgdtdd g}tjj||d }t|jd t|dgd t|dgd dS)Ntestr/f0)rrrf1)rrr)rz|S4)rz|Sr)r0)testrr)rr)rrrZrrr )r"colsrdtr$r$r%test_zero_width_strings4s  z'TestFromrecords.test_zero_width_stringsN)rrrr&r-r9r@rQrSr^ror|rrrrrrrrrrr$r$r$r%r s(  > r c@seZdZddZdS) TestPathUsagec CstddI}t|}tjdtjdd}d|d<|d }||Wdn1s2wYtj j j |ddd }t ||WddS1sQwYdS) Nz.bin)suffix{rpr`)g?rprr1wb)r<r,) r rrrandomseedrandastyperdtofilecorerecordsrfr)r"rr'rlxr$r$r%test_tofile_fromfileEs      "z"TestPathUsage.test_tofile_fromfileN)rrrrr$r$r$r%rCs rc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZejdgddd Zejdgdd!d"Zd#d$Zd%S)& TestRecordcCstjjddggdd|_dS)Nr.rr/)r0r1r2)rr~rr~)rr~r))rrrr4r"r$r$r%setupTs  zTestRecord.setupcCs4|j}t|jddd|d_t|jdddSNrr.r4rrrr$r$r%test_assignment1Z zTestRecord.test_assignment1cCs4|j}t|jddd|jd<t|jdddSrrrr$r$r%test_assignment2`rzTestRecord.test_assignment2cCs|j}dd}tt||dS)NcSsd|d_dS)Nr.r)col5)rr$r$r%assign_invalid_columniszATestRecord.test_invalid_assignment..assign_invalid_column)r4r AttributeError)r"r'rr$r$r%test_invalid_assignmentfsz"TestRecord.test_invalid_assignmentcCstjjddgdgd}d|j_tt ddg|_Wdn1s#wYtt|jddgg|j j dRWddS1sGwYdS) Nr*)r.)rrr)Frr/r) rrr?flags writeabler ValueErrorrsetfieldrrr!r$r$r%test_nonwriteable_setfieldns    "z%TestRecord.test_nonwriteable_setfieldcs`|jddg}t|jjdt|jjgd|jddgtjjdttfdddS)Nrr)rr)rr)rz|V4)rrcsjjS)N)rdescrr$yr$r%sz5TestRecord.test_out_of_order_fields..)r4rrrrr r)r"rr$rr%test_out_of_order_fieldswsz#TestRecord.test_out_of_order_fieldsc Cs|tjdgfgdtjfdtjdfgd}tdtjdD] }t|ttj||dt|dttj|d|dqdS)Nr.r'r(rr)rprotocol) rr?rrtr HIGHEST_PROTOCOLrloadsdumpsr"r'protor$r$r% test_pickle_1s& zTestRecord.test_pickle_1c Cs\|j}tdtjdD] }t|ttj||dt|dttj|d|dq dS)Nrr.r r)r4rtr r rrrrr$r$r% test_pickle_2s zTestRecord.test_pickle_2cCsh|j}tdtjdD]&}ttj|d|d}t|jjt|jj t|jj t|jj q dS)Nrr.rr ) r4rtr r rrrr c_contiguous f_contiguousraligned)r"r'rrr$r$r% test_pickle_3s   zTestRecord.test_pickle_3c Cstddg}tjd|d}tdf}||d<d|d<|d \}}|tjjjus,J|\}}t|t r7Jt t ||d t |d }t |} |d | ksRJtt|td ||usdJWddS1sowYdS) N)objrq)r3rr.r)semanr*r3r rq)rrempty bytearray __reduce__r multiarrayscalarrbytesr RuntimeErrorr rrpytestwarnsDeprecationWarning) r"rr'r4ctorargsrrdump unpickledr$r$r%test_pickle_voids    "zTestRecord.test_pickle_voidcCsdtddg}tjd|dtj}tgd|_tjddtfdtfd t fgd}|ddgdS) N)r}r)rrqrr)r)rrrz) rrrsrrr?r}rr+r3)r"rr#rr$r$r%test_objview_records  zTestRecord.test_objview_recordcCs:tjddtdfgd}d|d_t|djtddS)Nr.rr1r)r)rrr+rrr)r"rr$r$r%test_record_scalar_setitems z%TestRecord.test_record_scalar_setitemcs0tjddtfdtfgdttfdddS)N)r/rrr)cs dgS)Nnofieldr$r$rr$r%r s z/TestRecord.test_missing_field..)rrsr3r KeyErrorrr$r.r%test_missing_fieldszTestRecord.test_missing_fieldcCs,tdtjdddgdg}tj|}dS)Nrp)r'z Test that nested structured types are treated as records too r'r(rENinnerr/r)rrr5rsrrrr)r"r4rdt_outerr4data0r$r$r%test_nested_fields_are_recordss*z)TestRecord.test_nested_fields_are_recordscCstdtjfdtjfdtjfg}|ddg}|j|jksJtd|fg}td|tj}t|dj||d}t|dj|dS)z) test that trailing padding is preserved r'r(rEr7r/rN)rrr5r rsrrr)r"r dt_padded_endr8r4r9r$r$r%test_nested_dtype_paddings" z$TestRecord.test_nested_dtype_paddingN)rrrrrrrrr rrrr)r+r,r0r3r"mark parametrizer6r:r<r$r$r$r%rSs(       rcCs~gd}ttj|gkgd}ttj|dgkgd}ttj|ddgkgd}ttj|ddgkdS)N)r.rr/r0r1r2)r.rr.r0r1r2r.)r.rr.r0r.r2rr/r)rrr.r0r.r2rr/)rrrfind_duplicate)l1l2l3r$r$r%test_find_duplicatesrC)collections.abcrriorosrpathlibrr"rr numpy.testingrrrrr r numpy.compatr r rrrCr$r$r$r%s      5 +