o
    hH                     @   s  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 d dlmZ  d dl!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" Z0ej12d#g d$d%d& Z3d'd( Z4d)d* Z5d+d, Z6d-d. Z7d/d0 Z8d1d2 Z9d3d4 Z:d5d6 Z;d7d8 Z<d9d: Z=dS );    N)chain)check_figures_equalimage_comparisonc                  C   s2  t  } | dd | dd d}| j|}tj|ddddd}| | |j	| jks/J tj|dddd dd	}|
 s@J | | t|j	tjsNJ tj|d
d
t dd}| | t|j	tjshJ tj|ddddd}| }|
 r|J | | | |ksJ |
 sJ |j	| jksJ 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_patch
_transformis_transform_set
isinstancemtransformsIdentityTransformget_transform)axxy_dataxy_pixeintermediate_transform r&   p/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/matplotlib/tests/test_artist.pytest_patch_transform_of_none   s8   




r(   c                  C   s  t  } | dd | dd d}| j|}tj|ddd}tj	|gddd}| 
| | |  | jks;J tj|ddd}tj	|gd	dd}|d  | 
| t| tjs`J tj|d
d
d}tj	|gt dd}| 
| t| tjsJ d S )Nr   r   r   )r   r   r	   r
   )	facecolorr   r   r   r   )r   r   )r   r   r   r   r   r   r   r   mcollectionsPatchCollectionadd_collectionget_offset_transformr    set_transformr   r   r   )r!   r"   r#   r$   cr&   r&   r'   !test_collection_transform_of_none?   s.   




r0   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)sharexsharey   blueredgffffff?*)lw	edgecolorr)   r   hatchr   )mpathPathunit_rectangledeepcopyverticesunit_circlemake_compound_pathunit_regular_starr   subplotsr*   PathCollectionset_clip_pathr   r,   r   	PathPatchr   r   r   )	exteriorinterior	clip_pathstarfigax1ax2colpatchr&   r&   r'   test_clippingc   s*   

rU   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   r?   r   r   r   )r   )r
   g      ?)xlimylim)	add_axesplotr@   rA   r   rK   r   rJ   set)fig_testfig_refax_testlpax_refr&   r&   r'   test_clipping_zoom   s   (
rc   c                  C   s   t jd} t jd}t \}}|| |d |dd t }|j|dd t	|
 dk s4J t }|j|dd t	|
 dk sIJ d S )	Ni N  zk.r   r   pdf)formati@  svg)nprandomr   rH   r[   r   ioBytesIOsavefiglengetvalue)xyrP   r!   rd   rf   r&   r&   r'   test_cull_markers   s   rp   hatchingdefault)r2   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   r3   /)r>   i>  )g      ?      @)sizesoffsetsoffset_transformr>   )r3   r   C1)r>   r=   )g      @rv   )rw   rx   ry   r>   r=   r      	   )r   rH   r   	Rectangler   r*   RegularPolyCollectionr   r,   r   r   )rP   r!   rect1rect2rect3rect4r&   r&   r'   test_hatching   s"   



r   c                  C   s   t  \} }|tddd}|td\}| jsJ |js$J | j	
  | jr.J |jr3J |jr8J ||jv s?J ||jvsFJ |j|u sMJ |  |  ||fD ]}|jd u sbJ | d u sjJ qY||jvsrJ | jswJ |js|J d S )N$   r5   r8   )r   rH   imshowrg   arangereshaper[   rangestalecanvasdraw_mouseover_setr   remove
get_figure)rP   r!   imlnartr&   r&   r'   test_remove   s(   






r   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 )Nr5   ztext.kerning_factorr   
   rn   r   oedge)alignr   BOX   sawtooth)boxstyle)sizebbox)r4   r   )rt   r   r   r   r   rt   none)r   r   )r   rcParamsrH   r[   rg   r   bartextdictr   r   r   rK   r@   rA   MOVETOCURVE3	CLOSEPOLYr   r   )rP   rQ   rR   ax3ax4pp1r&   r&   r'   test_default_edges   s$   



r   c                  C   s   t g g } |   d S N)mlinesLine2D
properties)r   r&   r&   r'   test_properties   s   r   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sGJ d S )	Nr   r<   r8   green)colorzorder)filez  zorder: float
)r   setprH   r[   r   martistr   spinesvaluesri   StringIOrm   )rP   r!   lines1lines2sior&   r&   r'   	test_setp   s   
r   c                  C   sp   t  \} }|jtdd d\}| tjjksJ |d | dks'J |d  | tjjks6J d S )Nr8   )r   i@ )	r   rH   r[   r   
get_zorderr   r   r   
set_zorder)rP   r!   r   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                   @      e Zd Zdd ZdS )z:test_artist_inspector_get_valid_values.<locals>.TestArtistc                 S      d S r   r&   )selfargr&   r&   r'   set_f     z@test_artist_inspector_get_valid_values.<locals>.TestArtist.set_fN)__name__
__module____qualname__r   r&   r&   r&   r'   
TestArtist      r   z
    Some text.

    %s
    f)r   Artistr   __doc__ArtistInspectorget_valid_values)accept_clauseexpectedr   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 )N	linewidthr<   )r   r   r   r   get_aliases)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 sw   Y  tjtdd | g d W d    n1 s9w   Y  tjtdd | d W d    n1 sUw   Y  tjtdd | tj W d    d S 1 ssw   Y  d S )N^alpha must be numeric or Nonematchstring)r   r   r   outside 0-1 range皙?)	r   r   pytestraises	TypeError	set_alpha
ValueErrorrg   nanr   r&   r&   r'   test_set_alpha.  s   "r   c                  C   s2  t  } tjtdd | d W d    n1 sw   Y  tjtdd | d W d    n1 s7w   Y  tjtdd | tj W d    n1 sTw   Y  tjtdd | ddg W d    n1 srw   Y  tjtdd | dtjg W d    d S 1 sw   Y  d S )Nr   r   r   r   r   zalpha must be between 0 and 1r
   )	r   r   r   r   r   _set_alpha_for_arrayr   rg   r   r   r&   r&   r'   test_set_alpha_for_array:  s    "r   c                     s    fdd d _ t } |  } j dksJ |    j dks$J | d  j dks0J | | |    j dks@J d S )Nc                    s     j d7  _ d S )Nr   )counter)artistfuncr&   r'   r   I  s   ztest_callbacks.<locals>.funcr   r   r   r   )r   r   r   add_callbackpchangedr   remove_callback)r   oidr&   r   r'   test_callbacksH  s   


r   c                  C   sv   G dd dt j} t| jdsJ d| jjv sJ G dd d| }t|jds)J d|jjv s1J d|jjv s9J dS )	z3Test autogenerated ``set()`` for Artist subclasses.c                   @   r   )z%test_set_signature.<locals>.MyArtist1c                 S   r   r   r&   r   valr&   r&   r'   set_myparam1]  r   z2test_set_signature.<locals>.MyArtist1.set_myparam1N)r   r   r   r   r&   r&   r&   r'   	MyArtist1\  r   r   _autogenerated_signaturemyparam1c                   @   r   )z%test_set_signature.<locals>.MyArtist2c                 S   r   r   r&   r   r&   r&   r'   set_myparam2d  r   z2test_set_signature.<locals>.MyArtist2.set_myparam2N)r   r   r   r   r&   r&   r&   r'   	MyArtist2c  r   r   myparam2Nr   r   hasattrr\   r   )r   r   r&   r&   r'   test_set_signatureZ  s   r  c                  C   sV   G dd dt j} t| jdrJ | jjdksJ G dd d| }|j| ju s)J dS )z=set() defined in Artist subclasses should not be overwritten.c                   @   r   )z*test_set_is_overwritten.<locals>.MyArtist3c                 [   s   dS )Not overwritten.Nr&   )r   kwargsr&   r&   r'   r\   p  s    z.test_set_is_overwritten.<locals>.MyArtist3.setN)r   r   r   r\   r&   r&   r&   r'   	MyArtist3n  s    r  r   r  c                   @      e Zd ZdS )z*test_set_is_overwritten.<locals>.MyArtist4Nr   r   r   r&   r&   r&   r'   	MyArtist4v      r  Nr   )r  r  r&   r&   r'   test_set_is_overwrittenl  s
   r	  c            	      C   s~  t d} d| d< d| d< d| d< d| d	< d
| d< d| d< d| d< d| d< d| d< t \}}|d tt dddd}|j| d|d}g d}t	| j
|D ]\}}|||ks^J qQt  t \}}|d tjd d}tt dddd}|j| ||d}g d}t	| j
|D ]\}}|||ksJ qt  t \}}|d tjd d}tt dddd}|j| ||d}g d}t	| j
|D ]\}}|||ksJ qt  t d } d!| d
< d"| d< d#| d$< d%| d&< d| d'< d(| d)< d*| d+< g d,}t \}}|d- tjt jd
dd'd.d/dd0d1d2}|j| d|d}t	| j
|D ]\}}|||ksCJ q5t  t \}}|d3 tjt jd
dd'd.d/dd0d4d2}|j| d|d}t	| j
|D ]\}}|||ksJ qrt  t \}}|d5 tjt jd
dd'd.d/dd0d6d2}|j| d|d}t	| j
|D ]\}}|||ksJ qt  t \}}|d7 tjt jd
dd'd.d/dd0d8d2}|j| d|d}t	| j
|D ]\}}|||ksJ qt  t \}}|d9 tjt jd
dd'd.d/dd.d1d2}|j| d|d}t	| j
|D ]\}}|||ks7J q)t  d:S );z7Test if cursor data is correct when using BoundaryNorm.)r   r   g?rt   gGz?)r   r   g+?)r   r   r4   r   r   r   r   )r   r   g
ףp=
?)r   r   g;On?)r   r   gH}M?r   z-1..1 to 0..256 in 0.1      RdBu_r)cmapnorm)	[0.9][1.]r  [-1.0][0.0][1.0][0.09][0.009][0.0009]z-1..1 to 0..256 in 0.01   )	z[0.90]z[0.99]r  z[-1.00]z[0.00]z[1.00]r  r  r  z-1..1 to 0..256 in 0.001i  )	z[0.900]z[0.990]z[0.999]z[-1.000]z[0.000]z[1.000]z[0.090]r  r  )r{   r   g      g        g?r   r
   r   r3   g      ?r8   g       @r5   )r  r  z[0.1]z[0.5]r  r  z[2.0]znoclip, neitherT)endpointFneither)clipextendznoclip, minminznoclip, maxmaxznoclip, bothbothzclip, neitherN)rg   emptyr   rH   suptitlemcolorsBoundaryNormlinspacer   zipflatformat_cursor_dataclosempl	colormaps	resampled)	XrP   r!   r  imglabels_listvlabelr  r&   r&   r'   $test_format_cursor_data_BoundaryNorm|  s   










r0  c                  C   sf   G dd dt j} d| jv sJ | jd | ju sJ G dd d| }d|jvs)J |j| ju s1J d S )Nc                   @   r  )z$test_auto_no_rasterize.<locals>.Gen1Nr  r&   r&   r&   r'   Gen1  r  r1  r   c                   @   r  )z$test_auto_no_rasterize.<locals>.Gen2Nr  r&   r&   r&   r'   Gen2$  r  r2  )r   r   __dict__r   )r1  r2  r&   r&   r'   test_auto_no_rasterize  s   r4  c                  C   sN   G dd dt j} |  }t }d||dksJ d|j|ddks%J d S )Nc                   @   r   )z1test_draw_wraper_forward_input.<locals>.TestKlassc                 S   s   |S r   r&   )r   rendererextrar&   r&   r'   r   -  r   z6test_draw_wraper_forward_input.<locals>.TestKlass.drawN)r   r   r   r   r&   r&   r&   r'   	TestKlass,  r   r7  aardvark)r6  )r   r   mbackend_basesRendererBaser   )r7  r   r5  r&   r&   r'   test_draw_wraper_forward_input+  s
   r;  c                  C   sV  t  } |  }| }| }| jdd| u sJ | jdd| u s$J | |u s,J |jdd|u s6J |jdd| u s@J |jdd|u sJJ |jdd| u sTJ ttj | | u scJ W d    n1 smw   Y  | | u szJ t	
g g }|jddd u sJ |jddd u sJ |j|u sJ | j| u sJ |j| u sJ d S )NT)rootF)r   figure
subfiguresrH   r   r   warnsr(  MatplotlibDeprecationWarningr   r   )rP   sfig1sfig2r!   r   r&   r&   r'   test_get_figure7  s*   rC  )>ri   	itertoolsr   numpyrg   r   matplotlib.colorscolorsr!  matplotlib.pyplotpyplotr   matplotlib.patchespatchesr   matplotlib.lineslinesr   matplotlib.pathpathr@   matplotlib.transforms
transformsr   matplotlib.collectionscollectionsr*   matplotlib.artistr   r   matplotlib.backend_basesbackend_basesr9  
matplotlibr(  matplotlib.testing.decoratorsr   r   r(   r0   rU   rc   rp   r   r   r   r   r   r   markparametrizer   r   r   r   r   r  r	  r0  r4  r;  rC  r&   r&   r&   r'   <module>   sV    *$






	 "