a :jg=P@sddlZddlZddlmZddlmZddlmZddl Z ddl Z ddl Z ddl mZmZmZmZmZmZGdddZGdd d ZGd d d Zd d ZdS)N)BytesIO)path)Path)assert_ assert_equalassert_array_equalassert_array_almost_equal assert_raisestemppathc@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)iZdbeg333333?)de?zcol1,col2,col3namesrcol1icol2U col3f)nprec fromrecordsritemdtypekinditemsizeselfrr"H/usr/local/lib/python3.9/site-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 ))))r0r/)r.r-)r r,)r,r-r/)r0r.r )r r.r0)r/r-r,r%r&r'r)rrrintr)r dataZ expected_aZ expected_br1r2r"r"r#test_fromrecords_2d!sz#TestFromrecords.test_fromrecords_2dcCs*tjjddddd}t|dddS)Nsabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgzi2,S3,i4r-bigformatsr* byteorderr,)idcsefgidcbarrarrayrrrr"r"r#test_method_array5sz!TestFromrecords.test_method_arraycCs*tjjgddd}t|dddS)N)r, r%)r r&)r-!c)r.,d)r/7ex)r0Br)Mgu1,f4,S1r8r,)r g6@br:rr"r"r#test_method_array2;s z"TestFromrecords.test_method_array2cCs4tjjgddd}t|ddddddS)Nr=rJrKr,r )r.gF@dr:rr"r"r#test_recarray_slicesEs z$TestFromrecords.test_recarray_slicescCsttgd}tgd}tgd}tjj|||gdd}t|ddd|d<t|jtgddS) N)r,r r-r.)r%ddxyzZ12)皙?r r-r.za,b,crr,)r rP@")rr;r fromarraysrrr%)r x1Zx2Zx3r!r"r"r#test_recarray_fromarraysOsz(TestFromrecords.test_recarray_fromarrayscCstttd}t|d}t|d}|dtjj|dddd}|dtjj |dddd}|dt }| | |d tjj|dddd}| t||t||dS) Nr2zrecarray_from_file.fitsrbif8,i4,S5r-r6r7r)rjoindirname__file__openseekrrfromfiler;rwritereadcloser)r data_dirfilenamefdr3r4Z bytes_arrayZr3r"r"r#test_recarray_fromfileXs"       z&TestFromrecords.test_recarray_fromfilecCsd}tj|dd}tj|dd}tj|dd}tt|D]}ttdd||<q:tjj|||gdd}tt|D]D}t|j|ttddkt|j |dkt|j |dkqtdS) N Or'f8r,zdate,data1,data2rg) rzerosrangelenlistrrUrdateZdata1Zdata2)r countr%r&rArZminer"r"r#test_recarray_from_objksz&TestFromrecords.test_recarray_from_objcCstjddgddgd}tj|}tt|tdttjddd}tttj| d tjtjd d d}tt| d d tjtjd dd}tt| dd kdS)N)r,g?)r g?)foo.CN)__name__ __module__ __qualname__r"r"r"r#Csr))r%f4,f4)r&V8)rA)Zf4r )rCi8rtr,r,s11111111r,rtr)rvr rr)rr;r1Zint64rrrrrrrrzr%r&voidrAZfloat32rCint32fieldsr) r r%r&r!rvrrAZ test_dtypeZarrsarrrZarr2r"r"r#test_recarray_viewssV    z#TestFromrecords.test_recarray_viewscCsztjjgddd}tjjgddd}t|j|jkt|j|jktt|D] }t|| || kqTdS)N))r,abcg @r)r Zxyg@r,)r g?rzc1, c2, c3, c4r) rrr;rrrr*rkrlr)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@)r rQg@)r-Zwrsrzfield, shape, meanr)rRg@gffffff @meanr,r-)ABrr*r/field)r/r/r/)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%)r bbbr%r&r'r,r rrru) rrrr1objectrr%r&r)r r%Zndtyper"r"r#$test_fromrecords_with_explicit_dtypes z4TestFromrecords.test_fromrecords_with_explicit_dtypecCsDtjddgddtfgd}|tj}t|jd|jdkddS) N)abc r,)rr rqrrsr'rr,F)rr;r1rrrrqr}r"r"r#test_recarray_stringtypes#s    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)NZS5rr0)rD)rrr,)abcdeZfgehi)r)r r-r,)rZjklmnrrsrrbazquxr'rqr,sfgehir)rrrr;r1rrrqrrsrrrdictrrrr)r Z qux_fieldsr%r"r"r#test_recarray_returntypes*s: 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'r.)testrr)rr)rrrUrrr)r colsrdtr"r"r#test_zero_width_stringsFs  z'TestFromrecords.test_zero_width_stringsN)rrrr$r+r5r<rMrOrWrfrpr~rrrrrrrrrr"r"r"r#r s&    >r c@seZdZddZdS) TestPathUsagec Cstdd}t|}tjdtjdd}d|d<|d}||Wdn1sd0Ytj j j |ddd }t ||Wdn1s0YdS) Nz.bin)suffix{rgrY)g?rgrr/wb)r8r*) r rrrandomseedZrandZastyper]tofile_corerecordsr_r)r rr%rexr"r"r#test_tofile_fromfileWs   (z"TestPathUsage.test_tofile_fromfileN)rrrrr"r"r"r#rUsrc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZejdgddd Zejdgdd!d"Zd#d$Zd%S)& TestRecordcCstjjddggdd|_dS)Nr,r r-)r.r/r0)rrrrrr)rrrr')rrrr2r r"r"r# setup_methodfs zTestRecord.setup_methodcCs4|j}t|jddd|d_t|jdddSNrr,r2rrr}r"r"r#test_assignment1ls zTestRecord.test_assignment1cCs4|j}t|jddd|jd<t|jdddSrrr}r"r"r#test_assignment2rs zTestRecord.test_assignment2cCs|j}dd}tt||dS)NcSsd|d_dS)Nr,r)Zcol5)rr"r"r#assign_invalid_column{szATestRecord.test_invalid_assignment..assign_invalid_column)r2r AttributeError)r r%rr"r"r#test_invalid_assignmentxsz"TestRecord.test_invalid_assignmentcCstjjddgdgd}d|j_ttddg|_Wdn1sF0Ytt.|jddgg|j j dRWdn1s0YdS) Nr()r,)rrvr'Fr r-r) rrr;flags writeabler ValueErrorrZsetfieldrrrr"r"r#test_nonwriteable_setfields  ( z%TestRecord.test_nonwriteable_setfieldcs`|jddg}t|jjdt|jjgd|jddgtjjdttfdddS)Nrr)rr)rr)rz|V4)rrcsjjS)N)rdescrr"yr"r#rz5TestRecord.test_out_of_order_fields..)r2rrrrr r)r rr"rr#test_out_of_order_fieldssz#TestRecord.test_out_of_order_fieldsc Cs|tjdgfgdtjfdtjdfgd}tdtjdD]@}t|ttj||dt|dttj|d|dq6dS)Nr,r%r&rr'r protocol) rr;rrkpickleHIGHEST_PROTOCOLrloadsdumpsr r%protor"r"r# test_pickle_1s &zTestRecord.test_pickle_1c Cs\|j}tdtjdD]@}t|ttj||dt|dttj|d|dqdS)Nr r,rr)r2rkrrrrrrr"r"r# test_pickle_2s zTestRecord.test_pickle_2cCsh|j}tdtjdD]L}ttj|d|d}t|jjt|jj t|jj t|jj qdS)Nr r,rr) r2rkrrrrrr c_contiguous f_contiguousrZaligned)r r%rrr"r"r# test_pickle_3s   zTestRecord.test_pickle_3c Cstddg}tjd|d}tdf}||d<d|d<|d \}}|tjjjusXJ|\}}t|t rnJt t ||d t |d }t |} |d | ksJtt(|td ||usJWdn1s0YdS) N)objrh)r1rr,r'semanr*r1r rh)rrempty bytearray __reduce__rZ multiarrayZscalarrbytesr RuntimeErrorrrrpytestZwarnsDeprecationWarning) r rr%r2ZctorargsrrdumpZ unpickledr"r"r#test_pickle_voids   zTestRecord.test_pickle_voidcCsdtddg}tjd|dtj}tgd|_tjddtfdtfd t fgd}|ddgdS) N)rqr)rsrhrr'r)r rrz) rrrjrrr;rqrr)r1)r rr!rr"r"r#test_objview_recordszTestRecord.test_objview_recordcCs:tjddtdfgd}d|d_t|djtddS)Nr,rr/r'r)rrr)rrrz)r rr"r"r#test_record_scalar_setitems z%TestRecord.test_record_scalar_setitemcs0tjddtfdtfgdttfdddS)N)r-rrr'cs dgS)NZnofieldr"r"rr"r#rrz/TestRecord.test_missing_field..)rrjr1r KeyErrorrr"rr#test_missing_fieldszTestRecord.test_missing_fieldcCs,tdtjdddgdg}tj|}dS)Nrg)r%z Test that nested structured types are treated as records too r%r&rANinnerr-r)rrrrjrrrr)r rrdt_outerr2data0r"r"r#test_nested_fields_are_recordss*z)TestRecord.test_nested_fields_are_recordscCstdtjfdtjfdtjfg}|ddg}|j|jks>Jtd|fg}td|tj}t|dj||d}t|dj|dS)z) test that trailing padding is preserved r%r&rArr-rN)rrrrrjrrr)r rZ dt_padded_endrr2r r"r"r#test_nested_dtype_paddings" z$TestRecord.test_nested_dtype_paddingN)rrrrrrrrrrrrrrrrrrmarkZ parametrizerr r r"r"r"r#res&      rcCs~gd}ttj|gkgd}ttj|dgkgd}ttj|ddgkgd}ttj|ddgkdS)N)r,r r-r.r/r0)r,r r,r.r/r0r,)r,r r,r.r,r0r r-r )r r r,r.r,r0r r-)rrrZfind_duplicate)l1l2l3r"r"r#test_find_duplicatesr)collections.abcrrxiorosrpathlibrrrrrZ numpy.testingrrrrr r r rrrr"r"r"r#s    F-