a
    ëÝEbßm  ã                   @   s–  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d„ Zdd	„ Zed
gdddd�dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z G dd„ dej!ƒZ"G dd „ d ƒZ#G d!d"„ d"ƒZ$d#d$„ Z%d%d&„ Z&d'd(„ Z'd)d*„ Z(d+d,„ Z)d-d.„ Z*d/d0„ Z+d1d2„ Z,d3d4„ Z-d5d6„ Z.d7d8„ Z/d9d:„ Z0d;d<„ Z1ej2 3d=g d>¢¡d?d@„ ƒZ4dAdB„ Z5dCdD„ Z6dS )Eé    N)Úassert_allcloseÚassert_almost_equalÚassert_array_equalÚassert_array_almost_equal)Úscale)ÚPath)Úimage_comparisonc                  C   s^   G dd„ dt jƒ} | ƒ }t ¡ }tjt d¡||j d� t ¡  d|_	|j
 ¡  t ¡  d S )Nc                       sD   e Zd ZdZd ZZdZ‡ fdd„Zdd„ ZeZ	dd	„ Z
e
Z‡  ZS )
z<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                    s.   t ƒ j|i |¤Ž d| _t ¡  dd¡| _d S )NFé
   )ÚsuperÚ__init__Úraise_on_transformÚmtransformsÚAffine2Dr   Úunderlying_transform)ÚselfÚargsÚkwargs©Ú	__class__© ú`/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/matplotlib/tests/test_transforms.pyr      s    zEtest_non_affine_caching.<locals>.AssertingNonAffineTransform.__init__c                 S   s   | j rJ dƒ‚| j |¡S ©Nz3Invalidated affine part of transform unnecessarily.)r   r   Útransform_path©r   Úpathr   r   r   Útransform_path_non_affine   s    ÿzVtest_non_affine_caching.<locals>.AssertingNonAffineTransform.transform_path_non_affinec                 S   s   | j rJ dƒ‚| j |¡S r   )r   r   Ú	transformr   r   r   r   Útransform_non_affine%   s    ÿzQtest_non_affine_caching.<locals>.AssertingNonAffineTransform.transform_non_affine)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
input_dimsÚoutput_dimsÚ	is_affiner   r   r   r   r   Ú__classcell__r   r   r   r   ÚAssertingNonAffineTransform   s   r'   r
   ©r   T)r   Ú	TransformÚpltÚaxesÚplotÚnpÚarangeÚ	transDataZdrawr   Ú	transAxesZ
invalidate)r'   Zmy_transÚaxr   r   r   Útest_non_affine_caching   s    
r2   c                  C   sn   G dd„ dƒ} t  ¡ }t jt d¡| dƒd�\}| dd¡ | dd¡ t| ¡ j	 
¡ t ¡  d¡ 
¡ ƒ d S )Nc                   @   s   e Zd Zdd„ Zdd„ ZdS )z-test_external_transform_api.<locals>.ScaledByc                 S   s
   || _ d S ©N)Ú_scale_factor)r   Zscale_factorr   r   r   r   8   s    z6test_external_transform_api.<locals>.ScaledBy.__init__c                 S   s   t  ¡  | j¡|j S r3   )r   r   r   r4   r/   )r   r+   r   r   r   Ú_as_mpl_transform;   s    ÿz?test_external_transform_api.<locals>.ScaledBy._as_mpl_transformN)r   r    r!   r   r5   r   r   r   r   ÚScaledBy7   s   r6   r
   r(   r   éd   )r*   r+   r,   r-   r.   Zset_xlimZset_ylimr   Zget_transformZ_aÚ
get_matrixr   r   r   )r6   r1   Úliner   r   r   Útest_external_transform_api6   s    ÿr:   Zpre_transform_dataTZmpl20gš™™™™™©?)Zremove_textÚstyleZtolc               
   C   s¼  t  ¡ } t ¡  d¡}| jt d¡ dd¡|| j	 d� | j
t ddd¡t d	dd
¡t d¡ dd¡|| j	 d� | jt dd¡t dd¡|| j	 d� t ddd¡}t ddd¡}dt |¡ t |d d …tjf ¡ }t |¡t |d d …tjf ¡ }| j|||||| j	 t ||¡d� |d d d… |d d d…  }}|d d d…d d d…f |d d d…d d d…f  }}| j||d |||| j	 d� | j|d |d |d |d || j	 d� d S )Nr
   é0   é   é   r(   r   é   é   g      @é	   é   é   é   r	   )r   Z	linewidthé   )r*   r+   r   r   r   Úcontourfr-   r.   Zreshaper/   Ú
pcolormeshÚlinspaceZscatterÚsinÚcosZnewaxisZ
streamplotÚhypotZquiverZbarbs)r1   Ztimes10ÚxÚyÚuÚvr   r   r   Útest_pre_transform_plottingH   s,    "ýÿ&"
ÿ2rP   c                  C   s‚   t  ¡ } t t ddd¡t ddd¡¡\}}| j||t || ¡t ¡  	d¡| j
 d� t ddgd	d
gg¡}t|| j ¡ ƒ d S )Né   rB   çÍÌÌÌÌÌ(@ç      )@çš™™™™™¹?r(   ç      ø?ç×£p=
×ó?ç       @ç      ô?)r*   r+   r-   ÚmeshgridrH   rF   Úlogr   r   r   r/   Úarrayr   ÚdataLimÚ
get_points©r1   ÚxsZysÚexpectedr   r   r   Ú!test_contour_pre_transform_limitsm   s    $ÿ
ÿra   c                  C   s’   t  ¡ } t t ddd¡t ddd¡¡\}}| j||t || ¡d d…d d…f t ¡  	d¡| j
 d� t dd	gd
dgg¡}t|| j ¡ ƒ d S ©NrQ   rB   rR   rS   éÿÿÿÿrT   r(   rU   rV   rW   rX   )r*   r+   r-   rY   rH   ZpcolorrZ   r   r   r   r/   r[   r   r\   r]   r^   r   r   r   Ú test_pcolor_pre_transform_limitsx   s    $$ÿ
ÿrd   c                  C   s’   t  ¡ } t t ddd¡t ddd¡¡\}}| j||t || ¡d d…d d…f t ¡  	d¡| j
 d� t dd	gd
dgg¡}t|| j ¡ ƒ d S rb   )r*   r+   r-   rY   rH   rG   rZ   r   r   r   r/   r[   r   r\   r]   r^   r   r   r   Ú$test_pcolormesh_pre_transform_limits„   s    $$ÿ
ÿre   c                  C   sÄ  t  ddgddgddgg¡} tj dddddd¡}| | ¡}t  ddgddgddgg¡}t||ƒ tj dddddd¡}| | ¡}t  ddgddgddgg¡}t||ƒ tj dddddd¡}| | ¡}t  ddgd	dgddgg¡}t||ƒ tj dddd
dd¡}| | ¡}t  ddgddgddgg¡}t||ƒ tj dddddd¡}| | ¡}t  ddgddgddgg¡}t||ƒ tj dddddd¡}| | ¡}t  ddgddgddgg¡}t||ƒ d S )Nr   r
   rB   rc   rC   r	   éþÿÿÿrE   é<   r?   éP   rD   r=   )r-   r[   r   r   Zfrom_valuesr   r   )ÚpointsÚtÚactualr`   r   r   r   Útest_Affine2D_from_values�   s8    
þ










rl   c                  C   sX   ddg} t  ¡ }t| | | ¡  | ¡¡ƒ | dd¡ ¡  t| | | ¡  | ¡¡ƒ d S )Nç      ð?)r   r   r   r   ÚinvertedÚ	translater8   )Úpointrj   r   r   r   Ú test_affine_inverted_invalidatedµ   s
    rq   c                  C   sj   t g d¢dd�} t t ¡ t dd¡¡}| | ¡}|j| ¡ ddd�}t	|Ž \}}t
|| jd d	… ƒ d S )
N)©çš™™™™™É?é�ÿÿÿ)çš™™™™™Ù?rt   )ru   rB   )rs   rB   rr   T©Úclosedr
   Úclip)r   r   r7   r7   F)rx   Úsimplifyrc   )r   r   ZBlendedGenericTransformr   r   ZLogTransformr   Úiter_segmentsÚ
get_affineÚzipr   Úcodes)r   ÚtransZtpathÚresultZtpointsZtcodesr   r   r   Útest_clipping_of_logÀ   s    ÿÿ

þr€   c                       s<   e Zd ZdZdZdZdZ‡ fdd„Zdd„ Zdd	„ Z	‡  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                    s   || _ tƒ j|i |¤Ž d S r3   )Ú
real_transr   r   )r   r‚   r   r   r   r   r   r   Ú   s    zNonAffineForTest.__init__c                 C   s   | j  |¡S r3   )r‚   r   )r   Úvaluesr   r   r   r   Þ   s    z%NonAffineForTest.transform_non_affinec                 C   s   | j  |¡S r3   )r‚   r   r   r   r   r   r   á   s    z*NonAffineForTest.transform_path_non_affine)r   r    r!   r"   r%   r$   r#   r   r   r   r&   r   r   r   r   r�   Ï   s   r�   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestBasicTransformc                 C   sà   t jdd� tjd ¡| _t jdd� dd¡| _t jdd� dd¡| _	t
t  ¡  dd¡d	d�| _t
t  ¡  dd¡d
d�| _t
t  ¡  dd¡dd�| _| j| j| j  | j	 | _| j| j | j | j	 | _| j| j | j	 | _d S )NÚta1)Zshorthand_namer	   Úta2r
   r   Úta3rC   Útn1Útn2Útn3)r   r   Úrotater-   Úpir…   ro   r†   r   r‡   r�   rˆ   r‰   rŠ   Ústack1Ústack2Ústack2_subset©r   r   r   r   Úsetup_methodæ   s    ÿÿÿzTestBasicTransform.setup_methodc                 C   s4   | j jdksJ ‚| jjdks J ‚| jjdks0J ‚d S )Nr?   rE   )r�   ÚdepthrŽ   r�   r�   r   r   r   Útest_transform_depthÿ   s    z'TestBasicTransform.test_transform_depthc                 C   s¢   | j | j| j| j   | j }|| j| j| j  | j | j| j | j | j| j | jg}dd„ | ¡ D ƒ}t|ƒt|ƒks~J ‚t||ƒD ]\}}||ksˆJ ‚qˆd S )Nc                 S   s   g | ]\}}|‘qS r   r   )Ú.0Ú_Zrhr   r   r   Ú
<listcomp>  ó    zCTestBasicTransform.test_left_to_right_iteration.<locals>.<listcomp>)r…   rˆ   r†   r‰   r‡   Z_iter_break_from_left_to_rightÚlenr|   )r   Zstack3Ztarget_transformsÚrZtarget_stackÚstackr   r   r   Útest_left_to_right_iteration  s    
üz/TestBasicTransform.test_left_to_right_iterationc                 C   sT  | j | j | jksJ ‚| j| j | jks,J ‚| j| j | j ¡ ksFJ ‚| j| j jdks\J ‚t t¡� | j | j  W d   ƒ n1 sˆ0    Y  | j| j	| j
  }| j	| j
 }|| | jksÂJ ‚|| j	 || j	 ¡  ksÞJ ‚| j | j
 | j| j| j	  k�sJ ‚| j| j
 | j| j | j	 k�s&J ‚| j	| j
 | j
 | j
 | j	| j
 k�sPJ ‚d S )NrC   )r�   r�   r…   rŽ   rn   r’   ÚpytestÚraisesÚ
ValueErrorr†   r‡   rˆ   )r   Zaff1Zaff2r   r   r   Útest_transform_shortcuts  s    *$$
ÿz+TestBasicTransform.test_transform_shortcutsc                 C   s@  | j | j }| j | j }||ks$J ‚|| jks2J ‚| |¡s@J ‚| | j¡sPJ ‚| | j ¡r`J ‚| | j | j  ¡rvJ ‚||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 ¡�sJ ‚| j | j | j ¡�s"J ‚| j | j| j  ¡�r<J ‚d S r3   )r†   r…   Zcontains_branchr�   r‡   rŽ   r�   rˆ   )r   Úr1Úr2r   r   r   Útest_contains_branch*  s$    z'TestBasicTransform.test_contains_branchc                 C   s  t jddgddgt jdgddggt jd�}| j |¡}| j |¡}t jddgd	d
gt jt jgddggt jd�}t jddgddgt jt jgddggt jd�}t||ƒ t||ƒ t| j |¡|ƒ t| j 	¡  |¡|ƒ | j
| j  ¡ }| j 	¡  ¡ }t||ƒ | j 	¡  ¡ }t||ƒ d S )Nr   r
   rB   rC   rc   )Zdtyperm   rW   g      3Àç      (@g      &@g      @g      "Àg      8@)r-   r[   ÚnanZfloat64r�   r   r   r   Útransform_affiner{   r†   r‡   r8   r   rŽ   )r   ri   Zna_ptsZall_ptsZna_expectedZall_expectedZexpected_resultr   r   r   r   Útest_affine_simplificationD  s8     ÿÿÿÿþ

ÿÿ
z-TestBasicTransform.test_affine_simplificationN)	r   r    r!   r‘   r“   r›   rŸ   r¢   r¦   r   r   r   r   r„   å   s   r„   c                   @   s\   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚTestTransformPlotInterfacec                 C   sT   t  ¡ }|jg d¢g d¢|jd� t|j ¡ t tj	tj	gtj	 tj	 gg¡ƒ d S )N©rT   ç333333ó?çš™™™™™é?©çÍÌÌÌÌÌì?ç      à?rª   r(   )
r*   r+   r,   r0   r   r\   r]   r-   r[   Úinf©r   r1   r   r   r   Útest_line_extent_axes_coordsk  s    
ÿÿz7TestTransformPlotInterface.test_line_extent_axes_coordsc                 C   sH   t  ¡ }|jg d¢g d¢|jd� t|j ¡ t ddgddgg¡ƒ d S )Nr¨   r«   r(   rT   r­   r©   r¬   )	r*   r+   r,   r/   r   r\   r]   r-   r[   r¯   r   r   r   Útest_line_extent_data_coordss  s
    
ÿz7TestTransformPlotInterface.test_line_extent_data_coordsc                 C   s\   t  ¡ }t |j|j¡}|jg d¢g d¢|d� t|j 	¡ t
 t
jdgt
j dgg¡ƒ d S )Nr¨   ©é#   éûÿÿÿé   r(   g      Àg     €A@)r*   r+   r   Úblended_transform_factoryr0   r/   r,   r   r\   r]   r-   r[   r®   ©r   r1   r~   r   r   r   Ú!test_line_extent_compound_coords1z  s    ÿ

ÿÿz<TestTransformPlotInterface.test_line_extent_compound_coords1c                 C   sZ   t  ¡ }t ¡  d¡|j }|jg d¢g d¢|d� t|j 	¡ t
 ddgddgg¡ƒ d S )	Nr
   r¨   r²   r(   rm   ç      IÀr£   ç     àu@)r*   r+   r   r   r   r/   r,   r   r\   r]   r-   r[   r·   r   r   r   Ú)test_line_extent_predata_transform_coords…  s    
ÿzDTestTransformPlotInterface.test_line_extent_predata_transform_coordsc                 C   sj   t  ¡ }t |jt ¡  d¡|j ¡}|jg d¢g d¢|d� t	|j
 ¡ t tjdgtj dgg¡ƒ d S )Nr
   r¨   r²   r(   r¹   rº   )r*   r+   r   r¶   r0   r   r   r/   r,   r   r\   r]   r-   r[   r®   r·   r   r   r   Ú!test_line_extent_compound_coords2�  s    ÿ
ÿz<TestTransformPlotInterface.test_line_extent_compound_coords2c                 C   s`   t  ¡ }t ¡  dd¡}t jt d¡||j d� t 	ddgddgg¡d }t
|j ¡ |ƒ d S )Nr
   r(   ç        ç      "@©r*   r+   r   r   ro   r,   r-   r.   r/   r[   r   r\   r]   ©r   r1   ÚoffsetÚexpected_data_limr   r   r   Útest_line_extents_affine—  s
    z3TestTransformPlotInterface.test_line_extents_affinec                 C   sx   t  ¡ }t ¡  dd¡}tt ¡  dd¡ƒ}t jt d¡|| |j	 d� t 
ddgddgg¡d }t|j ¡ |ƒ d S )Nr
   r(   r½   r¾   rB   )r*   r+   r   r   ro   r�   r,   r-   r.   r/   r[   r   r\   r]   )r   r1   rÁ   Ú	na_offsetrÂ   r   r   r   Útest_line_extents_non_affinež  s    z7TestTransformPlotInterface.test_line_extents_non_affinec                 C   s¢   t  ¡ }t ¡  dd¡}tt ¡  dd¡ƒ}tt ddgddgddgddgg¡ƒ}t	j
||| |j d�}| |¡ t ddgddgg¡d }t|j ¡ |ƒ d S )Nr
   r   r(   r½   ç      $@rB   )r*   r+   r   r   ro   r�   r   r-   r[   ÚmpatchesÚ	PathPatchr/   Ú	add_patchr   r\   r]   )r   r1   rÁ   rÄ   ÚpthÚpatchrÂ   r   r   r   Útest_pathc_extents_non_affine¦  s    &ÿ
z8TestTransformPlotInterface.test_pathc_extents_non_affinec                 C   sŠ   t  ¡ }t ¡  dd¡}tt ddgddgddgddgg¡ƒ}tj	|||j
 d�}| |¡ t ddgddgg¡d }t|j ¡ |ƒ d S )Nr
   r   r(   r½   rÆ   )r*   r+   r   r   ro   r   r-   r[   rÇ   rÈ   r/   rÉ   r   r\   r]   )r   r1   rÁ   rÊ   rË   rÂ   r   r   r   Útest_pathc_extents_affine±  s    &
z4TestTransformPlotInterface.test_pathc_extents_affinec                 C   sh   t jdd�}t ¡  dd¡}t jt d¡||j d� t 	ddgddgg¡ddg }t
|j ¡ |ƒ d S )NÚpolar©Z
projectionr   r
   r(   r½   r¾   r¿   rÀ   r   r   r   Ú*test_line_extents_for_non_affine_transDataº  s
    zETestTransformPlotInterface.test_line_extents_for_non_affine_transDataN)r   r    r!   r°   r±   r¸   r»   r¼   rÃ   rÅ   rÌ   rÍ   rÐ   r   r   r   r   r§   j  s   
	r§   c                 C   s   t | j|jƒ d S r3   )r   Zbounds)Zbbox1Zbbox2r   r   r   Úassert_bbox_eqÇ  s    rÑ   c                  C   s0   t jjdddddd�} |  ¡ }t|j| jƒ d S )Nr½   rm   )Úminpos)r   ÚBboxÚfrom_extentsÚfrozenr   rÒ   )ZbboxrÕ   r   r   r   Útest_bbox_frozen_copies_minposË  s    rÖ   c                  C   sÀ   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|||ƒ|ƒ |||ƒd u s¢J ‚t|||ƒ| ddddƒƒ d S )Nr   rC   r­   rU   ç      è?g      @r	   )r   rÓ   rÔ   ÚintersectionrÑ   )Zbbox_from_extÚinterr    r¡   Zr3Zr4Zr5r   r   r   Útest_bbox_intersectionÑ  s    rÚ   c                  C   s°   t  ddgddgg¡} t| tt| ƒdt jiƒƒ tt| ƒdtiƒ}| ¡ D ]\}}t| |ƒ|ksJJ ‚qJd}tt	| |ƒdtiƒ}| ¡ D ]$\}}tt	t| |ƒ|ƒƒ|ks†J ‚q†d S )Nr­   r   r×   rÓ   z.1f)
r   rÓ   rÑ   ÚevalÚreprÚstrÚdictÚitemsÚgetattrÚformat)ÚbÚasdictÚkrO   Úfmtr   r   r   Útest_bbox_as_stringsç  s    ræ   c                   C   s   t tjd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(
            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Ý   r*   Zsubplotr/   r   r   r   r   Útest_str_transformó  s    rç   c                  C   s$   t  ¡ } |  d¡}|jdks J ‚d S )N©rC   rC   )r	   )r   r   r¥   Úshape)rj   r™   r   r   r   Útest_transform_single_point%  s    
rê   c                  C   s&   t  ¡ \} }| d¡ |j d¡ d S )NrZ   rè   )r*   ZsubplotsZ
set_yscaler/   r   )Zfigr1   r   r   r   Útest_log_transform+  s    
rë   c                  C   s@   t  ddgddgg¡} t  ddgdtjgg¡}|  |¡r<J ‚d S )Nr   rC   )r   rÓ   r-   r¤   Úoverlaps)Úarâ   r   r   r   Útest_nan_overlap3  s    rî   c                  C   sØ   t  ¡ } t g d¢¡}t ddgddgddgg¡}|  ||¡}t||ƒ t t¡�, |  ||dd…dd…f ¡ W d   ƒ n1 s„0    Y  t t¡�, |  ||dd…d d …f ¡ W d   ƒ n1 sÊ0    Y  d S )N)rB   é-   rg   r   rC   r	   )	r   r   r-   r[   Ztransform_anglesr   rœ   r�   rž   )rj   Zanglesri   Z
new_anglesr   r   r   Útest_transform_angles9  s    
:rð   c                  C   sF   t  ddg¡} dt jfddg}|D ]}t  tj|Ž ¡}t|| ƒ q"d S )Ngü©ñÒMbP¿gü©ñÒMbP?r   ©r   r   )r   güó     )r-   r[   r¤   r   Znonsingularr   )Zzero_expansionZcasesr   Úoutr   r   r   Útest_nonsingularK  s
    ró   c                  C   sZ  t  ¡ } t t¡� |  d¡ W d   ƒ n1 s20    Y  t t¡�  |  dggg¡ W d   ƒ n1 sl0    Y  t t¡� |  g ¡ W d   ƒ n1 s 0    Y  t t¡� |  dg¡ W d   ƒ n1 sÖ0    Y  t t¡� |  dgg¡ W d   ƒ n1 �s0    Y  t t¡�  |  g d¢g¡ W d   ƒ n1 �sL0    Y  d S )NrC   )rC   r	   rE   )r   r   rœ   r�   rž   r   ÚRuntimeError)rj   r   r   r   Útest_invalid_argumentsT  s    (.(*.rõ   c                  C   sÂ   g d¢} t | dd�}t ¡ }t ||¡}t| ¡ j| ƒ dt d¡ }| 	tj
d ¡ t| ¡ jd||fdd| f| |fgd	d
� dgd |_t| ¡ jd||fdd| f| |fgd	d
� d S )N)rñ   )rC   r   rè   )r   rC   Trv   rC   r	   r?   rñ   r   gVçž¯Ò<)Zatol)r   r   r   ZTransformedPathr   Úget_fully_transformed_pathÚverticesr-   Úsqrtr‹   rŒ   ri   )ri   r   r~   Z
trans_pathr¡   r   r   r   Útest_transformed_pathi  s     
þ
þrù   c                  C   sl   t  ¡ } tjdddd| d�}t  |¡}| ¡ j}|  d¡ t| ¡ j|d ƒ | 	d¡ t| ¡ j|ƒ d S )Nrñ   rC   rï   é‡   r(   r	   r­   )
r   r   rÇ   ZWedgeZTransformedPatchPathrö   r÷   r   r   Z
set_radius)r~   rË   Ztpatchri   r   r   r   Útest_transformed_patch_path  s    



rû   Úlocked_element©Zx0Zy0Úx1Úy1c                 C   s€  g d¢}|  | ¡ tj ¡ }tj|fi | di¤Ž}t|| ƒdksDJ ‚t|d|  ƒdksZJ ‚|D ]}t||ƒt||ƒks^J ‚q^| | ¡ d ¡ t|| ƒdks J ‚t|d|  ƒdks¶J ‚|D ]}t||ƒt||ƒksºJ ‚qºt|d|  d ƒ t|d|  ƒd u sþJ ‚t	 
| ¡ | ¡ k¡�sJ ‚t|d|  dƒ t|| ƒdk�s>J ‚t|d|  ƒdk�sVJ ‚|D ] }t||ƒt||ƒk�sZJ ‚�qZd S )Nrý   r	   Zlocked_r
   rE   )Úremover   rÓ   ÚunitZLockableBboxrà   Z
set_pointsr]   Úsetattrr-   Úall)rü   Zother_elementsÚorigÚlockedÚelemr   r   r   Útest_lockable_bbox�  s*    

r  c                  C   s²   t  ¡ } t  ¡ }| | }| ¡  t |¡}|js6|jr:J ‚|  dd¡ |jrR|jsVJ ‚| ¡ |  ¡ k ¡ snJ ‚| ¡  t |¡}| dd¡ |jr–J ‚| ¡ |  ¡ k ¡ s®J ‚d S ©NrC   r	   rE   r?   )r   r   r8   ÚcopyÚ_invalidro   r  ©rí   râ   ÚsÚs1Úb1r   r   r   Ú	test_copy²  s    


r  c                  C   s¶   t  ¡ } t  ¡ }| | }| ¡  t |¡}|js6|jr:J ‚|  dd¡ |jrR|jrVJ ‚| ¡ t  ¡  ¡ k ¡ srJ ‚| ¡  t |¡}| dd¡ |jršJ ‚| ¡ |  ¡ k ¡ s²J ‚d S r  )r   r   r8   r	  Údeepcopyr
  ro   r  r  r   r   r   Útest_deepcopyÅ  s    


r  )7r	  Únumpyr-   Znumpy.testingr   r   r   r   rœ   Z
matplotlibr   Zmatplotlib.pyplotZpyplotr*   Zmatplotlib.patchesZpatchesrÇ   Zmatplotlib.transformsZ
transformsr   Zmatplotlib.pathr   Zmatplotlib.testing.decoratorsr   r2   r:   rP   ra   rd   re   rl   rq   r€   r)   r�   r„   r§   rÑ   rÖ   rÚ   ræ   rç   rê   rë   rî   rð   ró   rõ   rù   rû   ÚmarkZparametrizer  r  r  r   r   r   r   Ú<module>   sT   &
ÿ
#% ]2	
!