
    (?ev                     <   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mZmZ d dlmZ d dlmZ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$d Z% G d dej&                  Z' G d d          Z( G d d          Z)d Z*d Z+d Z,d Z-d  Z.d! Z/d" Z0d# Z1d$ Z2d% Z3d& Z4d' Z5d( Z6ej7        8                    d)g d*          d+             Z9d, Z:d- Z;d. Z< ed/g0          d1             Z=d2 Z>d3 Z?dS )4    N)assert_allcloseassert_almost_equalassert_array_equalassert_array_almost_equal)scale)Affine2DBboxTransformedBbox)Path)image_comparisoncheck_figures_equalc                  \    G d dt           j                  }  |             }t          j                    }t          j        t          j        d          ||j        z              t          j                     d|_	        |j
                                         t          j                     d S )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                      j        |i | d| _        t          j                                        dd          | _        d S )NF
   )super__init__raise_on_transformmtransformsr   r   underlying_transform)selfargskwargs	__class__s      @lib/python3.11/site-packages/matplotlib/tests/test_transforms.pyr   zEtest_non_affine_caching.<locals>.AssertingNonAffineTransform.__init__   sN    EGGd-f---&+D#(3(<(>(>(D(DR(L(LD%%%    c                 X    | j         r
J d            | 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    s@    . F FEF F F,;;DAAAr   c                 X    | j         r
J d            | j                            |          S r    )r   r   	transformr"   s     r   transform_non_affinezQtest_non_affine_caching.<locals>.AssertingNonAffineTransform.transform_non_affine&   s@    . F FEF F F,66t<<<r   )__name__
__module____qualname____doc__
input_dimsoutput_dims	is_affiner   r$   r!   r'   r&   __classcell__r   s   @r   AssertingNonAffineTransformr      s{        	 	
 $%$
[		M 	M 	M 	M 	M
	B 	B 	B 3	= 	= 	= )					r   r1   r   r&   T)r   	Transformpltaxesplotnparange	transDatadrawr   	transAxes
invalidate)r1   my_transaxs      r   test_non_affine_cachingr?      s    ) ) ) ) )k&; ) ) )4 +*,,H	BHRYr]]h&=>>>>HJJJ #'HLHJJJJJr   c                      G d d          } t          j                    }t          j        t          j        d           | d                    \  }|                    dd           |                    dd           t          |                                j	        
                                t          j                                        d          
                                           d S )Nc                       e Zd Zd Zd ZdS )-test_external_transform_api.<locals>.ScaledByc                     || _         d S N)_scale_factor)r   scale_factors     r   r   z6test_external_transform_api.<locals>.ScaledBy.__init__9   s    !-Dr   c                 h    t          j                                        | j                  |j        z   S rD   )r   r   r   rE   r9   )r   r5   s     r   _as_mpl_transformz?test_external_transform_api.<locals>.ScaledBy._as_mpl_transform<   s.    (**001CDDn% &r   N)r(   r)   r*   r   rH    r   r   ScaledByrB   8   s2        	. 	. 	.	& 	& 	& 	& 	&r   rJ   r   r2   r   d   )r4   r5   r6   r7   r8   set_xlimset_ylimr   get_transform_a
get_matrixr   r   r   )rJ   r>   lines      r   test_external_transform_apirR   7   s    & & & & & & & & 
BHRYr]]hhrll;;;EDKK3KK3D&&((+6688(**0044??AAC C C C Cr   pre_transform_dataTmpl20g?)remove_textstyletolc                  <   t          j                    } t          j                                        d          }|                     t          j        d                              dd          || j	        z              | 
                    t          j        ddd          t          j        d	dd
          t          j        d                              dd          || j	        z              |                     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	        z   t          j        ||                     |d d d         |d d d         }}|d d dd d df         |d d dd d df         }}|                     ||dz   |||| j	        z              |                     |dz
  |dz   |dz  |dz  || j	        z              d S )Nr   0         r2   r         g      @	            r   )r&   	linewidth   )r4   r5   r   r   r   contourfr7   r8   reshaper9   
pcolormeshlinspacescattersincosnewaxis
streamplothypotquiverbarbs)r>   times10xyuvs         r   test_pre_transform_plottingru   I   so    
B"$$**2..GKK	"%%a++w7MKNNNMM"+aA&&+c1a(()B--''1--#bl2  4 4 4
 JJr{1b!!2;r1#5#5 2</  1 1 1 	Ar2A
Aq"A	"&))bfQqqq"*}-...A
q		BF1QQQ
]+,,,AMM!Q1",(>HQNN  , , , SSqS61SSqS6qASSqS##A#X;##A#sss(qAIIaQ1",(>I???HHQUAE1a4A2<1GHHHHHHr   c                     t          j                    } t          j        t          j        ddd          t          j        ddd                    \  }}|                     ||t          j        ||z            t          j                    	                    d          | j
        z              t          j        ddgd	d
gg          }t          || j                                                   d S )N   r_   (@      )@皙?r2         ?ףp=
?       @      ?)r4   r5   r7   meshgridrg   rd   logr   r   r   r9   arrayr   dataLim
get_pointsr>   xsysexpecteds       r   !test_contour_pre_transform_limitsr   n   s    	B[RR00"+dD"2M2MNNFBKKBrBw%.0066s;;blJ  L L L x#td% & &H"*"7"7"9"9:::::r   c                     t          j                    } t          j        t          j        ddd          t          j        ddd                    \  }}|                     ||t          j        ||z            d dd df         t          j                    	                    d          | j
        z              t          j        dd	gd
dgg          }t          || j                                                   d S Nrw   r_   rx   ry   rz   r2   r{   r|   r}   r~   )r4   r5   r7   r   rg   pcolorr   r   r   r   r9   r   r   r   r   r   s       r    test_pcolor_pre_transform_limitsr   y   s    	B[RR00"+dD"2M2MNNFBIIb"bfR"Woocrc3B3h/#,..44S99BLH  J J J x#td% & &H"*"7"7"9"9:::::r   c                     t          j                    } t          j        t          j        ddd          t          j        ddd                    \  }}|                     ||t          j        ||z            d dd df         t          j                    	                    d          | j
        z              t          j        dd	gd
dgg          }t          || j                                                   d S r   )r4   r5   r7   r   rg   rf   r   r   r   r   r9   r   r   r   r   r   s       r   $test_pcolormesh_pre_transform_limitsr      s    	B[RR00"+dD"2M2MNNFBMM"b"&b//#2#ss(3'02288==L  N N N x#td% & &H"*"7"7"9"9:::::r   c                  
   t           j                            d           t          j        ddd          } t          j        ddd          }t          j        | |          \  }}t          j        t          j        j        |j         dz            }t          j	                    }|
                    dd	
          }|                    dd           |                    |||d           |j                                         d S )N!N,r      rc   rK   i  r   o   polar
projectione   gouraud)shading)r7   randomseedrg   r   radiansrandshaper4   figureadd_subplotset_rlimrf   canvasr:   )valuesradiizrr   rq   figr>   s          r   test_pcolormesh_gouraud_nansr      s    INN8[C##FKT2&&E;vu%%DAq

29>17+c122A
*,,C		1	1B KKTMM!Q9M---JOOr   c                     t          j        ddgddgddgg          } t          j                            dddddd          }|                    |           }t          j        ddgddgddgg          }t          ||           t          j                            dddddd          }|                    |           }t          j        ddgddgddgg          }t          ||           t          j                            dddddd          }|                    |           }t          j        ddgd	dgddgg          }t          ||           t          j                            dddd
dd          }|                    |           }t          j        ddgddgddgg          }t          ||           t          j                            dddddd          }|                    |           }t          j        ddgddgddgg          }t          ||           t          j                            dddddd          }|                    |           }t          j        ddgddgddgg          }t          ||           d S )Nr   r   r_   r   r`   r   rc   <   r\   P   ra   rZ   )r7   r   r   r   from_valuesr&   r   )pointstactualr   s       r   test_Affine2D_from_valuesr      s   X1vBxAw  F
 	((Aq!Q::A[[  Fx!Q"a2q'233H)))((Aq!Q::A[[  Fx!Q!R1b'233H)))((Aq!Q::A[[  Fx!Q"a1a&122H)))((Aq!Q::A[[  Fx!Q!R1a&122H)))((Aq!Q::A[[  Fx!Q!Q!Q011H)))((Aq!Q::A[[  Fx!Q!Q!Q011H)))))r   c                     ddg} t          j                    }t          | |                    |                                                    |                                |                    dd                                           t          | |                    |                                                    |                                d S )N      ?)r   r   r   r&   inverted	translaterP   )pointr   s     r    test_affine_inverted_invalidatedr      s    #JEAq{{1::<<+A+A%+H+HIIJJJKKS$$&&&q{{1::<<+A+A%+H+HIIJJJJJr   c                  t   t          j        g d          } t          j        t          j                    t          j        dd                    }|                    |           }|                    |	                                dd          }t          | \  }}t          || j        d d                    d S )N))皙?)皙?r   )r   r_   )r   r_   r   clip)r   r   rK   rK   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MMNND/ 22v > >@ @E++D11E  !1!1!3!3&6*/ ! 1 1F 6lOGVFDJssO,,,,,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                 H    || _          t                      j        |i | d S rD   )
real_transr   r   )r   r   r   r   r   s       r   r   zNonAffineForTest.__init__   s,    $$)&)))))r   c                 6    | j                             |          S rD   )r   r&   )r   r   s     r   r'   z%NonAffineForTest.transform_non_affine   s    ((000r   c                 6    | j                             |          S rD   )r   r!   r"   s     r   r$   z*NonAffineForTest.transform_path_non_affine   s    --d333r   )r(   r)   r*   r+   r.   r-   r,   r   r'   r$   r/   r0   s   @r   r   r      sq          IKJ* * * * *1 1 14 4 4 4 4 4 4r   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestBasicTransformc                 \   t          j        d                              t          j        dz            | _        t          j        d                              dd          | _        t          j        d                              dd          | _	        t          t          j                                        dd          d	          | _        t          t          j                                        dd          d
          | _        t          t          j                                        dd          d          | _        | j        | j        | j        z   z   | j	        z   | _        | j        | j        z   | j        z   | j	        z   | _        | j        | j        z   | j	        z   | _        d S )Nta1)shorthand_namer   ta2r   r   ta3r`   tn1tn2tn3)r   r   rotater7   pir   r   r   r   r   r   r   r   r   stack1stack2stack2_subsetr   s    r   setup_methodzTestBasicTransform.setup_method   sm   'u===DDRUQYOO'u===GGANN'u===CCAqII#K$8$:$:$D$DQ$J$J38: : :#K$8$:$:$D$DQ$J$J38: : :#K$8$:$:$D$DQ$J$J38: : : x48dh#6748Ch)DH4tx?!X048;r   c                 r    | j         j        dk    sJ | j        j        dk    sJ | j        j        dk    sJ d S )Nr\   rc   )r   depthr   r   r   s    r   test_transform_depthz'TestBasicTransform.test_transform_depth  sK    { A%%%%{ A%%%%!'1,,,,,,r   c                    | 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}d |                                D             }t          |          t          |          k    sJ t          ||          D ]\  }}||k    sJ d S )Nc                     g | ]\  }}|S rI   rI   ).0_rhs      r   
<listcomp>zCTestBasicTransform.test_left_to_right_iteration.<locals>.<listcomp>!  s    EEEEArREEEr   )r   r   r   r   r   _iter_break_from_left_to_rightlenr   )r   stack3target_transformsrtarget_stackstacks         r   test_left_to_right_iterationz/TestBasicTransform.test_left_to_right_iteration  s    (dh$(TX*=>?48K $"h$(TX*=>$(J"h1TX=!X0!X	 FEVBBDDEEE1vv.//////#&'8!#<#< 	) 	)L%5(((((	) 	)r   c                 F   | j         | j        z
  | j        k    sJ | j        | j        z
  | j        k    sJ | j        | j        z
  | j                                        k    sJ | j        | j        z
  j        dk    sJ t          j        t                    5  | j         | j        z
   d d d            n# 1 swxY w Y   | j        | j	        | j
        z   z   }| j	        | j
        z   }||z
  | j        k    sJ || j	        z
  || 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 d S )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//48;;;;{T//48;;;;!DK/483D3D3F3FFFFF"T[071<<<<]:&& 	& 	&K$+%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& x48dh./x$("d{dh&&&&dh$):):)<)<"<<<<<{TX%TX5H)IIIII{TX%DH)<tx)GGGGGDH$048;48#$ $ $ $ $ $s   B00B47B4c                    | j         | j        z   }| j         | j        z   }||k    sJ || j        k    sJ |                    |          sJ |                    | j                  sJ |                    | j                   rJ |                    | j         | j         z             rJ ||k    sJ | j                            | j                  sJ | j                            | j                  sJ | j                            | j                  sJ | j                            | j                  sJ | j                            | j                  rJ | j                            | j                  rJ | j                            | j         | j        z             sJ | j                            | j         | j        z             sJ | j                            | j        | j         z             rJ d S rD   )r   r   contains_branchr   r   r   r   r   )r   r1r2s      r   test_contains_branchz'TestBasicTransform.test_contains_branch=  s   h!h!RxxxxTX~~~~!!"%%%%%!!$(+++++%%dh/////%%dh&9:::::Rxxxx{**4844444{**4844444{**4+=>>>>>{**4+=>>>>>%55dkBBBBB%55dkBBBBB{**48dh+>?????{**48dh+>?????;..tx$(/BCCC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                            |          }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                            |          |           t          | j        	                                                    |          |           | j
        | j        z                                   }| j        	                                                                }t          ||           | j        	                                                                }t          ||           d S )Nr   r   r_   r`   r   )dtyper   r}   g      3      (@g      &@g      @g      "g      8@)r7   r   nanfloat64r   r'   r&   r   transform_affiner   r   r   rP   r   r   )r   r   na_ptsall_ptsna_expectedall_expectedexpected_resultr   s           r   test_affine_simplificationz-TestBasicTransform.test_affine_simplificationW  s    Aq6B8bfa[2q'B "
, , ,11&99+''//hR4+!# 02r( <CE:O O Ox#rS#J"$&"&!1C9!>&(j2 2 2
 	"&+666!'<888 	"$+">">v"F"F".	0 	0 	0 	"$+"8"8":":"D"DV"L"L".	0 	0 	0
  8dh.::<<''))4466?F333''))4466?F33333r   N)	r(   r)   r*   r   r   r   r   r   r	  rI   r   r   r   r      sq        < < <2- - -
) ) ) % % %,D D D4#4 #4 #4 #4 #4r   r   c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )TestTransformPlotInterfacec                 @   t          j                    }|                    g dg d|j                   t	          |j                                        t          j        t          j	        t          j	        gt          j	         t          j	         gg                     d S )Nrz   333333?皙??      ?r  r2   )
r4   r5   r6   r;   r   r   r   r7   r   infr   r>   s     r   test_line_extent_axes_coordsz7TestTransformPlotInterface.test_line_extent_axes_coords~  s    XZZ
BLIII2:00228bfbf%5')vgw%7%9 : :	; 	; 	; 	; 	;r   c                     t          j                    }|                    g dg d|j                   t	          |j                                        t          j        ddgddgg                     d S )Nr  r  r2   rz   r  r  r  )	r4   r5   r6   r9   r   r   r   r7   r   r  s     r   test_line_extent_data_coordsz7TestTransformPlotInterface.test_line_extent_data_coords  sz    XZZ
BLIII2:00228cC[3+$>??	A 	A 	A 	A 	Ar   c                 J   t          j                    }t          j        |j        |j                  }|                    g dg d|           t          |j        	                                t          j        t          j        dgt          j         dgg                     d S )Nr  #      r2   g      g     A@)r4   r5   r   blended_transform_factoryr;   r9   r6   r   r   r   r7   r   r  r   r>   r   s      r   !test_line_extent_compound_coords1z<TestTransformPlotInterface.test_line_extent_compound_coords1  s     XZZ5bl68lD D
???2:00228bfc]')vgs^%5 6 6	7 	7 	7 	7 	7r   c                 >   t          j                    }t          j                                        d          |j        z   }|                    g dg d|           t          |j        	                                t          j        ddgddgg                     d S )	Nr   r  r  r2   r         Ir        u@)r4   r5   r   r   r   r9   r6   r   r   r   r7   r   r  s      r   )test_line_extent_predata_transform_coordszDTestTransformPlotInterface.test_line_extent_predata_transform_coords  s    XZZ$&&,,R002<?
???2:00228b$Z#t$=>>	@ 	@ 	@ 	@ 	@r   c                    t          j                    }t          j        |j        t          j                                        d          |j        z             }|                    g dg d|           t          |j
                                        t          j        t          j        dgt          j         dgg                     d S )Nr   r  r  r2   r!  r"  )r4   r5   r   r  r;   r   r   r9   r6   r   r   r   r7   r   r  r  s      r   !test_line_extent_compound_coords2z<TestTransformPlotInterface.test_line_extent_compound_coords2  s     XZZ5L+.0066r::R\IK K
???2:00228bfd^rvgt_$EFF	H 	H 	H 	H 	Hr   c                 b   t          j                    }t          j                                        dd          }t          j        t          j        d          ||j        z              t          j	        ddgddgg          dz   }t          |j                                        |           d S )Nr   r2                 "@r4   r5   r   r   r   r6   r7   r8   r9   r   r   r   r   r   r>   offsetexpected_data_lims       r   test_line_extents_affinez3TestTransformPlotInterface.test_line_extents_affine  s    XZZ%''11"b992&2<*?@@@@Hr2hb	%:;;b@!"*"7"7"9"9;LMMMMMr   c                    t          j                    }t          j                                        dd          }t          t          j                                        dd                    }t          j        t          j        d          ||z   |j	        z              t          j
        ddgddgg          dz   }t          |j                                        |           d S )Nr   r2   r'  r(  r_   )r4   r5   r   r   r   r   r6   r7   r8   r9   r   r   r   r   )r   r>   r+  	na_offsetr,  s        r   test_line_extents_non_affinez7TestTransformPlotInterface.test_line_extents_non_affine  s    XZZ%''11"b99$[%9%;%;%E%Eb"%M%MNN	2&9*<r|*KLLLLHr2hb	%:;;b@!"*"7"7"9"9;LMMMMMr   c                    t          j                    }t          j                                        dd          }t          t          j                                        dd                    }t          ddgddgddgddgg          }t          j        |||z   |j	        z             }|
                    |           t          j        ddgddgg          dz   }t          |j                                        |           d S )Nr   r   r2   r'        $@r_   )r4   r5   r   r   r   r   r   mpatches	PathPatchr9   	add_patchr7   r   r   r   r   )r   r>   r+  r/  pthpatchr,  s          r   test_pathc_extents_non_affinez8TestTransformPlotInterface.test_pathc_extents_non_affine  s    XZZ%''11"b99$[%9%;%;%E%Eb"%M%MNN	QFQGb"XAw788"3-3i-?",-NP P P
UHr2hs%<==B!"*"7"7"9"9;LMMMMMr   c                    t          j                    }t          j                                        dd          }t          ddgddgddgddgg          }t          j        |||j        z             }|	                    |           t          j        ddgddgg          dz   }t          |j                                        |           d S )Nr   r   r2   r'  r2  )r4   r5   r   r   r   r   r3  r4  r9   r5  r7   r   r   r   r   )r   r>   r+  r6  r7  r,  s         r   test_pathc_extents_affinez4TestTransformPlotInterface.test_pathc_extents_affine  s    XZZ%''11"b99QFQGb"XAw788"3&2<2GHHH
UHr2hs%<==B!"*"7"7"9"9;LMMMMMr   c                 j   t          j        d          }t          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                                        |           d S )Nr   r   r   r   r2   r'  r(  r)  r*  s       r   *test_line_extents_for_non_affine_transDatazETestTransformPlotInterface.test_line_extents_for_non_affine_transData  s    X)))%''11!R882&2<*?@@@@ Hr2hb	%:;;q"gE!"*"7"7"9"9;LMMMMMr   N)r(   r)   r*   r  r  r  r#  r%  r-  r0  r8  r:  r<  rI   r   r   r  r  }  s        ; ; ;A A A	7 	7 	7@ @ @H H HN N NN N N	N 	N 	NN N N
N 
N 
N 
N 
Nr   r  c                 :    t          | j        |j                   d S rD   )r   bounds)bbox1bbox2s     r   assert_bbox_eqrA    s    u|U\22222r   c                      t           j                            ddddd          } |                                 }t	          |j        | j                   d S )Nr'  r   )minpos)r   r	   from_extentsfrozenr   rC  )bboxrE  s     r   test_bbox_frozen_copies_minposrG    sJ    ((c3C(HHD[[]]Fv}dk2222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                     d S )Nr   r`   r  r{         ?g      @r   )r   r	   rD  intersectionrA  )bbox_from_extinterr   r   r3r4r5s          r   test_bbox_intersectionrP    s'   $1M)E	q!Q	"	"B	sCc	*	*B	sAtT	*	*B	sCC	(	(B	q!Q	"	"B 55R=="%%%55R==--S!Q"?"?@@@55R=="%%%5R==   55R==--1a";";<<<<<r   c            	      4   t          j        ddgddgg          } t          | t          t	          |           dt           j        i                     t          t          |           dt          i          }|                                D ]\  }}t          | |          |k    sJ d}t          t          | |          dt          i          }|                                D ]6\  }}t          t          t          | |          |                    |k    sJ 7d S )Nr  r   rI  r	   z.1f)
r   r	   rA  evalreprstrdictitemsgetattrformat)basdictkrt   fmts        r   test_bbox_as_stringsr]    s
   2q'C:.//A1d477V[-=$>??@@@#a&&64.))F " "1q!}}!!!!!
C&C..64.11F 5 51F71a==#..//1444445 5r   c                  `    t          t          j        d          j                  dk    sJ d S )Nr   r   a  CompositeGenericTransform(
    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))))))))rT  r4   subplotr9   rI   r   r   test_str_transformr`    sB     s{g...899 ,>8 ,8 ,8 ,8 ,8 ,8 ,8r   c                  p    t          j                    } |                     d          }|j        dk    sJ d S )Nr`   r`   )r   )r   r   r  r   )r   r   s     r   test_transform_single_pointrc  8  s6    A	6""A7d??????r   c                      t          j                    \  } }|                    d           |j                            d           d S )Nr   rb  )r4   subplots
set_yscaler9   r&   )r   r>   s     r   test_log_transformrg  >  sA     lnnGCMM%L6"""""r   c                      t          j        ddgddgg          } t          j        ddgdt          j        gg          }|                     |          rJ d S )Nr   r`   )r   r	   r7   r  overlaps)arY  s     r   test_nan_overlaprk  F  sZ    1a&1a&)**A1a&1bf+.//Azz!}}r   c                  ,   t          j                    } t          j        g d          }t          j        ddgddgddgg          }|                     ||          }t          ||           t          j        t                    5  |                     ||ddddf                    d d d            n# 1 swxY w Y   t          j        t                    5  |                     ||ddd d f                    d d d            d S # 1 swxY w Y   d S )N)r_   -   r   r   r`   r   )	r   r   r7   r   transform_anglesr   r   r   r   )r   anglesr   
new_angless       r   test_transform_anglesrq  L  s   AXlll##FX1v1v1v.//F ##FF33Jfj111 
z	"	" 5 5	66!A#qs(#34445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 
z	"	" 3 3	66!A#qqq&>2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s$   #B55B9<B9#D		DDc                      t          j        ddg          } dt           j        fddg}|D ]2}t          j        t          j        |           }t          ||            3d S )NgMbPgMbP?r   r   r   )r   g     )r7   r   r  r   nonsingularr   )zero_expansioncasesr   outs       r   test_nonsingularrx  ^  sj    Xvuo..N[&-0E 0 0h{.5663////0 0r   c                     t          j                    } t          j        t                    5  |                     d           d d d            n# 1 swxY w Y   t          j        t                    5  |                     dggg           d d d            n# 1 swxY w Y   t          j        t                    5  |                     g            d d d            n# 1 swxY w Y   t          j        t                    5  |                     dg           d d d            n# 1 swxY w Y   t          j        t                    5  |                     dgg           d d d            n# 1 swxY w Y   t          j        t                    5  |                     g dg           d d d            d S # 1 swxY w Y   d S )Nr`   )r`   r   rc   )r   r   r   r   r   r&   RuntimeErrorr   s    r   test_invalid_argumentsr|  g  s   A 
z	"	"  	A              	z	"	"  	qcUG              	|	$	$  	B              	|	$	$  	QC              	|	$	$  	aSE              	|	$	$ ! !	YYYK   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !sk   AAA3BBB<CC"%C"D%%D),D)	E--E14E1F77F;>F;c                  2   g d} t          | d          }t          j                    }t          j        ||          }t	          |                                j        |            dt          j        d          z  }|	                    t          j
        dz             t	          |                                j        d||fdd|z  f| |fgd	
           dgdz  |_        t	          |                                j        d||fdd|z  f| |fgd	
           d S )N)rs  )r`   r   rb  )r   r`   T)closedr`   r   r\   rs  r   gV瞯<)atol)r   r   r   TransformedPathr   get_fully_transformed_pathverticesr7   sqrtr   r   r   )r   r#   r   
trans_pathr   s        r   test_transformed_pathr  |  s4   ---Ft$$$D ""E,T599JJ99;;DfMMM 
RWQZZB	LLJ99;;Db"X1r6{bS"I>       
 (Q,DKJ99;;Db"X1r6{bS"I>           r   c                     t          j                    } t          j        dddd|           }t          j        |          }|                                j        }|                     d           t          |                                j        |dz             |	                    d           t          |                                j        |           d S )Nrs  r`   rm     r2   r   r  )
r   r   r3  WedgeTransformedPatchPathr  r  r   r   
set_radius)r   r7  tpatchr   s       r   test_transformed_patch_pathr    s     ""EN61b#???E-e44F..009F 
KKNNNF5577@&1*MMM 
SF5577@&IIIIIr   locked_elementx0y0x1y1c                    g d}|                     |            t          j                                        }t          j        |fi | di}t          ||           dk    sJ t          |d| z             dk    sJ |D ]&}t          ||          t          ||          k    sJ '|                    |                                dz              t          ||           dk    sJ t          |d| z             dk    sJ |D ]&}t          ||          t          ||          k    sJ 't          |d| z   d            t          |d| z             J t          j
        |                                |                                k              sJ t          |d| z   d           t          ||           dk    sJ t          |d| z             dk    sJ |D ]&}t          ||          t          ||          k    sJ 'd S )Nr  r   locked_r   rc   )remover   r	   unitLockableBboxrW  
set_pointsr   setattrr7   all)r  other_elementsoriglockedelems        r   test_lockable_bboxr    sU   ---N.)))  ""D%dBB~q.ABBF 6>**a////69~566!;;;; < <vt$$d(;(;;;;;; 	OODOO%%*+++6>**a////69~566!;;;; < <vt$$d(;(;;;;;; FI.55569~566>>>6$//##v'8'8':'::;;;;; FI.2226>**a////69~566!;;;; < <vt$$d(;(;;;;;;< <r   c                     t          j                    } t          j                    }| |z   }|                                 t          j        |          }|j        s|j        rJ |                     dd           |j        r|j        sJ |                                |                                 k                                    sJ |                                 t          j        |          }|                    dd           |j        rJ |                                |                                 k                                    sJ d S Nr`   r   rc   r\   )r   r   rP   copy_invalidr   r  rj  rY  ss1b1s        r   	test_copyr    s   AA	AALLNNN	1Bz-"+---KK1:%"+%%%MMOOq||~~-2244444LLNNN	1BLLAzLLNNallnn,113333333r   c                     t          j                    } t          j                    }| |z   }|                                 t          j        |          }|j        s|j        rJ |                     dd           |j        r|j        rJ |                                t          j                                                    k                                    sJ |                                 t          j        |          }|                    dd           |j        rJ |                                |                                 k                                    sJ d S r  )r   r   rP   r  deepcopyr  r   r  r  s        r   test_deepcopyr    s,   AA	AALLNNN	q		Bz-"+---KK1:)bk)))MMOO{355@@BBBGGIIIIILLNNN	q		BLLAzLLNNallnn,113333333r   c                     t          j        t          j                              } t          j        t
          d          5  |                     t          j        d                     d d d            d S # 1 swxY w Y   d S )Nz`The input and output dims of the new child \(1, 1\) do not match those of current child \(2, 2\)matchr   )	r   TransformWrapperr   r   r   r   setr   r   r{  s    r   test_transformwrapperr    s    $[%9%;%;<<A	z<
> 
> 
> & & 	
e $$%%%& & & & & & & & & & & & & & & & & &s   (A66A:=A:png)
extensionsc           	      :   t           j                            d           t           j                            d          }t          j        ddd          }t          | |gddg          D ]\  }}|                                }|                    ||d           |                    |t          j	        |d	z   d	z            t          j
        d	t           j        z            z             |j                                         |                    d
           d S )Nr   r   )sizer  ra   TF)r   densityr   linear)r7   r   r   normalrg   r   re  histr6   expr  r   r   r:   rf  )fig_testfig_refsamplesrq   r   	log_stater>   s          r   test_scale_swappingr    s    INN8iB''G
B2Ax1D%=AA    Y\\^^
Y555
26AqD'A+&&RU););;<<<

h   r   c                  ,   t          j        t          d          5  t          j        d d           d d d            n# 1 swxY w Y   t          j        t          d          5  t          j        d d           d d d            d S # 1 swxY w Y   d S )NzZ'fontsize' is not a valid value for units; supported values are 'dots', 'points', 'inches'r  fontsize)unitsz3For units of inches or points a fig kwarg is neededinches)r   r   r   r   offset_copyrI   r   r   test_offset_copy_errorsr    s,   	zP
Q 
Q 
Q 8 8 	J77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8
 
zR
T 
T 
T 6 6H55556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s!   ?AA%B		BBc                  (   t          t          j                    t                                          d                    } |                     dd          sJ |                     dd          sJ |                     dd          rJ t          t          j                    t                                          dd                    } |                     dd	          sJ |                     dd	          rJ |                     d
d
          rJ d S )N   r  r  gٿg333333?r  g      ?r~   r{   rz   )r
   r	   r  r   
rotate_degcontainsr   fully_contains)bbs    r   test_transformedbbox_containsr    s    	hjj&;&;B&?&?	@	@B;;r2;;sC     {{2r"""""	hjj&:&:3&C&C	D	DB;;tS!!!!!  s+++++  R(((((((r   )@r  numpyr7   numpy.testingr   r   r   r   r   
matplotlibr   matplotlib.pyplotpyplotr4   matplotlib.patchespatchesr3  matplotlib.transforms
transformsr   r   r	   r
   matplotlib.pathr   matplotlib.testing.decoratorsr   r   r?   rR   ru   r   r   r   r   r   r   r   r3   r   r   r  rA  rG  rP  r]  r`  rc  rg  rk  rq  rx  r|  r  r  markparametrizer  r  r  r  r  r  r  rI   r   r   <module>r     s       J J J J J J J J J J J J              % % % % % % + + + + + + A A A A A A A A A A             O O O O O O O O# # #LC C C$ '(d'   I  I  IF; ; ;	; 	; 	;	; 	; 	;  &"* "* "*JK K K- - -4 4 4 4 4{, 4 4 4,B4 B4 B4 B4 B4 B4 B4 B4JZN ZN ZN ZN ZN ZN ZN ZNz3 3 33 3 3= = =,	5 	5 	5/8 /8 /8d  # # #  3 3 3$0 0 0! ! !*     ,J J J" )+C+C+CDD< < ED<B4 4 4&4 4 4&& & & (((
  
  )(
 6 6 6) ) ) ) )r   