ó
    ÷Þ j\%  ã                   óâ   • S SK r S SKrS SKrS SKJr  S SKJr  S SKJr  S SKJr  S SK	J
r
  S SK	J	r	  SS	KJr  SS
KJr  \" SSS9r\" SSS9rSr " S S\5      r\S:X  a  \R$                  " 5         gg)é    N)ÚContext)Ú
ContextVar)Úcopy_context)Úpartial)Ú
getcurrent)Úgreenleté   )ÚPY314)ÚTestCaseÚid)ÚdefaultÚvarc                   ó\   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)ÚContextVarsTestsé   c                 ó6   • [        5       R                  " U0 UD6$ ©N)r   Úrun)ÚselfÚargsÚkwargss      ÚY/var/www/html/gaurav/venv/lib/python3.13/site-packages/greenlet/tests/test_contextvars.pyÚ_new_ctx_runÚContextVarsTests._new_ctx_run   s   € Ü‹~×!Ò! 4Ð2¨6Ñ2Ð2ó    c                 ó  • [         nUc   U R                  UR                  5       5        O U R                  UR                  5       U5        UR	                  U5        [        S5       H$  nX5R                  5       ==   S-  ss'   U" 5         M&     g )Né   r	   )ÚID_VARÚassertIsNoneÚgetÚassertEqualÚsetÚrange)r   Úgreenlet_idÚcallbackÚcountsÚexpectÚctx_varÚ_s          r   Ú
_incrementÚContextVarsTests._increment   si   € ÜˆØ‰>Ø×Ñ˜gŸk™k›mÕ,à×Ñ˜WŸ[™[›]¨FÔ3Ø�‰�KÔ Ü�q–ˆAØ—;‘;“=Ó! QÑ&Ó!ÙŽJò r   c                 óŒ  • [         R                  S5        [        5       R                  n[	        S [        S5       5       5      n[        SS5       Vs/ sHd  n[        [        US:X  a(  [        [        5       R                  U R                  5      OU R                  UUUUS:X  a  US-
  O	US;   a  SOS S95      PMf     nnU H;  nUS	:X  a  [        5       Ul        M  US:X  d  M"  [        5       R                  Ul        M=     [        S
5       H;  nU[         R                  5       ==   S-  ss'   U H  nUR                  5         M     M=     US:X  a#  [        U5       H  nUR                  5         M     OU H  nUR                  5         M     U H\  nU R                  UR                  5        US:X  a  U R!                  UR                  5        MA  U R#                  UR                  5        M^     US:X  a  U R%                  USSSSSS.5        g U R%                  [        UR'                  5       5      [        S
/5      5        g s  snf )Nr   c              3   ó&   #   • U H  oS 4v •  M
     g7f)r   N© )Ú.0Úis     r   Ú	<genexpr>Ú1ContextVarsTests._test_context.<locals>.<genexpr>.   s   é € Ð/¡h ˜!•f¢hùs   ‚é   r	   r   Úshare)r"   r   )r$   r%   r&   r'   r"   r   é   )r   r	   r   é   é   )r   r"   r   ÚswitchÚdictr#   r   r   r   r   r*   Ú
gr_contextr    ÚreversedÚ
assertTrueÚdeadr   ÚassertIsNotNoner!   Úvalues)r   Úpropagate_byr%   r&   r0   ÚletsÚlets          r   Ú_test_contextÚContextVarsTests._test_context)   sñ  € ä�
‰
�1Œä“<×&Ñ&ˆÜÑ/¤e¨A¤hÓ/Ó/ˆô  ˜1˜a”[ó
ñ !�ô ”Wð " UÓ*ô Ü “N×&Ñ&Ø—O‘Oôð 15·±ØØ!Øà)¨WÓ4�A˜’EØ%¨Ó7‘A¸Tñö ñ !ð 	ð 
ó" ˆCØ˜uÓ$Ü!-£�–Ø Õ(Ü!+£×!8Ñ!8�–ñ	 ô �q–ˆAØ”6—:‘:“<Ó  AÑ%Ó Û�Ø—
‘
–ó ñ ð
 ˜5Ó ä –~�Ø—
‘
–ò &ó �Ø—
‘
–ñ ó ˆCØ�O‰O˜CŸH™HÔ%ð
 ˜uÓ$Ø×!Ñ! #§.¡.Ö1à×$Ñ$ S§^¡^Ö4ñ ð ˜7Ó"Ø×Ñ˜V¨¨q°Q¸1ÀÑ%CÕDà×ÑœS §¡£Ó1´3¸°s³8Õ<ùòi
s   ÁA*Ic                 ó<   • U R                  U R                  S5        g )Nr   ©r   rC   ©r   s    r   Ú&test_context_propagated_by_context_runÚ7ContextVarsTests.test_context_propagated_by_context_runf   ó   € Ø×Ñ˜$×,Ñ,¨eÕ4r   c                 ó<   • U R                  U R                  S5        g )Nr"   rF   rG   s    r   Ú,test_context_propagated_by_setting_attributeÚ=ContextVarsTests.test_context_propagated_by_setting_attributei   rJ   r   c                 ó<   • U R                  U R                  S 5        g r   rF   rG   s    r   Útest_context_not_propagatedÚ,ContextVarsTests.test_context_not_propagatedl   s   € Ø×Ñ˜$×,Ñ,¨dÕ3r   c                 ó<   • U R                  U R                  S5        g )Nr4   rF   rG   s    r   Útest_context_sharedÚ$ContextVarsTests.test_context_sharedo   s   € Ø×Ñ˜$×,Ñ,¨gÕ6r   c                 ó$  • [        [        5       R                  5      n[        [        5       R                  5      nUR                  [	        5       R                  5        UR                  [	        5       R                  5        UR                  5         g r   )r   r   r   r8   r   ©r   Úlet1Úlet2s      r   Útest_break_ctxvarsÚ#ContextVarsTests.test_break_ctxvarsr   sY   € Üœ›×*Ñ*Ó+ˆÜœ›×*Ñ*Ó+ˆØ�‰”J“L×'Ñ'Ô(Ø�‰”J“L×'Ñ'Ô(ð 	�‰�r   c                 ó4  • [        [        5       R                  5      n[        [        5       R                  5      n[        5       Ul        [        5       Ul        UR                  5         UR                  5         UR                  5         UR                  5         g r   )r   r   r8   r   r:   rU   s      r   Ú9test_not_broken_if_using_attribute_instead_of_context_runÚJContextVarsTests.test_not_broken_if_using_attribute_instead_of_context_run|   s\   € Üœ
›×+Ñ+Ó,ˆÜœ
›×+Ñ+Ó,ˆÜ&›.ˆŒÜ&›.ˆŒØ�‰ŒØ�‰ŒØ�‰ŒØ�‰�r   c                 óD  ^ ^• [         R                  S 5        UU 4S jn[        U5      mT R                  [        S5         T?S S S 5        T R                  TR
                  5        TR                  5       u  p#T R                  UTR
                  5        T R                  U[            S5        T R                  U[            S5        T R                  UR                  [         R                  5      S5        UTl        TR                  5         T R                  TR
                  U5        S Tl        TR                  5         T R                  TR
                  U5        S Tl        TR                  5         T R                  TR
                  5        S m[        R                  " 5         T R                  [        R                  " U5      [         (       d  SOS5        T R                  [        R                  " U5      [         (       d  S5        g S5        g ! , (       d  f       GNÔ= f)Nc                  óè  >• TR                  [        R                  5       5        TR                  TR                  5        [        R	                  S5        TR                  TR                  [        5        TR                  [        R                  5       S5        TR                  TR                  [           S5        TR                  n S Tl        TR                  [        R                  5       5        TR                  TR                  5        [        R	                  S5        TR                  TR                  [        5        TR                  [        R                  5       S5        TR                  TR                  [           S5        TR                  n[        5       R                  R                  X45        TR                  [        R                  5       S5        UTl        TR                  [        R                  5       S5        [        5       R                  R                  5         TR                  [        R                  5       5        TR                  TR                  5        U Tl        TR                  [        R                  5       S5        [        5       R                  R                  5         TR                  [        R                  5       5        TR                  TR                  5        g )Nr	   r   )r   r   r    r:   r"   ÚassertIsInstancer   r!   r   Úparentr8   )Úold_contextÚnew_contextÚgrr   s     €€r   ÚtargetÚFContextVarsTests.test_context_assignment_while_running.<locals>.targetŠ   sç  ø€ Ø×ÑœfŸj™j›lÔ+Ø×Ñ˜bŸm™mÔ,ô �J‰J�qŒMØ×!Ñ! "§-¡-´Ô9Ø×ÑœVŸZ™Z›\¨1Ô-Ø×Ñ˜RŸ]™]¬6Ñ2°AÔ6ð Ÿ-™-ˆKØ ˆBŒMØ×ÑœfŸj™j›lÔ+Ø×Ñ˜bŸm™mÔ,Ü�J‰J�qŒMØ×!Ñ! "§-¡-´Ô9Ø×ÑœVŸZ™Z›\¨1Ô-Ø×Ñ˜RŸ]™]¬6Ñ2°AÔ6àŸ-™-ˆKÜ‹L×Ñ×&Ñ&¨Ð'AÔBð ×ÑœVŸZ™Z›\¨1Ô-Ø'ˆBŒMØ×ÑœVŸZ™Z›\¨1Ô-ä‹L×Ñ×&Ñ&Ô(à×ÑœfŸj™j›lÔ+Ø×Ñ˜bŸm™mÔ,Ø'ˆBŒMØ×ÑœVŸZ™Z›\¨1Ô-ä‹L×Ñ×&Ñ&Ô(à×ÑœfŸj™j›lÔ+Ø×Ñ˜bŸm™mÕ,r   zcan't delete context attributer	   r   )r   r"   r   ÚassertRaisesRegexÚAttributeErrorr:   r   r8   ÚassertIsr!   r   r    ÚgcÚcollectÚsysÚgetrefcountr
   )r   rd   ra   rb   rc   s   `   @r   Ú%test_context_assignment_while_runningÚ6ContextVarsTests.test_context_assignment_while_running†   s{  ù€ ä�
‰
�4Ôö'	-ôR �fÓˆà×#Ñ#¤NÐ4TÕUØ�÷ Vð 	×Ñ˜"Ÿ-™-Ô(Ø#%§9¡9£;Ñ ˆØ�‰�k 2§=¡=Ô1Ø×Ñ˜¤VÑ,¨aÔ0Ø×Ñ˜¤VÑ,¨aÔ0Ø×Ñ˜Ÿ™¬¯©Ó4°aÔ8Ø#ˆŒØ
�	‰	ŒØ�‰�b—m‘m [Ô1ØˆŒØ
�	‰	ŒØ�‰�b—m‘m [Ô1ØˆŒØ
�	‰	ŒØ×Ñ˜"Ÿ-™-Ô(ð ˆÜ
�
Š
Œð 	×ÑœŸš¨Ó5ÇÂ±qÈ1ÔMØ×ÑœŸš¨Ó5ÇÂ°qÕMÈ1ÕM÷3 VÖUús   Á HÈ
Hc                 ó  ^^^^^	^
^• SS K n[        R                  S 5        [        5       mUR	                  5       m	UR	                  5       mUR	                  5       mUR	                  5       m
/ mUU	U4S jmUUUUU
4S jnUR                  USS9nUR                  5         T	R                  S5        TS   nU R                  [        S5         [        US5        S S S 5        U R                  [        S5         S Ul        S S S 5        TR                  5         TR                  S5        U R                  UR                  T5        U R                  UR                  [           S	5        S Ul        T
R                  5         UR                  S5        U R                  TUS /5        U R                  UR                  5        TUl        U R                  UR                  T5        TS S 2	 S nS ng ! , (       d  f       GN= f! , (       d  f       GN= f)
Nr   c                  ó&  >• [         R                  S5        TR                  5         TR                  S5        [         R                  S5        [        5       R                  R                  5         T R                  [         R                  5       5        g )Nr	   é
   r   )ÚVAR_VARr"   Úwaitr   r`   r8   Úappendr    )ÚholderÚ
is_runningÚshould_suspends   €€€r   Úgreenlet_in_thread_fnÚXContextVarsTests.test_context_assignment_different_thread.<locals>.greenlet_in_thread_fnÛ   sW   ø€ Ü�K‰K˜ŒNØ�N‰NÔØ×Ñ Ô#Ü�K‰K˜ŒNÜ‹L×Ñ×&Ñ&Ô(Ø�M‰Mœ'Ÿ+™+›-Õ(r   c                  óä   >• [        T5      n TU l        TR                  U 5        U R                  5         TR	                  5         TR                  S5        U R                  5         A [        5         g )Nrq   )r   r:   rt   r8   r"   rs   )rc   ÚctxÚdid_suspendrx   ru   Úshould_exits    €€€€€r   Ú	thread_fnÚLContextVarsTests.test_context_assignment_different_thread.<locals>.thread_fnã   sS   ø€ ÜÐ/Ó0ˆBØˆBŒMØ�M‰M˜"ÔØ�I‰IŒKØ�O‰OÔØ×Ñ˜RÔ Ø�I‰IŒKØÜ�Jr   T)rd   Údaemonrq   zrunning in a differentr:   r   )Ú	threadingrr   r"   r   ÚEventÚThreadÚstartrs   rf   Ú
ValueErrorÚgetattrr:   rh   r!   Újoinr   )r   r�   r~   Úthreadrc   r{   r|   rx   ru   rv   r}   rw   s        @@@@@@@r   Ú(test_context_assignment_different_threadÚ9ContextVarsTests.test_context_assignment_different_threadÐ   s�  þ€ ÛÜ�‰�DÔÜ‹iˆà—_‘_Ó&ˆ
Ø"Ÿ™Ó*ˆØ—o‘oÓ'ˆØ—o‘oÓ'ˆØˆ÷	)÷		ñ 		ð ×!Ñ!¨¸4Ð!Ð@ˆØ�‰ŒØ�‰˜ÔØ�A‰Yˆð ×#Ñ#¤JÐ0HÕIÜ�B˜Ô%÷ Jà×#Ñ#¤JÐ0HÕIØ ˆBŒM÷ Jð 	×ÑÔØ×Ñ˜Ôð 	�‰�b—m‘m SÔ)Ø×Ñ˜Ÿ™¤wÑ/°Ô3ØˆŒà�‰ÔØ�‰�BŒà×Ñ˜ " d Ô,ð 	×Ñ˜"Ÿ-™-Ô(ØˆŒØ�‰�b—m‘m SÔ)ð ’1ˆIØˆØ‰÷7 JÖIúçIÖIús   ÃG*Ã6G<Ç*
G9Ç<
Hc                 ó„   • [        5       nU R                  [        S5         Xl        S S S 5        g ! , (       d  f       g = f)Nz6greenlet context must be a contextvars.Context or None)r   rf   Ú	TypeErrorr:   )r   Úgs     r   Ú"test_context_assignment_wrong_typeÚ3ContextVarsTests.test_context_assignment_wrong_type  s5   € Ü‹JˆØ×#Ñ#¤IØ$\õ^àŒL÷^÷ ^ö ^ús   ¡1±
?r.   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r*   rC   rH   rL   rO   rR   rX   r[   rm   r‰   rŽ   Ú__static_attributes__r.   r   r   r   r      sD   † ò3ò	ò;=òz5ò5ò4ò7òòòHNòT@õD r   r   Ú__main__)ri   rk   ÚunittestÚcontextvarsr   r   r   Ú	functoolsr   r   r   Ú r
   r   r   rr   r   r�   Úmainr.   r   r   Ú<module>r›      sl   ðÛ 	Û 
Û Ý Ý "Ý $Ý å Ý å Ý ñ 
�D $Ñ	'€Ù
�U DÑ
)€Ø€
ô| �xô | ð~ ˆzÓØ‡M‚M…Oð r   