rL iTddlZddlZddlmZmZmZmZddlZddl m Z ddl m Z ddlmZddlmZddlmZmZmZmZddlmZddlmZmZddlmZGdd ZGd d Z d Z!d Z"edgddddZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*GddejVZ,GddZ-Gdd Z.d!Z/d"Z0d#Z1d$Z2d%Z3d&Z4d'Z5d(Z6d)Z7d*Z8d+Z9d,Z:ejvjyd-gd.d/Z=d0Z>ed1g2d3Z?d4Z@d5ZAd6ZBd7ZCd8ZDd9ZEy):N)assert_allcloseassert_almost_equalassert_array_equalassert_array_almost_equal)scale)Affine2DBboxTransformedBbox_ScaledRotation)Path)image_comparisoncheck_figures_equal) MagicMockceZdZddgZddgddgddggZeZdZdZdZd Z d Z d Z d Z d Z dZdZdZdZdZdZdZdZdZy) TestAffine2D?@@@ctgdgdgdgttjgdgdgdgtttjgdgdgdgty)N)) )rnparrayintfloatselfs f/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/tests/test_transforms.py test_initzTestAffine2D.test_initsE)Y 239i;SAB9i;UCDctjjdtjjd}tt j |j |y)N!N,r)r"randomseedrr from_values to_valuesr'valuess r( test_valueszTestAffine2D.test_valuessD x !!!$8//8BBDfMr*ct}|j}d|d<t|jgdgdgdgy)N*rr)r5rrrrrrrr)r get_matrixr)r'transmtxs r(test_modify_inplacez TestAffine2D.test_modify_inplace!s:  D 5++- Iy/QRr*cttjjdddz}|j t |j gdgdgdgy)Nrr)rrrr7r8)rr"r-randclearrr9)r'as r( test_clearzTestAffine2D.test_clear(s@ RYY^^Aq)A- .  1<<>Iy)+LMr*c0tjtjdz }tj d}t |j |j t|j|jddgt|j|jddgddgdd ggtjtj}tj d }t |j |j t|j|jddgt|j|jddgddgd dggtjdtjzdz }tj d }t |j |j t|j|jddgt|j|jddgddgdd ggt ||zj |j t ||zj |j y) NrZrrrr) rrotater"pi rotate_degrr9r transform single_pointmultiple_pointsr'r_pi_2r90r_pir180r_pi_3_2r270s r( test_rotatezTestAffine2D.test_rotate-s""25519-j##B'6,,.0@A!#--0A0A"BRGL!#--0D0D"E$&7RGaV"< >z  'z$$S)4??,doo.?@!$..1B1B"Cb"XN!$..1E1E"F$%r7RHr1g"> @:$$QY]3z$$S)8..0$//2CD!$..1B1B"CaWM!$..1E1E"F$%q6Ar7QG"< > C#I113T__5FGC$J224doo6GHr*ctjg|jtjdz }tj g|jd}t |j|jt|j|jddgt|j|jddgddgddggtjg|jtj}tj g|jd}t |j|jt|j|jddgt|j|jddgddgd dggtjg|jdtjzdz }tj g|jd }t |j|jt|j|jddgt|j|jddgddgdd ggt||zj|jt||zj|jy) NrrCrrrDrrrGrErI) r rotate_aroundpivotr"rKrotate_deg_aroundrr9rrMrNrOrPs r(test_rotate_aroundzTestAffine2D.test_rotate_aroundFsL)))A4::AruuqyA*hj**;DJJ;;6,,.0@A!#--0A0A"BQFK!#--0D0D"E$%q6B7QF"; =(xz'';;RUU;+xz++=TZZ==4??,doo.?@!$..1B1B"CaVL!$..1E1E"F$%q6B8b!W"= ?,8:++GTZZGRUUQG+xz++=TZZ==8..0$//2CD!$..1B1B"CaVL!$..1E1E"F$%q6Ar7QG"< > "39"8"8":DOO %%b)//26j++B/(*2B2B1b2II 5++-{/E/E/GH!%//$2C2C"Dr2hO!%//$2F2F"G$&8b"X2w"? A&&r*(:z2 z,,R0z**:zBC 5++-{/E/E/GH!%//$2C2C"DtTlS!%//$2F2F"G$&:d|aV"D F %%b)33B;j++B/(*2F2Fr22NN 5++-{/E/E/GH!%//$2C2C"Dr2hO!%//$2F2F"G$&8b"XBx"@ Br*ctjg|jdjd}tjg|jdtjdz}t |j |j t |j|jddgt |j|jddgddgddggtjg|jdjd d}tjg|jdtjd dz}t |j |j t |j|jd dgt |j|jddgdd gd d ggtjg|jdjd d}tjg|jdtjd dz}t |j |j t |j|jddgt |j|jddgddgddggtjg|jdjdd}tjg|jdtjddz}t |j |j t |j|jddgt |j|jddgddgddggy)NrCrGrDrrrFrErHrr^rr|rerfrgrh?g@rrirpr5rqrrr~rur) rr[rZrLrr9rrMrNrOrrkrwrs r(test_rotate_around_plus_otherz*TestAffine2D.test_rotate_around_plus_others9, ,,=djj="=HHM3xz33DTZZDDz,,S12 5++-{/E/E/GH!%//$2C2C"Dr2hO!%//$2F2F"G$%q6Ar7RH"= ?- ,,=djj="=CCArJ3xz33DTZZDDz''2./ 5++-{/E/E/GH!%//$2C2C"Dq"gN!%//$2F2F"G$%q6B8aW"= ?.-->tzz>2>(:z2 3xz33DTZZDDz**:zBC 5++-{/E/E/GH!%//$2C2C"DsDkR!%//$2F2F"G$%q6C;C"A C- ,,=djj="=GGBO3xz33DTZZDDz++B34 5++-{/E/E/GH!%//$2C2C"Dr2hO!%//$2F2F"G$&8b"XBx"@ Br*ctjddjd}tjddtjdz}t|j |j t|j |j ddgt|j |jddgddgdd ggtjddjg|jd}tjddtjg|jdz}t|j |j t|j |j ddgt|j |jddgd dgdd ggtjddjd d }tjddtjd d z}t|j |j t|j |j dd gt|j |jddgddgd dggtjddjdd}tjddtjddz}t|j |j t|j |j ddgt|j |jddgddgddggy)NrrErCrrrrr!r_r rerfrHrpr5rt(& $#) rrrLrr9rMrNrrOr[rZrkrwrs r(test_scale_plus_otherz"TestAffine2D.test_scale_plus_others   B'2226j&&q"- 0E0Eb0II 5++-{/E/E/GH5??4+<+<=1vF!%//$2F2F"G$%q6Aq6Ar7"; =:   B'99J4::JrJz''2.3xz33DTZZDDE 5++-{/E/E/GH5??4+<+<=1vF!%//$2F2F"G$%q6Aq6Ar7"; =!!!R((:z2 z''2.z**:zBC 5++-{/E/E/GH!%//$2C2C"Dq%jQ!%//$2F2F"G$&8aZ"a"A C   B'11"b9j&&q"- 0D0DR0LL 5++-{/E/E/GH5??4+<+<=BxH5??4+?+?@Hr2hR9 ;r*ctjddjd}tjddtjdz}t|j |j t |j |jddgt |j |jddgdd gd d ggtjddjg|jd}tjddtjg|jdz}t|j |j t |j |jd dgt |j |jd dgdd gdd ggtjddjdd}tjddtjddz}t|j |j t |j |jd dgt |j |jddgddgddggtjddjdd}tjddtjddz}t|j |j t |j |jddgt |j |jddgddgddggy)NrerfrCrrgrErrrirDrr}rgrgrHg+@gr_rpr5g8@gE@rqrsg;@gF@rvrr) rrkrLrr9rrMrNrOr[rZrrwrs r(test_skew_plus_otherz!TestAffine2D.test_skew_plus_others ##J ;FFrJz**:zBz,,R01 5++-{/E/E/GH!%//$2C2C"DuclS!%//$2F2F"G$&7UCL2q'"B D$$$Z<##5%)ZZ5135z**:zB3xz33DTZZDDE 5++-{/E/E/GH!%//$2C2C"DtSkR!%//$2F2F"G$%q6E3>O OBOz++B33xz33DTZZDDE 5++-{/E/E/GH!%//$2C2C"DsBiP!%//$2F2F"G$'9sBi#r"C E $$R,221b9j**2r2XZ5E5Ea5LL 5++-{/E/E/GH!%//$2C2C"Dr3iP!%//$2F2F"G$&9r3i"c"C E%%b"-(:z2 z++B3z**:zBC 5++-{/E/E/GH!%//$2C2C"DtRjQ!%//$2F2F"G$&;t r5k"J Lr*c4tj}tjt5|j ddddtjt5|j dgggdddtjt 5|j gdddtjt 5|j dgdddtjt5|j dggdddtjt5|j gdgdddy#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYqxYw#1swYyxYw)Nrr) mtransformsrpytestraises ValueErrorrM RuntimeError)r'ts r(test_invalid_transformz#TestAffine2D.test_invalid_transform s1  " ]]: &  KKN  ]]: & ! KK1#  ! ]]< (  KKO  ]]< (  KK   ]]: &  KK!   ]]: & % KK $ % %   ! !       % %sGE!EE* E6>F3FEE'*E36E?F Fcptj}tj}||z}|jtj|}|js |jrJ|j dd|jr |jsJ|j|jk(j sJ|jtj|}|j dd|jrJt|j|jyNrrrr)rrr9copy_invalidrwallrr'r@bss1b1s r( test_copyzTestAffine2D.test_copy4s  "  " E  YYq\::bkk11 Aqzzbkk)) 1<<>166888  YYq\ Q::~1<<>1<<>:r*ctj}tj}||z}|jtj|}|j s |j rJ|j dd|j r |j rJt|jtjj|jtj|}|j dd|j rJt|j|jyr)rrr9rdeepcopyrrwrrs r( test_deepcopyzTestAffine2D.test_deepcopyFs  "  " E  ]]1 ::bkk11 Aqzz"++--2==?K,@,@,B,M,M,OP  ]]1  Q::~1<<>1<<>:r*N)__name__ __module__ __qualname__rNrOrZr)r3r<rArWr\rbrnrzrrrrrrrrr*r(rrs:LSzC:Sz:O EE N SN I2P28A;B@ BD;@!GFL@%(;$;r*rceZdZdZy)TestAffineDeltaTransformctjgdgdgdg}tjgdgdgdg}tjj dddddd }tj |}t |j|d |jd ddf<t |j||jt |j|y) N)rrr)g@rr)rrr)rrrrrrrrr) r"r#rrr/AffineDeltaTransformrr9 invalidate)r'beforeafterbasers r(test_invalidatez(TestAffineDeltaTransform.test_invalidateZs?**,-/))+, ##//1aAqA  , ,T 21<<>62 $%!QR% 1<<>51 1<<>51r*N)rrrrrr*r(rrYs2r*rclGddtj}|}tj}tjt j d||jztjd|_ |jjtjy)NcBeZdZdZdxZZdZfdZdZeZ dZ e Z xZ S).AssertingNonAffineTransformz This transform raises an assertion error when called when it shouldn't be and ``self.raise_on_transform`` is True. rFct||i|d|_tjj dd|_y)NF )super__init__raise_on_transformrrrunderlying_transform)r'argskwargs __class__s r(rzEtest_non_affine_caching..AssertingNonAffineTransform.__init__|s; G d -f -&+D #(3(<(<(>(D(DR(LD %r*c^|jrJd|jj|SNz3Invalidated affine part of transform unnecessarily.)rrtransform_pathr'paths r(transform_path_non_affinezVtest_non_affine_caching..AssertingNonAffineTransform.transform_path_non_affines4.. FE F.,,;;DA Ar*c^|jrJd|jj|Sr)rrrMrs r(transform_non_affinezQtest_non_affine_caching..AssertingNonAffineTransform.transform_non_affines4.. FE F.,,66t< HHJ#'HLLHHJr*cGdd}tj}tjtjd|d\}|j dd|j ddt|jjjtjjdjy)NceZdZdZdZy)-test_external_transform_api..ScaledByc||_yN) _scale_factor)r' scale_factors r(rz6test_external_transform_api..ScaledBy.__init__s !-D r*cvtjj|j|jzSr)rrrrr)r'rs r(_as_mpl_transformz?test_external_transform_api..ScaledBy._as_mpl_transforms0((*001C1CDnn% &r*N)rrrrrrr*r(ScaledByrs  . &r*rrrrd)rrrr"rset_xlimset_ylimr get_transform_ar9rrr)rrlines r(test_external_transform_apirs&& B HHRYYr]hrl ;EDKK3KK3D&&(++668((*004??ACr*pre_transform_dataTmpl20g?) remove_textstyletolc 8tj}tjj d}|j t jdjdd||jz|jt jdddt jd dd t jdjdd||jz|jt jddt jdd||jzt jddd }t jd d d }dt j|zt j|ddt jfz}t j|t j|ddt jfz }|j!||||||jzt j"|||ddd|ddd}}|ddddddf|ddddddf}}|j%||d z||||jz|j'|dz |d z|dz|dz||jzy)Nrrrr rrrrg@r!rrrr)rM linewidthr)rrrrrcontourfr"rreshaper pcolormeshlinspacescattersincosnewaxis streamplothypotquiverbarbs)rtimes10xyuvs r(test_pre_transform_plottingrs$ B""$**2.GKK " %%a+w7MKNMM"++aA&++c1a())B-''1-#bll24 JJr{{1b!2;;r1#5 2<</1 Ar2A Aq"A "&&) bffQq"**}-..A q BFF1Q ]+,,AMM!Q1",,(>HHQN, SqS61SqS6qA SqS#A#X;#A#ss( qAIIaQ1",,(>I?HHQUAE1a4A2<<1GHHr*ctj}tjtjdddtjddd\}}|j ||tj ||ztjjd|jztjddgd d gg}t||jjy) Nrdr(@)@皙?rrgףp= ?rrh)rrr"meshgridrrlogrrrrr#rdataLim get_pointsrxsysexpecteds r(!test_contour_pre_transform_limitsrs B [[RR0"++dD"2M NFBKKBrBw%..066s;bllJLxx#td%&H"**"7"7"9:r*ctj}tjtjdddtjddd\}}|j ||tj ||zddddftjjd|jztjdd gd d gg}t||jjy NrdrrrrDrrrgrrrh)rrr"rrpcolorrrrrrr#rrrrs r( test_pcolor_pre_transform_limitsr!s B [[RR0"++dD"2M NFBIIb"bffR"Wocrc3B3h/#,,.44S9BLLHJxx#td%&H"**"7"7"9:r*ctj}tjtjdddtjddd\}}|j ||tj ||zddddftjjd|jztjdd gd d gg}t||jjyr)rrr"rrrrrrrrr#rrrrs r($test_pcolormesh_pre_transform_limitsr#s B [[RR0"++dD"2M NFBMM"b"&&b/#2#ss(3'00288= LNxx#td%&H"**"7"7"9:r*ctjjdtjddd}tjddd}tj||\}}tj tjj |jdz}tj}|jdd }|jd d|j|||d |jjy)Nr,rrGrriropolar projectionegouraud)shading)r"r-r.rrradiansr>shaperfigure add_subplotset_rlimrcanvasr)r2radiizr r figrs r(test_pcolormesh_gouraud_nansr5sIINN8 [[C #F KKT2 &E ;;vu %DAq 299>>177+c12A **,C  1BKKTMM!Q9M-JJOOr*ctjddgddgddgg}tjj dddddd}|j |}tjddgddgddgg}t ||tjj dddddd}|j |}tjddgddgddgg}t ||tjj dddddd}|j |}tjddgd dgddgg}t ||tjj dddd dd}|j |}tjddgdd gddgg}t ||tjj ddddd d}|j |}tjd dgd dgd dgg}t ||tjj dddddd }|j |}tjdd gdd gdd gg}t ||y)NrrrrDrrrEr<rPrr)r"r#rrr/rMr)pointsractualrs r(test_Affine2D_from_valuesr;sA XX1vBxAwF ((Aq!Q:A [[ Fxx!Q"a2q'23H)((Aq!Q:A [[ Fxx!Q!R1b'23H)((Aq!Q:A [[ Fxx!Q"a1a&12H)((Aq!Q:A [[ Fxx!Q!R1a&12H)((Aq!Q:A [[ Fxx!Q!Q!Q01H)((Aq!Q:A [[ Fxx!Q!Q!Q01H)r*cTddg}tj}t||j|j j||j ddj t||j|j j|y)Nr)rrrrMinvertedrwr9)pointrs r( test_affine_inverted_invalidatedr?*sx #JEAq{{1::<+A+A%+HIJKKS$$&q{{1::<+A+A%+HIJr*cXtjgd}tjtjt j dd}|j|}|j|jdd}t|\}}t||jddy)N))皙?)皙?rB)rCr)rArrclip)rrrrF)rDsimplifyrD) r _create_closedrBlendedGenericTransformrr LogTransformr iter_segments get_affineziprcodes)rr:tpathresulttpointstcodess r(test_clipping_of_logrQ5s   M ND  / / 2 22v > @E  + +D 1E  !1!1!3&6*/!1F6lOGVFDJJsO,r*c:eZdZdZdZdZdZfdZdZdZ xZ S)NonAffineForTestz A class which looks like a non affine transform, but does whatever the given transform does (even if it is affine). This is very useful for testing NonAffine behaviour with a simple Affine transform. Frc2||_t||i|yr) real_transrr)r'rUrrrs r(rzNonAffineForTest.__init__Ns$ $)&)r*c8|jj|Sr)rUrMr1s r(rz%NonAffineForTest.transform_non_affineRs((00r*c8|jj|Sr)rUrrs r(rz*NonAffineForTest.transform_path_non_affineUs--d33r*) rrrrrrrrrrrrs@r(rSrSCs( IKJ*14r*rSc0eZdZdZdZdZdZdZdZy)TestBasicTransformctjdjtjdz |_tjdj dd|_tjdjdd|_ ttjj ddd |_ ttjj ddd |_ ttjj ddd |_ |j |j|jzz|jz|_|j |jz|jz|jz|_|j|jz|jz|_y) Nta1)shorthand_namerta2rrta3rtn1tn2tn3)rrrJr"rKr[rwr]rr^rSr_r`rastack1stack2 stack2_subsetr&s r( setup_methodzTestBasicTransform.setup_methodZsF''u=DDRUUQYO''u=GGAN''u=CCAqI#K$8$8$:$D$DQ$J38:#K$8$8$:$D$DQ$J38:#K$8$8$:$D$DQ$J38:xx488dhh#67488C hh)DHH4txx? !XX0488;r*c|jjdk(sJ|jjdk(sJ|jjdk(sJy)Nrr)rbdepthrcrdr&s r(test_transform_depthz'TestBasicTransform.test_transform_depthssL{{  A%%%{{  A%%%!!''1,,,r*c6|j|j|j|jzzz|jz}||j|j|jzz|jz|j|jz|jz|j|jz|jg}|j Dcgc]\}}| }}}t |t |k(sJt||D] \}}||k(r Jycc}}wr)r[r_r]r`r^_iter_break_from_left_to_rightlenrK)r'stack3target_transforms_rhr target_stackstacks r(test_left_to_right_iterationz/TestBasicTransform.test_left_to_right_iterationxs((dhh$((TXX*=>?488K$"hh$((TXX*=>$((J"hh1TXX=!XX0!XX  $BBD EEArR E E1v.////#&'8!#< ) L%5( (( ) Fs Dc|j|jz |jk(sJ|j|jz |jk(sJ|j|jz |jj k(sJ|j|jz j dk(sJt jt5|j|jz ddd|j|j|jzz}|j|jz}||z |jk(sJ||jz ||jj zk(sJ|j|jz |j|j|jzzk(sJ|j|jz |j|jz|jzk(sJ|j|jz|jz |jz|j|jzk(sJy#1swY`xYw)Nr) rbrdr[rcr=rgrrrr]r^r_)r'aff1aff2s r(test_transform_shortcutsz+TestBasicTransform.test_transform_shortcutss{{T///488;;;{{T///488;;;!!DKK/4883D3D3FFFF""T[[0771<<< ]]: & & KK$++ % &xx488dhh./xx$(("d{dhh&&&dhh$):):)<"<<<<{{TXX%TXX5H)IIII{{TXX%DHH)>>{{**4+=+=>>>%%55dkkBBB%%55dkkBBB{{**488dhh+>???{{**488dhh+>???;;..txx$((/BCCC33DHHdkkJ//0B0BC1hh& 778J8JKBB%B$r*c tjddgddgtjdgddggtj}|jj |}|jj |}tjddgd d gtjtjgddggtj}tjd d gd dgtjtjgd dggtj}t||t||t|jj||t|jjj |||j|jzj}|jjj}t|||jjj}t||y)NrrrrrD)dtyperrg3(@g&@rg"g8@)r"r#nanfloat64rbrrMrtransform_affinerJr]r^r9rrc)r'r9na_ptsall_pts na_expected all_expectedexpected_resultrNs r(test_affine_simplificationz-TestBasicTransform.test_affine_simplificationsAq6B8bffa[2q'B " ,11&9++''/hhR4+!# 02r( &(jj2 "&+6!'<8 "$++">">v"F". 0 "$++"8"8":"D"DV"L". 0  88dhh.::<'')446?F3'')446?F3r*N) rrrrerhrsrwrrrr*r(rYrYYs!<2- ) %,B#4r*rYcHeZdZdZdZdZdZdZdZdZ dZ d Z d Z y ) TestTransformPlotInterfacec^tj}|jgdgd|jt |j j tjtjtjgtj tj ggy)Nr333333?皙??rrr) rrrrrrrr"r#infr'rs r(test_line_extent_axes_coordsz7TestTransformPlotInterface.test_line_extent_axes_coordssn XXZ BLLI2::00288bffbff%5')vvgw%7%9: ;r*ctj}|jgdgd|jt |j j tjddgddggy)Nrrrrrrr) rrrrrrrr"r#rs r(test_line_extent_data_coordsz7TestTransformPlotInterface.test_line_extent_data_coordssT XXZ BLLI2::00288cC[3+$>? Ar*cdtj}tj|j|j }|j gdgd|t|jjtjtjdgtj dggy)NrrrggA@) rrrblended_transform_factoryrrrrrrr"r#rr'rr:s r(!test_line_extent_compound_coords1z @r*ctj}tj|jtj j d|jz}|jgdgd|t|jjtjtjdgtj dggy)Nrrrrrr)rrrrrrrrrrrrr"r#rrs r(!test_line_extent_compound_coords2z?@ #a&64. )F "1q!}!!!" C &C.64. 1F 51F71a=#./14445r*c`ttjdjdk(sJy)Nr&r'aCompositeGenericTransform( CompositeGenericTransform( CompositeGenericTransform( TransformWrapper( BlendedAffine2D( IdentityTransform(), IdentityTransform())), CompositeAffine2D( Affine2D().scale(1.0), Affine2D().scale(1.0))), PolarTransform( PolarAxes(0.125,0.1;0.775x0.8), use_rmin=True, apply_theta_transforms=False)), CompositeGenericTransform( CompositeGenericTransform( PolarAffine( TransformWrapper( BlendedAffine2D( IdentityTransform(), IdentityTransform())), LockableBbox( Bbox(x0=0.0, y0=0.0, x1=6.283185307179586, y1=1.0), [[-- --] [-- --]])), BboxTransformFrom( _WedgeBbox( (0.5, 0.5), TransformedBbox( Bbox(x0=0.0, y0=0.0, x1=6.283185307179586, y1=1.0), CompositeAffine2D( Affine2D().scale(1.0), Affine2D().scale(1.0))), LockableBbox( Bbox(x0=0.0, y0=0.0, x1=6.283185307179586, y1=1.0), [[-- --] [-- --]])))), BboxTransformTo( TransformedBbox( Bbox(x0=0.125, y0=0.09999999999999998, x1=0.9, y1=0.9), BboxTransformTo( TransformedBbox( Bbox(x0=0.0, y0=0.0, x1=8.0, y1=6.0), Affine2D().scale(80.0))))))))rrsubplotrrr*r(test_str_transformrns/ s{{g.88 9,>8, 8,8, 8r*cptj}|jd}|jdk(sJy)Nrr)r)rrrr-)rrps r(test_transform_single_pointrs0A 6"A 77d??r*ctj\}}|jd|jj dy)Nrr)rsubplots set_yscalerrM)r4rs r(test_log_transformrs1llnGCMM%LL6"r*ctjddgddgg}tjddgdtjgg}|j |rJy)Nrr)rr r"roverlaps)r@rs r(test_nan_overlaprsS1a&1a&)*A1a&1bff+./Azz!} }r*ctj}tjgd}tjddgddgddgg}|j ||}t ||t jt5|j ||ddddfdddt jt5|j ||ddddfdddy#1swYGxYw#1swYyxYw)N)rrur7rrr) rrr"r#transform_anglesrrrr)ranglesr9 new_angless r(test_transform_anglesrsA XXl #F XX1v1v1v. /F##FF3Jfj1 z "5 66!A#qs(#345 z "3 66!A#q&>233 5533sC#>C/#C,/C8ctjddg}dtjfddg}|D]3}tjtj|}t ||5y)NgMbPgMbP?rr6)rg)r"r#rr nonsingularr)zero_expansioncasesrouts r(test_nonsingularrsZXXvuo.N[&- 0E0hh{..563/0r*cgd}t|d}tj}tj||}t |j j |dtjdz }|jtjdz t |j j d||fdd|zf| |fgd dgdz|_ t |j j d||fdd|zf| |fgd y) N)r6rrrrrT)closedrrrr6rV瞯<atol) r rrTransformedPathrget_fully_transformed_pathverticesr"sqrtrJrKr9)r9rr: trans_pathr|s r(test_transformed_pathrs -F t $D  "E,,T59JJ99;DDfM RWWQZB LLJ99;DDb"X1r6{bS"I> (Q,DKJ99;DDb"X1r6{bS"I> r*ctj}tjdddd|}tj|}|j j }|jdt|j j |dz|jdt|j j |y)Nr6rrurrr) rrrWedgeTransformedPatchPathrrrr set_radius)r:rtpatchr9s r(test_transformed_patch_pathrs  "E NN61b# ?E  - -e 4F  . . 0 9 9F KKNF557@@&1*M SF557@@&Ir*locked_elementx0y0x1y1cVgd}|j|tjj}tj|fi|di}t ||dk(sJt |d|zdk(sJ|D]}t ||t ||k(rJ|j |jdzt ||dk(sJt |d|zdk(sJ|D]}t ||t ||k(rJt|d|zdt |d|zJtj|j|jk(sJt|d|zdt ||dk(sJt |d|zdk(sJ|D]}t ||t ||k(rJy)Nrrlocked_rr) removerr unit LockableBboxr set_pointsrsetattrr"r)rother_elementsoriglockedelems r(test_lockable_bboxrs-N.)    "D  % %d B~q.A BF 6> *a // / 69~5 6! ;; ;<vt$d(;;;;< OODOO%*+ 6> *a // / 69~5 6! ;; ;<vt$d(;;;;< FI.5 69~5 6 >> > 66$//#v'8'8':: ;; ; FI.2 6> *a // / 69~5 6! ;; ;<vt$d(;;;;& e  $%&&&s %A11A:png) extensionsc $tjjdtjjd}tjddd}t ||gddgD]\}}|j }|j||d|j|tj|d z d z tjd tjzz |jj|jd y) Nr,r)sizerrTF)rdensityrlinear)r"r-r.normalrrKrhistrexprrKr1rr)fig_testfig_refsamplesr r4 log_staters r(test_scale_swappingr, sIINN8iiB'G B2Ax1D%=A Y \\^ Y5 266AqD'A+&RUU);;<  h  r*c tjtd5tjdddddtjtd5tjdddddy#1swYExYw#1swYyxYw)NzZ'fontsize' is not a valid value for units; supported values are 'dots', 'points', 'inches'rfontsize)unitsz3For units of inches or points a fig kwarg is neededinches)rrrr offset_copyrr*r(test_offset_copy_errorsr2.s| zP Q8 J78 zR T6H566 88 66sA8B8BB cttjtj d}|j ddsJ|j ddsJ|j ddrJttjtj dd}|j dd sJ|jdd rJ|jd d rJy) Nrrgٿg333333?rg?rhrgr)r r rrrLcontainsrwfully_contains)bbs r(test_transformedbbox_containsr89s hj&;&;B&? @B ;;r2   ;;sC  {{2r"" " hj&:&:3&C DB ;;tS !! !  s++ +  R(( ((r*c$tjddsJtjddsJtjddsJtjddrJtjddrJtjddsJyNrrrrrDrr)rinterval_containsrr*r(test_interval_containsr<Ds  ( ( 55 5  ( ( 33 3  ( ( 33 3,,VR88 8,,VQ77 7  ( ( 55 5r*c$tjddsJtjddrJtjddrJtjddrJtjddrJtjddsJyr:)rinterval_contains_openrr*r(test_interval_contains_openr?Ms  - -fc :: :11&!<< <11&!<< <11&"== =11&!<< <  - -fc :: :r*cd}t}t||}|j|k(sJ|j|k(sJ|jJy)z=Test that the ScaledRotation object is initialized correctly.rN)rr _theta _trans_shift_mtx)theta trans_shift scaled_rots r("test_scaledrotation_initializationrGVsR E+K  4J    %% %  " "k 11 1 ?? "" "r*cJtjdz }tt|dgg}t||}d|_|j }|j j|dggtjddgddgg}|Jt|ddddf|d y) zCTest get_matrix when the matrix is invalid and needs recalculation.rr) return_valuerTrDrNrr) r"rKrr rr9rMassert_called_once_withr#r)rDrErFmatrixexpected_rotations r(&test_scaledrotation_get_matrix_invalidrM`s EEAIEiuaj\&JKK  4JJ  " " $F11E1:,?1b'#$q'"+,   F2A2rr6N$5EBr*)Frnumpyr" numpy.testingrrrrr matplotlibrmatplotlib.pyplotpyplotrmatplotlib.patchespatchesrmatplotlib.transforms transformsrrr r r matplotlib.pathr matplotlib.testing.decoratorsr r unittest.mockrrrrrrrr!r#r5r;r?rQrrSrYrrrrrrrrrrrrrmark parametrizerrr,r2r8r<r?rGrMrr*r(r\sz JJ %+RR O#D;D;N 222#LC$'(d' I IF; ; ;&"*JK -4{,,4,I4I4XZNZNz33 =, 5/8d # 3$0 ,J")+CD<E