U
    gQ                  
   @  sd  d dl mZ 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Zd dl	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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 d
dlmZ erd dlm Z m!Z! da"zd dl#mZ$ W n e%k
r   eZ$Y nX ddddZ&ddddZ'dddddZ(ddddddZ)e*e)edd Z+e*e)edd Z,d!d" e+D Z-ej./ ej.j0e	j1j2d#kd$d%ej.3d&e-ej.3d'd(d)d*d+gej.4d,d-d-d.dd/d0d1Z5eej./ ej.j0e	j1j2d#kd$d%ej.3d2e-ej.3d'd)d*gd-d-d.dd3d4d5Z6ddd6d7Z7ddd8d9Z8dS ):    )annotationsN)PathPurePath)
ModuleType)TYPE_CHECKINGProtocol)skip_if_optional_else_raise   )_core_util)slow   )RUN_SLOW)IterableIteratorF)r   None)returnc               
   C  sr   zddl m}  W n* tk
r: } zt| W 5 d }~X Y nX tsn| dddddg}|d r^t|d rjtd	ad S )
Nr   )runz--config-file=z--cache-dir=./.mypy_cachez--no-error-summaryz-czimport trior   T)Zmypy.apir   ImportErrorr   mypy_cache_updatedAssertionError)r   errorresult r   </tmp/pip-unpacked-wheel-ks04xdmi/trio/_tests/test_exports.py_ensure_mypy_cache_updated(   s     	r   c                  C  sx   t t jt jg} ttD ]\}|dr&qd}| D ],}|t|kr.t||tt|kr.|d7 }q.t|| |dkstqd S )N_r   r   )	trioZlowleveltestingdirr
   
startswithgetattrprintr   )sourcessymbolfoundsourcer   r   r    test_core_is_properly_reexportedA   s    


r'   typebool)clsr   c                 C  s2   zt d| f W n tk
r(   Y dS X dS dS )z&Check if a class cannot be subclassed.ZSubclassTesterTFN)types	new_class	TypeError)r*   r   r   r   class_is_finalS   s
    r.   ztypes.ModuleTypezIterator[types.ModuleType])moduleonly_publicr   c                 c  sd   | V  | j  D ]N\}}|dr(|r(qt|ts4q|j| jsDq|| krNqt||E d H  qd S )Nr   )__dict__itemsr    
isinstancer   __name__iter_modules)r/   r0   nameclass_r   r   r   r5   ^   s    
r5   T)r0   c                 C  s   g | ]
}|j qS r   )r4   ).0mr   r   r   
<listcomp>q   s     r:   alphaz<skip static introspection tools on Python dev/alpha releases)reasonmodnametoolpylintjedimypypyright_verifytypesz>ignore:module 'sre_constants' is deprecated:DeprecationWarningstrr   )r>   r=   tmp_pathr   c              
     sJ  t  }ddddd}|t|} dkr8|d tjD ]$}t||d tt|kr>|| q>| dkrzd	d
lm	} W n* t
k
r } zt| W 5 d }~X Y nX | }	|jd k	st|	|j }
||
}n| dkrftjjdkrtd zd	d l}W n, t
k
r. } zt| W 5 d }~X Y nX |d  d  d}| }|dd |D }n| dkrLtstd t d }t  t|d} d dd\}  d d   r|  n|}| r|d }n| d  }| s t|  st|! .}t"#|$ }|dd |d % D }W 5 Q R X n| dkrtsftd zd	d l&}W n, t
k
r } zt| W 5 d }~X Y nX d	d l'}|j(dd   d!gd"d#}t"#|j)} fd$d%|d& d' D }nt || }|dh8 }|rFt*|  d(  d) t*  t+|D ]}t*d*|  q*t d S )+NIterable[str]set[str]symbolsr   c                 S  s   dd | D S )Nc                 S  s   h | ]}| d s|qS )r   r    r8   r$   r   r   r   	<setcomp>   s     
 zLtest_static_tool_sees_all_symbols.<locals>.no_underscores.<locals>.<setcomp>r   rH   r   r   r   no_underscores   s    z9test_static_tool_sees_all_symbols.<locals>.no_underscoresr   testsr?   r   )PyLinterr@   cpythonjedi does not support pypyzimport ; .c                 s  s   | ]}|j V  qd S Nr6   r8   cr   r   r   	<genexpr>   s     z4test_static_tool_sees_all_symbols.<locals>.<genexpr>rA   z$use --run-slow to check against mypy.mypy_cache*/trior   __init__.data.json
.data.jsonc                 s  s,   | ]$\}}| d s|d dkr|V  qdS )rS   kindZGdefNrI   )r8   keyvaluer   r   r   rX      s   
 namesrB   z'use --run-slow to check against pyrightpyrightz--verifytypes=z--outputjsonT)capture_outputc                   s2   h | ]*}|d    r|d  t d d qS )r6   r   N)r    lenr8   xr=   r   r   rK      s   z4test_static_tool_sees_all_symbols.<locals>.<setcomp>ZtypeCompletenessrH   z" can't see the following names in :z    ),	importlibimport_moduler   discard
__future__all_feature_namesr!   removeZpylint.lintrO   r   r   __file__r   Zget_astsysimplementationr6   pytestskipr@   Scriptcompleter   r   cwdr   nextglobsplitis_direxistsis_fileopenjsonloadsreadr2   rb   
subprocessr   stdoutr"   sorted)r>   r=   rD   r/   rM   runtime_namesr6   rO   r   Zlinteraststatic_namesr@   scriptcompletionscache
trio_cacher   	mod_cache
cache_file
cache_jsonrb   r   resZcurrent_resultZmissing_namesr   rg   r   !test_static_tool_sees_all_symbolsx   s    















r   module_name)r>   r   rD   r   c                   sh  t t| }ddddd}| dkr<tjjdkr<td | d	krt	 d
  t
  t d}|}|d dd\}}|d d }|r|| n|}| r|d }n||d  }| st| st| }	t|	 }
W 5 Q R X tjddd fdd}i }|j D ]\}}t|ts4q|dkrP|ttkrPq|tjj krbqt!tt|dddddddddd d!d"d#d$d%d&d'hB }t|tkr|"d( |"d) tjjd*kr|d+d,d-d.d/d0hO }|d1d2 t#$|D | }| dkrzzd3d l%}W n, t&k
r: } zt'| W 5 d }~X Y nX |(d4| d5| d6| d}|) }|d7d2 |D | }n| d	kr|
d8 | }d9|kr||d: }d9|kst|d9 }|d;d2 |d8 D }|d< dd  D ],}||d9 }||d=d2 |d8 D O }q||8 }ntd>|| }|| }| dkr^t*|j+kr^tj,d?kr^|-d@ | d	krt*|j+krtj,d?kr|-dA | d	krt./|rt0|}dBdC |D }t0||d kst| d	krt1j2|j+krtj,dDkr|-dE | d	kr|tj3kr|-dF tj4dGdHhtj5dIdJhtj6dKdLdMdNdOdPhtj7dQhtj8dRhtj9dIhtj:dIhtjj;dSdThtjj<dSdUdVhtjj=dWdXdYhi
}| d	kr||krt0|}||| 8 }t0||t0||  kst|tj>kr|-dZ |-d[ | dkr`tj,d?kr`|tj4tj?tj@tj7tj9fkr:|-d\ |-d] |tj4tj?fkr`|-d^ |-d_ |tjtjAtjBfkr|tCjD 8 }| d	krtjEd`kr|dadbdch8 }| dkrtjEd`kr|dadbdch8 }| dkrtj,ddkr|tjtjAtjBfkr|-de |s|r||df|| d| < q|rZd3dglFmF} tGdh|  di| dj || |rdtd S )kNrE   rF   rG   c                 S  s   dd | D S )Nc                 S  s$   h | ]}| d r| dr|qS )r   __rI   rJ   r   r   r   rK     s   
 
zItest_static_tool_sees_class_members.<locals>.no_hidden.<locals>.<setcomp>r   rL   r   r   r   	no_hidden  s    z6test_static_tool_sees_class_members.<locals>.no_hiddenr@   rP   rQ   rA   rY   rZ   rS   r   r[   r\   r]   rC   zdict[str, str])r$   r   c           	   
     s   |  d^}}}t d}|| }| s<||d  }|r|d d D ]}|| }qL||d  }| rx|d }q||d d  }n| r|d }| $}t| d | W  5 Q R  S Q R X d S )NrS   z3.*/r]   r[   r\   ra   )ry   rw   rx   rz   r}   r~   r   r   )	r$   Ztopnamer=   r6   versionr   ZpieceZ
next_cachefr   r   r   lookup_symbol&  s     


z:test_static_tool_sees_class_members.<locals>.lookup_symbolztrio.socket__annotations__Z__attrs_attrs__Z__attrs_own_setattr__Z__callable_proto_members_only____class_getitem__Z	__final____getstate__Z__match_args__	__order____orig_bases____parameters__Z__protocol_attrs____setstate__	__slots____weakref____copy____deepcopy__Z__firstlineno__Z__static_attributes__pypy__basicsize____dictoffset____itemsize__
__sizeof____weakrefoffset____unicode__c                 s  s   | ]}|d  V  qdS )r   Nr   re   r   r   r   rX   r  s     z6test_static_tool_sees_class_members.<locals>.<genexpr>r   zfrom z import rR   c                 s  s   | ]}|j V  qd S rT   rU   rV   r   r   r   rX     s     ra   nodeZ	cross_refc                 s  s   | ]}| d s|V  qdS rS   NrI   r8   kr   r   r   rX     s     
 mroc                 s  s   | ]}| d s|V  qdS r   rI   r   r   r   r   rX     s    
 zunknown tool)      Zadd_noteZ	__notes__c                 S  s   h | ]}| d s|qS )ZAttrsAttributes__)endswith)r8   er   r   r   rK     s     
 z6test_static_tool_sees_class_members.<locals>.<setcomp>)r      __signature__Zcancel_scopeZpeer_addressZendpointsocketZincoming_packets_bufferargspidstderrstdinZstdior   Ztransport_listenerZtransport_streamZ
close_hookZreceive_some_hookZsend_all_hookZ"wait_send_all_might_not_block_hookZexception_typematchcheckZreceive_streamZsend_stream
__aenter__	__aexit__	__aiter__	__anext__win32owneris_mountgroup)r      Zwith_segments)missingextra)pprint
z$ can't see the following symbols in rh   )HPUBLIC_MODULESPUBLIC_MODULE_NAMESindexrp   rq   r6   rr   rs   r   rv   r   rw   rx   ry   rz   r{   r   r|   r}   r~   r   r   	functools	lru_cacher1   r2   r3   r(   r   stdlib_socketr   r   ZRaisesGroupsetaddinspect
getmembersr@   r   r   rt   ru   BaseException__mro__version_inforn   attrsZhasrd   enumEnumZNurseryZDTLSChannelZDTLSEndpointProcessZSSLListenerZ	SSLStreamZSocketListenerZSocketStreamZMemoryReceiveStreamZMemorySendStreamZMatcherZStapledStreamZMemoryReceiveChannelZMemorySendChannelWindowsPath	PosixPathr   keysplatformr   r"   )r>   r   rD   r/   r   r   r=   r   r   r   r   r   errors
class_namer7   Zignore_namesr   r@   r   r   r   r   Zcached_type_infor   r$   r   r   beforeEXTRASr   r   r   r   #test_static_tool_sees_class_members   sp   















        






r   c                  C  sD   t tjsttD ],} | j D ]}t|tjr t |s tq qdS )z6Check all NoPublicConstructor classes are also @final.N)r.   r   ZNoPublicConstructorr   ALL_MODULESr1   valuesr3   )r/   r7   r   r   r   test_nopublic_is_final  s
    r   c                  C  s   t trtt tsttD ]} | j D ]\}}t|ts>q*|	drJq*t
|rVq*t|jks*t|jkrlq*t|trxq*|tjjks*|tjjkrq*|tjkrq*|drq*t |s*tq*qd S )Nr   Z
Statistics)r.   objectr   r)   r   r1   r2   r3   r(   r    r   
isabstractr   	__bases__Protocol_ext
issubclassr   r   abcZ
Instrumentr   
SocketTyper   r   )r/   r6   r7   r   r   r   test_classes_are_final  s*    





r   )9rl   r   r   r   ri   r   r~   r   r   rp   r+   pathlibr   r   r   typingr   r   r   rr   r   Ztrio.testingZtrio._tests.pytest_pluginr    r
   r   Z_core._tests.tutilr   Zpytest_pluginr   collections.abcr   r   r   Ztyping_extensionsr   r   r   r'   r.   r5   listr   r   r   markZredistributors_should_skipZskipifr   releaselevelZparametrizefilterwarningsr   r   r   r   r   r   r   r   <module>   st   

o
  
