a
    ضa50                     @   sh  d dl Z d dlmZ d dl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lmZ d dlmZmZ dd Zdd Zedgd	d
dd Z edgddd Z!dd Z"edgd	dddd Z#dd Z$edgd	dddd Z%dd Z&dd  Z'd!d" Z(ej)*d#g d$d%d& Z+d'd( Z,d)d* Z-d+d, Z.d-d. Z/d/d0 Z0d1d2 Z1dS )3    N)chain)check_figures_equalimage_comparisonc                  C   s<  t  } | ddg | ddg d}| j|}tj|ddddd}| | |j	| jksbJ tj|dddd dd	}|
 sJ | | t|j	tjsJ tj|d
d
t dd}| | t|j	tjsJ tj|ddddd}| }|
 rJ | | | |ksJ |
 s&J |j	| jks8J d S )N         r   yellow      ?)widthheightfcalphax   coral)r   r   r   	transformr   d   )r   r   r   r   )pltaxesset_xlimset_ylim	transDatar   mpatchesEllipse	add_patchZ
_transformZis_transform_set
isinstancemtransformsIdentityTransformget_transform)axxy_dataxy_pixeZintermediate_transform r#   l/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/matplotlib/tests/test_artist.pytest_patch_transform_of_none   s8    




r%   c                  C   s  t  } | ddg | ddg d}| j|}tj|ddd}tj	|gddd}| 
| | |  | jkszJ tj|ddd}tj	|gd	dd}|d  | 
| t| tjsJ tj|d
d
d}tj	|gt dd}| 
| t|jtjsJ d S )Nr   r   r   )r   r   r	   r
   )	facecolorr   r   r   r   )r   r   )r   r   r   r   r   r   r   r   mcollectionsZPatchCollectionadd_collectionZget_offset_transformr   Zset_transformr   r   r   Z_transOffset)r   r    r!   r"   cr#   r#   r$   !test_collection_transform_of_none<   s.    




r*   Zclip_path_clippingT)remove_textc            	      C   s  t j  } |  jd9  _|  jd8  _t j  }|jd d d |_t j| |}t jd }| jd9  _tj	ddddd\}\}}t
j|gd	d
dddd}|||j || tj|d	d
dddd}|||j || |ddg |ddg d S )N   r      g@r   T)ZsharexZsharey   blueredgffffff?*)lw	edgecolorr&   r   hatchr   )mpathPathZunit_rectangledeepcopyZverticesZunit_circleZmake_compound_pathZunit_regular_starr   subplotsr'   ZPathCollectionset_clip_pathr   r(   r   	PathPatchr   r   r   )	ZexteriorZinteriorZ	clip_pathZstarfigax1ax2colpatchr#   r#   r$   test_clipping`   s*    

rB   Zpng)
extensionsc                 C   s   |  g d}|ddgddg\}tddgddgddgddgddgg}tj||jd}|| | g d}|ddgddg |jddd |jddd d S )	N)r   r   r   r   r6   r   r   r   )r   )r
   g      ?)ZxlimZylim)	Zadd_axesplotr7   r8   r   r<   r   r;   set)Zfig_testZfig_refZax_testlpZax_refr#   r#   r$   test_clipping_zoom|   s    (
rH   c                  C   s   t jd} t jd}t \}}|| |d |dd t }|j|dd t	|
 dk shJ t }|j|dd t	|
 dk sJ d S )	Ni N  zk.r   r   pdf)formati@  svg)nprandomr   r:   rD   r   ioBytesIOZsavefiglengetvalue)xyr=   r   rI   rK   r#   r#   r$   test_cull_markers   s    rT   Zhatchingdefault)r+   stylec                  C   s   t dd\} }tjddddd}|| tjddgdg|jdd	}|| tjd
ddddd}|| tjddgdg|jddd}|| |	dd |
dd d S )Nr   r   r   r   r,   /)r5   i>  )g      ?      @)sizesoffsetstransOffsetr5   )r,   r   ZC1)r5   r4   )g      @rY   )rZ   r[   r\   r5   r4   r      	   )r   r:   r   Z	Rectangler   r'   ZRegularPolyCollectionr   r(   r   r   )r=   r   Zrect1Zrect2Zrect3Zrect4r#   r#   r$   test_hatching   s&    





r_   c                  C   s   t  \} }|tddd}|td\}| js>J |jsHJ | j	
  | jr\J |jrfJ |jrpJ ||jv s~J ||jvsJ |j|u sJ |  |  ||fD ] }|jd u sJ |jd u sJ q||jvsJ | jsJ |jsJ d S )N$   r.   r/   )r   r:   ZimshowrL   arangeZreshaperD   rangestaleZcanvasZdrawZ_mouseover_setr   removefigure)r=   r   Zimlnartr#   r#   r$   test_remove   s(    






rh   zdefault_edges.pngc               	   C   s   dt jd< t dd\} \\}}\}}|tdtddtdd tdd |jtdtddd	 |jd
d
ddtddd |	d |
d tjtg dtjjtjjtjjtjjgd|jd}|| d S )Nr.   ztext.kerning_factorr   
   rR   r   oZedge)Zalignr   ZBOX   Zsawtooth)Zboxstyle)sizeZbbox)r-   r   )rW   )r   r   )r   r   rW   none)r   r   )r   ZrcParamsr:   rD   rL   ra   bartextdictr   r   r   r<   r7   r8   ZMOVETOZCURVE3Z	CLOSEPOLYr   r   )r=   r>   r?   Zax3Zax4Zpp1r#   r#   r$   test_default_edges   s$    



rq   c                  C   s   t g g } |   d S N)mlinesLine2DZ
properties)rf   r#   r#   r$   test_properties   s    ru   c                  C   s   t g  t g g t  \} }|td}|td}tt||dd t j|j dd t	
 }t j|d|d | dksJ d S )	Nr   r3   r/   green)colorzorder)filez  zorder: float
)r   Zsetpr:   rD   rb   martistr   ZspinesvaluesrN   StringIOrQ   )r=   r   Zlines1Zlines2sior#   r#   r$   	test_setp   s    
r~   c                  C   sp   t  \} }|jtdd d\}| tjjks4J |d | dksNJ |d  | tjjkslJ d S )Nr/   )rx   i@ )	r   r:   rD   rb   Z
get_zorderrs   rt   rx   
set_zorder)r=   r   rf   r#   r#   r$   test_None_zorder  s    

r   zaccept_clause, expected)) unknown)zACCEPTS: [ '-' | '--' | '-.' ]z[ '-' | '--' | '-.' ])zACCEPTS: Some description.Some description.)z.. ACCEPTS: Some description.r   )z	arg : intint)z
*arg : intr   )z"arg : int
ACCEPTS: Something else.zSomething else. c                 C   s>   G dd dt j}d|  |j_t |d}||ks:J d S )Nc                   @   s   e Zd Zdd ZdS )z:test_artist_inspector_get_valid_values.<locals>.TestArtistc                 S   s   d S rr   r#   )selfargr#   r#   r$   set_f  s    z@test_artist_inspector_get_valid_values.<locals>.TestArtist.set_fN)__name__
__module____qualname__r   r#   r#   r#   r$   
TestArtist  s   r   z
    Some text.

    %s
    f)rz   Artistr   __doc__ArtistInspectorZget_valid_values)Zaccept_clauseexpectedr   Zvalid_valuesr#   r#   r$   &test_artist_inspector_get_valid_values  s    
r   c                  C   s*   t tj} |  }|d dhks&J d S )NZ	linewidthr3   )rz   r   rs   rt   Zget_aliases)Zaialiasesr#   r#   r$   !test_artist_inspector_get_aliases&  s    r   c                  C   s   t  } tjtdd | d W d    n1 s60    Y  tjtdd | g d W d    n1 sr0    Y  tjtdd | d W d    n1 s0    Y  tjtdd | tj W d    n1 s0    Y  d S )N^alpha must be numeric or Nonematchstring)r   r   r   outside 0-1 range皙?)	rz   r   pytestraises	TypeErrorZ	set_alpha
ValueErrorrL   nanrg   r#   r#   r$   test_set_alpha-  s    (,(r   c                  C   s2  t  } tjtdd | d W d    n1 s60    Y  tjtdd | d W d    n1 sn0    Y  tjtdd | tj W d    n1 s0    Y  tjtdd | ddg W d    n1 s0    Y  tjtdd  | dtjg W d    n1 s$0    Y  d S )Nr   r   r   r   r   zalpha must be between 0 and 1r
   )	rz   r   r   r   r   Z_set_alpha_for_arrayr   rL   r   r   r#   r#   r$   test_set_alpha_for_array9  s    ((*,r   c                     s    fdd d _ t } |  } j dks2J |    j dksHJ | d  j dks`J | | |    j dksJ d S )Nc                    s     j d7  _ d S )Nr   )counter)artistfuncr#   r$   r   H  s    ztest_callbacks.<locals>.funcr   r   ri   r   )r   rz   r   Zadd_callbackZpchangedr   Zremove_callback)rg   oidr#   r   r$   test_callbacksG  s    


r   c                  C   sv   G dd dt j} t| jds"J d| jjv s2J G dd d| }t|jdsRJ d|jjv sbJ d|jjv srJ dS )	z3Test autogenerated ``set()`` for Artist subclasses.c                   @   s   e Zd Zdd ZdS )z%test_set_signature.<locals>.MyArtist1c                 S   s   d S rr   r#   r   valr#   r#   r$   set_myparam1\  s    z2test_set_signature.<locals>.MyArtist1.set_myparam1N)r   r   r   r   r#   r#   r#   r$   	MyArtist1[  s   r   _autogenerated_signatureZmyparam1c                   @   s   e Zd Zdd ZdS )z%test_set_signature.<locals>.MyArtist2c                 S   s   d S rr   r#   r   r#   r#   r$   set_myparam2c  s    z2test_set_signature.<locals>.MyArtist2.set_myparam2N)r   r   r   r   r#   r#   r#   r$   	MyArtist2b  s   r   Zmyparam2Nrz   r   hasattrrE   r   )r   r   r#   r#   r$   test_set_signatureY  s    r   c                  C   sV   G dd dt j} t| jdr"J | jjdks2J G dd d| }|j| ju sRJ dS )z=set() defined in Artist subclasses should not be overwritten.c                   @   s   e Zd Zdd ZdS )z*test_set_is_overwritten.<locals>.MyArtist3c                 [   s   dS )Not overwritten.Nr#   )r   kwargsr#   r#   r$   rE   o  s    z.test_set_is_overwritten.<locals>.MyArtist3.setN)r   r   r   rE   r#   r#   r#   r$   	MyArtist3m  s   r   r   r   c                   @   s   e Zd ZdS )z*test_set_is_overwritten.<locals>.MyArtist4N)r   r   r   r#   r#   r#   r$   	MyArtist4u  s   r   Nr   )r   r   r#   r#   r$   test_set_is_overwrittenk  s
    r   )2rN   	itertoolsr   ZnumpyrL   r   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.patchesZpatchesr   Zmatplotlib.lineslinesrs   Zmatplotlib.pathpathr7   Zmatplotlib.transformsZ
transformsr   Zmatplotlib.collectionscollectionsr'   Zmatplotlib.artistr   rz   Zmatplotlib.testing.decoratorsr   r   r%   r*   rB   rH   rT   r_   rh   rq   ru   r~   r   markZparametrizer   r   r   r   r   r   r   r#   r#   r#   r$   <module>   sD   *$





	
