o
    h                  	   @  sF  U d dl mZ d dlZd dlZ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mZ d d	lmZ G d
d dZ G dd d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,e0d-< 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Z1d.e0d/< ej*+d0e/d1d2 Z2ej*+d3e1d4d5 Z3d6d7 Z4d8d9 Z5d:d; Z6d<d= Z7d>d? Z8d@dA Z9dBdC Z:dDdE Z;ej*+dFe<dG=dHdId*fe<dGd*fe<dGe<dHfgdJdK Z>dLdM Z?dNdO Z@dPdQ ZAdRdS ZBdTdU ZCdVdW ZDdXdY ZEdZd[ ZFd\d] ZGd^d_ ZHd`da ZIdbdc ZJddde ZKdfdg ZLdhdi ZMdjdk ZNdldm ZOej*+dng dodpdq ZPdrds ZQdtdu ZRdvdw ZSdS )x    )annotationsN)Any)patchMock)datetimedate	timedelta)assert_array_equalassert_approx_equalassert_array_almost_equal)_apicbook)delete_masked_points
strip_math)
ModuleTypec                   @  s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
Test_delete_masked_pointsc                 C  sB   t t tdtdd W d    d S 1 sw   Y  d S )Nza stringg      ?g      @)pytestraises
ValueErrorr   nparangeself r   o/var/www/html/construction_image-detection-poc/venv/lib/python3.10/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   a1a2result1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%   r0   r1   )rgr   r   myr3   r   )	r   r4   r(   r'   mcolorsto_rgba_arrayr   r	   r5   )r   r7   a_rgbar8   r-   r   r   r   	test_rgba0   s   
z#Test_delete_masked_points.test_rgbaN)__name__
__module____qualname__r   r.   r9   rA   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)rI   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ޓ?)
rP   rO   rN   rI   rK   rS   rL   rM   rR   rQ   gN!@g?)rP   rO   g =ɳE@rU   rV   )rR   rQ   rS   geLM?)rQ   rR   g,#W@)r   randomseednrowsncols	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   setup_method;   s@   zTest_boxplot_stats.setup_methodc                 C  s   t | jtsJ d S N)
isinstancer`   listr   r   r   r   test_form_main_listm   s   z&Test_boxplot_stats.test_form_main_listc                 C  s   | j D ]	}t|tsJ qd S rg   )r`   rh   dictr   resr   r   r   test_form_each_dictp   s   
z&Test_boxplot_stats.test_form_each_dictc                 C  s&   | j D ]}t|t| jksJ qd S rg   )r`   setr^   rl   r   r   r   test_form_dict_keyst   s   
z&Test_boxplot_stats.test_form_dict_keysc                 C  s0   | j d }| j D ]\}}t|| | q
d S )Nr   )r`   ra   itemsr   )r   rm   keyvaluer   r   r   test_results_baselinex   s   
z(Test_boxplot_stats.test_results_baselinec                 C  >   t j| jdd}|d }| j D ]\}}t|| | qd S )Ni'  )	bootstrapr   )r   r_   r\   rb   rq   r
   r   resultsrm   rr   rs   r   r   r   test_results_bootstrapped}   
   z,Test_boxplot_stats.test_results_bootstrappedc                 C  ru   )Nr$   whisr   )r   r_   r\   rc   rq   r   rw   r   r   r   test_results_whiskers_float   rz   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   r{   )r   r_   r\   re   rq   r   rw   r   r   r   test_results_whiskers_range   
   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&   _   r{   r   )r   r_   r\   rd   rq   r   rw   r   r   r   !test_results_whiskers_percentiles   r   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s.J q&d S )N)Test1r#   Aardvarkr/   labelsrT   )r   r_   r\   zip)r   r   rx   labrm   r   r   r   test_results_withlabels   s   z*Test_boxplot_stats.test_results_withlabelsc                 C  sH   ddg}t t tj| j|d W d    d S 1 sw   Y  d S )Nr"   r#   r   )r   r   r   r   r_   r\   )r   r   r   r   r   test_label_error   s   "z#Test_boxplot_stats.test_label_errorc                 C  sH   t jjdd}tt t| W d    d S 1 sw   Y  d S )N)"   r   r   )rH   )r   rW   normalr   r   r   r   r_   r   r\   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s&J |d d
 dks0J t|d d ddg |d d	 dksEJ |d d
 dksOJ t|d d g  d S )N   )shapei   F)	autorangeTr   rQ   rR   rS   )r   zeroshstackr   r_   r   )r   xbstats_falsebstats_truer   r   r   "test_boxplot_stats_autorange_false   s   z5Test_boxplot_stats.test_boxplot_stats_autorange_falseN)rB   rC   rD   rf   rj   rn   rp   rt   ry   r}   r   r   r   r   r   r   r   r   r   r   rE   :   s    2
rE   c                   @  s   e Zd Zdd ZdS )Hashablec                 C     d S rg   r   r   r   r   r   dummy       zHashable.dummyN)rB   rC   rD   r   r   r   r   r   r      s    r   c                   @  s   e Zd ZdZdd ZdS )
UnhashableNc                 C  r   rg   r   r   r   r   r   r      r   zUnhashable.dummy)rB   rC   rD   __hash__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	e
jdddge
jdeegdd Ze
jdddge
jdeegdd Ze
jdddge
jdeegdd Ze
jdddge
jdeeg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   rf      s   z#Test_callback_registry.setup_methodc                 C  s    |r	| j ||S | j ||S rg   )r   connect_connect_picklable)r   sfuncpickler   r   r   r      s   zTest_callback_registry.connectc                 C  s   | j |S rg   )r   
disconnect)r   cidr   r   r   r      s   z!Test_callback_registry.disconnectc                   s>   t  fdd jjD }t jj j}||ksJ |S )Nc                 3  s    | ]
\}}| j kV  qd S rg   r   ).0r   pr   r   r   	<genexpr>   s    z/Test_callback_registry.count.<locals>.<genexpr>)sumr   _func_cid_maplengetr   )r   count1count2r   r   r   count   s   zTest_callback_registry.countc                 C  sD   t j  g | jjg ksJ | jji ksJ | jjt ks J d S rg   )r   testingbreak_cyclesr   r   _pickled_cidsro   r   r   r   r   is_empty   s   
zTest_callback_registry.is_emptyc                 C  s2   t j  g | jjg ksJ | jji ksJ d S rg   )r   r   r   r   r   r   r   r   r   is_not_empty   s   
z#Test_callback_registry.is_not_emptyc                 C  sH   t  }|ddd  tt|}|ddd }|dks"J d S )Nr   c                   S  r   rg   r   r   r   r   r   <lambda>   r   z9Test_callback_registry.test_cid_restore.<locals>.<lambda>r   c                   S  r   rg   r   r   r   r   r   r      r   r"   )r   r   r   r   loadsdumps)r   cbcb2r   r   r   r   test_cid_restore   s
   z'Test_callback_registry.test_cid_restorer   TFclsc                 C  s   |    | }| | j|j|}t|tu sJ |   | | j|j|}||ks+J |   tg | jj	dks;J t| jjdksEJ ~|    d S )Nr"   )
r   r   r   r   typeintr   r   r   r   )r   r   r   mini_mecid1cid2r   r   r   test_callback_complete   s   z-Test_callback_registry.test_callback_completec                 C  sN   |    | }| | j|j|}t|tu sJ |   | | |    d S rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   test_callback_disconnect     
z/Test_callback_registry.test_callback_disconnectc                 C  sN   |    | }| | j|j|}t|tu sJ |   | d |   d S )Nfoor   r   r   r   r   test_callback_wrong_disconnect  r   z5Test_callback_registry.test_callback_wrong_disconnectc                 C  s|   |    | }| | j|j| | }| | j|j| | }| | j|j| |   |  dks4J d }d }|    d S Nr#   )r   r   r   r   r   r   )r   r   r   r   mini_me2r   r   r   'test_registration_on_non_empty_registry'  s   z>Test_callback_registry.test_registration_on_non_empty_registryc                 C  s"   t ttt dsJ d S )Nr   )hasattrr   r   r   r   r   r   r   r   r   test_picklingB  s   z$Test_callback_registry.test_picklingN)rB   rC   rD   rf   r   r   r   r   r   r   r   markparametrizer   r   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 s+w   Y  |  }|j	|j
  krAdksDJ  J |t ddd  |dd |  }|j	dks^J d	|j
v seJ d S )
Nr   c                   S  r   rg   r   r   r   r   r   r   I  r   zAtest_callbackregistry_default_exception_handler.<locals>.<lambda>"_get_running_interactive_frameworkc                   S  r   rg   r   r   r   r   r   r   L  r   zargument mismatch c                   S  s   dS )Nznot-noner   r   r   r   r   r   S  r   z,takes 0 positional arguments but 1 was given)r   r   r   setattrr   r   	TypeErrorprocess
readouterrouterr)capsysmonkeypatchr   outerrr   r   r   /test_callbackregistry_default_exception_handlerG  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                   @     e Zd ZdS )z%raising_cb_reg.<locals>.TestExceptionNrB   rC   rD   r   r   r   r   TestException[      r   c                   S     t rg   )RuntimeErrorr   r   r   r   raise_runtime_error^     z+raising_cb_reg.<locals>.raise_runtime_errorc                   S  r   rg   r   r   r   r   r   raise_value_errora  r   z)raising_cb_reg.<locals>.raise_value_errorc                   s   t | tr | rg   )rh   r   excpr   r   r   transformerd  s   
z#raising_cb_reg.<locals>.transformerexception_handlerr   zcb, excp)		Exceptionr   r   r   r   r   r   r   r   )r   r   r   r   cb_oldcb_filtcb_filt_passr   r   r   raising_cb_regZ  s$   r   c                 C  sL   |  tddd  t| |d W d    d S 1 sw   Y  d S )Nr   c                   S  r   rg   r   r   r   r   r   r   ~  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_handler{  s   
"r   c                    s   t jdgd} g   fdd}| d| tt | d| W d    n1 s+w   Y  | dd tt | dd W d    n1 sLw   Y   dgksXJ d S )Nr   )signalsc                   s     |  d S rg   )appendr   rx   r   r   r     s    z)test_callbackregistry_signals.<locals>.cbbarr"   )r   r   r   r   r   r   r   )crr   r   r   r   test_callbackregistry_signals  s   r   c               	   C  s\  dd } t j| d}dd }dd }|d| |d	| |  |d |d	 W d    n1 s7w   Y  |jdd
) |d tjtdd |d	 W d    n1 s_w   Y  W d    n1 snw   Y  tjtdd |d W d    n1 sw   Y  tjtdd |d	 W d    d S 1 sw   Y  d S )Nc                 S  s   | rg   r   r   r   r   r   raise_handler  r   z5test_callbackregistry_blocking.<locals>.raise_handlerr   c                   S     t d)N1 should be blockedr   r   r   r   r   
test_func1     z2test_callbackregistry_blocking.<locals>.test_func1c                   S  r   )N2 should be blockedr   r   r   r   r   
test_func2  r  z2test_callbackregistry_blocking.<locals>.test_func2test1test2r   r  matchr   )r   r   r   blockedr   r   r   r   )r   r   r  r  r   r   r   test_callbackregistry_blocking  s.   


"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    d S 1 sw   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s,J |t t|  ks9J |t|ksBJ |t|ksKJ d S )Nr"   r#   r$   r   r   r   r"   r#   r$   ))r   r"   )r   r#   )r   r$   )r]   r   sanitize_sequencekeysvaluesrq   )r   kvir   r   r   test_sanitize_sequence  s   r  r"   r#   )r   r   alias_mappingr   r   ztuple[tuple[dict, dict], ...]fail_mappingz"tuple[tuple[Any, dict, dict], ...]pass_mappingzinp, kwargs_to_normc              	   C  sz   t t. t  tj| fi | W d    n1 sw   Y  W d    d S W d    d S 1 s6w   Y  d S rg   )r   r   r   r   'suppress_matplotlib_deprecation_warningr   normalize_kwargs)inpkwargs_to_normr   r   r   test_normalize_kwargs_fail  s   Pr$  zinp, expected, kwargs_to_normc                 C  sH   t   |tj| fi |ksJ W d    d S 1 sw   Y  d S rg   )r   r   r   r!  )r"  expectedr#  r   r   r   test_normalize_kwargs_pass  s   
"r&  c                 C  s~   t d t| dksJ tjd d dkr4ttjd }| d j	
t|d t|d fr2J d S | d j	tks=J d S )Noopsr"   r#   )r$      r   
matplotlibmpl_toolkits)r   warn_externalr   sysversion_infopathlibPath__file__parentsfilename
startswithstr)recwarnbasedirr   r   r   test_warn_external  s   

r7  c               	   C  s   t td3} td d| _tjtdd t	d W d    n1 s$w   Y  W d    d S W d    d S 1 s<w   Y  d S )Nr,  )return_valuez	\Adummy\Zr  r   )
r   objectr   r   	_getframer   warnsUserWarningr   r+  )mock_sysr   r   r   (test_warn_external_frame_embedded_python  s   "r>  c            	      C     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y2xsy1sy2sx_target	y1_target	y2_targetr   r   r   test_to_prestep     





rQ  c                  C     t g g } | jdksJ d S N)r#   r   )r   rE  r   stepsr   r   r   test_to_prestep_empty     rW  c            	      C  r?  )Nr/   r@  rD  rB  rA  )r$   r$   r#   r#   r"   r"   r   )r   r   r   pts_to_poststeprF  rG  r	   rH  r   r   r   test_to_poststep  rR  rZ  c                  C  rS  rT  )r   rY  r   rU  r   r   r   test_to_poststep_empty0  rX  r[  c            	      C  r?  )Nr/   r@  )r         ?r\  rG   rG         @r]  r$   rB  )r   r   r"   r"   r#   r#   r$   r$   )r$   r$   r#   r#   r"   r"   r   r   )r   r   r   pts_to_midsteprF  rG  r	   rH  r   r   r   test_to_midstep5  rR  r_  c                  C  rS  rT  )r   r^  r   rU  r   r   r   test_to_midstep_emptyI  rX  r`  argsr(  r$   r/   c                 C  s:   t t tj|   W d    d S 1 sw   Y  d S rg   )r   r   r   r   rE  )ra  r   r   r   test_step_failsN  s   "rb  c            
        s  G dd d  fddt dD  \} }}}}}t }|j|  tt|d t|ks0J t|| t|ks=J |dd  D ]
}|| |sMJ qC||  |dd  D ]
}|| |rcJ qYt	
|dd  |dd  D ]\}}	|||	s~J qrd S )Nc                   @  r   )ztest_grouper.<locals>.DummyNr   r   r   r   r   DummyY  r   rc  c                      g | ]}  qS r   r   r   _rc  r   r   
<listcomp>[      z test_grouper.<locals>.<listcomp>r&   r   r"   )ranger   Grouperjoinro   ri   get_siblingsjoinedremove	itertoolsproduct)
r   r   r   r   r    objsr;   otherABr   rg  r   test_grouperX  s   $

$rv  c                    s   G dd d  fddt dD } t }|j|   |j}| D ]}||v s(J q || d  }| dd  D ]
}|| |u s?J q5d S )Nc                   @  r   )z#test_grouper_private.<locals>.DummyNr   r   r   r   r   rc  m  r   rc  c                   rd  r   r   re  rg  r   r   rh  o  ri  z(test_grouper_private.<locals>.<listcomp>r&   r   r"   )rj  r   rk  rl  _mapping)rr  r;   mappingobase_setr   rg  r   test_grouper_privatel  s   
r{  c                  C  sj   t d} | j}dt|ksJ dt|ksJ t|}|dks#J dt|ks+J dt|ks3J d S )Nr&   r   r"   )r   r   flatnextr   _safe_first_finite)r   itretr   r   r   test_flatiter}  s   

r  c                  C  *   t dt j} t| }t |sJ d S r   )r   fullr'   r   r~  isnanarrr  r   r   r   test__safe_first_finite_all_nan     
r  c                  C  r  r   )r   r  infr   r~  isinfr  r   r   r   test__safe_first_finite_all_inf  r  r  c                    s,  G dd d t g d} t| dksJ  fddtdD }t |d} t| dks0J td}t |d} t| dksDJ  fd	dtd
D }t |d} t| dks^J tjd
d}t |d} t| dkstJ dgdgd
gg}t |d} t| t	sJ t| d tj
r| d jdksJ t| d tj
r| d jdksJ 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
r| 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sAJ G dd dtj
}tjdtd}|dt|jd}t |d} t| dkshJ t| d |srJ g d}t |d} t| d t|ksJ t| d tj
sJ d S )Nc                   @  r   )ztest_reshape2d.<locals>.DummyNr   r   r   r   r   rc    r   rc  r   )r"   r   c                   rd  r   r   re  rg  r   r   rh    ri  z"test_reshape2d.<locals>.<listcomp>r&   )r"   r&   c                   s"   g | ]} fd dt dD qS )c                   rd  r   r   re  rg  r   r   rh    ri  z-test_reshape2d.<locals>.<listcomp>.<listcomp>r&   rj  re  rg  r   r   rh    s   " 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 rg   )super__iter__r   r(   )r   rs   	__class__r   r   r    s   z.test_reshape2d.<locals>.ArraySubclass.__iter__c                   s   t t |S rg   )r   r(   r  __getitem__)r   itemr  r   r   r    s   z1test_reshape2d.<locals>.ArraySubclass.__getitem__)rB   rC   rD   r  r  __classcell__r   r   r  r   ArraySubclass  s    r  
   rB  )r  )rC  buffer)	r   r   r   r   ddr    r!   ffr!   )r   _reshape_2Dr   r   rj  r   rW   randrh   ri   ndarrayr(   r   rG  r\   )xnewr   r  r  r   rg  r   test_reshape2d  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  r   Tr   r	   )pdXr   Xnewr  r   r   r   test_reshape2d_pandas     r  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   r=   )dims)
r   r   r  	DataArrayr   r  r   r  r   r	   )xrr  r   r  r  r   r   r   test_reshape2d_xarray  r  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  r  r   index_ofr   r	   )r  r  r   Idxr  IdxRefr   r   r   test_index_of_pandas     
r  c                 C  s\   t ddd}| j|ddgd}t|\}}t j|| t d}t j|| d S r  )r   r   r  r  r   r  r   r	   )r  r  r   r  r  r  r   r   r   test_index_of_xarray  r  r  c                  C  s  d\} }}dg|  dg|  dg|  }d| f| | | | | fg}t ||ks+J d\}}|dg|  }t ||ks?J dg| |d |   }|||  f||  | ||  | | fg}t ||kshJ |dg|  }t ||ksxJ t dgd g ksJ t g g ksJ d S )N)r$   r/   r&   TFr   )r%      r&   )r   contiguous_regions)r   r   r   r2   r%  r   r    r   r   r   test_contiguous_regions  s   
(r  c                 C  s2   | j tdtddd}t|}|dksJ d S )Nr&   r     )indexr   )Seriesrj  r   r~  )r  r   r8   r   r   r   %test_safe_first_element_pandas_series'  s   
r  c                  C  sl   dd } dd }dD ])\}}t || ||}t||d ||d D ]\}}| |||d q'q
d S )Nc              	   S  s   | j \}}g td|d ||d }g td|d ||d }g }t|D ]%\}}	t|D ]\}
}t| ||	d |
|d f j}|| q1q(t	|}t
|tj| ||dsaJ d S )Nr   r"   rstridecstride)r   rj  rp  pairwiser   _array_perimeterr  r   r   rF  array_equal_array_patch_perimeters)r   r  r  rowscolsrow_indscol_indspolysrsrs_nextcscs_nextpsr   r   r   check1  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   rh  A  s    zAtest_array_patch_perimeters.<locals>.divisors.<locals>.<listcomp>r"   r  r  r   r  r   divisors@  s   z-test_array_patch_perimeters.<locals>.divisors))r&   r&   )r     )   	   r"   r  )r   r   r  rp  rq  )r  r  r  r  r   r  r  r   r   r   test_array_patch_perimeters.  s   
r  c                    s.  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
Q j j u sAJ jju sIJ jdksPJ jdksWJ jdks^J jdkseJ jj ksmJ jdkstJ j	dks{J j
dksJ W d    n1 sw   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overrider   )r  r  _pr   r   r   r   __init__O  s   
z#test_setattr_cm.<locals>.A.__init__c                 S  r   rg   r   r   r   r   r   methT  r   ztest_setattr_cm.<locals>.A.methc                 S  r   rg   r   )r   r   r   r   classyW     z!test_setattr_cm.<locals>.A.classyc                   S  r   rg   r   r   r   r   r   static[  r  z!test_setattr_cm.<locals>.A.staticc                 S     | j S rg   r  r   r   r   r   prop_  s   ztest_setattr_cm.<locals>.A.propc                 S  
   || _ d S rg   r  )r   valr   r   r   r  c  s   
N)rB   rC   rD   r9  	cls_levelr  r  r  classmethodr  staticmethodr  propertyr  setterr   r   r   r   rt  K  s    


rt  c                   @  r   )ztest_setattr_cm.<locals>.BNr   r   r   r   r   ru  g  r   ru  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 s'J | jdks.J t| dr5J | jdks<J | jj ksDJ | j ju sLJ d| jvsSJ d| jvsZJ d| jvsaJ d S )Nr  r  extrar   r  r  r  )r  r  r  r  r  r   monkey__dict__)objrt  r   rs  r   r   verify_pre_post_statel  s   z.test_setattr_cm.<locals>.verify_pre_post_statesquirrelmoosec                   S  r   rg   r   r   r   r   r   r     r   z!test_setattr_cm.<locals>.<lambda>boor  c                   S  r   rg   r   r   r   r   r   r     r   bobr  r  )	r  r  r  r  r  r  r  r  r  )r  r  r   _setattr_cmr  r  r  r  r  r  r  )ru  r  r   r  r   test_setattr_cmJ  s4   r  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s'J | dd	dks0J | d
d	dks9J | dd	dksBJ | d
d| d
d  krSdksVJ  J d S )Nr   r"   0r#   r$   g(0z-0gHz>r&   gӴ:T?z0.00123gӴ:Tz-0.00123   r  z
0.00123456)r   _format_approx)r!   r   r   r   test_format_approx  s   ,r  c                  C  s@   dd t dD } d | d< t| }|d ur|| d ksJ d S )Nc                 S  s   g | ]}t  t|d  qS ))days)r   todayr   r  r   r   r   rh    s    z5test_safe_first_element_with_none.<locals>.<listcomp>r  r   r"   )rj  r   r~  )datetime_lstr8   r   r   r   !test_safe_first_element_with_none  s   
r  c                   C  s4   t ddksJ t ddksJ t ddksJ d S )Nz
1 \times 2z$1 \times 2$z1 x 2z	$\rm{hi}$hi)r   r   r   r   r   test_strip_math  s   r  zfmt, value, result))z%.2f m皙?0.20 m)z{:.2f} mr  r  )z{} mr  z0.2 m)constr  r  )z%d or {}r  z0 or {})z{{{:,.0f}}}g     jAz	{200,000})z{:.2%}gUUUUUU?z66.67%)z$%ggRQ@z$2.54c                 C  s2   t | ||ks
J t | t||ksJ dS )z)Apply *value* to the format string *fmt*.N)r   _auto_format_strr   float64)fmtrs   r  r   r   r   test_auto_format_str  s   r  c                  C  R   G dd d} t d}| |_|tjd< td}||}t|}t|| dS )z
    Test that torch tensors are converted to NumPy arrays.

    We don't want to create a dependency on torch in the test suite, so we mock it.
    c                   @     e Zd Zdd Zdd ZdS )z/test_unpack_to_numpy_from_torch.<locals>.Tensorc                 S  r  rg   r\   r   r   r   r   r       
z8test_unpack_to_numpy_from_torch.<locals>.Tensor.__init__c                 S  r  rg   r  r   r   r   r   	__array__     z9test_unpack_to_numpy_from_torch.<locals>.Tensor.__array__NrB   rC   rD   r  r  r   r   r   r   Tensor      r  torchr  N)	r   r  r,  modulesr   r   r   _unpack_to_numpyr	   )r  r  r\   torch_tensorr  r   r   r   test_unpack_to_numpy_from_torch  s   



r  c                  C  r  )z
    Test that jax arrays are converted to NumPy arrays.

    We don't want to create a dependency on jax in the test suite, so we mock it.
    c                   @  r  )z,test_unpack_to_numpy_from_jax.<locals>.Arrayc                 S  r  rg   r  r   r   r   r   r    r  z5test_unpack_to_numpy_from_jax.<locals>.Array.__init__c                 S  r  rg   r  r   r   r   r   r    r	  z6test_unpack_to_numpy_from_jax.<locals>.Array.__array__Nr
  r   r   r   r   Array  r  r  jaxr  N)	r   r  r,  r  r   r   r   r  r	   )r  r  r\   	jax_arrayr  r   r   r   test_unpack_to_numpy_from_jax  s   



r  c                    s`   G dd d t d}  fdd| _ | _| tjd< td}| |}t|}t	|| dS )z
    Test that tensorflow arrays are converted to NumPy arrays.

    We don't want to create a dependency on tensorflow in the test suite, so we mock it.
    c                   @  r  )z4test_unpack_to_numpy_from_tensorflow.<locals>.Tensorc                 S  r  rg   r  r   r   r   r   r    r  z=test_unpack_to_numpy_from_tensorflow.<locals>.Tensor.__init__c                 S  r  rg   r  r   r   r   r   r    r	  z>test_unpack_to_numpy_from_tensorflow.<locals>.Tensor.__array__Nr
  r   r   r   r   r    r  r  
tensorflowc                   s
   t |  S rg   )rh   r   r  r   r   r   
  s   
 z6test_unpack_to_numpy_from_tensorflow.<locals>.<lambda>r  N)
r   	is_tensorr  r,  r  r   r   r   r  r	   )r  r\   	tf_tensorr  r   r  r   $test_unpack_to_numpy_from_tensorflow  s   



r  )T
__future__r   rp  r.  r   r,  typingr   unittest.mockr   r   r   r   r   numpyr   numpy.testingr	   r
   r   r   r)  r   r   matplotlib.colorscolorsr>   matplotlib.cbookr   r   typesr   r   rE   r   r   r   r   r   r   r   r
  r   r   r  r  r  r  __annotations__r  r$  r&  r7  r>  rQ  rW  rZ  r[  r_  r`  r   r  rb  rv  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   <module>   s    "~ !
!



S



R

