o
    3ήcJ5                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
mZmZmZmZ d dlmZ dd Zdd Zdd	 ZG d
d dZedd ZG dd dZdd Zdd Zdd Zdd ZG dd dZdS )    N)argmapnot_implemented_fornp_random_state	open_filepreserve_random_statepy_random_staterandom_state)PythonRandomInterfacec                  C   s  t ddd } | t  ttj | t  W d    n1 s%w   Y  t ddd }|t  ttj |t  W d    n1 sOw   Y  t ddd	 }|t  ttj |t  W d    n1 syw   Y  t d
dd }|t  ttj |t  W d    n1 sw   Y  t dddd }|t  |t  |t  ttj |t  W d    n1 sw   Y  t dt ddd }|t  ttj |t  W d    n	1 s	w   Y  ttj |t  W d    n	1 s&w   Y  ttj |t  W d    n	1 sCw   Y  tt	 t dd W d    n	1 s^w   Y  tt	 t dd
 W d    d S 1 szw   Y  d S )Ndirectedc                 S      d S N Gr   r   K/tmp/pip-target-vg8gfxp4/lib/python/networkx/utils/tests/test_decorators.pytest_d      z.test_not_implemented_decorator.<locals>.test_d
undirectedc                 S   r   r   r   r   r   r   r   test_u   r   z.test_not_implemented_decorator.<locals>.test_u
multigraphc                 S   r   r   r   r   r   r   r   test_m&   r   z.test_not_implemented_decorator.<locals>.test_mgraphc                 S   r   r   r   r   r   r   r   test_g.   r   z.test_not_implemented_decorator.<locals>.test_gc                 S   r   r   r   r   r   r   r   test_not_md7   r   z3test_not_implemented_decorator.<locals>.test_not_mdc                 S   r   r   r   r   r   r   r   test_graph_onlyB   s   z7test_not_implemented_decorator.<locals>.test_graph_only)
r   nxGraphpytestraisesNetworkXNotImplementedDiGraph
MultiGraphMultiDiGraph
ValueError)r   r   r   r   r   r   r   r   r   test_not_implemented_decorator   sf   




$r$   c                  C   sL   t t tddd } | t  W d    d S 1 sw   Y  d S )Nfooc                 S   r   r   r   r   r   r   r   test1Y   r   z1test_not_implemented_decorator_key.<locals>.test1)r   r   KeyErrorr   r   r   r&   r   r   r   "test_not_implemented_decorator_keyV   s
   
"r)   c                  C   sN   t tj tddd } | t  W d    d S 1 s w   Y  d S )Nr   c                 S   r   r   r   r   r   r   r   r&   c   r   z3test_not_implemented_decorator_raise.<locals>.test1)r   r   r   r   r   r   r(   r   r   r   $test_not_implemented_decorator_raise`   s
   
"r*   c                   @   s   e Zd Zdd Zdd Zdd Zeddd	d
 Zeedddd Z	edddd Z
eddd5ddZeddd6ddZedd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/d0 Zd1d2 Zd3d4 ZdS )7TestOpenFileDecoratorc                 C   s(   g d| _ tjddd| _| jj| _d S )N)zBlah... zBLAH zBLAH!!!!wb+F)delete)texttempfileNamedTemporaryFilefobjnameselfr   r   r   setup_methodk   s   
z"TestOpenFileDecorator.setup_methodc                 C   s   | j   t| j d S r   )r1   closeosunlinkr2   r3   r   r   r   teardown_methodp   s   
z%TestOpenFileDecorator.teardown_methodc                 C   s    | j D ]
}||d qd S )Nascii)r.   writeencode)r4   pathr.   r   r   r   r;   t   s   
zTestOpenFileDecorator.write   rc                 C   s   |  d S )Nr   )	readlinesr4   r=   r   r   r   readx      zTestOpenFileDecorator.readr   wbc                 C   s   |  d d S )Ns   demor;   r=   r   r   r   writer_arg0|      z!TestOpenFileDecorator.writer_arg0r,   c                 C   s   |  | d S r   rE   rA   r   r   r   writer_arg1   s   z!TestOpenFileDecorator.writer_arg1   Nc                 C   sP   |d u r!t d}| | W d    d S 1 sw   Y  d S | | d S Nr,   r/   r0   r;   )r4   xr=   fhr   r   r   writer_arg2default   
   "z(TestOpenFileDecorator.writer_arg2default   helloc                 K   sP   |d u r!t d}| | W d    d S 1 sw   Y  d S | | d S rK   rL   )r4   rM   yotherr=   kwargsrN   r   r   r   writer_arg4default   rP   z(TestOpenFileDecorator.writer_arg4defaultr=   c                 K   s\   | dd }|d u r'td}| | W d    d S 1 s w   Y  d S | | d S )Nr=   r,   )getr/   r0   r;   )r4   rU   r=   rN   r   r   r   writer_kwarg   s   "z"TestOpenFileDecorator.writer_kwargc                 C      |  | j d S r   )rG   r2   r3   r   r   r   test_writer_arg0_str      z*TestOpenFileDecorator.test_writer_arg0_strc                 C   rY   r   )rG   r1   r3   r   r   r   test_writer_arg0_fobj   r[   z+TestOpenFileDecorator.test_writer_arg0_fobjc                 C   s   |  t| j d S r   )rG   pathlibPathr2   r3   r   r   r   test_writer_arg0_pathlib   s   z.TestOpenFileDecorator.test_writer_arg0_pathlibc                 C   s,   |  | j | | jd| jksJ d S N )rI   r2   rB   joinr.   r3   r   r   r   test_writer_arg1_str   s    z*TestOpenFileDecorator.test_writer_arg1_strc                 C   sB   |  | j | jjrJ | j  | | jd| jksJ d S r`   )rI   r1   closedr6   rB   r2   rb   r.   r3   r   r   r   test_writer_arg1_fobj   s   
 z+TestOpenFileDecorator.test_writer_arg1_fobjc                 C   s>   | j dd d | j d| jd | | jd| jksJ d S Nr   rF   ra   )rO   r2   rB   rb   r.   r3   r   r   r   test_writer_arg2default_str   s    z1TestOpenFileDecorator.test_writer_arg2default_strc                 C   sF   | j d| jd | jjrJ | j  | | jd| jks!J d S rf   )rO   r1   rd   r6   rB   r2   rb   r.   r3   r   r   r   test_writer_arg2default_fobj   s   
 z2TestOpenFileDecorator.test_writer_arg2default_fobjc                 C   s   | j dd d d S )Nr   rF   )rO   r3   r   r   r   &test_writer_arg2default_fobj_path_none   s   z<TestOpenFileDecorator.test_writer_arg2default_fobj_path_nonec                 C   sH   | j ddddd | j dddd| jd | | jd| jks"J d S )Nr   r>   dogrT   )rj   rT   )rj   rT   r=   ra   )rV   r2   rB   rb   r.   r3   r   r   r   test_writer_arg4default_fobj   s    z2TestOpenFileDecorator.test_writer_arg4default_fobjc                 C   s.   | j | jd | | jd| jksJ d S NrF   ra   )rX   r2   rB   rb   r.   r3   r   r   r   test_writer_kwarg_str   s    z+TestOpenFileDecorator.test_writer_kwarg_strc                 C   s8   | j | jd | j  | | jd| jksJ d S rl   )rX   r1   r6   rB   r2   rb   r.   r3   r   r   r   test_writer_kwarg_fobj   s   
 z,TestOpenFileDecorator.test_writer_kwarg_fobjc                 C   s   | j d d d S )NrF   )rX   r3   r   r   r   test_writer_kwarg_path_none   r[   z1TestOpenFileDecorator.test_writer_kwarg_path_noner   )rR   N)__name__
__module____qualname__r5   r9   r;   r   rB   staticmethodrG   rI   rO   rV   rX   rZ   r\   r_   rc   re   rg   rh   ri   rk   rm   rn   ro   r   r   r   r   r+   j   s:    


r+   c                  C   sD   zdd l } | j }W n
 ty   Y d S w t|d dk s J d S )Nr   g_\*?gؗҜ<)numpy.randomrandomImportErrorabs)numpyr?   r   r   r   test_preserve_random_state   s   ry   c                   @   s`   e Zd Zedd Zeddd Zeddd Zdd	 Z	d
d Z
dd Zdd Zdd ZdS )TestRandomStatec                 C   s   t dad S )Nrx   )r   importorskipnp)clsr   r   r   setup_class   rH   zTestRandomState.setup_classr>   c                 C   s   t |tjjs	J | S r   )
isinstancer|   ru   RandomStaterandom_sampler4   r   r   r   r   instantiate_np_random_state   s   z+TestRandomState.instantiate_np_random_statec                 C   s"   t |tjst |tsJ | S r   )r   ru   Randomr	   r   r   r   r   instantiate_py_random_state   s   z+TestRandomState.instantiate_py_random_statec                 C   sf   t jd t j }t jd || d ksJ td t }td || d ks1J d S N*   r|   ru   seedr   r   r   r4   rvr   r   r   test_random_state_None   s   


z&TestRandomState.test_random_state_Nonec                 C   sZ   t jd t j }t jd || t jksJ t jd || t jks+J d S r   r   r   r   r   r   test_random_state_np_random   s   
z+TestRandomState.test_random_state_np_randomc                 C   s   t jd t j }td t }t jd d}| |}t j| }|s/J ||t j ks8J td | |}t| }|sOJ ||t ksWJ d S Nr   r>   )	r|   ru   r   r   r   r   randr   r   )r4   np_rvpy_rvr   rvalrval_expectedr   r   r   test_random_state_int  s   




z%TestRandomState.test_random_state_intc                 C   s   t jd t j }t jd d}t j|}| |}t j| }|s,J || |}t j| }|s?J ||t j ksHJ d S r   )r|   ru   r   r   r   r   r   r   )r4   r   r   rngr   r   r   r   r   'test_random_state_np_random_RandomState  s   


z7TestRandomState.test_random_state_np_random_RandomStatec                 C   sB   d}t |}| |}|sJ t |  tt| j| d S Nr>   )ru   r   r   r   r   r#   r   )r4   r   r   r   r   r   r   test_random_state_py_random'  s
   

z+TestRandomState.test_random_state_py_randomN)rp   rq   rr   classmethodr~   r   r   r   r   r   r   r   r   r   r   r   r   r   rz      s    


rz   c                  C   J   t tj tddd } | d}W d    d S 1 sw   Y  d S )Nac                 S   r   r   r   rsr   r   r   make_random_state3  r   z=test_random_state_string_arg_index.<locals>.make_random_stater>   r   r   r   NetworkXErrorr   r   rstater   r   r   "test_random_state_string_arg_index0  
   

"r   c                  C   r   )Nr   c                 S   r   r   r   r   r   r   r   r   =  r   z@test_py_random_state_string_arg_index.<locals>.make_random_stater>   r   r   r   r   r   r   r   r   r   %test_py_random_state_string_arg_index:  r   r   c                  C   r   )NrJ   c                 S   r   r   r   r   r   r   r   r   G  r   z>test_random_state_invalid_arg_index.<locals>.make_random_stater>   r   r   r   r   r   #test_random_state_invalid_arg_indexD  r   r   c                  C   r   )NrJ   c                 S   r   r   r   r   r   r   r   r   Q  r   zAtest_py_random_state_invalid_arg_index.<locals>.make_random_stater>   r   r   r   r   r   &test_py_random_state_invalid_arg_indexN  r   r   c                   @   st   e Zd ZG dd de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 )
TestArgmapc                   @   s   e Zd ZdS )zTestArgmap.ArgmapErrorN)rp   rq   rr   r   r   r   r   ArgmapErrorY  s    r   c                 C   s*   dd }t |dd }| dksJ d S )Nc                 S      t dNzdo not call this functionr   rM   r   r   r   do_not_call]     z5TestArgmap.test_trivial_function.<locals>.do_not_callc                   S   s   dS r   r   r   r   r   r   trivial_argmap`  r   z8TestArgmap.test_trivial_function.<locals>.trivial_argmapr>   r   r4   r   r   r   r   r   test_trivial_function\  s   
z TestArgmap.test_trivial_functionc                 C   s.   dd }t |dd }t| dksJ d S )Nc                 S   r   r   r   r   r   r   r   r   g  r   z5TestArgmap.test_trivial_iterator.<locals>.do_not_callc                   s   s    dE d H  d S )Nr>   rJ      r   r   r   r   r   r   j     z8TestArgmap.test_trivial_iterator.<locals>.trivial_argmapr   )r   tupler   r   r   r   test_trivial_iteratorf  s   
z TestArgmap.test_trivial_iteratorc                    sP   g   fdd}t |ddddddd	 }|d
dd\}}} g dks&J d S )Nc                    s     fddfS )Nc                      s
     S r   )appendr   )	containerrM   r   r   <lambda>u  s   
 zHTestArgmap.test_contextmanager.<locals>.contextmanager.<locals>.<lambda>r   r   r   r   r   contextmanagers  s   z6TestArgmap.test_contextmanager.<locals>.contextmanagerr   r>   rJ   Ttry_finallyc                 S   
   | ||fS r   r   rM   rS   zr   r   r   r%   w     
z+TestArgmap.test_contextmanager.<locals>.foor   bc)r   r   r   r   )r4   r   r%   rM   rS   r   r   r   r   test_contextmanagerp  s   
zTestArgmap.test_contextmanagerc                 C   s   g }dd }t tj t|ddddddd	 }W d    n1 s$w   Y  t|dddd
d	 }|ddd}|dks@J d S )Nc                 S   s   | fS r   r   r   r   r   r   	singleton  s   z7TestArgmap.test_tryfinally_generator.<locals>.singletonr   r>   rJ   Tr   c                 s   s    | ||fE d H  d S r   r   r   r   r   r   r%     s   z1TestArgmap.test_tryfinally_generator.<locals>.fooc                 S   s   | | | S r   r   r   r   r   r   r%     rC   r   r   r   )r   r   r   )r   r   r   r   r   )r4   r   r   r%   qr   r   r   test_tryfinally_generator  s   
z$TestArgmap.test_tryfinally_generatorc                 C   s4   t dd ddd }|ddddd	d
dksJ d S )Nc                 S      |  S r   r   r   r   r   r   r         z/TestArgmap.test_actual_vararg.<locals>.<lambda>rQ   c                 W   s   | |ft | S r   )r   )rM   rS   argsr   r   r   r%     s   z*TestArgmap.test_actual_vararg.<locals>.foor>   rJ   r         )r>   rJ   r   rQ   r   r   r4   r%   r   r   r   test_actual_vararg  s   
zTestArgmap.test_actual_varargc                 C   s<   dd }t dd d}||dd }|ddd	ksJ d S )
Nc                    s    fdd}|S )z9Bad because it doesn't wrap the f signature (clobbers it)c                    s    | d g|R i |S r   r   r   r   rU   fr   r   	decorated  s   zvTestArgmap.test_signature_destroying_intermediate_decorator.<locals>.add_one_to_first_bad_decorator.<locals>.decoratedr   )r   r   r   r   r   add_one_to_first_bad_decorator  s   zcTestArgmap.test_signature_destroying_intermediate_decorator.<locals>.add_one_to_first_bad_decoratorc                 S   s   | d S )NrJ   r   )r   r   r   r   r     s    zMTestArgmap.test_signature_destroying_intermediate_decorator.<locals>.<lambda>r>   c                 S   s   | |fS r   r   )r   r   r   r   r   add_one_and_two  s   zTTestArgmap.test_signature_destroying_intermediate_decorator.<locals>.add_one_and_twor   )r      r   )r4   r   add_two_to_secondr   r   r   r   0test_signature_destroying_intermediate_decorator  s   z;TestArgmap.test_signature_destroying_intermediate_decoratorc                 C   s,   t dd ddd }|dddksJ d S )	Nc                 S   r   r   r   r   r   r   r   r     r   z.TestArgmap.test_actual_kwarg.<locals>.<lambda>argc                 S   s   | S r   r   r   r   r   r   r%     r   z)TestArgmap.test_actual_kwarg.<locals>.foor   r   r   r   r   r   r   test_actual_kwarg  s   
zTestArgmap.test_actual_kwargc                 C   s\   dd }t |ddd }|dddd	d
\}}}|dksJ |dks$J |ddiks,J d S )Nc                 S   s$   |\}}| | | | | | | ffS r   r   )rM   rS   uvr   r   r   xform  s   z+TestArgmap.test_nested_tuple.<locals>.xform)r   )trJ   c                 _   r   r   r   r   r   r   r   r%     r   z)TestArgmap.test_nested_tuple.<locals>.foor>   rJ   r   rQ   )r      )rJ   rQ   r   r   r   )r4   r   r%   r   r   rU   r   r   r   test_nested_tuple  s   
zTestArgmap.test_nested_tuplec                 C   sd   t tg g gg g gg g g ggt dksJ dddgdgdgdg}dt|t d	ks0J d S )
Nr   r   r   r   der   ra   abcdef)r   r   _flattensetrb   )r4   rlistr   r   r   test_flatten  s   . zTestArgmap.test_flattenc                 C   s$   d tjg d }|dksJ d S )N
)try:r   pass#finally:r   #r   r   z7try:
 try:
  pass#
 finally:
  pass#
 #
finally:
 pass#)rb   r   _indent)r4   coder   r   r   test_indent  s   
zTestArgmap.test_indentc                 C   s   t ddd }tdg}t }ttj ||}W d    n1 s'w   Y  ttj ||}W d    n1 sAw   Y  ||}t| t| tt t| W d    d S 1 sgw   Y  d S )Nr
   c                 s   s    | E d H  d S r   r   r   r   r   r   yield_nodes  r   z4TestArgmap.test_immediate_raise.<locals>.yield_nodes)r>   rJ   )	r   r   r   r    r   r   r   nextStopIteration)r4   r   r   D	node_iterr   r   r   test_immediate_raise  s    



"zTestArgmap.test_immediate_raiseN)rp   rq   rr   RuntimeErrorr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   X  s    

r   )r7   r]   ru   r/   r   networkxr   networkx.utils.decoratorsr   r   r   r   r   r   r   networkx.utils.miscr	   r$   r)   r*   r+   ry   rz   r   r   r   r   r   r   r   r   r   <module>   s(    $	A

g

T



