a :jgv@sddlZddlZddlZddlmZmZmZGdddejj j Z ddZ d ddZ ejejejejejejejejejejejejeeejejejejej gZ!Gd d d Z"dS) N)assert_ assert_equal assert_raisesc@s0eZdZddZejejfZddZ ddZ dS) ArrayLikecCst||_dSN)npZasarrayvalue)selfrr E/usr/local/lib/python3.9/site-packages/numpy/lib/tests/test_mixins.py__init__ szArrayLike.__init__cs|dd}||D]}t|jtfstSqtdd|D}|r`tdd|D|d<t|||i|}t|turtfdd|DS|dkrdSt|SdS)Noutr css"|]}t|tr|jn|VqdSr isinstancerr.0xr r r sz,ArrayLike.__array_ufunc__..css"|]}t|tr|jn|VqdSrrrr r r r!sc3s|]}t|VqdSr)typerr r r r(at)getr_HANDLED_TYPESrNotImplementedtuplegetattrr)r Zufuncmethodinputskwargsr rresultr rr __array_ufunc__s"     zArrayLike.__array_ufunc__cCsdt|j|jfS)Nz%s(%r))r__name__rrr r r __repr__0szArrayLike.__repr__N) r" __module__ __qualname__r rZndarraynumbersNumberrr!r#r r r r r s rcCs*t|turtdd|DSt|SdS)Ncss|]}t|VqdSr)r)rrr r r r6rz"wrap_array_like..)rrrr r r r wrap_array_like4s r*cCstt|t||dt|trXtt|t||dt||D]\}}t|||q@n4t|j|j|dtt|jddt|jdd|ddS)Nerr_msgdtype) rrrrlenzip_assert_equal_type_and_valuerr)r expectedr,Z result_itemZ expected_itemr r r r0;s r0c@sdeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ dS)TestNDArrayOperatorsMixincCsdd}|tdd|dtd|tdtd|tdtd|ttdd|dttd|ttdtd|tdttddS)NcSst|tddSNr)r0rr)r r r checkbsz.checkr)rrarray)r r4r r r test_array_like_add`sz-TestNDArrayOperatorsMixin.test_array_like_addcCs`ttdg}|d7}t|ttdgtdg}|td7}t|ttdgdS)Nr)rrr5r0)r array_liker5r r r test_inplaceqs   z&TestNDArrayOperatorsMixin.test_inplacecCsGddd}td}|}t|||ut|||utt||7}Wdn1sb0Ytt||Wdn1s0Ytt||Wdn1s0YdS)Nc@s$eZdZdZdZddZddZdS)z6TestNDArrayOperatorsMixin.test_opt_out..OptOutz(Object that opts out of __array_ufunc__.NcSs|Srr r otherr r r __add__sz>TestNDArrayOperatorsMixin.test_opt_out..OptOut.__add__cSs|Srr r:r r r __radd__sz?TestNDArrayOperatorsMixin.test_opt_out..OptOut.__radd__)r"r$r%__doc__r!r<r=r r r r OptOut|sr?r7)rrr TypeError)r r?r8Zopt_outr r r test_opt_outzs  & & z&TestNDArrayOperatorsMixin.test_opt_outcCs@Gdddt}td}|d}t|||t|||dS)Nc@seZdZdZdS)z=TestNDArrayOperatorsMixin.test_subclass..SubArrayLikez&Should take precedence over ArrayLike.N)r"r$r%r>r r r r SubArrayLikesrBrr7)rr0)r rBryr r r test_subclasss z'TestNDArrayOperatorsMixin.test_subclasscCstd}t}tt||Wdn1s40Ytt||Wdn1sd0Ytt||7}Wdn1s0YdSr3)robjectrr@)r robjr r r test_objects & & z%TestNDArrayOperatorsMixin.test_objectcCsHtgd}t|}tjtjttjfD]}t||t||q(dS)Nrr7) rr5roperatornegposabsinvertr0)r r5r8opr r r test_unary_methodssz,TestNDArrayOperatorsMixin.test_unary_methodscCsTtgd}t|}tD]4}t||d}||d}d|}t|||dqdS)NrHr7failed for operator {}r+)rr5r_ALL_BINARY_OPERATORSr*formatr0)r r5r8rPr1actualr,r r r test_forward_binary_methodss  z5TestNDArrayOperatorsMixin.test_forward_binary_methodscCsBtD]8}t|dd}|dtd}d|}t|||dqdS)NrJr7rRr+)rSr*rrTr0)r rPr1rUr,r r r test_reflected_binary_methodss  z7TestNDArrayOperatorsMixin.test_reflected_binary_methodscCsdtjddgtjd}t|}ttd}t|t||t|t||t|t||dS)Nr7rJ)r-)rr5Zfloat64rr0matmulrK)r r5r8r1r r r test_matmuls  z%TestNDArrayOperatorsMixin.test_matmulcCsHttgd}ttj|tddgdut|tgddS)N)r7rJrr7)rIr[r\)rrr5rnegativerr0)r r5r r r test_ufunc_ats z'TestNDArrayOperatorsMixin.test_ufunc_atcCsPtd\}}t|t|f}tttd|ttttd|dS)Ng?)rfrexprr0r5)r Zmantissaexponentr1r r r test_ufunc_two_outputssz0TestNDArrayOperatorsMixin.test_ufunc_two_outputsN)r"r$r%r6r9rArDrGrQrVrWrZr_rbr r r r r2^s      r2)N)#r&rKnumpyrZ numpy.testingrrrlibZmixinsZNDArrayOperatorsMixinrr*r0ltleeqnegtgeaddsubmultruedivfloordivmoddivmodpowlshiftrshiftand_xoror_rSr2r r r r s6)