o
    g/                     @   s(  d Z ddlZddlZddlmZmZmZmZmZm	Z	 ddl
T ddlmZ ddlmZ ddlmZmZ ddlmZmZ dd	lmZ dd
lmZmZmZ ddlmZmZ zddlZW n eyc   dZY nw ddl m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z- zddl.m/Z/ W n ey   dZ/Y nw ddl0m1Z2 ddl3m4Z4 ddl5m6Z6m7Z7 ddl8m9Z9m:Z:m;Z; ddl<m=Z=m>Z> ddl?m@Z@mAZA ddlBmCZC ddlDmEZEm1Z1 ddlFmGZGmHZHmIZI ddlJZJddlJmKZK eKdZLeKdZMeKd ZNG d!d" d"ejOZPeQd#kreR  dS dS )$z%Tests for C-implemented GenericAlias.    N)defaultdictdequeOrderedDictCounterUserDictUserList)*)Future)	_WorkItem)AbstractContextManagerAbstractAsyncContextManager)
ContextVarToken)Field)partialpartialmethodcached_property)Mailbox_PartialFile)SequenceMatcher)dircmp)	FileInput)chain)Morsel)
ValueProxy)ApplyResult)ShareableList)SimpleQueue)DirEntry)PatternMatch)GenericAliasMappingProxyTypeAsyncGeneratorType)TemporaryDirectorySpooledTemporaryFile)SplitResultParseResult)_AssertRaisesContext)Queuer   )WeakSetReferenceTyperef)TypeVarTKVc                   @   s  e Zd ZdZg eeeeee	e
eeeeeeeeeeeeeeeeeeeeee e!e"e#e$e%e&e'e(e)e*e+e,e-e.e/e0e1e2e3e4e5e6e7e8e9e:e;e<e=e>e?e@eAeBeCeDeEeFeGeHeIZJeKdureJLeKjMeKjNf dd ZOdd ZPdd ZQd	d
 ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd  Z]d!d" Z^d#d$ Z_d%d& Z`d'd( Zad)d* Zbd+d, Zcd-d. Zdd/d0 Zed1d2 ZfdS )3BaseTestzTest basics.Nc              	   C   s   | j D ]<}|d u r
q|j}| d| " |t }| |j| | |jtf | |jd W d    q1 s:w   Y  qd S )NTesting  )	generic_types__name__subTestintassertIs
__origin__assertEqual__args____parameters__selfttnamealiasr3   r3   L/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_genericalias.pytest_subscriptableW   s   
zBaseTest.test_subscriptablec              
   C   s   t ttttfD ]6}|j}| d| ! | t |t   W d    n1 s)w   Y  W d    q1 s8w   Y  qd S Nr2   )	r7   strfloatSizedHashabler5   r6   assertRaises	TypeError)r>   r?   r@   r3   r3   rB   test_unsubscriptableb   s   
zBaseTest.test_unsubscriptablec              	   C   s   t ttttttfD ]s}|j}| d| ^ |t	 }| 
| |  |tu rF| 
|tddgtddd | 
|dddtddd n'|tu radd }||}t|}| 
|d	 |d	  n| 
|td
|d
 W d    q	1 sww   Y  q	d S )Nr2   )a   )b   rM   rO   )rL   rN   c                   S   s   dS )Nvaluer3   r3   r3   r3   rB   defaults   s   z*BaseTest.test_instantiate.<locals>.defaulttest)rM   rO      )tuplelistdictset	frozensetr   r   r5   r6   r7   r:   iter)r>   r?   r@   rA   rQ   rL   dr3   r3   rB   test_instantiatei   s"    zBaseTest.test_instantiatec                 C   sV   t t }| }||d | |dg ||d}| |d | ||d d S )NZfoor   rM   )rU   r7   appendr:   __getitem____len__)r>   r?   rL   xr3   r3   rB   test_unbound_methods{   s   zBaseTest.test_unbound_methodsc                 C   s6   G dd dt t }| |jt f | |jt d S )Nc                   @      e Zd ZdS )z$BaseTest.test_subclassing.<locals>.CNr5   
__module____qualname__r3   r3   r3   rB   C       re   )rU   r7   r:   	__bases__	__class__type)r>   re   r3   r3   rB   test_subclassing   s   zBaseTest.test_subclassingc                 C   sH   t td f }| t tdd d d | |tdd d d d S )NrO   )r   rM   )rV   r7   r:   fromkeysranger>   r?   r3   r3   rB   test_class_methods   s    zBaseTest.test_class_methodsc                 C   s@   t t }| t |t  W d    d S 1 sw   Y  d S N)rU   r7   rI   rJ   rm   r3   r3   rB   test_no_chaining   s   
"zBaseTest.test_no_chainingc                 C   sH   G dd dt }|t }| |j| | |jtf | |jd d S )Nc                   @   ra   )z.BaseTest.test_generic_subclass.<locals>.MyListNrb   r3   r3   r3   rB   MyList   rf   rq   r3   )rU   r7   r8   r9   r:   r;   r<   )r>   rq   r?   r3   r3   rB   test_generic_subclass   s
   zBaseTest.test_generic_subclassc                 C   s   G dd dt }| tt t d | tt d d | tttdf d | t|t d | tt t  d	 d S )
Nc                   @   ra   )z"BaseTest.test_repr.<locals>.MyListNrb   r3   r3   r3   rB   rq      rf   rq   z	list[str]r3   zlist[()].ztuple[int, ...]z(.BaseTest.test_repr.<locals>.MyList[int]z[])rU   r:   reprrE   rT   r7   
assertTrueendswith)r>   rq   r3   r3   rB   	test_repr   s   zBaseTest.test_reprc                 C   sT   dd l }|tt}| t|d | |jt | |jtf | |j	d d S )Nr   z	list[int]r3   )
typesr!   rU   r7   r:   rE   r8   r9   r;   r<   )r>   rw   rL   r3   r3   rB   test_exposed_type   s   zBaseTest.test_exposed_typec                 C   s`  ddl m}m}m} tttf }| |jttf | |j	d ttt
f }| |jtt
f | |j	t
f tttf }| |jttf | |j	tf ttt
f }| |jtt
f | |j	tt
f tttf }| |jttf | |j	tf tt }	| |	jtf | |	j	d tt }
| |
jtf | |
j	tf ttt  }| |jtt f | |j	tf t|t  }| |j|t f | |j	tf t|tt
f  }| |j|tt
f f | |j	tt
f t|ttf  }| |j|ttf f | |j	tf t|tt
gtf  }| |j|tt
gtf f | |j	tt
f d S )Nr   )ListDictCallabler3   )typingry   rz   r{   rV   rE   r7   r:   r;   r<   r0   r/   r.   rU   )r>   ry   rz   r{   ZD0ZD1aZD1bZD2aZD2bZL0ZL1ZL2ZL3ZL4aZL4bZL5r3   r3   rB   test_parameters   sJ   zBaseTest.test_parametersc                 C   s  ddl m}m}m}m} | tt t tt  | t	t
tf t t	t
tf  | t	ttf t
 t	t
tf  | t	ttf t
tf t	t
tf  | t	ttf t t	ttf  | ttt  t ttt   | tt	ttf  t
 tt	t
tf   | tt	t
tf  t tt	t
tf   | tt	ttf  t
tf tt	t
tf   | t	ttt f t
 t	t
tt f  | t|t  t t|t   | t|ttf  t
tf t|t
tf   | t|ttf  t
tf t|t
tf   | t|ttgtf  t
tf t|t
tgt
f   | t	t|t f t
 t	t
|t f  | t- tt t  t	ttf t
tf  t	t
tf t
tf  t	ttf t
tf  W d    d S 1 s\w   Y  d S )Nr   )ry   rz   Unionr{   )r|   ry   rz   r~   r{   r:   rU   r.   r7   rV   rE   r/   r0   rI   rJ   )r>   ry   rz   r~   r{   r3   r3   rB   test_parameter_chaining   s0     $  ((,( ,,($z BaseTest.test_parameter_chainingc                 C   sp   |  tt tt  |  tttf tttf  | tttf tttf  | ttt  | tt t d S ro   )r:   rU   r7   rV   rE   ZassertNotEqualr>   r3   r3   rB   test_equality   s
   zBaseTest.test_equalityc                 C   sN   |  tg t | t tg tt  W d    d S 1 s w   Y  d S ro   )rt   
isinstancerU   rI   rJ   rE   r   r3   r3   rB   test_isinstance   s   "zBaseTest.test_isinstancec                 C   s^   G dd dt }| t|t  | t t|t t  W d    d S 1 s(w   Y  d S )Nc                   @   ra   )z#BaseTest.test_issubclass.<locals>.LNrb   r3   r3   r3   rB   L       r   )rU   rt   
issubclassrI   rJ   rE   )r>   r   r3   r3   rB   test_issubclass   s
   "zBaseTest.test_issubclassc                 C   sN   t t }|ddi }| t|t  | }| ||| | |dt d S )NTestr3   r   )ri   r7   rt   r   r:   )r>   r?   r   rR   r3   r3   rB   test_type_generic  s   zBaseTest.test_type_genericc                 C   sH   G dd dt }| t |t  W d    d S 1 sw   Y  d S )Nc                   @   ra   )z3BaseTest.test_type_subclass_generic.<locals>.MyTypeNrb   r3   r3   r3   rB   MyType
  rf   r   )ri   rI   rJ   r7   )r>   r   r3   r3   rB   test_type_subclass_generic	  s   
"z#BaseTest.test_type_subclass_genericc                 C   sR   t tt}t|}t|}| |j|j | |j|j | |j	|j	 d S ro   )
r!   rU   r.   pickledumpsloadsr:   r9   r;   r<   )r>   rA   sZloadedr3   r3   rB   test_pickle  s   


zBaseTest.test_picklec                 C   sB   t jtt tt f }| |jtt tt f | |jd d S )Nr3   )r|   r~   rU   r7   rE   r:   r;   r<   r>   rL   r3   r3   rB   
test_union  s   zBaseTest.test_unionc                 C   sL   t jtt ttdf f }| |jtt ttdf f | |jtf d S )N.)r|   r~   rU   r.   rT   r:   r;   r<   r   r3   r3   rB   test_union_generic  s   zBaseTest.test_union_genericc                 C   s>   t ttt }| |tt dD ]}| || qd S )N)r9   r;   r<   )rW   dirrU   r7   rt   
issupersetZassertIn)r>   Zdir_of_gen_aliasZgeneric_alias_propertyr3   r3   rB   test_dir!  s
   zBaseTest.test_dirc              	   C   sj   | j D ]/}|d u r
q|j}| d|  |t }| t| | W d    q1 s-w   Y  qd S rD   )r4   r5   r6   r7   r:   r,   r=   r3   r3   rB   test_weakref'  s   
zBaseTest.test_weakrefc                 C   s:   |  t ttd W d    d S 1 sw   Y  d S )NZbad)rI   rJ   r!   rF   r   r3   r3   rB   test_no_kwargs0  s   "zBaseTest.test_no_kwargsc                 C   sx   G dd dt }|tt}G dd dt }| |tt  | t |tttd W d    d S 1 s5w   Y  d S )Nc                   @   ra   )z>BaseTest.test_subclassing_types_genericalias.<locals>.SubClassNrb   r3   r3   r3   rB   SubClass6  r   r   c                       s   e Zd Z fddZ  ZS )z9BaseTest.test_subclassing_types_genericalias.<locals>.Badc                    s   t  j| g|R i | d S ro   )super__new__)clsargskwargsrh   r3   rB   r   9  s   zABaseTest.test_subclassing_types_genericalias.<locals>.Bad.__new__)r5   rc   rd   r   __classcell__r3   r3   r   rB   Bad8  s    r   r   )r!   rU   r7   r:   rI   rJ   )r>   r   rA   r   r3   r3   rB   #test_subclassing_types_genericalias5  s   
"z,BaseTest.test_subclassing_types_genericalias)gr5   rc   rd   __doc__ri   rT   rU   rV   rW   rX   	enumerater   r   r   r   r   r   r   r   r   r   r    r   r   r   r   r   	Awaitable	CoroutineAsyncIterableAsyncIteratorAsyncGenerator	GeneratorIterableIterator
Reversible	Container
Collectionr   r   r   r   r   Set
MutableSetMappingMutableMappingMappingViewKeysView	ItemsView
ValuesViewSequenceMutableSequencer"   r#   r   r   r$   r%   r)   r   r(   r&   r'   r   r   r*   r+   r,   r   MPSimpleQueuer	   r
   r   r4   ctypesextendArrayZLibraryLoaderrC   rK   r[   r`   rj   rn   rp   rr   rv   rx   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r3   r3   r3   rB   r1   0   s6   		

  !"		'	r1   __main__)Sr   Zunittestr   collectionsr   r   r   r   r   r   collections.abcconcurrent.futuresr	   Zconcurrent.futures.threadr
   
contextlibr   r   Zcontextvarsr   r   Zdataclassesr   	functoolsr   r   r   Zmailboxr   r   r   ImportErrorZdifflibr   filecmpr   Z	fileinputr   	itertoolsr   Zhttp.cookiesr   Zmultiprocessing.managersr   Zmultiprocessing.poolr   Zmultiprocessing.shared_memoryr   multiprocessing.queuesr   r   osr   rer   r    rw   r!   r"   r#   tempfiler$   r%   urllib.parser&   r'   Zunittest.caser(   queuer)   weakrefr*   r+   r,   r|   r-   r.   r/   r0   ZTestCaser1   r5   mainr3   r3   r3   rB   <module>   sb       
