a
    QIh                     @  sl  U d dl mZ d dlZd dlZd dlmZmZ d dlZd dlZd dl	m
Z
 er^d dlmZmZ ejdddd	d
ZddddddZejjejdkddddddZejjejdkddddddZdddddZddddZeeej eej f Zeeee f ZejejfejejfejejfgZded < ejd!ed"d"dd#d$d%Z ejejfejejfejefeejfgZ!d&ed'< ejd!e!d(d(dd#d)d*Z"ejd!ejejfejejfgejd
g d+d"d"ddd,d-d.Z#dddd/d0Z$dddd1d2Z%ejd3d4d5gddd6d7d8Z&dddd9d:Z'ejd3d;d<gddd6d=d>Z(dddd?d@dAZ)ddddBdCZ*ddddDdEZ+dddFdGZ,ejdHejj-ejj.gddIddJdKdLZ/dddMdNZ0ddddOdPZ1ddddQdRZ2ddddSdTZ3ddddUdVZ4dddWdXZ5ejdYej6j7ej6j8ej6j9ej6j:gdZdd[d\d]Z;dS )^    )annotationsN)TYPE_CHECKINGUnion)AsyncIOWrapper)	AwaitableCallablezpathlib.Pathz	trio.Path)tmp_pathreturnc                 C  s   t | d S )Ntest)trioPath)r    r   O/var/www/html/venv_bot_3.9/lib/python3.9/site-packages/trio/_tests/test_path.pypath   s    r   strz<tuple[Callable[[], object], Callable[[], Awaitable[object]]])r   method_namer	   c                 C  s(   t | }t| }t||t||fS N)pathlibr   r   getattr)r   r   Z	sync_pathZ
async_pathr   r   r   method_pair   s    

r   ntzOS is not posix)reasonNoner	   c                   C  s   t t tjsJ d S r   )
isinstancer   r   	PosixPathr   r   r   r   test_instantiate_posix   s    r   zOS is not Windowsc                   C  s   t t tjsJ d S r   )r   r   r   WindowsPathr   r   r   r   test_instantiate_windows#   s    r   )r   r	   c              	     s`   |  dI d H 4 I d H $}t|ts(J W d   I d H  qR1 I d H sH0    Y  |js\J d S Nw)openr   r   closedr   fr   r   r   "test_open_is_async_context_manager(   s    8r%   c                  C  s.   t d} t| dksJ t| dks*J d S )Nr
   s   test)r   r   r   bytesr   r   r   r   
test_magic/   s    
r(   z+list[tuple[EitherPathType, EitherPathType]]	cls_pairs)cls_acls_bEitherPathType)r*   r+   r	   c                 C  sp   | d|d }}||ksJ ||kr*J | d|d }}||k sHJ ||ksTJ |d kr`J |d krlJ d S )N abr   )r*   r+   r.   r/   r   r   r   test_cmp_magic?   s    r0   z)list[tuple[PathOrStrType, PathOrStrType]]cls_pairs_strPathOrStrTypec                 C  sH   | d|d }}|| }t |tjs*J t|tjddksDJ d S )Nr.   r/   )r   r   r   r   osr   join)r*   r+   r.   r/   resultr   r   r   test_div_magicZ   s    r6   )foozfoo/bar/bazz./foo)r*   r+   r   r	   c                 C  s*   | ||| }}t |t |ks&J d S r   )hash)r*   r+   r   r.   r/   r   r   r   test_hash_magicd   s    
r9   c                 C  s"   dt | v sJ | jdksJ d S )Nnamer
   )dirr:   r'   r   r   r   test_forwarded_propertiesr   s    r<   c                 C  sH   | j jdksJ | j jdks J | j jd us0J | j j| j jv sDJ d S )NresolvezPath.resolve)r=   __name____qualname____doc__r'   r   r   r   test_async_method_signaturey   s    rA   r   is_diris_file)r   r	   c                   s0   t d| \}}| }| I d H }||ks,J d S N.)r   r   methodZasync_methodr5   Zasync_resultr   r   r   test_compare_async_stat_methods   s    rH   c                 C  s8   t t t| d W d    n1 s*0    Y  d S )NZinvalid_fake_attr)pytestraisesAttributeErrorr   r'   r   r   r   test_invalid_name_not_wrapped   s    rL   absoluter=   c                   sH   t d| \}}| }| I d H }t|tjs0J t|t|ksDJ d S rD   )r   r   r   r   r   rF   r   r   r   test_async_methods_rewrap   s
    rN   )r   r   r	   c                 C  sX   |  d}| d}t|tjs$J ||d ks4J t|tjsDJ ||d ksTJ d S )Nr7   z.pyztest.py)	with_namewith_suffixr   r   r   )r   r   rO   rP   r   r   r   test_forward_methods_rewrap   s    

rQ   c                 C  s   t | jtjsJ d S r   )r   parentr   r   r'   r   r   r   test_forward_properties_rewrap   s    rS   c                 C  s   dt | dv sJ d S )Nztotally-unique-path)r   joinpathr'   r   r   r   #test_forward_methods_without_rewrap   s    rU   c                  C  s   t d} t| dksJ d S )NrE   ztrio.Path('.'))r   r   reprr'   r   r   r   	test_repr   s    
rW   methz(Callable[[trio.Path, trio.Path], object])r   rX   r	   c                   s4   |   I d H }|| |}|d u r$| }||ks0J d S r   )rM   )r   rX   wrappedr5   r   r   r   test_path_wraps_path   s
    
rZ   c                   C  s8   t t td W d    n1 s*0    Y  d S )N   )rI   rJ   	TypeErrorr   r   r   r   r   r   test_path_nonpath   s    r]   c              	     s^   t | dI d H 4 I d H *}|jt| ks0J W d   I d H  qZ1 I d H sP0    Y  d S r   )r   	open_filer:   r3   fspathr#   r   r   r   test_open_file_can_open_path   s    r`   c                   s  |   I d H  | d   I d H  | d d dI d H  | d dI d H  | d dI d H  dhddhd D ]L\}}t }| |I d H D ] }t|tjsJ ||j	 q||kstJ qtt }| 
dI d H D ] }t|tjsJ ||j	 q|ddhksJ d S )Nr7   z_bar.txt    bar.txtzbar.dat)*.txtz**/*.txtrc   )mkdirwrite_bytesitemssetglobr   r   r   addr:   rglob)r   Z_patternZ_resultsentriesentryr   r   r   test_globmethods   s$    rm   c                   s&   | j  I d H } |  ds"J d S )Nzfile:///)rR   r=   as_uri
startswithr'   r   r   r   test_as_uri   s    rp   c                   s~   |   I d H  | d   I d H  | d dI d H  t }|  I d H D ] }t|tjs\J ||j qH|ddhkszJ d S )Nr7   rb   ra   )	rd   re   rg   iterdirr   r   r   ri   r:   )r   rk   rl   r   r   r   test_iterdir   s    rr   c                     sr   t tj I d H tjsJ ttj I d H tjdks@J ttj I d H t	 ks`J tjjj
snJ d S )N~)r   r   r   homer   r3   r   
expandusercwdgetcwdr@   r   r   r   r   test_classmethods   s    $ rx   wrapperz2Callable[[Callable[[], None]], Callable[[], None]])ry   r	   c                 C  s$   | dddd}|j d u s J d S )Nr   r   c                   S  s   d S r   r   r   r   r   r   func_without_docstring  s    z@test_wrapping_without_docstrings.<locals>.func_without_docstring)r@   )ry   rz   r   r   r    test_wrapping_without_docstrings  s    r{   )<
__future__r   r3   r   typingr   r   rI   r   Ztrio._file_ior   collections.abcr   r   Zfixturer   r   markZskipifr:   r   r   r%   r(   typer   r,   r   r2   r)   __annotations__Zparametrizer0   r1   r6   r9   r<   rA   rH   rL   rN   rQ   rS   rU   rW   __init__rT   rZ   r]   r`   rm   rp   rr   rx   _pathZ_wraps_asyncZ_wrap_methodZ_wrap_method_pathZ_wrap_method_path_iterabler{   r   r   r   r   <module>   s   	




		
	

	