o
    US`c                     @   s  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 ej	dd Z
dd Zdd	 Zd
d ZejejfejejfejejfgZejdedd ZejejfejejfejefeejfgZejdedd Zejdejejfejejfgejdg ddd Zdd Zdd Zejdddgdd Zdd Zejddd gd!d" Zd#d$ Zd%d& Zd'd( Zd)d* ZG d+d, d,ZG d-d. d.Z d/d0 Z!d1d2 Z"d3d4 Z#d5d6 Z$ejd7ejj%ejj&gd8d9 Z'd:d; Z(d<d= Z)d>d? Z*d@dA Z+dBdC Z,dS )D    N)AsyncAutoWrapperType)AsyncIOWrapperc                 C   s   t | d}t|S )Ntest)strjointrioPath)tmpdirp r   ?/usr/local/lib/python3.10/dist-packages/trio/tests/test_path.pypath   s   
r   c                 C   s(   t | } t| }t| |t||fS N)pathlibr   r   getattr)r   method_nameZ
async_pathr   r   r   method_pair   s   

r   c              	      sb   |  dI d H 4 I d H }t|tsJ W d   I d H  n1 I d H s%w   Y  |js/J d S Nw)open
isinstancer   closedr   fr   r   r   "test_open_is_async_context_manager   s
   (r   c                     s0   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cls_a,cls_bc                    sr   | d|d}}||ksJ ||krJ | d|d}}||k s%J ||ks+J |d kr1J |d kr7J d S )N abr   )cls_acls_br   r    r   r   r   test_cmp_magic,   s   r#   c                    sJ   | d|d}}|| }t |tjsJ t|tjddks#J d S )Nr   r    )r   r   r   r   osr   r   )r!   r"   r   r    resultr   r   r   test_div_magicG   s
   r&   )foozfoo/bar/bazz./fooc                    s,   | |||}}t |t |ksJ d S r   )hash)r!   r"   r   r   r    r   r   r   test_hash_magicP   s   r)   c                    s$   dt | v s	J | jdksJ d S )Nnamer   )dirr*   r   r   r   r   test_forwarded_propertiesY   s   r,   c                    s6   | j jdks	J | j jdksJ d| j jv sJ d S )NresolvezPath.resolvezpathlib.Path.resolve)r-   __name____qualname____doc__r   r   r   r   test_async_method_signature`   s   r1   r   is_diris_filec                    s2   t d| \}}| }| I d H }||ksJ d S N.)r   r   methodZasync_methodr%   Zasync_resultr   r   r   test_compare_async_stat_methodsi   s
   r8   c                    s<   t t t| d W d    d S 1 sw   Y  d S )NZinvalid_fake_attr)pytestraisesAttributeErrorr   r   r   r   r   test_invalid_name_not_wrappedt      "r<   absoluter-   c                    sJ   t d| \}}| }| I d H }t|tjsJ t|t|ks#J d S r4   )r   r   r   r   r   r6   r   r   r   test_async_methods_rewrapy   s   r?   c                    s^   |  d}| d}t|tjsJ ||dksJ t|tjs$J ||dks-J d S )Nr'   z.pyztest.py)	with_namewith_suffixr   r   r   r   )r   r	   r@   rA   r   r   r   test_forward_methods_rewrap   s   

rB   c                    s   t | jtjs
J d S r   )r   parentr   r   r   r   r   r   test_forward_properties_rewrap   s   rD   c                    s(   | j  I d H } |  dsJ d S )Nzfile:///)rC   r-   as_uri
startswith)r   r	   r   r   r   #test_forward_methods_without_rewrap   s   rG   c                     s    t d} t| dksJ d S )Nr5   ztrio.Path('.'))r   r   reprr   r   r   r   	test_repr   s   
rI   c                   @   s   e Zd ZdZdZdS )MockWrappedunsupportedprivateN)r.   
__module__r/   rK   _privater   r   r   r   rJ          rJ   c                   @   s   e Zd ZeZeZdS )MockWrapperN)r.   rM   r/   rJ   	_forwardsZ_wrapsr   r   r   r   rP      rO   rP   c                      >   t t tti  W d    d S 1 sw   Y  d S r   )r9   r:   	TypeErrorTypegenerate_forwardsrP   r   r   r   r   test_type_forwards_unsupported      "rV   c                      rR   r   )r9   r:   rS   rT   generate_wrapsrP   r   r   r   r   test_type_wraps_unsupported   rW   rY   c                      $   t tdd i ttdrJ d S NrK   rN   )rT   rU   rP   hasattrr   r   r   r   test_type_forwards_private      r]   c                      rZ   r[   )rT   rX   rP   r\   r   r   r   r   test_type_wraps_private   r^   r_   methc                    s6   |   I d H }|| |}|d u r| }||ksJ d S r   )r>   )r   r`   wrappedr%   r   r   r   test_path_wraps_path   s   
rb   c                      s<   t t td W d    d S 1 sw   Y  d S )N   )r9   r:   rS   r   r   r   r   r   r   test_path_nonpath   r=   rd   c              	      sb   t | dI d H 4 I d H }|jt| ksJ W d   I d H  d S 1 I d H s*w   Y  d S r   )r   	open_filer*   r$   fspathr   r   r   r   test_open_file_can_open_path   s   .rg   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 ]&\}}t }| |I d H D ]}t|tjsTJ ||j	 qJ||ksaJ q;t }| 
dI d H D ]}t|tjswJ ||j	 qm|ddhksJ d S )Nr'   z_bar.txt    bar.txtzbar.dat)*.txtz**/*.txtrj   )mkdirwrite_bytesitemssetglobr   r   r   addr*   rglob)r   Z_patternZ_resultsentriesentryr   r   r   test_globmethods   s*   
rt   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 q%|ddhks>J d S )Nr'   ri   rh   )	rk   rl   rn   iterdirr   r   r   rp   r*   )r   rr   rs   r   r   r   test_iterdir   s   rv   c                      st   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s1J tjjj
s8J d S )N~)r   r   r   homer   r$   r   
expandusercwdgetcwdr0   r   r   r   r   test_classmethods   s
   $ r|   )-r$   r   r9   r   Z
trio._pathr   rT   Ztrio._file_ior   Zfixturer   r   r   r   r   Z	cls_pairsmarkZparametrizer#   r   r&   r)   r,   r1   r8   r<   r?   rB   rD   rG   rI   rJ   rP   rV   rY   r]   r_   __init__joinpathrb   rd   rg   rt   rv   r|   r   r   r   r   <module>   sj    







	




	