o 6av@sddlZddlZddlZddlmZmZmZGdddejj j Z ddZ d ddZ ejejejejejejejejejejejejeeejejejejej gZ!Gd d d Z"dS) N)assert_ assert_equal assert_raisesc@s0eZdZddZejejfZddZ ddZ dS) ArrayLikecCst||_dSN)npasarrayvalue)selfr r =/usr/lib/python3/dist-packages/numpy/lib/tests/test_mixins.py__init__ szArrayLike.__init__cs|dd}||D]}t|jtfstSq tdd|D}|r0tdd|D|d<t|||i|}t|turKtfdd|DS|dkrQdSt|S)Noutr cs$|] }t|tr |jn|VqdSr isinstancerr .0xr r r sz,ArrayLike.__array_ufunc__..csrrrrr r r r!s  c3s|] }t|VqdSr)typerr r r r(sat)getr_HANDLED_TYPESrNotImplementedtuplegetattrr)r ufuncmethodinputskwargsrrresultr rr __array_ufunc__s$     zArrayLike.__array_ufunc__cCsdt|j|jfS)Nz%s(%r))r__name__r rr r r __repr__0szArrayLike.__repr__N) r$ __module__ __qualname__r rndarraynumbersNumberrr#r%r r r r r s   rcCs&t|turtdd|DSt|S)Ncss|]}t|VqdSr)r)rrr r r r6sz"wrap_array_like..)rrrr"r r r wrap_array_like4s r-cCstt|t||dt|tr-tt|t||dt||D] \}}t|||q dSt|j|j|dtt|jddt|jdd|ddS)Nerr_msgdtype) rrrrlenzip_assert_equal_type_and_valuer r)r"expectedr/ result_item expected_itemr r r r3;s  r3c@sdeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ dS)TestNDArrayOperatorsMixincCsdd}|tdd|dtd|tdtd|tdtd|ttdd|dttd|ttdtd|tdttddS)NcSst|tddSNr)r3rr,r r r checkbsz.checkr)rrarray)r r9r r r test_array_like_add`s z-TestNDArrayOperatorsMixin.test_array_like_addcCs`ttdg}|d7}t|ttdgtdg}|td7}t|ttdgdS)Nr)rrr:r3)r array_liker:r r r test_inplaceqs   z&TestNDArrayOperatorsMixin.test_inplacecCsGddd}td}|}t|||ut|||utt ||7}Wdn1s1wYtt ||Wdn1sIwYtt ||WddS1sbwYdS)Nc@s$eZdZdZdZddZddZdS)z6TestNDArrayOperatorsMixin.test_opt_out..OptOutz(Object that opts out of __array_ufunc__.NcS|Srr r otherr r r __add__z>TestNDArrayOperatorsMixin.test_opt_out..OptOut.__add__cSr?rr r@r r r __radd__rCz?TestNDArrayOperatorsMixin.test_opt_out..OptOut.__radd__)r$r&r'__doc__r#rBrDr r r r OptOut|s  rFr<)rrr TypeError)r rFr=opt_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'rEr r r r SubArrayLikesrJrr<)rr3)r rJryr r r test_subclasss z'TestNDArrayOperatorsMixin.test_subclasscCstd}t}tt ||Wdn1swYtt ||Wdn1s2wYtt ||7}WddS1sKwYdSr8)robjectrrG)r robjr r r test_objects      "z%TestNDArrayOperatorsMixin.test_objectcCsHtgd}t|}tjtjttjfD] }t||t||qdS)Nrr<) rr:roperatornegposabsinvertr3)r r:r=opr r r test_unary_methodssz,TestNDArrayOperatorsMixin.test_unary_methodscCsTtgd}t|}tD]}t||d}||d}d|}t|||dq dS)NrPr<failed for operator {}r.)rr:r_ALL_BINARY_OPERATORSr-formatr3)r r:r=rXr4actualr/r r r test_forward_binary_methodss  z5TestNDArrayOperatorsMixin.test_forward_binary_methodscCsBtD]}t|dd}|dtd}d|}t|||dqdS)NrRr<rZr.)r[r-rr\r3)r rXr4r]r/r r r test_reflected_binary_methodss  z7TestNDArrayOperatorsMixin.test_reflected_binary_methodscCsdtjddgtjd}t|}ttd}t|t||t|t||t|t||dS)Nr<rR)r0)rr:float64rr3matmulrS)r r:r=r4r r r test_matmuls  z%TestNDArrayOperatorsMixin.test_matmulcCsHttgd}ttj|tddgdut|tgddS)N)r<rRrr<)rQrdre)rrr:rnegativerr3)r r:r r r test_ufunc_ats z'TestNDArrayOperatorsMixin.test_ufunc_atcCsPtd\}}t|t|f}tttd|ttttd|dS)Ng?)rfrexprr3r:)r mantissaexponentr4r r r test_ufunc_two_outputssz0TestNDArrayOperatorsMixin.test_ufunc_two_outputsN)r$r&r'r;r>rIrLrOrYr^r_rcrhrlr r r r r7^s      r7r)#r)rSnumpyr numpy.testingrrrlibmixinsNDArrayOperatorsMixinrr-r3ltleeqnegtgeaddsubmultruedivfloordivmoddivmodpowlshiftrshiftand_xoror_r[r7r r r r s8)