Ë
    ìO´j\%  ã                   óì   — 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  edd¬«      Z edd¬«      ZdZ G d„ de«      Zedk(  r ej$                  «        yy)é    N)ÚContext)Ú
ContextVar)Úcopy_context)Úpartial)Ú
getcurrent)Úgreenleté   )ÚPY314)ÚTestCaseÚid)ÚdefaultÚvarc                   ó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      úv/var/www/origus_pro_usr/data/www/origus.pro/core/.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>.   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$   r-   ÚletsÚlets          r   Ú_test_contextzContextVarsTests._test_context)   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   r?   ©r   s    r   Ú&test_context_propagated_by_context_runz7ContextVarsTests.test_context_propagated_by_context_runf   ó   € Ø×Ñ˜$×,Ñ,¨eÕ4r   c                 ó<   — | j                  | j                  d«       y )Nr    rA   rB   s    r   Ú,test_context_propagated_by_setting_attributez=ContextVarsTests.test_context_propagated_by_setting_attributei   rD   r   c                 ó<   — | j                  | j                  d «       y r   rA   rB   s    r   Útest_context_not_propagatedz,ContextVarsTests.test_context_not_propagatedl   s   € Ø×Ñ˜$×,Ñ,¨dÕ3r   c                 ó<   — | j                  | j                  d«       y )Nr0   rA   rB   s    r   Útest_context_sharedz$ContextVarsTests.test_context_sharedo   s   € Ø×Ñ˜$×,Ñ,¨gÕ6r   c                 ó$  — t        t        «       j                  «      }t        t        «       j                  «      }|j                  t	        «       j                  «       |j                  t	        «       j                  «       |j                  «        y r   )r   r   r   r4   r   ©r   Úlet1Úlet2s      r   Útest_break_ctxvarsz#ContextVarsTests.test_break_ctxvarsr   sY   € Üœ›×*Ñ*Ó+ˆÜœ›×*Ñ*Ó+ˆØ�‰”J“L×'Ñ'Ô(Ø�‰”J“L×'Ñ'Ô(ð 	�‰�r   c                 ó4  — t        t        «       j                  «      }t        t        «       j                  «      }t        «       |_        t        «       |_        |j                  «        |j                  «        |j                  «        |j                  «        y r   )r   r   r4   r   r6   rL   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   r6   r    ÚassertIsInstancer   r   r   Úparentr4   )Ú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ÚAttributeErrorr6   r   r4   ÚassertIsr   r   r   ÚgcÚcollectÚsysÚgetrefcountr
   )r   rY   rV   rW   rX   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   rU   r4   Ú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 )Nrd   )r   r6   rg   r4   r    rf   )rX   ÚctxÚdid_suspendrk   rh   Ú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)rY   Údaemonrd   zrunning in a differentr6   r   )Ú	threadingre   r    r   ÚEventÚThreadÚstartrf   rZ   Ú
ValueErrorÚgetattrr6   r\   r   Újoinr   )r   rr   rp   ÚthreadrX   rm   rn   rk   rh   ri   ro   rj   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   rZ   Ú	TypeErrorr6   )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(   r?   rC   rF   rH   rJ   rO   rQ   ra   rz   r~   r+   r   r   r   r      sD   „ ò3ò	ò;=òz5ò5ò4ò7òòòHNòT@óD r   r   Ú__main__)r]   r_   ÚunittestÚcontextvarsr   r   r   Ú	functoolsr   r   r   Ú r
   r   r   re   r   r   Úmainr+   r   r   ú<module>rˆ      sn   ðÛ 	Û 
Û Ý Ý "Ý $Ý å Ý å Ý ñ 
�D $Ô	'€Ù
�U DÔ
)€Ø€
ô| �xô | ð~ ˆzÒØ€H‡M�M…Oð r   