Ë
    v¹1h-)  ã                   ó‚  — d dl mZ d dlZd dlZd dl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 dd
lmZ 	 d dlmZ d dlmZ d dlmZ  edd¬«      Z edd¬«      ZdZ eedud«       G d„ de«      «       Z eedud«       G d„ de«      «       Zedk(  r ej0                  «        yy# e$ r	 dxZxZZY ŒWw xY w)é    )Úprint_functionN)Úpartial)Ú
skipUnless)ÚskipIf)Úgreenlet)Ú
getcurrenté   )ÚTestCase)ÚPY314)ÚContext)Ú
ContextVar)Úcopy_contextÚid)ÚdefaultÚvarzContextVar not supportedc                   óT   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zy)ÚContextVarsTestsc                 ó6   —  t        «       j                  |i |¤ŽS ©N)r   Úrun)ÚselfÚargsÚkwargss      ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/greenlet/tests/test_contextvars.pyÚ_new_ctx_runzContextVarsTests._new_ctx_run#   s   € Ø!Œ|‹~×!Ñ! 4Ð2¨6Ñ2Ð2ó    c                 ó  — t         }|€ | j                  |j                  «       «       n | j                  |j                  «       |«       |j	                  |«       t        d«      D ]$  }||j                  «       xx   dz  cc<    |«        Œ& y )Né   r	   )ÚID_VARÚassertIsNoneÚgetÚassertEqualÚsetÚrange)r   Úgreenlet_idÚcallbackÚcountsÚexpectÚctx_varÚ_s          r   Ú
_incrementzContextVarsTests._increment&   sp   € ÜˆØˆ>Ø×Ñ˜gŸk™k›mÕ,à×Ñ˜WŸ[™[›]¨FÔ3Ø�‰�KÔ Ü�q“ò 	ˆAØ�7—;‘;“=Ó! QÑ&Ó!Ù�Jñ	r   c                 ó^  — t         j                  d«       t        «       j                  }t	        d„ t        d«      D «       «      }t        dd«      D �cg c]b  }t        t        |dk(  r(t        t        «       j                  | j                  «      n| j                  ||||dk(  r|dz
  n|dv rdnd ¬«      «      ‘Œd }}|D ]6  }|d	k(  rt        «       |_        Œ|dk(  sŒt        «       j                  |_        Œ8 t        d
«      D ]8  }|t         j                  «       xx   dz  cc<   |D ]  }|j                  «        Œ Œ: |dk(  r!t        |«      D ]  }|j                  «        Œ n|D ]  }|j                  «        Œ |D ]Y  }| j                  |j                  «       |dk(  r| j!                  |j                  «       Œ?| j#                  |j                  «       Œ[ |dk(  r| j%                  |ddddddœ«       y | j%                  t        |j'                  «       «      t        d
g«      «       y c c}w )Nr   c              3   ó$   K  — | ]  }|d f–— Œ
 y­w)r   N© )Ú.0Úis     r   ú	<genexpr>z1ContextVarsTests._test_context.<locals>.<genexpr>6   s   è ø€ Ò/ �q˜!”fÑ/ù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_contextzContextVarsTests._test_context1   s
  € ä�
‰
�1Œä“<×&Ñ&ˆÜÑ/¤e¨A£hÔ/Ó/ˆô  ˜1˜a“[ö
ð ô ”Wð " UÒ*ô Ü “N×&Ñ&Ø—O‘Oôð 15·±ØØ!Øà)¨WÒ4�A˜’EØ%¨Ñ7‘A¸Tôõ ð
ˆð 
ð" ò 	9ˆCØ˜uÒ$Ü!-£�•Ø Ó(Ü!+£×!8Ñ!8�•ð		9ô �q“ò 	ˆAØ”6—:‘:“<Ó  AÑ%Ó Øò �Ø—
‘
•ñð	ð
 ˜5Ò ä “~ò �Ø—
‘
•ñð ò �Ø—
‘
•ðð ò 		5ˆCØ�O‰O˜CŸH™HÔ%ð
 ˜uÒ$Ø×!Ñ! #§.¡.Õ1à×$Ñ$ S§^¡^Õ4ð		5ð ˜7Ò"Ø×Ñ˜V¨¨q°Q¸1ÀÑ%CÕDà×ÑœS §¡£Ó1´3¸°s³8Õ<ùòi
s   ÁA'H*c                 ó<   — | j                  | j                  d«       y )Nr   ©r   rB   ©r   s    r   Ú&test_context_propagated_by_context_runz7ContextVarsTests.test_context_propagated_by_context_runn   ó   € Ø×Ñ˜$×,Ñ,¨eÕ4r   c                 ó<   — | j                  | j                  d«       y )Nr#   rD   rE   s    r   Ú,test_context_propagated_by_setting_attributez=ContextVarsTests.test_context_propagated_by_setting_attributeq   rG   r   c                 ó<   — | j                  | j                  d «       y r   rD   rE   s    r   Útest_context_not_propagatedz,ContextVarsTests.test_context_not_propagatedt   s   € Ø×Ñ˜$×,Ñ,¨dÕ3r   c                 ó<   — | j                  | j                  d«       y )Nr3   rD   rE   s    r   Útest_context_sharedz$ContextVarsTests.test_context_sharedw   s   € Ø×Ñ˜$×,Ñ,¨gÕ6r   c                 ó$  — t        t        «       j                  «      }t        t        «       j                  «      }|j                  t	        «       j                  «       |j                  t	        «       j                  «       |j                  «        y r   )r   r   r   r7   r   ©r   Úlet1Úlet2s      r   Útest_break_ctxvarsz#ContextVarsTests.test_break_ctxvarsz   sY   € Üœ›×*Ñ*Ó+ˆÜœ›×*Ñ*Ó+ˆØ�‰”J“L×'Ñ'Ô(Ø�‰”J“L×'Ñ'Ô(ð 	�‰�r   c                 ó4  — t        t        «       j                  «      }t        t        «       j                  «      }t        «       |_        t        «       |_        |j                  «        |j                  «        |j                  «        |j                  «        y r   )r   r   r7   r   r9   rO   s      r   Ú9test_not_broken_if_using_attribute_instead_of_context_runzJContextVarsTests.test_not_broken_if_using_attribute_instead_of_context_run„   s\   € Üœ
›×+Ñ+Ó,ˆÜœ
›×+Ñ+Ó,ˆÜ&›.ˆŒÜ&›.ˆŒØ�‰ŒØ�‰ŒØ�‰ŒØ�‰�r   c                 ó   ‡ ‡— t         j                  d «       ˆˆ fd„}t        |«      Š‰ j                  t        d«      5  ‰`d d d «       ‰ j                  ‰j
                  «       ‰j                  «       \  }}‰ j                  |‰j
                  «       ‰ j                  |t            d«       ‰ j                  |t            d«       ‰ j                  |j                  t         j                  «      d«       |‰_        ‰j                  «        ‰ j                  ‰j
                  |«       d ‰_        ‰j                  «        ‰ j                  ‰j
                  |«       d ‰_        ‰j                  «        ‰ j                  ‰j
                  «       d Št        j                  «        ‰ j                  t        j                  |«      t         sdnd«       ‰ j                  t        j                  |«      t         sd«       y d«       y # 1 sw Y   �ŒÃxY w)Nc                  óê  •— ‰j                  t        j                  «       «       ‰j                  ‰j                  «       t        j	                  d«       ‰j                  ‰j                  t        «       ‰j                  t        j                  «       d«       ‰j                  ‰j                  t           d«       ‰j                  } d ‰_        ‰j                  t        j                  «       «       ‰j                  ‰j                  «       t        j	                  d«       ‰j                  ‰j                  t        «       ‰j                  t        j                  «       d«       ‰j                  ‰j                  t           d«       ‰j                  }t        «       j                  j                  | |f«       ‰j                  t        j                  «       d«       |‰_        ‰j                  t        j                  «       d«       t        «       j                  j                  «        ‰j                  t        j                  «       «       ‰j                  ‰j                  «       | ‰_        ‰j                  t        j                  «       d«       t        «       j                  j                  «        ‰j                  t        j                  «       «       ‰j                  ‰j                  «       y )Nr	   r   )r    r   r!   r9   r#   ÚassertIsInstancer   r"   r   Úparentr7   )Úold_contextÚnew_contextÚgrr   s     €€r   ÚtargetzFContextVarsTests.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ÚAttributeErrorr9   r    r7   ÚassertIsr"   r   r!   ÚgcÚcollectÚsysÚgetrefcountr   )r   r\   rY   rZ   r[   s   `   @r   Ú%test_context_assignment_while_runningz6ContextVarsTests.test_context_assignment_while_runningŽ   s~  ù€ ä�
‰
�4Ôõ'	-ôR �fÓˆà×#Ñ#¤NÐ4TÓUñ 	Ø�÷	ð 	×Ñ˜"Ÿ-™-Ô(Ø#%§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	ñ 	ús   ¿HÈHc                 ó  ‡‡‡‡‡	‡
‡— dd l }t        j                  d «       t        «       Š|j	                  «       Š	|j	                  «       Š|j	                  «       Š|j	                  «       Š
g Šˆˆ	ˆfd„Šˆˆˆˆˆ
fd„}|j                  |d¬«      }|j                  «        ‰	j                  d«       ‰d   }| j                  t        d«      5  t        |d«       d d d «       | j                  t        d«      5  d |_        d d d «       ‰j                  «        ‰j                  d«       | j                  |j                  ‰«       | j                  |j                  t           d	«       d |_        ‰
j                  «        |j                  d«       | j                  ‰|d g«       | j                  |j                  «       ‰|_        | j                  |j                  ‰«       ‰d d …= d }d }y # 1 sw Y   �ŒxY w# 1 sw Y   ŒúxY w)
Nr   c                  ó&  •— t         j                  d«       ‰j                  «        ‰j                  d«       t         j                  d«       t        «       j                  j                  «        ‰ j                  t         j                  «       «       y )Nr	   é
   r   )ÚVAR_VARr#   Úwaitr   rX   r7   Úappendr!   )ÚholderÚ
is_runningÚshould_suspends   €€€r   Úgreenlet_in_thread_fnzXContextVarsTests.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        ‰«      } ‰| _        ‰j                  | «       | j                  «        ‰j	                  «        ‰j                  d«       | j                  «        ~ t        «        y )Nrg   )r   r9   rj   r7   r#   ri   )r[   ÚctxÚdid_suspendrn   rk   Úshould_exits    €€€€€r   Ú	thread_fnzLContextVarsTests.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)r\   Údaemonrg   zrunning in a differentr9   r   )Ú	threadingrh   r#   r   ÚEventÚThreadÚstartri   r]   Ú
ValueErrorÚgetattrr9   r_   r"   Újoinr    )r   ru   rs   Úthreadr[   rp   rq   rn   rk   rl   rr   rm   s        @@@@@@@r   Ú(test_context_assignment_different_threadz9ContextVarsTests.test_context_assignment_different_threadØ   sª  þ€ ÛÜ�‰�DÔÜ‹iˆà—_‘_Ó&ˆ
Ø"Ÿ™Ó*ˆØ—o‘oÓ'ˆØ—o‘oÓ'ˆØˆö	)÷		ð 		ð ×!Ñ!¨¸4Ð!Ó@ˆØ�‰ŒØ�‰˜ÔØ�A‰Yˆð ×#Ñ#¤JÐ0HÓIñ 	&Ü�B˜Ô%÷	&à×#Ñ#¤JÐ0HÓIñ 	!Ø ˆBŒM÷	!ð 	×ÑÔØ×Ñ˜Ôð 	�‰�b—m‘m SÔ)Ø×Ñ˜Ÿ™¤wÑ/°Ô3ØˆŒà�‰ÔØ�‰�BŒà×Ñ˜ " d Ô,ð 	×Ñ˜"Ÿ-™-Ô(ØˆŒØ�‰�b—m‘m SÔ)ð ’1ˆIØˆØ‰÷7	&ñ 	&ú÷	!ð 	!ús   ÃG+Ã7G8Ç+G5Ç8Hc                 ó|   — t        «       }| j                  t        d«      5  | |_        d d d «       y # 1 sw Y   y xY w)Nz6greenlet context must be a contextvars.Context or None)r   r]   Ú	TypeErrorr9   )r   Úgs     r   Ú"test_context_assignment_wrong_typez3ContextVarsTests.test_context_assignment_wrong_type  s9   € Ü‹JˆØ×#Ñ#¤IØ$\ó^ñ 	 àˆAŒL÷	 ÷ 	 ñ 	 ús   ¡2²;N)Ú__name__Ú
__module__Ú__qualname__r   r+   rB   rF   rI   rK   rM   rR   rT   rd   r}   r�   r.   r   r   r   r   !   sD   „ ò3ò	ò;=òz5ò5ò4ò7òòòHNòT@óD r   r   zContextVar supportedc                   ó   — e Zd Zd„ Zy)ÚNoContextVarsTestsc                 ó4  — t        t        «       j                  «      }| j                  t	        |d«      «       | j                  t        «      5  t        |d«       d d d «       | j                  t        «      5  d |_        d d d «       |j                  «        | j                  t        «      5  t        |d«       d d d «       | j                  t        «      5  d |_        d d d «       ~y # 1 sw Y   Œ�xY w# 1 sw Y   ŒvxY w# 1 sw Y   ŒHxY w# 1 sw Y   ~y xY w)Nr9   )	r   r   r7   ÚassertFalseÚhasattrÚassertRaisesr^   rz   r9   )r   rP   s     r   Útest_contextvars_errorsz*NoContextVarsTests.test_contextvars_errors#  së   € Üœ
›×+Ñ+Ó,ˆØ×Ñœ  |Ó4Ô5Ø×Ñœ~Ó.ñ 	(Ü�D˜,Ô'÷	(ð ×Ñœ~Ó.ñ 	#Ø"ˆDŒO÷	#ð 	�‰Œà×Ñœ~Ó.ñ 	(Ü�D˜,Ô'÷	(ð ×Ñœ~Ó.ñ 	#Ø"ˆDŒO÷	#ñ ÷	(ð 	(ú÷	#ð 	#ú÷
	(ð 	(ú÷	#ñ ús0   ÁC)Á8C5Â-DÃDÃ)C2Ã5C>ÄD
ÄDN)r‚   rƒ   r„   r‹   r.   r   r   r†   r†   !  s   „ ór   r†   Ú__main__)Ú
__future__r   r`   rb   ÚunittestÚ	functoolsr   r   r   r   r   Ú r
   r   Úcontextvarsr   r   r   r   rh   ÚImportErrorr   r†   r‚   Úmainr.   r   r   ú<module>r”      sâ   ðÝ %ã 	Û 
Û å Ý Ý å Ý Ý Ý ð/Ý#Ý&Ý(ñ ˜ dÔ+€FÙ˜¨Ô-€GØ€Jñ
 ˆG˜4ÐÐ!;Ó<ô| �xó | ó =ð| ñ~ ˆ�tÐÐ3Ó4ô˜ó ó 5ðð* ˆzÒØ€H‡M�M…Oð øðu ò /Ø*.Ð.€GÐ.ˆjš<ð/ús   ¾(B0 Â0B>Â=B>