a
    äzeç;  ã                   @   s.  d 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
 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 yÎ   dZY n0 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/m0Z0 W n e yL   dZ0Y n0 ddl1m2Z3 ddl4m5Z5 ddl6m7Z7m8Z8 ddl9m:Z:m;Z;m<Z< ddl=m>Z>m?Z? ddl@mAZAmBZB ddlCmDZD ddlEmFZFm2Z2 ddlGmHZHmIZImJZJ ddlKZKddlKmLZL eLdƒZMeLdƒZNeLd ƒZOG d!d"„ d"ejPƒZQeRd#kr*e 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                F   @   sŠ  e Zd ZdZ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/e0e1e2e3e4e5e6e7e8e9e:e;e<e=e>e?e@eAeBeCeDeEeFeGeHeIgFZJeKdur¶eJ LeKjMeKjNf¡ 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„ Zfd3d4„ Zgd5d6„ ZhdS )7ÚBaseTestzTest basics.Nc              	   C   s„   | j D ]x}|d u rq|j}|  d|› ¡D |t }|  |j|¡ |  |jtf¡ |  |jd¡ W d   ƒ q1 st0    Y  qd S )NúTesting © )	Úgeneric_typesÚ__name__ÚsubTestÚintÚassertIsÚ
__origin__ÚassertEqualÚ__args__Ú__parameters__©ÚselfÚtÚtnameÚaliasr3   r3   ú,/usr/lib/python3.9/test/test_genericalias.pyÚtest_subscriptableX   s    
zBaseTest.test_subscriptablec              
   C   s€   t ttttfD ]l}|j}|  d|› ¡B |  t¡ |t   W d   ƒ n1 sR0    Y  W d   ƒ q1 sp0    Y  qd S ©Nr2   )	r7   ÚstrÚfloatÚSizedÚHashabler5   r6   ÚassertRaisesÚ	TypeError)r>   r?   r@   r3   r3   rB   Útest_unsubscriptablec   s
    zBaseTest.test_unsubscriptablec              	   C   sþ   t ttttttfD ]æ}|j}|  d|› ¡¼ |t	 }|  
|ƒ |ƒ ¡ |tu rŒ|  
|tddgƒƒtddd¡ |  
|dddtddd¡ nN|tu rÂdd„ }||ƒ}t|ƒ}|  
|d	 |d	 ¡ n|  
|td
ƒƒ|d
ƒ¡ W d   ƒ q1 sî0    Y  qd S )Nr2   )Úaé   )Úbé   rM   rO   )rL   rN   c                   S   s   dS )NÚvaluer3   r3   r3   r3   rB   Údefaultt   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_instantiatej   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                   @   s   e Zd ZdS )z$BaseTest.test_subclassing.<locals>.CN©r5   Ú
__module__Ú__qualname__r3   r3   r3   rB   ÚC†   s   rd   )rU   r7   r:   Ú	__bases__Ú	__class__Útype)r>   rd   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   ƒ n1 s00    Y  d S ©N)rU   r7   rI   rJ   rk   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                   @   s   e Zd ZdS )z.BaseTest.test_generic_subclass.<locals>.MyListNra   r3   r3   r3   rB   ÚMyList–   s   ro   r3   )rU   r7   r8   r9   r:   r;   r<   )r>   ro   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                   @   s   e Zd ZdS )z"BaseTest.test_repr.<locals>.MyListNra   r3   r3   r3   rB   ro   ž   s   ro   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>   ro   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>   ru   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   )Útypingrw   rx   ry   rV   rE   r7   r:   r;   r<   r0   r/   r.   rU   )r>   rw   rx   ry   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¡X 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   ƒ n1 s¶0    Y  d S )Nr   )rw   rx   ÚUnionry   )rz   rw   rx   r|   ry   r:   rU   r.   r7   rV   rE   r/   r0   rI   rJ   )r>   rw   rx   r|   ry   r3   r3   rB   Útest_parameter_chainingÕ   s.      $  ((,( ,,ÿ(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 rm   )r:   rU   r7   rV   rE   ZassertNotEqual©r>   r3   r3   rB   Útest_equalityð   s
    zBaseTest.test_equalityc                 C   sL   |   tg tƒ¡ |  t¡ tg tt ƒ W d   ƒ n1 s>0    Y  d S rm   )rr   Ú
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   ƒ n1 sN0    Y  d S )Nc                   @   s   e Zd ZdS )z#BaseTest.test_issubclass.<locals>.LNra   r3   r3   r3   rB   ÚLý   ó    r‚   )rU   rr   Ú
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   )rg   r7   rr   r€   r:   )r>   r?   r†   rR   r3   r3   rB   Útest_type_generic  s    zBaseTest.test_type_genericc                 C   sF   G dd„ dt ƒ}|  t¡ |t  W d   ƒ n1 s80    Y  d S )Nc                   @   s   e Zd ZdS )z3BaseTest.test_type_subclass_generic.<locals>.MyTypeNra   r3   r3   r3   rB   ÚMyType  s   rˆ   )rg   rI   rJ   r7   )r>   rˆ   r3   r3   rB   Útest_type_subclass_generic
  s    z#BaseTest.test_type_subclass_genericc                 C   sh   t ttƒ}ttjd ƒD ]J}t ||¡}t |¡}|  |j	|j	¡ |  |j
|j
¡ |  |j|j¡ qd S )NrM   )r!   rU   r.   rj   ÚpickleÚHIGHEST_PROTOCOLÚdumpsÚloadsr:   r9   r;   r<   )r>   rA   ÚprotoÚsÚloadedr3   r3   rB   Útest_pickle  s    

zBaseTest.test_picklec                 C   s¢   G dd„ dt ƒ}t t|fD ]‚}t|tƒ}t |¡}|  |j|j¡ |  |j|j¡ |  |j|j¡ t 	|¡}|  |j|j¡ |  |j|j¡ |  |j|j¡ qd S )Nc                   @   s   e Zd Zdd„ Zdd„ ZdS )zBaseTest.test_copy.<locals>.Xc                 S   s   | S rm   r3   r~   r3   r3   rB   Ú__copy__  s    z&BaseTest.test_copy.<locals>.X.__copy__c                 S   s   | S rm   r3   )r>   Úmemor3   r3   rB   Ú__deepcopy__  s    z*BaseTest.test_copy.<locals>.X.__deepcopy__N)r5   rb   rc   r’   r”   r3   r3   r3   rB   ÚX  s   r•   )
rU   r   r!   r.   Úcopyr:   r9   r;   r<   Údeepcopy)r>   r•   ÚoriginrA   Zcopiedr3   r3   rB   Ú	test_copy  s    


zBaseTest.test_copyc                 C   sB   t jtt tt f }|  |jtt tt f¡ |  |jd¡ d S )Nr3   )rz   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.)rz   r|   rU   r.   rT   r:   r;   r<   rš   r3   r3   rB   Útest_union_generic0  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   rr   Ú
issupersetZassertIn)r>   Zdir_of_gen_aliasZgeneric_alias_propertyr3   r3   rB   Útest_dir5  s    zBaseTest.test_dirc              	   C   sj   | j D ]^}|d u rq|j}|  d|› ¡* |t }|  t|ƒƒ |¡ W d   ƒ q1 sZ0    Y  qd S rD   )r4   r5   r6   r7   r:   r,   r=   r3   r3   rB   Útest_weakref;  s    
zBaseTest.test_weakrefc                 C   s8   |   t¡ ttd W d   ƒ n1 s*0    Y  d S )N©Zbad)rI   rJ   r!   rF   r~   r3   r3   rB   Útest_no_kwargsD  s    zBaseTest.test_no_kwargsc                 C   sv   G dd„ dt ƒ}|ttƒ}G dd„ dt ƒ}|  |tt ¡ |  t¡ |tttd W d   ƒ n1 sh0    Y  d S )Nc                   @   s   e Zd ZdS )z>BaseTest.test_subclassing_types_genericalias.<locals>.SubClassNra   r3   r3   r3   rB   ÚSubClassJ  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 rm   )ÚsuperÚ__new__)ÚclsÚargsÚkwargs©rf   r3   rB   r¥   M  s    zABaseTest.test_subclassing_types_genericalias.<locals>.Bad.__new__)r5   rb   rc   r¥   Ú__classcell__r3   r3   r©   rB   ÚBadL  s   r«   r¡   )r!   rU   r7   r:   rI   rJ   )r>   r£   rA   r«   r3   r3   rB   Ú#test_subclassing_types_genericaliasI  s    
z,BaseTest.test_subclassing_types_genericaliasc                 C   sJ  t ttgtf }|  d¡@ |  |jt ¡ |  |jtttf¡ |  |j	d¡ W d   ƒ n1 s`0    Y  |  d¡ |  
|t¡ W d   ƒ n1 s–0    Y  |  d¡" |  t|ƒƒ |¡ W d   ƒ n1 sÒ0    Y  |  d¡T t |¡}t |¡}|  |j|j¡ |  |j|j¡ |  |j	|j	¡ W d   ƒ n1 sB0    Y  |  d¡ô t ttgtf }t ttgtf }t dtf }|  |t t ttgtf ¡ |  |tttf t ttgtf ¡ |  |t t dtf ¡ |tttf }|  t|ƒ d¡d	 d
¡ |  t|t ƒ d¡d	 d¡ |  |t t ttgtf ¡ W d   ƒ n1 sR0    Y  |  d¡X G dd„ dt ƒ}|tgtf }|  |ƒ j|¡ |  |ƒ j|tgtf ¡ W d   ƒ n1 sÆ0    Y  |  d¡Z tj ttgtf }	t ttgtf }
|  |	j|
j¡ |  t|	jƒt|
jƒ¡ W d   ƒ n1 s<0    Y  d S )NzTesting subscriptionr3   zTesting instance checkszTesting weakrefzTesting picklingzTesting TypeVar substitution.Ú.éÿÿÿÿzCallable[[int, ~V], str]zCallable[[int, dict], str]zTesting type erasurec                   @   s   e Zd Zdd„ ZdS )z&BaseTest.test_abc_callable.<locals>.C1c                 S   s   d S rm   r3   r~   r3   r3   rB   Ú__call__z  s    z/BaseTest.test_abc_callable.<locals>.C1.__call__N)r5   rb   rc   r¯   r3   r3   r3   rB   ÚC1y  s   r°   zCTesting collections.abc.Callable's consistency with typing.Callable)ry   r7   rE   rF   r6   r8   r9   r:   r;   r<   ZassertIsInstancer!   r,   rŠ   rŒ   r   r.   r/   r0   rq   ÚsplitrV   rf   Ú__orig_class__rz   Úhash)r>   rA   r   r   r°   ZC2ZC3ZC4rL   Úc1Úc2r3   r3   rB   Útest_abc_callableT  sH    ,*0

0"<:zBaseTest.test_abc_callable)ir5   rb   rc   Ú__doc__rg   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`   rh   rl   rn   rp   rt   rv   r{   r}   r   r   r…   r‡   r‰   r‘   r™   r›   rœ   rŸ   r    r¢   r¬   r¶   r3   r3   r3   rB   r1   1   s€   ß"		'		r1   Ú__main__)Tr·   ZunittestrŠ   r–   Ú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    ru   r!   r"   r#   Útempfiler$   r%   Úurllib.parser&   r'   Zunittest.caser(   Úqueuer)   Úweakrefr*   r+   r,   rz   r-   r.   r/   r0   ZTestCaser1   r5   Úmainr3   r3   r3   rB   Ú<module>   s\    

  Z
