a
    s=icp                  	   @   s  d dl Z d dlZd dlmZ d dlmZmZ d dlmZmZm	Z	 d dl
Zd dlmZmZmZ d dlZd dlmZmZ d dlmZ d dlmZ G dd	 d	ZG d
d dZG dd dZdd Zdd Ze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!d"d#d$d%giifd d!d"d#d$d$d%giiffZ&di i fd d!d"d d!d"i fd%d!id$d!id#d$d$d%giiffZ'ej!"d&e&d'd( Z(ej!"d)e'd*d+ Z)d,d- Z*d.d/ Z+d0d1 Z,d2d3 Z-d4d5 Z.d6d7 Z/d8d9 Z0ej!"d:e1d;2d<d=d$fe1d;d$fe1d;e1d<fgd>d? Z3d@dA Z4dBdC Z5dDdE Z6dFdG Z7dHdI Z8dJdK Z9dLdM Z:dNdO Z;dPdQ Z<dRdS Z=dTdU Z>dVdW Z?dXdY Z@dZd[ ZAd\d] ZBdS )^    N)ref)patchMock)datetimedate	timedelta)assert_array_equalassert_approx_equalassert_array_almost_equal)_apicbook)delete_masked_pointsc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
Test_delete_masked_pointsc                 C   s@   t t" tdtdd W d    n1 s20    Y  d S )Nza stringg      ?g      @)pytestraises
ValueErrorr   nparangeself r   l/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/matplotlib/tests/test_cbook.pytest_bad_first_arg   s    z,Test_delete_masked_points.test_bad_first_argc                 C   s^   g d}dddt jt jdg}t||\}}g d}t|t ||  t|t ||  d S )N)abcdef            )r   r   r       )r   nanr   r   array)r   Za1Za2Zresult1Zresult2indr   r   r   test_string_seq   s    z)Test_delete_masked_points.test_string_seqc              	   C   s   t dddt dddt dddt dddt dddt dddg}tjjdddtjtjdgg dd	}t||}g d
}t|d t||  t|d ||   d S )Ni  r   r    r!      r#   r"   FFTTFFmaskr   r   r#   r   )r   r   mar%   r$   r   r   
compressed)r   datesa_maskedactualr&   r   r   r   test_datetime    s    
z'Test_delete_masked_points.test_datetimec                 C   sp   t jjdddt jt jdgg dd}tg d}t||}g d}t|d	 ||   t|d ||  d S )
Nr   r    r!   r"   r)   r*   )rgr   r   myr,   r   )	r   r-   r%   r$   mcolorsZto_rgba_arrayr   r   r.   )r   r0   Za_rgbar1   r&   r   r   r   	test_rgba+   s    
z#Test_delete_masked_points.test_rgbaN)__name__
__module____qualname__r   r'   r2   r8   r   r   r   r   r      s   r   c                   @   st   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d Zdd Zdd ZdS )Test_boxplot_statsc                 C   s   t jd d| _d| _t jj| j| jfddd| _tg d| _t	
| j| _dd	d
ddt g dddddd
| _ddd| _ddt ddgd| _ddd| _ddd| _d S )Ni  %   r(         ?g      ?)sizemeansigma)r@   medq1q3iqrcilocihiwhislowhishiflierslabelgP$C@g@ÿg>zzD*@gjtxJ*@gDm(
@)Ӿ#W@79qU@gEɳE@gqמC@g]Y?g6 v-@gIQ;@g inޓ?)
rG   rF   rE   r@   rB   rJ   rC   rD   rI   rH   gN!@g?)rG   rF   g =ɳE@rL   rM   )rI   rH   rJ   geLM?)rH   rI   g,#W@)r   randomseedZnrowsZncolsZ	lognormaldatasorted
known_keysr   boxplot_statsstd_resultsr%   known_nonbootstrapped_resknown_bootstrapped_ciknown_whis3_resknown_res_percentilesknown_res_ranger   r   r   r   setup6   s@    zTest_boxplot_stats.setupc                 C   s   t | jtsJ d S N)
isinstancerT   listr   r   r   r   test_form_main_listh   s    z&Test_boxplot_stats.test_form_main_listc                 C   s   | j D ]}t|tsJ qd S r[   )rT   r\   dictr   resr   r   r   test_form_each_dictk   s    
z&Test_boxplot_stats.test_form_each_dictc                 C   s&   | j D ]}t|t| jksJ qd S r[   )rT   setrR   r`   r   r   r   test_form_dict_keyso   s    
z&Test_boxplot_stats.test_form_dict_keysc                 C   s0   | j d }| j D ]\}}t|| | qd S )Nr   )rT   rU   itemsr
   )r   ra   keyvaluer   r   r   test_results_baselines   s    
z(Test_boxplot_stats.test_results_baselinec                 C   s>   t j| jdd}|d }| j D ]\}}t|| | q"d S )Ni'  )Z	bootstrapr   )r   rS   rP   rV   re   r	   r   resultsra   rf   rg   r   r   r   test_results_bootstrappedx   s    z,Test_boxplot_stats.test_results_bootstrappedc                 C   s>   t j| jdd}|d }| j D ]\}}t|| | q"d S )Nr!   Zwhisr   )r   rS   rP   rW   re   r
   ri   r   r   r   test_results_whiskers_float~   s    z.Test_boxplot_stats.test_results_whiskers_floatc                 C   sB   t j| jddgd}|d }| j D ]\}}t|| | q&d S )Nr   d   rl   )r   rS   rP   rY   re   r
   ri   r   r   r   test_results_whiskers_range   s    z.Test_boxplot_stats.test_results_whiskers_rangec                 C   sB   t j| jddgd}|d }| j D ]\}}t|| | q&d S )Nr#   _   rl   r   )r   rS   rP   rX   re   r
   ri   r   r   r   !test_results_whiskers_percentiles   s    z4Test_boxplot_stats.test_results_whiskers_percentilesc                 C   sb   g d}t j| j|d}t||D ]\}}|d |ks"J q"t | j}|D ]}d|vsLJ qLd S )N)ZTest1r    ZAardvarkr(   labelsrK   )r   rS   rP   zip)r   rs   rj   Zlabra   r   r   r   test_results_withlabels   s    z*Test_boxplot_stats.test_results_withlabelsc                 C   sF   ddg}t t  tj| j|d W d    n1 s80    Y  d S )Nr   r    rr   )r   r   r   r   rS   rP   )r   rs   r   r   r   test_label_error   s    z#Test_boxplot_stats.test_label_errorc                 C   sF   t jjdd}tt t| W d    n1 s80    Y  d S )N)"   rw   rw   )r?   )r   rN   normalr   r   r   r   rS   )r   rP   r   r   r   test_bad_dims   s    z Test_boxplot_stats.test_bad_dimsc                 C   s   t jdd}t d|dg}tj|dd}tj|dd}|d d	 dksLJ |d d
 dks`J t|d d ddg |d d	 dksJ |d d
 dksJ t|d d g  d S )N   )shapei   F)Z	autorangeTr   rH   rI   rJ   )r   ZzerosZhstackr   rS   r
   )r   xZbstats_falseZbstats_truer   r   r   "test_boxplot_stats_autorange_false   s    z5Test_boxplot_stats.test_boxplot_stats_autorange_falseN)r9   r:   r;   rZ   r^   rb   rd   rh   rk   rm   ro   rq   ru   rv   ry   r~   r   r   r   r   r<   5   s   2
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e	j
dddgdd Ze	j
dddgdd Ze	j
dddgdd Ze	j
dddgdd Zdd Zdd ZdS )Test_callback_registryc                 C   s   d| _ t | _d S )Ntest)signalr   CallbackRegistry	callbacksr   r   r   r   rZ      s    zTest_callback_registry.setupc                 C   s$   |r| j ||S | j ||S d S r[   )r   connectZ_connect_picklable)r   sfuncpickler   r   r   r      s    zTest_callback_registry.connectc                 C   s   | j |S r[   )r   
disconnect)r   Zcidr   r   r   r      s    z!Test_callback_registry.disconnectc                 C   s:   t | jj| jg }t | jj| j}||ks6J |S r[   )lenr   _func_cid_mapgetr   )r   Zcount1Zcount2r   r   r   count   s    zTest_callback_registry.countc                 C   s@   t j  | jji ksJ | jji ks*J | jjt ks<J d S r[   )r   testingbreak_cyclesr   r   Z_pickled_cidsrc   r   r   r   r   is_empty   s    
zTest_callback_registry.is_emptyc                 C   s.   t j  | jji ksJ | jji ks*J d S r[   )r   r   r   r   r   r   r   r   r   is_not_empty   s    
z#Test_callback_registry.is_not_emptyr   TFc                 C   s   |    t }| | j|j|}t|tks0J |   | | j|j|}||ksVJ |   t| j	j
dksrJ t| j	j	dksJ ~|    d S )Nr   )r   r   r   r   dummytypeintr   r   r   r   )r   r   mini_mecid1Zcid2r   r   r   test_callback_complete   s    z-Test_callback_registry.test_callback_completec                 C   sN   |    t }| | j|j|}t|tks0J |   | | |    d S r[   	r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   test_callback_disconnect   s    
z/Test_callback_registry.test_callback_disconnectc                 C   sN   |    t }| | j|j|}t|tks0J |   | d |   d S )Nfoor   r   r   r   r   test_callback_wrong_disconnect   s    
z5Test_callback_registry.test_callback_wrong_disconnectc                 C   s|   |    t }| | j|j| t }| | j|j| t }| | j|j| |   |  dkshJ d }d }|    d S )Nr    )r   r   r   r   r   r   r   )r   r   r   Zmini_me2r   r   r   'test_registration_on_non_empty_registry  s    z>Test_callback_registry.test_registration_on_non_empty_registryc                 C   s   d S r[   r   r   r   r   r   r   )  s    zTest_callback_registry.dummyc                 C   s"   t ttt dsJ d S )Nr   )hasattrr   loadsdumpsr   r   r   r   r   r   test_pickling,  s    z$Test_callback_registry.test_picklingN)r9   r:   r;   rZ   r   r   r   r   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r      s    



r   c                 C   s   t  }|ddd  |t ddd  tt |dd W d    n1 sV0    Y  |  }|j	|j
  krdksn J |t ddd  |dd |  }|j	dksJ d	|j
v sJ d S )
Nr   c                   S   s   d S r[   r   r   r   r   r   <lambda>3      zAtest_callbackregistry_default_exception_handler.<locals>.<lambda>"_get_running_interactive_frameworkc                   S   s   d S r[   r   r   r   r   r   r   6  r   zargument mismatch c                   S   s   dS )Nznot-noner   r   r   r   r   r   =  r   z,takes 0 positional arguments but 1 was given)r   r   r   setattrr   r   	TypeErrorprocessZ
readouterrouterr)ZcapsysmonkeypatchcbZouterrr   r   r   /test_callbackregistry_default_exception_handler1  s     
*
r   c                    s   G dd dt  dd }dd } fdd}tjd d	}|d
| tj|d	}|d
| tj|d	}|d
| tjd|tg| g|tgg| S )Nc                   @   s   e Zd ZdS )z%raising_cb_reg.<locals>.TestExceptionNr9   r:   r;   r   r   r   r   TestExceptionE  s   r   c                   S   s   t d S r[   )RuntimeErrorr   r   r   r   raise_runtime_errorH  s    z+raising_cb_reg.<locals>.raise_runtime_errorc                   S   s   t d S r[   r   r   r   r   r   raise_value_errorK  s    z)raising_cb_reg.<locals>.raise_value_errorc                    s   t | tr | d S r[   )r\   r   excpr   r   r   transformerN  s    
z#raising_cb_reg.<locals>.transformerZexception_handlerr   zcb, excp)		Exceptionr   r   r   r   r   r   r   r   )r   r   r   r   Zcb_oldZcb_filtZcb_filt_passr   r   r   raising_cb_regD  s$    r   c                 C   sJ   |  tddd  t| |d W d    n1 s<0    Y  d S )Nr   c                   S   s   d S r[   r   r   r   r   r   r   h  r   z@test_callbackregistry_custom_exception_handler.<locals>.<lambda>r   )r   r   r   r   r   )r   r   r   r   r   r   .test_callbackregistry_custom_exception_handlere  s
    
r   c                     s   t jdgd} g   fdd}| d| tt | d| W d    n1 sV0    Y  | dd tt | dd W d    n1 s0    Y   dgksJ d S )Nr   )Zsignalsc                    s     |  d S r[   )append)r}   rj   r   r   r   p  r   z)test_callbackregistry_signals.<locals>.cbbarr   )r   r   r   r   r   r   r   )crr   r   r   r   test_callbackregistry_signalsm  s    **r   c               	   C   s^  dd } t j| d}dd }dd }|d| |d	| | $ |d |d	 W d    n1 sn0    Y  |jdd
R |d tjtdd |d	 W d    n1 s0    Y  W d    n1 s0    Y  tjtdd |d W d    n1 s0    Y  tjtdd |d	 W d    n1 sP0    Y  d S )Nc                 S   s   | d S r[   r   r   r   r   r   raise_handler}  s    z5test_callbackregistry_blocking.<locals>.raise_handlerr   c                   S   s   t dd S )N1 should be blockedr   r   r   r   r   
test_func1  s    z2test_callbackregistry_blocking.<locals>.test_func1c                   S   s   t dd S )N2 should be blockedr   r   r   r   r   
test_func2  s    z2test_callbackregistry_blocking.<locals>.test_func2Ztest1Ztest2)r   r   matchr   )r   r   r   Zblockedr   r   r   r   )r   r   r   r   r   r   r   test_callbackregistry_blockingz  s"    

(
F*r   zline, result)	)a : no_commentr   )a : "quoted str"r   )za : "quoted str" # commentr   )a : "#000000"r   )za : "#000000" # commentr   )a : ["#000000", "#FFFFFF"]r   )z$a : ["#000000", "#FFFFFF"] # commentr   )z"a : val  # a comment "with quotes"za : val)z# only comment "with quotes" xxr   c                 C   s   t | |ksJ dS )z+Strip everything from the first unquoted #.N)r   _strip_comment)lineresultr   r   r   test_strip_comment  s    r   c                   C   s<   t jtdd td W d    n1 s.0    Y  d S )NzMissing closing quoter   zgrid.color: "aa)r   r   r   r   r   r   r   r   r   test_strip_comment_invalid  s    r   c                  C   s   dddd} g d}g d}g d}|t t|  ks>J |t t|  ksXJ |t t|  ksrJ |t|ksJ |t|ksJ d S )Nr   r    r!   r   r   r   r   r    r!   ))r   r   )r   r    )r   r!   )rQ   r   Zsanitize_sequencekeysvaluesre   )r   kvir   r   r   test_sanitize_sequence  s    r   r   r    )r   r   Zalias_mappingr   r   zinp, kwargs_to_normc              	   C   sh   t tJ t " tj| fi | W d    n1 s<0    Y  W d    n1 sZ0    Y  d S r[   )r   r   r   r   'suppress_matplotlib_deprecation_warningr   normalize_kwargs)inpkwargs_to_normr   r   r   test_normalize_kwargs_fail  s    r   zinp, expected, kwargs_to_normc                 C   sF   t  * |tj| fi |ks$J W d    n1 s80    Y  d S r[   )r   r   r   r   )r   expectedr   r   r   r   test_normalize_kwargs_pass  s    
r   c               	   C   st   t tdT} td d| _tjtdd t	d W d    n1 sH0    Y  W d    n1 sf0    Y  d S )Nsys)Zreturn_valuez	\Adummy\Zr   r   )
r   objectr   r   	_getframer   ZwarnsUserWarningr   warn_external)Zmock_sysr   r   r   (test_warn_external_frame_embedded_python  s    r   c            	      C   s   t d} t d}t dd d d }t| ||\}}}t jg dtd}t jg dtd}t jg dtd}t|| t|| t|| t| |\}}t|| t|| d S )Nr(   r   r   r   r   r    r    r!   dtyper   r   r   r    r    r!   r!   )r!   r    r    r   r   r   r   )r   r   r   pts_to_prestepasarrayfloatr   	r}   y1y2ZxsZy1sZy2sZx_targetZ	y1_targetZ	y2_targetr   r   r   test_to_prestep  s    





r   c                  C   s   t g g } | jdksJ d S N)r    r   )r   r   r{   Zstepsr   r   r   test_to_prestep_empty  s    r   c            	      C   s   t d} t d}t dd d d }t| ||\}}}t jg dtd}t jg dtd}t jg dtd}t|| t|| t|| t| |\}}t|| t|| d S )Nr(   r   r   r   r   )r!   r!   r    r    r   r   r   )r   r   r   pts_to_poststepr   r   r   r   r   r   r   test_to_poststep  s    





r   c                  C   s   t g g } | jdksJ d S r   )r   r   r{   r   r   r   r   test_to_poststep_empty  s    r   c            	      C   s   t d} t d}t dd d d }t| ||\}}}t jg dtd}t jg dtd}t jg dtd}t|| t|| t|| t| |\}}t|| t|| d S )Nr(   r   )r         ?r   r>   r>         @r   r!   r   )r   r   r   r   r    r    r!   r!   )r!   r!   r    r    r   r   r   r   )r   r   r   pts_to_midstepr   r   r   r   r   r   r   test_to_midstep  s    





r   c                  C   s   t g g } | jdksJ d S r   )r   r   r{   r   r   r   r   test_to_midstep_empty$  s    r   args   r!   r(   c                 C   s8   t t tj|   W d    n1 s*0    Y  d S r[   )r   r   r   r   r   )r   r   r   r   test_step_fails)  s    r  c            
         s  G dd d  fddt dD  \} }}}}}t }|j|  tt|d t|ks`J t|| t|kszJ |dd  D ]}|| |sJ q||  |dd  D ]}|| |rJ qt	
|dd  |dd  D ]\}}	|||	sJ qd S )Nc                   @   s   e Zd ZdS )ztest_grouper.<locals>.DummyNr   r   r   r   r   Dummy4  s   r  c                    s   g | ]
}  qS r   r   .0_r  r   r   
<listcomp>6  r   z test_grouper.<locals>.<listcomp>r#   r   r   )ranger   Grouperjoinrc   r]   Zget_siblingsZjoinedremove	itertoolsproduct)
r   r   r   r   r   objsr4   otherABr   r  r   test_grouper3  s    $

$r  c                     s   G dd d  fddt dD } t }|j|   |j}| D ]}t||v s@J q@|t| d  }| dd  D ]}|t| |u srJ qrd S )Nc                   @   s   e Zd ZdS )z#test_grouper_private.<locals>.DummyNr   r   r   r   r   r  H  s   r  c                    s   g | ]
}  qS r   r   r  r  r   r   r  J  r   z(test_grouper_private.<locals>.<listcomp>r#   r   r   )r  r   r	  r
  _mappingr   )r  r4   mappingoZbase_setr   r  r   test_grouper_privateG  s    
r  c                  C   sj   t d} | j}dt|ks J dt|ks0J t|}|dksFJ dt|ksVJ dt|ksfJ d S )Nr#   r   r   )r   r   Zflatnextr   _safe_first_non_none)r}   itretr   r   r   test_flatiterX  s    

r  c                     sB  G dd d t g d} t| dks,J  fddtdD }t |d} t| dks`J td}t |d} t| dksJ  fd	dtd
D }t |d} t| dksJ tjd
d}t |d} t| dksJ dgdgd
gg}t |d} t| t	sJ t| d tj
r6| d jdks:J t| d tj
r\| d jdks`J t| d tj
r| d jdksJ tdtdtdg}t |d} t| t	sJ t| dksJ t| d tj
r| d jdksJ g dd
dgdgg}t |d} t| t	s&J t| d tj
rH| d jdksLJ t| d tj
rn| d jdksrJ t| d tj
r| d jdksJ G dd dtj
}tjdtd}|dt|jd}t |d} t| dksJ t| d |sJ g d}t |d} t| d t|ks(J t| d tj
s>J d S )Nc                   @   s   e Zd ZdS )ztest_reshape2d.<locals>.DummyNr   r   r   r   r   r  f  s   r  r}   )r   r   c                    s   g | ]
}  qS r   r   r  r  r   r   r  l  r   z"test_reshape2d.<locals>.<listcomp>r#   )r   r#   c                    s"   g | ]} fd dt dD qS )c                    s   g | ]
}  qS r   r   r  r  r   r   r  u  r   z-test_reshape2d.<locals>.<listcomp>.<listcomp>r#   r  r  r  r   r   r  u  r   r!   )r!   r#   )r#   r!   r   r    r   )r   )r!   r   r(   )r    c                       s(   e Zd Z fddZ fddZ  ZS )z%test_reshape2d.<locals>.ArraySubclassc                 3   s    t   D ]}t|V  q
d S r[   )super__iter__r   r%   )r   rg   	__class__r   r   r    s    z.test_reshape2d.<locals>.ArraySubclass.__iter__c                    s   t t |S r[   )r   r%   r  __getitem__)r   itemr  r   r   r!    s    z1test_reshape2d.<locals>.ArraySubclass.__getitem__)r9   r:   r;   r  r!  __classcell__r   r   r  r   ArraySubclass  s   r$  
   r   )r%  )r   buffer)	r   r   r   r   ddr   r   ffr   )r   _reshape_2Dr   r{   r  r   rN   Zrandr\   r]   Zndarrayr%   r   r   rP   )xnewr}   r$  r   r   r  r   test_reshape2dd  sT    
&&&&&&&		r+  c                 C   sX   t ddd}| j|g dd}t|d}t|j|D ]\}}t j	|| q<d S )N   r%  r!   r   columnsr}   )
r   r   reshape	DataFramer   r)  rt   Tr   r   )pdXr}   Xnewr*  r   r   r   test_reshape2d_pandas  s
    r5  c                 C   sX   t ddd}| j|ddgd}t|d}t|j|D ]\}}t j	|| q<d S Nr,  r%  r!   r}   r6   )dims)
r   r   r/  	DataArrayr   r)  rt   r1  r   r   )xrr3  r}   r4  r*  r   r   r   test_reshape2d_xarray  s
    r:  c                 C   s\   t ddd}| j|g dd}t|\}}t j|| t d}t j|| d S )Nr,  r%  r!   r   r-  )r   r   r/  r0  r   index_ofr   r   )r2  r3  r}   Idxr4  IdxRefr   r   r   test_index_of_pandas  s    
r>  c                 C   s\   t ddd}| j|ddgd}t|\}}t j|| t d}t j|| d S r6  )r   r   r/  r8  r   r;  r   r   )r9  r3  r}   r<  r4  r=  r   r   r   test_index_of_xarray  s    
r?  c                  C   s"  d\} }}dg|  dg|  dg|  }d| f| | | | | fg}t ||ksVJ d\}}|dg|  }t ||ks~J dg| |d |   }|||  f||  | ||  | | fg}t ||ksJ |dg|  }t ||ksJ t dgd g ks
J t g g ksJ d S )N)r!   r(   r#   TFr   )r"      r#   )r   Zcontiguous_regions)r   r   r   r+   r   r   r   r   r   r   test_contiguous_regions  s    
(rA  c                 C   s2   | j tdtddd}t|}|dks.J d S )Nr#   r%     )indexr   )ZSeriesr  r   r  )r2  r   r1   r   r   r   %test_safe_first_element_pandas_series  s    
rD  c                 C   s0   t d t| dksJ | d jtks,J d S )NZoopsr   r   )r   r   r   filename__file__)Zrecwarnr   r   r   test_warn_external  s    
rG  c                  C   sl   dd } dd }dD ]R\}}t || ||}t||d ||d D ]\}}| |||d qNqd S )Nc              	   S   s   | j \}}g td|d ||d }g td|d ||d }g }t|d d |dd  D ]Z\}}	t|d d |dd  D ]6\}
}t| ||	d |
|d f j}|| qq`t|}t	|tj
| ||dsJ d S )Nr   r   r   rstridecstride)r{   r  rt   r   Z_array_perimeterr1  r   r   r   Zarray_equalZ_array_patch_perimeters)r}   rI  rJ  rowscolsZrow_indsZcol_indsZpolysrsZrs_nextcsZcs_nextZpsr   r   r   check  s    
""$
z*test_array_patch_perimeters.<locals>.checkc                    s    fddt d d D S )Nc                    s   g | ]} | d kr|qS )r   r   r  r   nr   r   r    r   zAtest_array_patch_perimeters.<locals>.divisors.<locals>.<listcomp>r   r  rQ  r   rQ  r   divisors  s    z-test_array_patch_perimeters.<locals>.divisors))r#   r#   )r@     )   	   r   rH  )r   r   r/  r  r  )rO  rS  rK  rL  r}   rI  rJ  r   r   r   test_array_patch_perimeters  s    
rW  c                     s2  G dd d G dd d }    fdd}|  j _| tjddd	d
 dddd
 dddd
 j j u sJ jju sJ jdksJ jdksJ jdksJ jdksJ jj ksJ jdksJ j	dksJ j
dksJ W d    n1 s0    Y  | d S )Nc                   @   sZ   e Zd Ze Ze Zdd Zdd Zedd Z	e
dd Zed	d
 Zejdd
 ZdS )ztest_setattr_cm.<locals>.Ac                 S   s   d| _ d| _d| _d S )Naardvarkoverridep)rX  rY  _pr   r   r   r   __init__$  s    z#test_setattr_cm.<locals>.A.__init__c                 S   s   d S r[   r   r   r   r   r   meth)  s    ztest_setattr_cm.<locals>.A.methc                 S   s   d S r[   r   )clsr   r   r   classy,  s    z!test_setattr_cm.<locals>.A.classyc                   S   s   d S r[   r   r   r   r   r   static0  s    z!test_setattr_cm.<locals>.A.staticc                 S   s   | j S r[   r[  r   r   r   r   prop4  s    ztest_setattr_cm.<locals>.A.propc                 S   s
   || _ d S r[   ra  )r   valr   r   r   rb  8  s    N)r9   r:   r;   r   	cls_levelrY  r\  r]  classmethodr_  staticmethodr`  propertyrb  setterr   r   r   r   r     s   


r  c                   @   s   e Zd ZdS )ztest_setattr_cm.<locals>.BNr   r   r   r   r   r  <  s   r  c                    s   | j | j usJ | j| ju s J jdks.J | j| ju s>J | j ju sNJ | jdks\J t| drjJ | jdksxJ | jj ksJ | j ju sJ d| jvsJ d| jvsJ d| jvsJ d S )NrX  rY  extrarZ  rd  r_  r`  )r]  rX  rb  rd  rY  r   monkey__dict__)objr  r   r  r   r   verify_pre_post_stateA  s    z.test_setattr_cm.<locals>.verify_pre_post_stateZsquirrelZmoosec                   S   s   d S r[   r   r   r   r   r   r   ]  r   z!test_setattr_cm.<locals>.<lambda>boori  c                   S   s   d S r[   r   r   r   r   r   r   _  r   Zbobr_  r`  )	rb  rX  r]  rY  ri  rj  rd  r_  r`  )r]  rj  r   Z_setattr_cmrX  rY  ri  rb  rd  r_  r`  )r  rn  r   rm  r   test_setattr_cm  s2    0rp  c                  C   s   t j} | dddksJ | dddks*J | dddks<J | dddksNJ | dd	dks`J | d
d	dksrJ | dd	dksJ | d
d| d
d  krdksn J d S )Nr   r   0r    r!   g(0z-0gHz>r#   gӴ:T?z0.00123gӴ:Tz-0.00123   r%  z
0.00123456)r   Z_format_approx)r   r   r   r   test_format_approxq  s    rs  c                  C   s@   dd t dD } d | d< t| }|d ur8|| d ks<J d S )Nc                 S   s   g | ]}t  t|d  qS ))days)r   todayr   rP  r   r   r   r  ~  r   z5test_safe_first_element_with_none.<locals>.<listcomp>r%  r   r   )r  r   r  )Zdatetime_lstr1   r   r   r   !test_safe_first_element_with_none}  s    
rv  )Cr  r   weakrefr   Zunittest.mockr   r   r   r   r   numpyr   Znumpy.testingr   r	   r
   r   Z
matplotlibr   r   Zmatplotlib.colorscolorsr7   Zmatplotlib.cbookr   r   r<   r   r   r   r   r   r   r   r   r   r   r   Zfail_mappingZpass_mappingr   r   r   r   r   r   r   r   r   r   r/  r  r  r  r  r+  r5  r:  r>  r?  rA  rD  rG  rW  rp  rs  rv  r   r   r   r   <module>   s   "~~!
!



S



R