
    G8cm                        d dl Z d dlZd dlmZmZmZmZ d dlZd dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d Zd Z edgd	d
d      d        Zd Zd Zd Zd Zd Zd Z  G d dejB                        Z" G d d      Z# G d d      Z$d Z%d Z&d Z'd Z(d Z)d Z*d  Z+d! Z,d" Z-d# Z.d$ Z/d% Z0d& Z1ejd                  jg                  d'g d(      d)        Z4d* Z5d+ Z6y),    N)assert_allcloseassert_almost_equalassert_array_equalassert_array_almost_equal)scale)Path)image_comparisonc                  l    G d dt         j                        }  |        }t        j                         }t        j                  t        j                  d      ||j                  z          t        j                          d|_	        |j                  j                          t        j                          y )Nc                   B     e Zd ZdZdxZZdZ fdZd ZeZ	d Z
e
Z xZS )<test_non_affine_caching.<locals>.AssertingNonAffineTransformz
        This transform raises an assertion error when called when it
        shouldn't be and ``self.raise_on_transform`` is True.

           Fc                     t        |   |i | d| _        t        j                         j                  dd      | _        y )NF
   )super__init__raise_on_transformmtransformsAffine2Dr   underlying_transform)selfargskwargs	__class__s      B/usr/lib/python3/dist-packages/matplotlib/tests/test_transforms.pyr   zEtest_non_affine_caching.<locals>.AssertingNonAffineTransform.__init__   s;    Gd-f-&+D#(3(<(<(>(D(DR(LD%    c                 ^    | j                   rJ d       | j                  j                  |      S Nz3Invalidated affine part of transform unnecessarily.)r   r   transform_pathr   paths     r   transform_path_non_affinezVtest_non_affine_caching.<locals>.AssertingNonAffineTransform.transform_path_non_affine   s4    .. FEF.,,;;DAAr   c                 ^    | j                   rJ d       | j                  j                  |      S r   )r   r   	transformr   s     r   transform_non_affinezQtest_non_affine_caching.<locals>.AssertingNonAffineTransform.transform_non_affine%   s4    .. FEF.,,66t<<r   )__name__
__module____qualname____doc__
input_dimsoutput_dims	is_affiner   r!   r   r$   r#   __classcell__r   s   @r   AssertingNonAffineTransformr      s8    	
 $%$
[		M
	B 3	= )	r   r.   r   r#   T)r   	Transformpltaxesplotnparange	transDatadrawr   	transAxes
invalidate)r.   my_transaxs      r   test_non_affine_cachingr<      st    )k&;&; )4 +,H	BHHRYYr]h&=>HHJ #'HLLHHJr   c                      G d d      } t        j                         }t        j                  t        j                  d       | d            \  }|j                  dd       |j                  dd       t        |j                         j                  j                         t        j                         j                  d      j                                y )Nc                       e Zd Zd Zd Zy)-test_external_transform_api.<locals>.ScaledByc                     || _         y N)_scale_factor)r   scale_factors     r   r   z6test_external_transform_api.<locals>.ScaledBy.__init__8   s
    !-Dr   c                 v    t        j                         j                  | j                        |j                  z   S rA   )r   r   r   rB   r6   )r   r2   s     r   _as_mpl_transformz?test_external_transform_api.<locals>.ScaledBy._as_mpl_transform;   s0    ((*001C1CDnn% &r   N)r%   r&   r'   r   rE    r   r   ScaledByr?   7   s    	.	&r   rG   r   r/   r   d   )r1   r2   r3   r4   r5   set_xlimset_ylimr   get_transform_a
get_matrixr   r   r   )rG   r;   lines      r   test_external_transform_apirO   6   s    & & 
BHHRYYr]hrl;EDKK3KK3D&&(++668((*004??ACr   pre_transform_dataTmpl20g?)remove_textstyletolc                  8   t        j                         } t        j                         j	                  d      }| j                  t        j                  d      j                  dd      || j                  z          | j                  t        j                  ddd      t        j                  d	dd
      t        j                  d      j                  dd      || j                  z          | j                  t        j                  dd      t        j                  dd      || j                  z          t        j                  ddd      }t        j                  ddd      }dt        j                  |      z  t        j                  |d d t        j                  f         z   }t        j                  |      t        j                  |d d t        j                  f         z
  }| j!                  |||||| j                  z   t        j"                  ||             |d d d   |d d d   }}|d d dd d df   |d d dd d df   }}| j%                  ||dz   |||| j                  z          | j'                  |dz
  |dz   |dz  |dz  || j                  z          y )Nr   0         r/   r         g      @	            r   )r#   	linewidth   )r1   r2   r   r   r   contourfr4   r5   reshaper6   
pcolormeshlinspacescattersincosnewaxis
streamplothypotquiverbarbs)r;   times10xyuvs         r   test_pre_transform_plottingrr   H   s$    
B""$**2.GKK		"%%a+w7MKNMM"++aA&++c1a())B-''1-#bll2  4
 JJr{{1b!2;;r1#5 2<</  1 	Ar2A
Aq"A	"&&)bffQq"**}-..A
q	BFF1Q

]+,,AMM!Q1",,(>HHQN  , SqS61SqS6qASqS#A#X;#A#ss(qAIIaQ1",,(>I?HHQUAE1a4A2<<1GHHr   c                     t        j                         } t        j                  t        j                  ddd      t        j                  ddd            \  }}| j                  ||t        j                  ||z        t        j                         j                  d      | j                  z          t        j                  ddgd	d
gg      }t        || j                  j                                y )N   r\   (@      )@皙?r/         ?ףp=
?       @      ?)r1   r2   r4   meshgridrd   ra   logr   r   r   r6   arrayr   dataLim
get_pointsr;   xsysexpecteds       r   !test_contour_pre_transform_limitsr   m   s    	B[[RR0"++dD"2MNFBKKBrBw%..066s;bllJ  L xx#td% &H"**"7"7"9:r   c                     t        j                         } t        j                  t        j                  ddd      t        j                  ddd            \  }}| j                  ||t        j                  ||z        d dd df   t        j                         j                  d      | j                  z          t        j                  dd	gd
dgg      }t        || j                  j                                y Nrt   r\   ru   rv   rw   r/   rx   ry   rz   r{   )r1   r2   r4   r|   rd   pcolorr}   r   r   r   r6   r~   r   r   r   r   s       r    test_pcolor_pre_transform_limitsr   x   s    	B[[RR0"++dD"2MNFBIIb"bffR"Wocrc3B3h/#,,.44S9BLLH  J xx#td% &H"**"7"7"9:r   c                     t        j                         } t        j                  t        j                  ddd      t        j                  ddd            \  }}| j                  ||t        j                  ||z        d dd df   t        j                         j                  d      | j                  z          t        j                  dd	gd
dgg      }t        || j                  j                                y r   )r1   r2   r4   r|   rd   rc   r}   r   r   r   r6   r~   r   r   r   r   s       r   $test_pcolormesh_pre_transform_limitsr      s    	B[[RR0"++dD"2MNFBMM"b"&&b/#2#ss(3'00288=L  N xx#td% &H"**"7"7"9:r   c                     t        j                  ddgddgddgg      } t        j                  j	                  dddddd      }|j                  |       }t        j                  ddgddgddgg      }t        ||       t        j                  j	                  dddddd      }|j                  |       }t        j                  ddgddgddgg      }t        ||       t        j                  j	                  dddddd      }|j                  |       }t        j                  ddgd	dgddgg      }t        ||       t        j                  j	                  dddd
dd      }|j                  |       }t        j                  ddgddgddgg      }t        ||       t        j                  j	                  dddddd      }|j                  |       }t        j                  ddgddgddgg      }t        ||       t        j                  j	                  dddddd      }|j                  |       }t        j                  ddgddgddgg      }t        ||       y )Nr   r   r\   r   r]   r   r`   <   rY   P   r^   rW   )r4   r~   r   r   from_valuesr#   r   )pointstactualr   s       r   test_Affine2D_from_valuesr      sA   XX1vBxAw F
 	((Aq!Q:A[[ Fxx!Q"a2q'23H)((Aq!Q:A[[ Fxx!Q!R1b'23H)((Aq!Q:A[[ Fxx!Q"a1a&12H)((Aq!Q:A[[ Fxx!Q!R1a&12H)((Aq!Q:A[[ Fxx!Q!Q!Q01H)((Aq!Q:A[[ Fxx!Q!Q!Q01H)r   c                  T   ddg} t        j                         }t        | |j                  |j	                         j                  |                    |j                  dd      j                          t        | |j                  |j	                         j                  |                    y )N      ?)r   r   r   r#   inverted	translaterM   )pointr   s     r    test_affine_inverted_invalidatedr      sx    #JEAq{{1::<+A+A%+HIJKKS$$&q{{1::<+A+A%+HIJr   c                  X   t        j                  g d      } t        j                  t        j                         t        j                  dd            }|j                  |       }|j                  |j                         dd      }t        | \  }}t        || j                  d d        y )N))皙?)皙?r   )r   r\   )r   r\   r   clip)r   r   rH   rH   F)r   simplifyr   )r   _create_closedr   BlendedGenericTransformr   r   LogTransformr!   iter_segments
get_affinezipr   codes)r    transtpathresulttpointstcodess         r   test_clipping_of_logr      s    MND// 2 22v >@E++D1E  !1!1!3&6*/ ! 1F 6lOGVFDJJsO,r   c                   :     e Zd ZdZdZdZdZ fdZd Zd Z	 xZ
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.

    Fr   c                 2    || _         t        |   |i | y rA   )
real_transr   r   )r   r   r   r   r   s       r   r   zNonAffineForTest.__init__   s    $$)&)r   c                 8    | j                   j                  |      S rA   )r   r#   )r   valuess     r   r$   z%NonAffineForTest.transform_non_affine   s    ((00r   c                 8    | j                   j                  |      S rA   )r   r   r   s     r   r!   z*NonAffineForTest.transform_path_non_affine   s    --d33r   )r%   r&   r'   r(   r+   r*   r)   r   r$   r!   r,   r-   s   @r   r   r      s(     IKJ*14r   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestBasicTransformc                    t        j                  d      j                  t        j                  dz        | _        t        j                  d      j                  dd      | _        t        j                  d      j                  dd      | _	        t        t        j                         j                  dd      d	      | _        t        t        j                         j                  dd      d
      | _        t        t        j                         j                  dd      d      | _        | j
                  | j                  | j                  z   z   | j                  z   | _        | j
                  | j                  z   | j                  z   | j                  z   | _        | j                  | j                  z   | j                  z   | _        y )Nta1)shorthand_namer   ta2r   r   ta3r]   tn1tn2tn3)r   r   rotater4   pir   r   r   r   r   r   r   r   r   stack1stack2stack2_subsetr   s    r   setup_methodzTestBasicTransform.setup_method   sF   ''u=DDRUUQYO''u=GGAN''u=CCAqI#K$8$8$:$D$DQ$J38:#K$8$8$:$D$DQ$J38:#K$8$8$:$D$DQ$J38: xx488dhh#67488Chh)DHH4txx?!XX0488;r   c                     | j                   j                  dk(  sJ | j                  j                  dk(  sJ | j                  j                  dk(  sJ y )NrY   r`   )r   depthr   r   r   s    r   test_transform_depthz'TestBasicTransform.test_transform_depth   sL    {{  A%%%{{  A%%%!!''1,,,r   c                 6   | j                   | j                  | j                  | j                  z   z   z   | j                  z   }|| j                  | j                  | j                  z   z   | j                  z   | j                  | j                  z   | j                  z   | j                  | j                  z   | j                  g}|j                         D cg c]  \  }}|	 }}}t        |      t        |      k(  sJ t        ||      D ]  \  }}||k(  rJ  y c c}}w rA   )r   r   r   r   r   _iter_break_from_left_to_rightlenr   )r   stack3target_transforms_rhrtarget_stackstacks           r   test_left_to_right_iterationz/TestBasicTransform.test_left_to_right_iteration  s    ((dhh$((TXX*=>?488K $"hh$((TXX*=>$((J"hh1TXX=!XX0!XX	 $BBDEEArREE1v.////#&'8!#< 	)L%5(((	) Fs   Dc                    | j                   | j                  z
  | j                  k(  sJ | j                  | j                  z
  | j                  k(  sJ | j                  | j                  z
  | j                  j	                         k(  sJ | j                  | j                  z
  j
                  dk(  sJ t        j                  t              5  | j                   | j                  z
   d d d        | j                  | j                  | j                  z   z   }| j                  | j                  z   }||z
  | j                  k(  sJ || j                  z
  || j                  j	                         z   k(  sJ | j                   | j                  z
  | j                  | j                  | j                  z   z   k(  sJ | j                  | j                  z
  | j                  | j                  z   | j                  z   k(  sJ | j                  | j                  z   | j                  z
  | j                  z   | j                  | j                  z   k(  sJ y # 1 sw Y   `xY w)Nr]   )r   r   r   r   r   r   pytestraises
ValueErrorr   r   r   )r   aff1aff2s      r   test_transform_shortcutsz+TestBasicTransform.test_transform_shortcuts  s   {{T///488;;;{{T///488;;;!!DKK/4883D3D3FFFF""T[[0771<<<]]:& 	&KK$++%	& xx488dhh./xx$(("d{dhh&&&dhh$):):)<"<<<<{{TXX%TXX5H)IIII{{TXX%DHH)<txx)GGGGDHH$0488;488#$ 	% $	& 	&s   I  I
c                    | j                   | j                  z   }| j                   | j                  z   }||k(  sJ || j                  k7  sJ |j                  |      sJ |j                  | j                        sJ |j                  | j                         rJ |j                  | j                   | j                   z         rJ ||k(  sJ | j                  j                  | j                        sJ | j
                  j                  | j                        sJ | j                  j                  | j                        sJ | j
                  j                  | j                        sJ | j                  j                  | j                        rJ | j                  j                  | j
                        rJ | j                  j                  | j                   | j                  z         sJ | j
                  j                  | j                   | j                  z         sJ | j                  j                  | j                  | j                   z         rJ y rA   )r   r   contains_branchr   r   r   r   r   )r   r1r2s      r   test_contains_branchz'TestBasicTransform.test_contains_branch)  s   hh!hh!RxxTXX~~!!"%%%!!$((+++%%dhh///%%dhh&9:::Rxx{{**488444{{**488444{{**4+=+=>>>{{**4+=+=>>>%%55dkkBBB%%55dkkBBB{{**488dhh+>???{{**488dhh+>???;;..txx$((/BCCCCr   c                     t        j                  ddgddgt         j                  dgddggt         j                        }| j                  j                  |      }| j                  j                  |      }t        j                  ddgd	d
gt         j                  t         j                  gddggt         j                        }t        j                  ddgddgt         j                  t         j                  gddggt         j                        }t        ||       t        ||       t        | j                  j                  |      |       t        | j                  j                         j                  |      |       | j                  | j                  z   j                         }| j                  j                         j                         }t        ||       | j                  j                         j                         }t        ||       y )Nr   r   r\   r]   r   )dtyper   rz   g      3      (@g      &@g      @g      "g      8@)r4   r~   nanfloat64r   r$   r#   r   transform_affiner   r   r   rM   r   r   )r   r   na_ptsall_ptsna_expectedall_expectedexpected_resultr   s           r   test_affine_simplificationz-TestBasicTransform.test_affine_simplificationC  s    Aq6B8bffa[2q'B "

,11&9++''/hhR4+!# 02r( <CE::Oxx#rS#J"$&&"&&!1C9!>&(jj2
 	"&+6!'<8 	"$++">">v"F".	0 	"$++"8"8":"D"DV"L".	0
  88dhh.::<'')446?F3'')446?F3r   N)	r%   r&   r'   r   r   r   r   r   r   rF   r   r   r   r      s!    <2-
) %,D4#4r   r   c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)TestTransformPlotInterfacec                 ^   t        j                         }|j                  g dg d|j                         t	        |j
                  j                         t        j                  t        j                  t        j                  gt        j                   t        j                   gg             y )Nrw   333333?皙??      ?r   r/   )
r1   r2   r3   r8   r   r   r   r4   r~   infr   r;   s     r   test_line_extent_axes_coordsz7TestTransformPlotInterface.test_line_extent_axes_coordsj  sn    XXZ
BLLI2::00288bffbff%5')vvgw%7%9 :	;r   c                     t        j                         }|j                  g dg d|j                         t	        |j
                  j                         t        j                  ddgddgg             y )Nr   r   r/   rw   r   r   r   )	r1   r2   r3   r6   r   r   r   r4   r~   r   s     r   test_line_extent_data_coordsz7TestTransformPlotInterface.test_line_extent_data_coordsr  sT    XXZ
BLLI2::00288cC[3+$>?	Ar   c                 d   t        j                         }t        j                  |j                  |j
                        }|j                  g dg d|       t        |j                  j                         t        j                  t        j                  dgt        j                   dgg             y )Nr   #      r/   g      g     A@)r1   r2   r   blended_transform_factoryr8   r6   r3   r   r   r   r4   r~   r   r   r;   r   s      r   !test_line_extent_compound_coords1z<TestTransformPlotInterface.test_line_extent_compound_coords1y  s~     XXZ55bll68llD
?2::00288bffc]')vvgs^%5 6	7r   c                 6   t        j                         }t        j                         j	                  d      |j
                  z   }|j                  g dg d|       t        |j                  j                         t        j                  ddgddgg             y )	Nr   r   r   r/   r         Ir        u@)r1   r2   r   r   r   r6   r3   r   r   r   r4   r~   r  s      r   )test_line_extent_predata_transform_coordszDTestTransformPlotInterface.test_line_extent_predata_transform_coords  sr    XXZ$$&,,R02<<?
?2::00288b$Z#t$=>	@r   c                    t        j                         }t        j                  |j                  t        j
                         j                  d      |j                  z         }|j                  g dg d|       t        |j                  j                         t        j                  t        j                  dgt        j                   dgg             y )Nr   r   r   r/   r  r  )r1   r2   r   r   r8   r   r   r6   r3   r   r   r   r4   r~   r   r  s      r   !test_line_extent_compound_coords2z<TestTransformPlotInterface.test_line_extent_compound_coords2  s     XXZ55LL+..066r:R\\IK
?2::00288bffd^rvvgt_$EF	Hr   c                 f   t        j                         }t        j                         j	                  dd      }t        j
                  t        j                  d      ||j                  z          t        j                  ddgddgg      dz   }t        |j                  j                         |       y )Nr   r/                 "@r1   r2   r   r   r   r3   r4   r5   r6   r~   r   r   r   r   r;   offsetexpected_data_lims       r   test_line_extents_affinez3TestTransformPlotInterface.test_line_extents_affine  s    XXZ%%'11"b92&2<<*?@HHr2hb	%:;b@!"**"7"7"9;LMr   c                    t        j                         }t        j                         j	                  dd      }t        t        j                         j	                  dd            }t        j                  t        j                  d      ||z   |j                  z          t        j                  ddgddgg      dz   }t        |j                  j                         |       y )Nr   r/   r
  r  r\   )r1   r2   r   r   r   r   r3   r4   r5   r6   r~   r   r   r   )r   r;   r  	na_offsetr  s        r   test_line_extents_non_affinez7TestTransformPlotInterface.test_line_extents_non_affine  s    XXZ%%'11"b9$[%9%9%;%E%Eb"%MN	2&9*<r||*KLHHr2hb	%:;b@!"**"7"7"9;LMr   c           	         t        j                         }t        j                         j	                  dd      }t        t        j                         j	                  dd            }t        t        j                  ddgddgddgddgg            }t        j                  |||z   |j                  z         }|j                  |       t        j                  ddgddgg      dz   }t        |j                  j                         |       y )Nr   r   r/   r
        $@r\   )r1   r2   r   r   r   r   r   r4   r~   mpatches	PathPatchr6   	add_patchr   r   r   )r   r;   r  r  pthpatchr  s          r   test_pathc_extents_non_affinez8TestTransformPlotInterface.test_pathc_extents_non_affine  s    XXZ%%'11"b9$[%9%9%;%E%Eb"%MN	288aVaWr2hQ@AB""3-3i-?",,-NP
UHHr2hs%<=B!"**"7"7"9;LMr   c           	         t        j                         }t        j                         j	                  dd      }t        t        j                  ddgddgddgddgg            }t        j                  |||j                  z         }|j                  |       t        j                  ddgddgg      dz   }t        |j                  j                         |       y )Nr   r   r/   r
  r  )r1   r2   r   r   r   r   r4   r~   r  r  r6   r  r   r   r   )r   r;   r  r  r  r  s         r   test_pathc_extents_affinez4TestTransformPlotInterface.test_pathc_extents_affine  s    XXZ%%'11"b9288aVaWr2hQ@AB""3&2<<2GH
UHHr2hs%<=B!"**"7"7"9;LMr   c                 n   t        j                  d      }t        j                         j	                  dd      }t        j
                  t        j                  d      ||j                  z          t        j                  ddgddgg      ddgz   }t        |j                  j                         |       y )Npolar
projectionr   r   r/   r
  r  r  r  s       r   *test_line_extents_for_non_affine_transDatazETestTransformPlotInterface.test_line_extents_for_non_affine_transData  s    XX)%%'11!R82&2<<*?@ HHr2hb	%:;q"gE!"**"7"7"9;LMr   N)r%   r&   r'   r   r   r  r  r  r  r  r  r  r"  rF   r   r   r   r   i  s<    ;A	7@HNN	NN
Nr   r   c                 D    t        | j                  |j                         y rA   )r   bounds)bbox1bbox2s     r   assert_bbox_eqr'    s    u||U\\2r   c                      t         j                  j                  ddddd      } | j                         }t	        |j
                  | j
                         y )Nr
  r   )minpos)r   Bboxfrom_extentsfrozenr   r)  )bboxr,  s     r   test_bbox_frozen_copies_minposr.    s@    ((c3C(HD[[]Fv}}dkk2r   c            	         t         j                  j                  } t         j                  j                  } | dddd      } | dddd      } | dddd      } | dddd      } | dddd      }t	         |||      |       t	         |||       | dddd             t	         |||      |        |||      J t	         |||       | dddd             y )Nr   r]   r   rx         ?g      @r   )r   r*  r+  intersectionr'  )bbox_from_extinterr   r   r3r4r5s          r   test_bbox_intersectionr7    s    $$11M))E	q!Q	"B	sCc	*B	sAtT	*B	sCC	(B	q!Q	"B 5R="%5R=-S!Q"?@5R="%R=   5R=-1a";<r   c            	         t        j                  ddgddgg      } t        | t        t	        |       dt         j                  i             t        t        |       dt        i      }|j                         D ]  \  }}t        | |      |k(  rJ  d}t        t        | |      dt        i      }|j                         D ])  \  }}t        t        t        | |      |            |k(  r)J  y )Nr   r   r0  r*  z.1f)
r   r*  r'  evalreprstrdictitemsgetattrformat)basdictkrq   fmts        r   test_bbox_as_stringsrD    s    2q'C:./A1d47V[-=-=$>?@#a&64.)F "1q!}!!!"
C&C.64.1F 51F71a=#./14445r   c                  `    t        t        j                  d      j                        dk(  sJ y )Nr  r   a  CompositeGenericTransform(
    CompositeGenericTransform(
        CompositeGenericTransform(
            TransformWrapper(
                BlendedAffine2D(
                    IdentityTransform(),
                    IdentityTransform())),
            CompositeAffine2D(
                Affine2D().scale(1.0),
                Affine2D().scale(1.0))),
        PolarTransform(
            PolarAxesSubplot(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))))))))r;  r1   subplotr6   rF   r   r   test_str_transformrG    s/     s{{g.889 ,>8 ,8 ,8 ,8r   c                  p    t        j                         } | j                  d      }|j                  dk(  sJ y )Nr]   r]   )r   )r   r   r   shape)r   r   s     r   test_transform_single_pointrK  $  s0    A	6"A77d??r   c                      t        j                         \  } }|j                  d       |j                  j	                  d       y )Nr}   rI  )r1   subplots
set_yscaler6   r#   )figr;   s     r   test_log_transformrP  *  s1     llnGCMM%LL6"r   c                      t        j                  ddgddgg      } t        j                  ddgdt        j                  gg      }| j	                  |      rJ y )Nr   r]   )r   r*  r4   r   overlaps)ar@  s     r   test_nan_overlaprT  2  sS    1a&1a&)*A1a&1bff+./Azz!}}r   c                     t        j                         } t        j                  g d      }t        j                  ddgddgddgg      }| j	                  ||      }t        ||       t        j                  t              5  | j	                  ||ddddf          d d d        t        j                  t              5  | j	                  ||ddd d f          d d d        y # 1 sw Y   GxY w# 1 sw Y   y xY w)N)r\   -   r   r   r]   r   )	r   r   r4   r~   transform_anglesr   r   r   r   )r   anglesr   
new_angless       r   test_transform_anglesrZ  8  s    AXXl#FXX1v1v1v./F ##FF3Jfj1 
z	" 5	66!A#qs(#345 
z	" 3	66!A#q&>23 3	5 53 3s   C#>C/#C,/C8c                      t        j                  ddg      } dt         j                  fddg}|D ]3  }t        j                  t        j                  |       }t        ||        5 y )NgMbPgMbP?r   r   r   )r   g     )r4   r~   r   r   nonsingularr   )zero_expansioncasesr   outs       r   test_nonsingularra  J  sZ    XXvuo.N[&-0E 0hh{..563/0r   c                  4   t        j                         } t        j                  t              5  | j                  d       d d d        t        j                  t              5  | j                  dggg       d d d        t        j                  t              5  | j                  g        d d d        t        j                  t              5  | j                  dg       d d d        t        j                  t              5  | j                  dgg       d d d        t        j                  t              5  | j                  g dg       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   y xY w)Nr]   )r]   r   r`   )r   r   r   r   r   r#   RuntimeError)r   s    r   test_invalid_argumentsrd  S  s1   A 
z	" 	A	z	" 	qcUG	|	$ 	B	|	$ 	QC	|	$ 	aSE	|	$ !	YK ! !     ! !sG   E!EE*
E6>F3FEE'*E36E?FFc                     g d} t        | d      }t        j                         }t        j                  ||      }t	        |j                         j                  |        dt        j                  d      z  }|j                  t        j                  dz         t	        |j                         j                  d||fdd|z  f| |fgd	
       dgdz  |_        t	        |j                         j                  d||fdd|z  f| |fgd	
       y )N)r\  )r]   r   rI  )r   r]   T)closedr]   r   rY   r\  r   gV瞯<)atol)r   r   r   TransformedPathr   get_fully_transformed_pathverticesr4   sqrtr   r   r   )r   r    r   
trans_pathr   s        r   test_transformed_pathrm  h  s    -Ft$D  "E,,T59JJ99;DDfM 
RWWQZB	LLJ99;DDb"X1r6{bS"I> 
 (Q,DKJ99;DDb"X1r6{bS"I> r   c                     t        j                         } t        j                  dddd|       }t        j                  |      }|j                         j                  }| j                  d       t        |j                         j                  |dz         |j                  d       t        |j                         j                  |       y )Nr\  r]   rV     r/   r   r   )
r   r   r  WedgeTransformedPatchPathri  rj  r   r   
set_radius)r   r  tpatchr   s       r   test_transformed_patch_pathrt  ~  s      "ENN61b#?E--e4F..099F 
KKNF557@@&1*M 
SF557@@&Ir   locked_elementx0y0x1y1c                 V   g d}|j                  |        t        j                  j                         }t        j                  |fi | di}t        ||       dk(  sJ t        |d| z         dk(  sJ |D ]  }t        ||      t        ||      k(  rJ  |j                  |j                         dz          t        ||       dk(  sJ t        |d| z         dk(  sJ |D ]  }t        ||      t        ||      k(  rJ  t        |d| z   d        t        |d| z         J t        j                  |j                         |j                         k(        sJ t        |d| z   d       t        ||       dk(  sJ t        |d| z         dk(  sJ |D ]  }t        ||      t        ||      k(  rJ  y )Nrv  r   locked_r   r`   )remover   r*  unitLockableBboxr>  
set_pointsr   setattrr4   all)ru  other_elementsoriglockedelems        r   test_lockable_bboxr    s   -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(;;;;<r   c                     t        j                         } t        j                         }| |z   }|j                          t        j                  |      }|j                  s|j                  rJ | j                  dd       |j                  r|j                  sJ |j                         | j                         k(  j                         sJ |j                          t        j                  |      }|j                  dd       |j                  rJ |j                         | j                         k(  j                         sJ y Nr]   r   r`   rY   )r   r   rM   copy_invalidr   r  rS  r@  ss1b1s        r   	test_copyr    s    AA	AALLN	1Bzz"++--KK1::"++%%MMOq||~-22444LLN	1BLLAzz>LLNalln,11333r   c                     t        j                         } t        j                         }| |z   }|j                          t        j                  |      }|j
                  s|j
                  rJ | j                  dd       |j
                  r|j
                  rJ |j                         t        j                         j                         k(  j                         sJ |j                          t        j                  |      }|j                  dd       |j
                  rJ |j                         | j                         k(  j                         sJ y r  )r   r   rM   r  deepcopyr  r   r  r  s        r   test_deepcopyr    s    AA	AALLN	q	Bzz"++--KK1::bkk))MMO{335@@BBGGIIILLN	q	BLLAzz>LLNalln,11333r   )7r  numpyr4   numpy.testingr   r   r   r   r   
matplotlibr   matplotlib.pyplotpyplotr1   matplotlib.patchespatchesr  matplotlib.transforms
transformsr   matplotlib.pathr   matplotlib.testing.decoratorsr	   r<   rO   rr   r   r   r   r   r   r   r0   r   r   r   r'  r.  r7  rD  rG  rK  rP  rT  rZ  ra  rd  rm  rt  markparametrizer  r  r  rF   r   r   <module>r     s%    J J    % +   :#LC$ '(d' I IF;	;	;"*JK-4{,, 4,B4 B4JZN ZNz33=,	5/8d#3$0!* ,J" )+CD< E<B4&4r   