Ë
    bQbjU  ã                  óz  — U d dl mZ d dlZd dlZd dlmZ d dlmZ d dlZddl	m
Z
 ddlmZ ddl­ dd	lmZ dd
lmZmZ d/d„Zd/d„Zd/d„Zd/d„Zd/d„Zd/d„Zd/d„Zd/d„Zej6                  j9                  deegd„ ¬«      	 	 	 	 d0d„«       Zd/d„Z ddl!m"Z" ddlm#Z#  G d„ de#«      Z$ G d„ de#«      Z% G d„ de#«      Z&d „ d!„ eed"„ d#„ e%e&gZ'g d$¢Z(ej6                  j9                  d%e'e(¬«      Z)e*e+z  ez  ez  e$z  e%z  e&z  Z,d&e-d'<   eg e,f   Z.d&e-d(<   e)d1d)„«       Z/e)d1d*„«       Z0e)	 	 	 	 d1d+„«       Z1d/d,„Z2d/d-„Z3d/d.„Z4y)2é    )ÚannotationsN)ÚCallable)Ú	TypeAliasé   )Ú_core)ÚGLOBAL_PARKING_LOT_BREAKER)Ú*)Úsleep_forever)Úassert_checkpointsÚwait_all_tasks_blockedc               ƒ  ó†  ‡‡K  — t        «       Š‰j                  «       rJ ‚‰j                  «       j                  dk(  sJ ‚t	        j
                  t        d¬«      5  ‰j                  «        d d d «       ‰j                  «        ‰j                  «       sJ ‚t        «       5  ‰j                  «       ƒ d {  –—†  d d d «       t        «       Šg Šdˆˆfd„} t        j                  «       4 ƒd {  –—† }|j                  | «       |j                  | «       t        «       ƒ d {  –—†  ‰ddgk(  sJ ‚‰j                  «       j                  dk(  sJ ‚‰j                  «        t        «       ƒ d {  –—†  ‰g d¢k(  sJ ‚d d d «      ƒd {  –—†  y # 1 sw Y   �ŒxY w7 Œá# 1 sw Y   ŒàxY w7 Œ·7 Œ…7 Œ=7 Œ&# 1 ƒd {  –—†7  sw Y   y xY w­w)	Nr   zŒtrio\.Event\.__bool__ is deprecated since Trio 0\.31\.0; use trio\.Event\.is_set instead \(https://github.com/python-trio/trio/issues/3238\)©Úmatchc               “  ó†   •K  — ‰j                  d«       ‰ j                  «       ƒ d {  –—†  ‰j                  d«       y 7 Œ­w)NÚsleepingÚwoken)ÚappendÚwait)ÚeÚrecords   €€úH/var/www/html/venv/lib/python3.12/site-packages/trio/_tests/test_sync.pyÚchildztest_Event.<locals>.child%   s1   øè ø€ Ø�‰�jÔ!Ø�f‰f‹h�ˆØ�‰�gÕð 	úó   ƒ%A¨?©Ar   r   )r   r   r   r   ©ÚreturnÚNone)ÚEventÚis_setÚ
statisticsÚtasks_waitingÚpytestÚwarnsÚDeprecationWarningÚ__bool__Úsetr   r   r   Úopen_nurseryÚ
start_soonr   )r   Únurseryr   r   s     @@r   Ú
test_Eventr)      s˜  ùè ø€ Ü‹€AØ�x‰xŒzÐˆ>Ø�<‰<‹>×'Ñ'¨1Ò,Ð,Ð,ä	�‰Üð ^ô
ñ ð 	
�
‰
Œ÷	ð ‡E�E„GØ�8‰8Œ:Ðˆ:Ü	Ó	ñ Ø�f‰f‹h�ˆ÷ô 	‹€Aà€Föô
 ×!Ñ!Ó#÷ Dð D wØ×Ñ˜5Ô!Ø×Ñ˜5Ô!Ü$Ó&×&Ð&Ø˜* jÐ1Ò1Ð1Ð1Ø�|‰|‹~×+Ñ+¨qÒ0Ð0Ð0Ø	�‰ŒÜ$Ó&×&Ð&ØÒCÒCÐCÐC÷D÷ Dð D÷)ñ úð 	ø÷ð úðDøð 	'øð 	'øðDø÷ D÷ Dñ Düs¯   „AGÁF	Á,4GÂ FÂ4FÂ5FÂ93GÃ,F$Ã-GÃ00F,Ä F&Ä!A	F,Å*F(Å+F,Å8GÆF*ÆGÆ	FÆGÆFÆF!ÆGÆ&F,Æ(F,Æ*GÆ,F>Æ2F5Æ3F>Æ:Gc               ƒ  óþ
  K  — t        d«      j                  dk(  sJ ‚t        j                  t        «      5  t        d«       d d d «       t        j                  t
        d¬«      5  t        d«       d d d «       t        d«      } t        | «       | j                  dk(  sJ ‚| j                  dk(  sJ ‚| j                  dk(  sJ ‚t        j                  t        «      5  | j                  «        d d d «       | j                  dk(  sJ ‚| j                  «        | j                  dk(  sJ ‚| j                  dk(  sJ ‚| j                  «       }|j                  dk(  sJ ‚|j                  dk(  sJ ‚|j                  t        j                  «       gk(  sJ ‚|j                   dk(  sJ ‚t        j                  t        «      5  | j                  «        d d d «       | j                  dk(  sJ ‚t        j                  t        «      5  | j#                  «       ƒ d {  –—†  d d d «       | j                  dk(  sJ ‚t%        «       5  | j'                  d«      ƒ d {  –—†  d d d «       | j                  dk(  sJ ‚t        j                  t        j(                  «      5  | j+                  d	«       d d d «       t-        | j                  «       j                  «      t        j                  «       dhk(  sJ ‚| j/                  t        j                  «       «       | j                  «       j                  dgk(  sJ ‚| j/                  d«       | j                  dk(  sJ ‚t%        «       5  | 4 ƒd {  –—†  | j                  dk(  sJ ‚d d d «      ƒd {  –—†  d d d «       t        j0                  «       4 ƒd {  –—† }| j'                  d
«      ƒ d {  –—†  | j'                  d«      ƒ d {  –—†  |j3                  | j&                  d«       t5        «       ƒ d {  –—†  | j                  dk(  sJ ‚| j                  «       j                   dk(  sJ ‚| j/                  d«       | j                  dk(  sJ ‚t        j                  t        j(                  «      5  | j                  «        d d d «       d d d «      ƒd {  –—†  | j/                  d«       | j/                  d
«       y # 1 sw Y   �Œ„xY w# 1 sw Y   �ŒbxY w# 1 sw Y   �ŒôxY w# 1 sw Y   �Œ%xY w7 �Œê# 1 sw Y   �ŒêxY w7 �Œ½# 1 sw Y   �Œ½xY w# 1 sw Y   �Œ|xY w7 �ŒÍ7 �Œ¯# 1 ƒd {  –—†7  sw Y   �ŒÀxY w# 1 sw Y   �ŒÅxY w7 �Œ°7 �Œš7 �Œ„7 �ŒY# 1 sw Y   ŒÒxY w7 ŒÉ# 1 ƒd {  –—†7  sw Y   ŒÙxY w­w)Nr   ç      ð?ú^total_tokens must be >= 0$r   éÿÿÿÿr   é   Úsomeonezthird partyzvalue 1zvalue 2zvalue 3)ÚCapacityLimiterÚtotal_tokensr!   ÚraisesÚ	TypeErrorÚ
ValueErrorÚreprÚborrowed_tokensÚavailable_tokensÚRuntimeErrorÚreleaseÚacquire_nowaitr   Ú	borrowersr   Úcurrent_taskr    Úacquirer   Úacquire_on_behalf_ofÚ
WouldBlockÚacquire_on_behalf_of_nowaitr%   Úrelease_on_behalf_ofr&   r'   r   )ÚcÚstatsr(   s      r   Útest_CapacityLimiterrD   5   sÄ  è ø€ Ü˜1Ó×*Ñ*¨aÒ/Ð/Ð/Ü	�‰”yÓ	!ñ Ü˜Ô÷ä	�‰”zÐ)GÔ	Hñ Ü˜Ô÷ä˜Ó€AÜˆ„GØ�>‰>˜QÒÐÐØ×Ñ Ò!Ð!Ð!Ø×Ñ Ò"Ð"Ð"Ü	�‰”|Ó	$ñ Ø	�	‰	Œ÷à×Ñ Ò!Ð!Ð!Ø×ÑÔØ×Ñ Ò!Ð!Ð!Ø×Ñ Ò"Ð"Ð"à�L‰L‹N€EØ× Ñ  AÒ%Ð%Ð%Ø×Ñ Ò"Ð"Ð"Ø�?‰?œu×1Ñ1Ó3Ð4Ò4Ð4Ð4Ø×Ñ !Ò#Ð#Ð#ô 
�‰”|Ó	$ñ Ø	×ÑÔ÷à×Ñ Ò!Ð!Ð!Ü	�‰”|Ó	$ñ Ø�i‰i‹k×Ð÷à×Ñ Ò!Ð!Ð!ô 
Ó	ñ 0Ø×$Ñ$ YÓ/×/Ð/÷0ð ×Ñ Ò!Ð!Ð!Ü	�‰”u×'Ñ'Ó	(ñ 5Ø	×%Ñ% mÔ4÷5ô ˆq�|‰|‹~×'Ñ'Ó(¬U×-?Ñ-?Ó-AÀ9Ð,MÒMÐMÐMð ×Ñœ5×-Ñ-Ó/Ô0Ø�<‰<‹>×#Ñ#¨	 {Ò2Ð2Ð2à×Ñ˜9Ô%Ø×Ñ Ò!Ð!Ð!Ü	Ó	ñ *Ø÷ 	*ñ 	*Ø×$Ñ$¨Ò)Ð)Ð)÷	*÷ 	*÷*ô ×!Ñ!Ó#÷ ð  wØ×$Ñ$ YÓ/×/Ð/Ø×$Ñ$ YÓ/×/Ð/Ø×Ñ˜1×1Ñ1°9Ô=Ü$Ó&×&Ð&Ø× Ñ  AÒ%Ð%Ð%Ø�|‰|‹~×+Ñ+¨qÒ0Ð0Ð0Ø	×Ñ˜yÔ)à× Ñ  AÒ%Ð%Ð%Ü�]‰]œ5×+Ñ+Ó,ñ 	Ø×ÑÔ÷	÷÷ ð ×Ñ˜9Ô%Ø×Ñ˜9Õ%÷Cñ ú÷ñ ú÷ñ ú÷ñ úð 	ù÷ñ úð 	0ù÷0ñ 0ú÷
5ñ 5úð	*ùð 	*ù÷ 	*÷ 	*ò 	*ú÷*ñ *úðùØ/ùØ/ùà&ù÷	ð 	úðø÷ ÷ ñ üsÄ  ‚4U=¶SÁ#U=Á%SÁ1A*U=ÃSÃ,CU=Æ7S+Ç2U=Ç:S;ÈS8ÈS;È#U=È6TÉTÉTÉ<U=ÊTÊB3U=ÍUÍT%ÍUÍT+Í.UÍ9T(Í:UÍ> U=ÎUÎU=Î"U(Î7UÎ8U(ÏUÏ-U(Ï>UÏ?A9U(Ñ8UÒ	U(ÒU=ÒU&Ò'U=ÓSÓ	U=ÓSÓU=ÓS(Ó#U=Ó+S5Ó0U=Ó8S;Ó;TÔ U=ÔTÔTÔU=ÔT"ÔU=Ô%UÔ(UÔ+T>	Ô1T4Ô2T>	Ô9UÕUÕ	U=ÕU(ÕU(ÕU(ÕU#	ÕU(Õ&U=Õ(U:Õ.U1Õ/U:Õ6U=c               ƒ  ó¬  K  — ddl m}  t        | «      }t        |«       |j                  | k(  sJ ‚|j
                  dk(  sJ ‚|j                  | k(  sJ ‚t        j                  t        «      5  |j                  «        d d d «       |j
                  dk(  sJ ‚|j                  «        |j
                  dk(  sJ ‚|j                  | k(  sJ ‚y # 1 sw Y   ŒMxY w­w)Nr   )Úinfr.   )ÚmathrF   r0   r5   r1   r6   r7   r!   r2   r8   r9   r:   )rF   rB   s     r   Útest_CapacityLimiter_infrH   {   sÅ   è ø€ Ýä˜Ó€AÜˆ„GØ�>‰>˜SÒ Ð Ð Ø×Ñ Ò!Ð!Ð!Ø×Ñ Ò$Ð$Ð$Ü	�‰”|Ó	$ñ Ø	�	‰	Œ÷à×Ñ Ò!Ð!Ð!Ø×ÑÔØ×Ñ Ò!Ð!Ð!Ø×Ñ Ò$Ð$Ñ$÷ð üs   ‚A)CÁ+CÁ<ACÃCÃCc               ƒ  ó  K  — t        d«      } t        j                  t        «      5  d| _        d d d «       t        j                  t
        d¬«      5  d| _        d d d «       t        j                  t
        d¬«      5  d| _        d d d «       | j                  dk(  sJ ‚t        j                  «       4 ƒd {  –—† }t        d«      D ]0  }|j                  | j                  |«       t        «       ƒ d {  –—†  Œ2 t        | j                  «       j                  «      dd	hk(  sJ ‚| j                  «       j                  d
k(  sJ ‚| xj                  dz  c_        t        | j                  «       j                  «      h d£k(  sJ ‚| j                  «       j                  d	k(  sJ ‚| xj                  d
z  c_        | j                   dk(  sJ ‚| j                  d	k(  sJ ‚| j#                  d«       | j#                  d	«       | j#                  d«       t        | j                  «       j                  «      d
hk(  sJ ‚| j                  «       j                  d	k(  sJ ‚| j#                  d
«       t        | j                  «       j                  «      dhk(  sJ ‚| j                  «       j                  dk(  sJ ‚d d d «      ƒd {  –—†  y # 1 sw Y   �Œ�xY w# 1 sw Y   �ŒqxY w# 1 sw Y   �ŒSxY w7 �Œ-7 �Œô7 Œ2# 1 ƒd {  –—†7  sw Y   y xY w­w)Nr   r+   r,   r   r-   iöÿÿÿé   r   r.   é   >   r   r.   r   rK   é   )r0   r!   r2   r3   r1   r4   r   r&   Úranger'   r>   r   r%   r   r;   r    r6   rA   ©rB   r(   Úis      r   Ú(test_CapacityLimiter_change_total_tokensrP   ‹   s‹  è ø€ Ü˜Ó€Aä	�‰”yÓ	!ñ ØˆŒ÷ô 
�‰”zÐ)GÔ	Hñ ØˆŒ÷ô 
�‰”zÐ)GÔ	Hñ ØˆŒ÷ð �>‰>˜QÒÐÐä×!Ñ!Ó#÷ 1ð 1 wÜ�q“ò 	+ˆAØ×Ñ˜q×5Ñ5°qÔ9Ü(Ó*×*Ñ*ð	+ô �1—<‘<“>×+Ñ+Ó,°°A°Ò6Ð6Ð6Ø�|‰|‹~×+Ñ+¨qÒ0Ð0Ð0Ø	�Š˜!Ñ�Ü�1—<‘<“>×+Ñ+Ó,²Ò<Ð<Ð<Ø�|‰|‹~×+Ñ+¨qÒ0Ð0Ð0Ø	�Š˜!Ñ�Ø× Ñ  AÒ%Ð%Ð%Ø�~‰~ Ò"Ð"Ð"Ø	×Ñ˜qÔ!Ø	×Ñ˜qÔ!Ø	×Ñ˜qÔ!Ü�1—<‘<“>×+Ñ+Ó,°°Ò3Ð3Ð3Ø�|‰|‹~×+Ñ+¨qÒ0Ð0Ð0Ø	×Ñ˜qÔ!Ü�1—<‘<“>×+Ñ+Ó,°°Ò3Ð3Ð3Ø�|‰|‹~×+Ñ+¨qÒ0Ð0Ð0÷'1÷ 1ð 1÷ñ ú÷ñ ú÷ñ úð
1ùð +ùð1ø÷ 1÷ 1ñ 1üs    ‚%L §J<¯#L ÁK	Á#L Á=KÂ1L Â6K#Â7L Â:8K+Ã2K&Ã3F8K+Ê+L Ê6K)Ê7L Ê<KËL Ë	KËL ËK Ë	L Ë&K+Ë)L Ë+K=Ë1K4Ë2K=Ë9L c               ƒ  óª  K  — t        d¬«      } | j                  «       ƒ d {  –—†  t        j                  «       4 ƒd {  –—† }|j	                  | j                  «       t        «       ƒ d {  –—†  |j                  j                  «        d d d «      ƒd {  –—†  t        | j                  «      dk(  sJ ‚y 7 Œ“7 Œx7 ŒM7 Œ%# 1 ƒd {  –—†7  sw Y   Œ5xY w­w)Nr.   )r1   r   )
r0   r=   r   r&   r'   r   Úcancel_scopeÚcancelÚlenÚ_pending_borrowers)ÚlimiterÚns     r   Ú test_CapacityLimiter_memleak_548rX   °   s®   è ø€ Ü¨1Ô-€GØ
�/‰/Ó
×Ðä×!Ñ!Ó#÷  ð   qØ	�‰�W—_‘_Ô%Ü$Ó&×&Ð&Ø	�‰×ÑÔ÷ ÷  ô ˆw×)Ñ)Ó*¨aÒ/Ð/Ñ/ð øð øà&øð ø÷  ÷  ñ  üsh   ‚ C¢B6£C¿B8Á CÁ)B>Á,B:Á-B>ÂCÂB<Â CÂ8CÂ:B>Â<CÂ>CÃCÃCÃCc               ƒ  ó	  K  — t        d«      } | j                  dk(  sJ ‚t        j                  «       4 ƒd {  –—† }d| _        t	        d«      D ]0  }|j                  | j                  |«       t        «       ƒ d {  –—†  Œ2 t        | j                  «       j                  «      t        «       k(  sJ ‚| j                  «       j                  dk(  sJ ‚d| _        t        | j                  «       j                  «      h d£k(  sJ ‚|j                  | j                  d«       t        «       ƒ d {  –—†  | j                  «       j                  dk(  sJ ‚t	        d«      D ]  }| j                  |«       Œ | j                  «       j                  dk(  sJ ‚| j                  d«       d| _        t        j                  t        j                  «      5  | j!                  «        d d d «       |j                  | j                  d«       t        «       ƒ d {  –—†  | j                  «       j                  dk(  sJ ‚| j                  «       j                  g k(  sJ ‚d| _        | j                  «       j                  dk(  sJ ‚| j                  «       j                  dgk(  sJ ‚| j                  d«       | j                  d«      ƒ d {  –—†  |j                  | j                  d«       t        «       ƒ d {  –—†  d| _        | j                  «       j                  dgk(  sJ ‚| j                  d«       t        «       ƒ d {  –—†  | j                  «       j                  g k(  sJ ‚| j                  «       j                  dk(  sJ ‚d| _        t        «       ƒ d {  –—†  | j                  «       j                  dgk(  sJ ‚| j                  «       j                  dk(  sJ ‚| j                  d«       d| _        |j"                  j%                  «        d d d «      ƒd {  –—†  | j                  dk(  sJ ‚| j                  «       j                  g k(  sJ ‚| j&                  i k(  sJ ‚y 7 �Œ7 �ŒÙ7 �Œ,# 1 sw Y   �Œ�xY w7 �Œ[7 �Œ°7 �Œ…7 �Œ>7 Œé7 Œj# 1 ƒd {  –—†7  sw Y   ŒzxY w­w)NrJ   r   >   r   r.   r   rK   rL   r.   é   )r0   r1   r   r&   rM   r'   r>   r   r%   r   r;   r    rA   r!   r2   r?   r:   rR   rS   rU   rN   s      r   Ú&test_CapacityLimiter_zero_limit_tokensr[   ¾   sô  è ø€ Ü˜Ó€Aà�>‰>˜QÒÐÐä×!Ñ!Ó#÷ A&ð A& wØˆŒä�q“ò 	+ˆAØ×Ñ˜q×5Ñ5°qÔ9Ü(Ó*×*Ñ*ð	+ô �1—<‘<“>×+Ñ+Ó,´³Ò5Ð5Ð5Ø�|‰|‹~×+Ñ+¨qÒ0Ð0Ð0àˆŒä�1—<‘<“>×+Ñ+Ó,²Ò?Ð?Ð?à×Ñ˜1×1Ñ1°1Ô5Ü$Ó&×&Ð&à�|‰|‹~×+Ñ+¨qÒ0Ð0Ð0ä�q“ò 	&ˆAØ×"Ñ" 1Õ%ð	&ð �|‰|‹~×+Ñ+¨qÒ0Ð0Ð0Ø	×Ñ˜qÔ!ð ˆŒä�]‰]œ5×+Ñ+Ó,ñ 	Ø×ÑÔ÷	ð 	×Ñ˜1×1Ñ1°1Ô5Ü$Ó&×&Ð&à�|‰|‹~×+Ñ+¨qÒ0Ð0Ð0Ø�|‰|‹~×'Ñ'¨2Ò-Ð-Ð-àˆŒØ�|‰|‹~×+Ñ+¨qÒ0Ð0Ð0Ø�|‰|‹~×'Ñ'¨A¨3Ò.Ð.Ð.Ø	×Ñ˜qÔ!à×$Ñ$ QÓ'×'Ð'à×Ñ˜1×1Ñ1°1Ô5Ü$Ó&×&Ð&ØˆŒà�|‰|‹~×'Ñ'¨A¨3Ò.Ð.Ð.à	×Ñ˜qÔ!Ü$Ó&×&Ð&Ø�|‰|‹~×'Ñ'¨2Ò-Ð-Ð-Ø�|‰|‹~×+Ñ+¨qÒ0Ð0Ð0àˆŒÜ$Ó&×&Ð&Ø�|‰|‹~×'Ñ'¨A¨3Ò.Ð.Ð.Ø�|‰|‹~×+Ñ+¨qÒ0Ð0Ð0à	×Ñ˜qÔ!àˆŒà×Ñ×#Ñ#Ô%÷CA&÷ A&ðF �>‰>˜QÒÐÐØ�<‰<‹>×#Ñ# rÒ)Ð)Ð)Ø×Ñ 2Ò%Ð%Ñ%ðKA&ùð
 +ùð 	'ù÷	ñ 	úð 	'ùð 	(ùð 	'ùð 	'ùð
 	'øðsA&ø÷ A&÷ A&ñ A&üsÛ   ‚5R·Q¸R»?Q6Á:QÁ;B/Q6Ä*QÄ+BQ6Ç	QÇ1Q6ÈQ&ÈB-Q6Ê9Q)Ê:-Q6Ë'Q,Ë(A	Q6Ì1Q/Ì2AQ6ÎQ2Î	A5Q6Ï>RÐ	Q4Ð
ARÑQ6ÑQ6ÑQ#	Ñ	Q6Ñ)Q6Ñ,Q6Ñ/Q6Ñ2Q6Ñ4RÑ6RÑ<Q?Ñ=RÒRc               ƒ  ó¤  ‡K  — t        j                  t        «      5  t        d«       d d d «       t        j                  t        d¬«      5  t        d«       d d d «       t        d«      } t        | «       | j                  dk(  sJ ‚| j                  �J ‚| j                  «        | j                  dk(  sJ ‚| j                  «       j                  dk(  sJ ‚| j                  «        | j                  dk(  sJ ‚t        «       5  | j                  «       ƒ d {  –—†  d d d «       | j                  dk(  sJ ‚t        j                  t        j                  «      5  | j                  «        d d d «       | j                  «        | j                  dk(  sJ ‚t        «       5  | 4 ƒd {  –—†  | j                  dk(  sJ ‚d d d «      ƒd {  –—†  d d d «       | j                  dk(  sJ ‚| j                  «        g Šdˆfd„}t        j                   «       4 ƒd {  –—† }|j#                  || «       t%        «       ƒ d {  –—†  ‰d	gk(  sJ ‚| j                  dk(  sJ ‚| j                  «        | j                  dk(  sJ ‚t        j                  t        j                  «      5  | j                  «        d d d «       d d d «      ƒd {  –—†  ‰d	d
gk(  sJ ‚y # 1 sw Y   �Œ¡xY w# 1 sw Y   �ŒxY w7 �ŒÎ# 1 sw Y   �ŒÎxY w# 1 sw Y   �ŒŽxY w7 �Œ_7 �ŒA# 1 ƒd {  –—†7  sw Y   �ŒRxY w# 1 sw Y   �ŒWxY w7 �Œ7 Œ÷# 1 sw Y   ŒˆxY w7 Œ# 1 ƒd {  –—†7  sw Y   Œ�xY w­w)Nr+   z^initial value must be >= 0$r   r-   r.   r   r   c              “  ó†   •K  — ‰j                  d«       | j                  «       ƒ d {  –—†  ‰j                  d«       y 7 Œ­w©NÚstartedÚfinished)r   r=   )Úsr   s    €r   Ú
do_acquirez"test_Semaphore.<locals>.do_acquire)  s3   øè ø€ Ø�‰�iÔ Ø�i‰i‹k×ÐØ�‰�jÕ!ð 	úr   r_   r`   )ra   Ú	Semaphorer   r   )r!   r2   r3   rc   r4   r5   ÚvalueÚ	max_valuer9   r   r    r:   r   r=   r   r?   r&   r'   r   )ra   rb   r(   r   s      @r   Útest_Semaphorerf     sÎ  øè ø€ Ü	�‰”yÓ	!ñ Ü�#Œ÷ä	�‰”zÐ)HÔ	Iñ Ü�"Œ÷ä�!‹€AÜˆ„GØ�7‰7�aŠ<Ðˆ<Ø�;‰;ÐÐÐØ‡I�I„KØ�7‰7�aŠ<Ðˆ<Ø�<‰<‹>×'Ñ'¨1Ò,Ð,Ð,Ø×ÑÔØ�7‰7�aŠ<Ðˆ<Ü	Ó	ñ Ø�i‰i‹k×Ð÷à�7‰7�aŠ<Ðˆ<Ü	�‰”u×'Ñ'Ó	(ñ Ø	×ÑÔ÷ð ‡I�I„KØ�7‰7�aŠ<Ðˆ<Ü	Ó	ñ  Ø÷ 	 ñ 	 Ø—7‘7˜a’<Ð�<÷	 ÷ 	 ÷ ð �7‰7�aŠ<Ðˆ<Ø×ÑÔà€Fõ"ô
 ×!Ñ!Ó#÷ 	ð 	 wØ×Ñ˜: qÔ)Ü$Ó&×&Ð&Ø˜)˜Ò$Ð$Ð$Ø�w‰w˜!Š|Ðˆ|Ø	�	‰	Œà�w‰w˜!Š|Ðˆ|Ü�]‰]œ5×+Ñ+Ó,ñ 	Ø×ÑÔ÷	÷	÷ 	ð �i Ð,Ò,Ð,Ñ,÷Yñ ú÷ñ úð 	ù÷ñ ú÷ñ úð	 ùð 	 ù÷ 	 ÷ 	 ò 	 ú÷ ñ  úð	ùà&ø÷	ð 	úð	ø÷ 	÷ 	ñ 	üsD  ƒM�K©#MÁKÁB(MÄ K%ÄK"ÄK%Ä<MÅK2Å&3MÆLÆ K?Æ!LÆ$LÆ6LÇLÇLÇA	MÈL(ÈMÈ L;È3L+È4A!L;ÊL-Ê&L;Ê.MÊ9L9Ê:MËKËMËKËMË"K%Ë%K/Ë*MË2K<Ë7MË?LÌLÌL	ÌLÌL	ÌLÌL%Ì 	MÌ+L;Ì-L6	Ì2L;Ì9MÌ;MÍMÍMÍ	Mc                 ól  — t        j                  t        «      5  t        dd¬«       d d d «       t        j                  t        d¬«      5  t        dd¬«       d d d «       t        dd¬«      } | j
                  dk(  sJ ‚t        | «       t        j                  t        d¬«      5  | j                  «        d d d «       | j                  dk(  sJ ‚| j                  «        | j                  dk(  sJ ‚| j                  «        | j                  dk(  sJ ‚y # 1 sw Y   ŒëxY w# 1 sw Y   ŒÆxY w# 1 sw Y   ŒuxY w)	Nr.   r+   )re   z%^max_values must be >= initial_value$r   r   z#^semaphore released too many times$r   )
r!   r2   r3   rc   r4   re   r5   r9   rd   r:   )Úbss    r   Útest_Semaphore_boundedri   ;  sò   € Ü	�‰”yÓ	!ñ $Ü�!˜sÕ#÷$ä	�‰”zÐ)QÔ	Rñ "Ü�!˜qÕ!÷"ä	�1 Ô	"€BØ�<‰<˜1ÒÐÐÜˆ„HÜ	�‰”zÐ)OÔ	Pñ Ø
�
‰
Œ÷à�8‰8�qŠ=Ðˆ=Ø×ÑÔØ�8‰8�qŠ=Ðˆ=Ø‡J�J„LØ�8‰8�qŠ=Ð‰=÷$ð $ú÷"ð "ú÷
ð ús#   šDÁDÂ%D*ÄDÄD'Ä*D3Úlockclsc                ó   — | j                   S ©N)Ú__name__)Úfns    r   ú<lambda>ro   L  s
   € È2Ï;É;€ ó    )Úidsc              ƒ  ó¢  ‡‡K  —  | «       Š‰j                  «       rJ ‚t        j                  ‰«      } |«       ‰u sJ ‚t        ‰«       | j                  t        ‰«      v sJ ‚t        «       5  ‰4 ƒd {  –—†  ‰j                  «       sJ ‚t        ‰«       d d d «      ƒd {  –—†  d d d «       ‰j                  «       rJ ‚‰j                  «        ‰j                  «       sJ ‚‰j                  «        ‰j                  «       rJ ‚t        «       5  ‰j                  «       ƒ d {  –—†  d d d «       ‰j                  «       sJ ‚‰j                  «        ‰j                  «       rJ ‚‰j                  «        t        j                  t        «      5  ‰j                  «        d d d «       ‰j                  «        t        j                  t        «      5  ‰j                  «        d d d «       d Šdˆˆfd„}t        j                  «       4 ƒd {  –—† }‰j                  «       rJ ‚|j                  |«       t        «       ƒ d {  –—†  ‰j                  «       sJ ‚t        j                  t        j                   «      5  ‰j                  «        d d d «       t        j                  t        «      5  ‰j                  «        d d d «       ‰j#                  «       }t%        |«       |j                   sJ ‚|j&                  ‰u sJ ‚|j(                  dk(  sJ ‚|j                  |«       t        «       ƒ d {  –—†  ‰j#                  «       }t%        |«       |j(                  dk(  sJ ‚|j*                  j-                  «        d d d «      ƒd {  –—†  ‰j#                  «       }|j                   rJ ‚|j&                  �J ‚|j(                  dk(  sJ ‚y 7 �ŒO7 �Œ%# 1 ƒd {  –—†7  sw Y   �Œ6xY w# 1 sw Y   �Œ;xY w7 �ŒÊ# 1 sw Y   �ŒÊxY w# 1 sw Y   �ŒaxY w# 1 sw Y   �Œ,xY w7 �Œ7 �ŒÜ# 1 sw Y   �Œ–xY w# 1 sw Y   �ŒqxY w7 �Œ7 Œ¸# 1 ƒd {  –—†7  sw Y   ŒÈxY w­w)Nc               “  óÆ   •K  — t        j                  «       Š ‰4 ƒd {  –—†  t        «       ƒ d {  –—†  d d d «      ƒd {  –—†  y 7 Œ'7 Œ7 Œ	# 1 ƒd {  –—†7  sw Y   y xY w­wrl   )r   r<   r
   )Úholder_taskÚls   €€r   Úholderz,test_Lock_and_StrictFIFOLock.<locals>.holdert  sV   øè ø€ ä×(Ñ(Ó*ˆØ÷ 	"ñ 	"Ü“/×!Ð!÷	"÷ 	"ñ 	"øØ!øð	"ø÷ 	"÷ 	"ñ 	"üsS   ƒA!žAŸA!¢A°A±AµA!Á A
ÁA!ÁAÁ
A!ÁAÁAÁAÁA!r   r.   r   )ÚlockedÚweakrefÚrefr5   rm   r   r:   r9   r=   r!   r2   r8   r   r&   r'   r   r?   r   ÚprintÚownerr    rR   rS   )rj   Úrrv   r(   r   rt   ru   s        @@r   Útest_Lock_and_StrictFIFOLockr}   L  sŽ  ùè ø€ ñ 	‹	€AØ�x‰xŒzÐˆ>ô 	�‰�A‹€AÙ‹3�!‰8€Oˆ8äˆ„Gà×Ñœt A›wÑ&Ð&Ð&Ü	Ó	ñ Ø÷ 	ñ 	Ø—8‘8”:Ð�:Ü�ŒG÷	÷ 	÷ð �x‰xŒzÐˆ>Ø×ÑÔØ�8‰8Œ:Ðˆ:Ø‡I�I„KØ�x‰xŒzÐˆ>Ü	Ó	ñ Ø�i‰i‹k×Ð÷à�8‰8Œ:Ðˆ:Ø‡I�I„KØ�x‰xŒzÐˆ>à×ÑÔÜ	�‰”|Ó	$ñ à	×ÑÔ÷ð ‡I�I„KÜ	�‰”|Ó	$ñ à	�	‰	Œ÷ð €Kö"ô ×!Ñ!Ó#÷ &ð & wØ—8‘8”:Ðˆ~Ø×Ñ˜6Ô"Ü$Ó&×&Ð&Ø�x‰xŒzÐˆzä�]‰]œ5×+Ñ+Ó,ñ 	Ø×ÑÔ÷	ô �]‰]œ<Ó(ñ 	Ø�I‰IŒK÷	ð —\‘\“^ˆ
ÜˆjÔØ× Ò Ð Ð Ø×Ñ ;Ñ.Ð.Ð.Ø×'Ñ'¨1Ò,Ð,Ð,à×Ñ˜6Ô"Ü$Ó&×&Ð&Ø—\‘\“^ˆ
ÜˆjÔØ×'Ñ'¨1Ò,Ð,Ð,à×Ñ×#Ñ#Ô%÷1&÷ &ð4 —‘“€JØ× Ò Ð Ð Ø×ÑÐ#Ð#Ð#Ø×#Ñ# qÒ(Ð(Ñ(ðy	ùð 	ù÷ 	÷ 	ò 	ú÷ñ úð 	ù÷ñ ú÷ñ ú÷ñ úð&ùð 	'ù÷	ñ 	ú÷	ñ 	úð 	'ùð'&ø÷ &÷ &ñ &üsU  „A(QÁ,OÁ3OÁ4OÁ7OÂOÂ OÂ!OÂ%A(QÄO.Ä!O+Ä"O.Ä&A%QÆO;Æ1QÇPÇ)QÈPÈQÈ1P:È<PÈ=9P:É6PÊ!P:Ê(P(Ê9A0P:Ì)P5Ì*A
P:Í4QÍ?P8Î AQÏOÏOÏO	ÏOÏO	ÏOÏO(Ï#QÏ+O.Ï.O8Ï3QÏ;PÐ QÐPÐ	QÐP:ÐP%	Ð P:Ð(P2	Ð-	P:Ð8QÐ:QÑ QÑQÑQc               ƒ  ó|  ‡‡K  — t        j                  t        «      5  t        t	        d«      «       d d d «       t        j                  t        «      5  t        t
        «       d d d «       t        «       } t        | «      Š| j                  «       rJ ‚‰j                  «       rJ ‚t        «       5  ‰j                  «       ƒ d {  –—†  d d d «       | j                  «       sJ ‚‰j                  «       sJ ‚t        «       Š‰j                  «       rJ ‚‰j                  «        ‰j                  «       sJ ‚t        j                  t        «      5  ‰j                  «        d d d «       ‰j                  «        t        j                  t        «      5  ‰j                  «       ƒ d {  –—†  d d d «       t        j                  t        «      5  ‰j                  «        d d d «       t        j                  t        «      5  ‰j                  «        d d d «       t!        «       Šdˆˆfd„}t#        j$                  «       4 ƒd {  –—† }t'        d«      D ]&  }|j)                  ||«       t+        «       ƒ d {  –—†  Œ( ‰4 ƒd {  –—†  ‰j                  «        d d d «      ƒd {  –—†  ‰j                  «       sJ ‚t+        «       ƒ d {  –—†  ‰dhk(  sJ ‚‰4 ƒd {  –—†  ‰j                  «        d d d «      ƒd {  –—†  t+        «       ƒ d {  –—†  ‰h d£k(  sJ ‚d d d «      ƒd {  –—†  t!        «       Št#        j$                  «       4 ƒd {  –—† }t'        d«      D ]&  }|j)                  ||«       t+        «       ƒ d {  –—†  Œ( ‰4 ƒd {  –—†  ‰j                  d«       ‰j-                  «       }t/        |«       |j0                  dk(  sJ ‚|j2                  j0                  dk(  sJ ‚d d d «      ƒd {  –—†  ‰j-                  «       j2                  j0                  dk(  sJ ‚t+        «       ƒ d {  –—†  ‰ddhk(  sJ ‚‰4 ƒd {  –—†  ‰j                  «        d d d «      ƒd {  –—†  d d d «      ƒd {  –—†  t#        j4                  «       5 }‰4 ƒd {  –—†  |j7                  «        	 ‰j                  «       ƒ d {  –—†  ‰j                  «       sJ ‚d d d «      ƒd {  –—†  d d d «       y # 1 sw Y   �Œ±xY w# 1 sw Y   �Œ�xY w7 �Œ9# 1 sw Y   �Œ9xY w# 1 sw Y   �Œ²xY w7 �Œx# 1 sw Y   �ŒxxY w# 1 sw Y   �ŒSxY w# 1 sw Y   �Œ.xY w7 �Œ7 �ŒÙ7 �ŒÏ7 �Œ²# 1 ƒd {  –—†7  sw Y   �ŒÃxY w7 �Œ§7 �Œ—7 �Œz# 1 ƒd {  –—†7  sw Y   �Œ‹xY w7 �Œ�7 �Œk# 1 ƒd {  –—†7  sw Y   �Œ|xY w7 �Œ]7 �Œ.7 �Œ$7 �Œ¿# 1 ƒd {  –—†7  sw Y   �ŒÐxY w7 �Œ�7 �ŒŒ7 �Œo# 1 ƒd {  –—†7  sw Y   �Œ€xY w7 �Œx# 1 ƒd {  –—†7  sw Y   �Œ‰xY w7 �Œq7 �ŒK# ‰j                  «       sJ ‚w xY w7 �ŒC# 1 ƒd {  –—†7  sw Y   �ŒTxY w# 1 sw Y   y xY w­w)Nr.   c              “  óÌ   •K  — ‰4 ƒd {  –—†  ‰j                  «       ƒ d {  –—†  d d d «      ƒd {  –—†  ‰j                  | «       y 7 Œ>7 Œ(7 Œ# 1 ƒd {  –—†7  sw Y   Œ*xY w­wrl   )r   Úadd)rO   rB   Úfinished_waiterss    €€r   Úwaiterztest_Condition.<locals>.waiter¼  sX   øè ø€ Ø÷ 	ñ 	Ø—&‘&“(�NˆN÷	÷ 	à×Ñ˜QÕð	øØøð	ø÷ 	÷ 	ñ 	üsQ   ƒA$ŠA	‹A$ŽA¢A£A§A$²A³A$ÁAÁA$ÁA!ÁAÁA!ÁA$rK   r   >   r   r.   r   r   )rO   Úintr   r   )r!   r2   r3   Ú	Conditionrc   ÚStrictFIFOLockÚLockrw   r   r=   r:   r8   r9   r   ÚnotifyÚ
notify_allr%   r   r&   rM   r'   r   r   rz   r    Úlock_statisticsÚCancelScoperS   )ru   r‚   r(   rO   r   ÚscoperB   r�   s         @@r   Útest_ConditionrŒ   š  s6  ùè ø€ Ü	�‰”yÓ	!ñ  Ü”)˜A“,Ô÷ ä	�‰”yÓ	!ñ "Ü”.Ô!÷"ä‹€AÜ�!‹€AØ�x‰xŒzÐˆ>Ø�x‰xŒzÐˆ>Ü	Ó	ñ Ø�i‰i‹k×Ð÷à�8‰8Œ:Ðˆ:Ø�8‰8Œ:Ðˆ:ä‹€AØ�x‰xŒzÐˆ>Ø×ÑÔØ�8‰8Œ:Ðˆ:Ü	�‰”|Ó	$ñ Ø	×ÑÔ÷à‡I�I„Kä	�‰”|Ó	$ñ à�f‰f‹h�ˆ÷ô 
�‰”|Ó	$ñ à	�‰Œ
÷ô 
�‰”|Ó	$ñ à	�‰Œ÷ô “uÐö ô
 ×!Ñ!Ó#÷ -ð - wÜ�q“ò 	+ˆAØ×Ñ˜v qÔ)Ü(Ó*×*Ñ*ð	+ð ÷ 	ñ 	Ø�H‰HŒJ÷	÷ 	à�x‰xŒzÐˆzÜ$Ó&×&Ð&Ø A 3Ò&Ð&Ð&Ø÷ 	ñ 	Ø�L‰LŒN÷	÷ 	ä$Ó&×&Ð&Ø¢9Ò,Ð,Ð,÷-÷ -ô “uÐÜ×!Ñ!Ó#÷ ð  wÜ�q“ò 	+ˆAØ×Ñ˜v qÔ)Ü(Ó*×*Ñ*ð	+ð ÷ 	Añ 	AØ�H‰H�QŒKØŸ™›ˆJÜ�*ÔØ×+Ñ+¨qÒ0Ð0Ð0Ø×-Ñ-×;Ñ;¸qÒ@Ð@Ð@÷	A÷ 	Að �|‰|‹~×-Ñ-×;Ñ;¸qÒ@Ð@Ð@ä$Ó&×&Ð&Ø A q 6Ò)Ð)Ð)à÷ 	ñ 	Ø�L‰LŒN÷	÷ 	÷!÷ ô* 
×	Ñ	Ó	ð " Ø÷ 	"ñ 	"Ø�L‰LŒNð"Ø—f‘f“h—�à—x‘x”zÐ!�z÷	"÷ 	"÷"ð "÷U ñ  ú÷"ñ "úð 	ù÷ñ ú÷ñ úð 	ù÷ñ ú÷ñ ú÷ñ úð-ùð +ùð	ùð 	ù÷ 	÷ 	ò 	úð 	'ùð	ùð 	ù÷ 	÷ 	ò 	úà&ùð-ù÷ -÷ -ò -úðùð +ùð	Aùð 	Aù÷ 	A÷ 	Aò 	Aúð 	'ùð	ùð 	ù÷ 	÷ 	ò 	úð!ù÷ ÷ ò úð,	"ùð úà—x‘x”zÐ!‘zúð	"ù÷ 	"÷ 	"ò 	"ú÷"ð "üsH  „X<žS"³!X<ÁS/Á$AX<Â/S?ÃS<ÃS?ÃBX<ÅTÅ1X<ÆTÆ!TÆ"TÆ&!X<ÇT)Ç!X<Ç9T6È
1X<È;UÈ<X<È?.V
É-UÉ.V
É:U	É;V
É>UÊV
ÊUÊ#V
Ê>U%Ê?V
ËU(ËV
ËU.Ë&V
Ë1U+Ë2V
ÌVÌV
ÌX<ÌVÌ&X<ÍV ÍX<Í.W$Í5V#Í6W$ÎV&ÎW$ÎAV,ÏW$Ï*V)Ï+:W$Ð%WÐ&W$Ð9WÐ:W$Ð=WÑW$ÑWÑW$ÑX<Ñ)W!Ñ*X<ÒX0Ò	W:Ò
X0ÒXÒX Ò2W=Ò3X Ò7XÓ	X0ÓXÓX0Ó	X<Ó"S,Ó'X<Ó/S9Ó4X<Ó<S?Ó?T	ÔX<ÔTÔX<ÔTÔT&Ô!X<Ô)T3Ô.X<Ô6U Ô;	X<ÕV
Õ	V
ÕV
ÕU"	ÕUÕU"	Õ	V
Õ(V
Õ+V
Õ.V	Õ4U7Õ5V	Õ<	V
ÖX<Ö
VÖVÖVÖ	X<Ö#W$Ö&W$Ö)W$Ö,V?	Ö2V5Ö3V?	Ö:	W$×W$×W$×W	×W×W	×W$×!X<×$W7×*W-×+W7×2X<×:X0×=X Ø XØXØX0ØX-	Ø X#Ø!X-	Ø(X0Ø0X9Ø5X<)Úopen_memory_channel)ÚAsyncContextManagerMixinc                  ó,   — e Zd Zdd„Zdd„Zdd„Zdd„Zy)ÚChannelLock1c                ó–   — t        d    |«      \  | _        | _        t        |dz
  «      D ]  }| j                  j	                  d «       Œ y ©Nr.   )r�   ra   r|   rM   Úsend_nowait)ÚselfÚcapacityÚ_s      r   Ú__init__zChannelLock1.__init__ö  sC   € Ü,¨TÑ2°8Ó<‰ˆŒ�”Ü�x !‘|Ó$ò 	%ˆAØ�F‰F×Ñ˜tÕ$ñ	%rp   c                ó:   — | j                   j                  d «       y rl   ©ra   r“   ©r”   s    r   r:   zChannelLock1.acquire_nowaitû  ó   € Ø�‰×Ñ˜4Õ rp   c              ƒ  óV   K  — | j                   j                  d «      ƒ d {  –—†  y 7 Œ­wrl   )ra   Úsendrš   s    r   r=   zChannelLock1.acquireþ  s   è ø€ Ø�f‰f�k‰k˜$Ó×Òús   ‚)¡'¢)c                ó8   — | j                   j                  «        y rl   ©r|   Úreceive_nowaitrš   s    r   r9   zChannelLock1.release  ó   € Ø�‰×ÑÕrp   N)r•   rƒ   r   r   r   ©rm   Ú
__module__Ú__qualname__r—   r:   r=   r9   © rp   r   r�   r�   õ  s   „ ó%ó
!ó ô rp   r�   c                  ó,   — e Zd Zdd„Zdd„Zdd„Zdd„Zy)ÚChannelLock2c                óp   — t        d    d«      \  | _        | _        | j                  j                  d «       y ©Né
   )r�   ra   r|   r“   rš   s    r   r—   zChannelLock2.__init__  s+   € Ü,¨TÑ2°2Ó6‰ˆŒ�”Ø�‰×Ñ˜4Õ rp   c                ó8   — | j                   j                  «        y rl   rŸ   rš   s    r   r:   zChannelLock2.acquire_nowait
  r¡   rp   c              ƒ  óT   K  — | j                   j                  «       ƒ d {  –—†  y 7 Œ­wrl   )r|   Úreceiverš   s    r   r=   zChannelLock2.acquire  s   è ø€ Ø�f‰f�n‰nÓ×Òús   ‚( &¡(c                ó:   — | j                   j                  d «       y rl   r™   rš   s    r   r9   zChannelLock2.release  r›   rp   Nr   r¢   r¥   rp   r   r§   r§     s   „ ó!ó óô!rp   r§   c                  ó,   — e Zd Zdd„Zdd„Zdd„Zdd„Zy)ÚChannelLock3c                óH   — t        d    d«      \  | _        | _        d| _        y )Nr   F)r�   ra   r|   Úacquiredrš   s    r   r—   zChannelLock3.__init__  s"   € Ü,¨TÑ2°1Ó5‰ˆŒ�”ð ˆ�rp   c                ó.   — | j                   rJ ‚d| _         y ©NT)r²   rš   s    r   r:   zChannelLock3.acquire_nowait  s   € Ø—=’=Ð Ð Øˆ�rp   c              ƒ  óº   K  — | j                   r$| j                  j                  d «      ƒ d {  –—†  y d| _         t        j                  «       ƒ d {  –—†  y 7 Œ)7 Œ­wr´   )r²   ra   r�   r   Ú
checkpointrš   s    r   r=   zChannelLock3.acquire   sG   è ø€ Ø�=Š=Ø—&‘&—+‘+˜dÓ#×#Ñ#à ˆDŒMÜ×"Ñ"Ó$×$Ñ$ð $øð %ús!   ‚+A­A®#AÁAÁAÁAc                ó–   — 	 | j                   j                  «        y # t        j                  $ r | j                  sJ ‚d| _        Y y w xY w)NF)r|   r    r   r?   r²   rš   s    r   r9   zChannelLock3.release'  s?   € ð	"Ø�F‰F×!Ñ!Õ#øÜ×Ñò 	"Ø—=’=Ð �=Ø!ˆDŽMð	"ús   ‚ �(AÁANr   r¢   r¥   rp   r   r°   r°     s   „ óóó%ô"rp   r°   c                 ó   — t        d«      S r’   )r0   r¥   rp   r   ro   ro   0  s   € ŒO˜AÓ€ rp   c                 ó   — t        d«      S r’   )rc   r¥   rp   r   ro   ro   1  s
   € ŒI�a‹L€ rp   c                 ó   — t        d«      S r©   ©r�   r¥   rp   r   ro   ro   4  s   € ŒL˜Ó€ rp   c                 ó   — t        d«      S r’   r»   r¥   rp   r   ro   ro   5  s
   € ŒL˜‹O€ rp   )zCapacityLimiter(1)zSemaphore(1)r†   r…   zChannelLock1(10)zChannelLock1(1)r§   r°   Úlock_factoryr   ÚLockLikeÚLockFactoryc              ƒ  ó,  ‡‡‡K  — dŠd}dŠdŠdˆˆˆfd„}t        j                  «       4 ƒd {  –—† } | «       }t        |«      D ]  }|j                  ||«       Œ d d d «      ƒd {  –—†  ‰rJ ‚‰‰|z  k(  sJ ‚y 7 ŒL7 Œ# 1 ƒd {  –—†7  sw Y   Œ%xY w­w)Nrª   rJ   Fr   c              “  ó0  •K  — t        ‰«      D ]f  }| 4 ƒd {  –—†  ‰dz  Š‰rJ ‚dŠt        j                  «       ƒ d {  –—†  t        j                  «       ƒ d {  –—†  ‰sJ ‚dŠd d d «      ƒd {  –—†  Œh y 7 Œ`7 Œ;7 Œ!7 Œ# 1 ƒd {  –—†7  sw Y   Œ„xY w­w)Nr.   TF)rM   r   r¶   )Ú	lock_liker–   ÚLOOPSÚacquiresÚin_critical_sections     €€€r   Úworkerz+test_generic_lock_exclusion.<locals>.worker_  s¦   øè ø€ ä�u“ò 	,ˆAØ ÷ ,ñ ,Ø˜A‘�Ù.Ð.Ð.Ø&*Ð#Ü×&Ñ&Ó(×(Ð(Ü×&Ñ&Ó(×(Ð(Ù*Ð*Ð*Ø&+Ð#÷,÷ ,ð ,ñ	,ð,øð )øØ(øð,ø÷ ,÷ ,ñ ,üsg   ƒB˜A9™Bœ#B¿A;Á BÁA=Á
BÁ&BÁ1A?Á2BÁ;BÁ=BÁ?BÂB	ÂB
ÂB	ÂB)rÂ   r¾   r   r   )r   r&   rM   r'   )	r½   ÚWORKERSrÆ   r(   rÂ   r–   rÃ   rÄ   rÅ   s	         @@@r   Útest_generic_lock_exclusionrÈ   X  s§   úè ø€ à€EØ€GØÐØ€H÷
,ô ×!Ñ!Ó#÷ 2ð 2 wÙ “Nˆ	Ü�w“ò 	2ˆAØ×Ñ˜v yÕ1ð	2÷2÷ 2ñ #Ð"Ð"Ø�u˜w‘Ò&Ð&Ñ&ð2øð 2ø÷ 2÷ 2ñ 2üsD   …)B®A;¯B²*A?ÁBÁ'A=Á(BÁ=BÁ?BÂBÂBÂBc              ƒ  ó€  ‡‡‡K  — g Šg ŠdŠdˆˆˆfd„} | «       }t        j                  «       4 ƒd {  –—† }|j                  |d|«       |j                  |d|«       |j                  |d|«       d d d «      ƒd {  –—†  t        ‰«      D ]  }‰d|z  d|dz   z   ‰k(  rŒJ ‚ y 7 Œq7 Œ*# 1 ƒd {  –—†7  sw Y   Œ:xY w­w)NrJ   c              “  óÚ   •K  — ‰j                  | «       t        ‰«      D ].  }|4 ƒd {  –—†  ‰j                  | «       d d d «      ƒd {  –—†  Œ0 y 7 Œ(7 Œ	# 1 ƒd {  –—†7  sw Y   ŒHxY w­wrl   )r   rM   )ÚnamerÂ   r–   rÃ   Úinitial_orderr   s      €€€r   Úloopyz.test_generic_lock_fifo_fairness.<locals>.loopy{  sk   øè ø€ à×Ñ˜TÔ"Ü�u“ò 	$ˆAØ ÷ $ñ $Ø—‘˜dÔ#÷$÷ $ð $ñ	$ð$øð $ø÷ $÷ $ñ $üsC   ƒ&A+©AªA+­A¿A+Á
AÁA+ÁA+ÁA(	ÁAÁA(	Á$A+r.   r   rK   )rË   rƒ   rÂ   r¾   r   r   )r   r&   r'   rM   )r½   rÍ   rÂ   r(   rO   rÃ   rÌ   r   s        @@@r   Útest_generic_lock_fifo_fairnessrÎ   u  sÍ   úè ø€ à€MØ€FØ€E÷$ñ “€IÜ×!Ñ!Ó#÷ 0ð 0 wØ×Ñ˜5 ! YÔ/Ø×Ñ˜5 ! YÔ/Ø×Ñ˜5 ! YÔ/÷0÷ 0ô �5‹\ò <ˆØ�a˜!‘e˜a 1 q¡5™kÐ*¨mÓ;Ð;Ð;ñ<ð0øð 0ø÷ 0÷ 0ñ 0üsJ   ….B>³B%´B>·:B)Á1B>Á<B'Á=#B>Â!B>Â'B>Â)B;Â/B2Â0B;Â7B>c              ƒ  óV  ‡‡K  —  | «       Šg Šdˆˆfd„}t        j                  «       4 ƒd {  –—† }‰j                  «        |j                  |«       t	        «       ƒ d {  –—†  ‰dgk(  sJ ‚‰j                  «        d d d «      ƒd {  –—†  y 7 Œ`7 Œ/7 Œ	# 1 ƒd {  –—†7  sw Y   y xY w­w)Nc               “  ó¼   •K  — ‰j                  d«       ‰ 4 ƒd {  –—†  	 d d d «      ƒd {  –—†  ‰j                  d«       y 7 Œ'7 Œ# 1 ƒd {  –—†7  sw Y   Œ(xY w­wr^   )r   )rÂ   r   s   €€r   Ú
lock_takerzCtest_generic_lock_acquire_nowait_blocks_acquire.<locals>.lock_taker•  sT   øè ø€ Ø�‰�iÔ Ø÷ 	ñ 	Ø÷	÷ 	à�‰�jÕ!ð	øð 	ø÷ 	÷ 	ñ 	üsA   ƒA›AœAŸA¡A¬A­AÁAÁAÁAÁAÁAr_   r   )r   r&   r:   r'   r   r9   )r½   rÑ   r(   rÂ   r   s      @@r   Ú/test_generic_lock_acquire_nowait_blocks_acquirerÒ   �  s¡   ùè ø€ ñ “€Ià€Fö"ô ×!Ñ!Ó#÷ ð  wØ× Ñ Ô"Ø×Ñ˜:Ô&Ü$Ó&×&Ð&Ø˜)˜Ò$Ð$Ð$Ø×ÑÔ÷÷ ñ øð 	'øðø÷ ÷ ñ üsV   „)B)­B®B)±/BÁ BÁ!BÁ=B)ÂBÂ	B)ÂBÂB)ÂB&ÂBÂB&Â"B)c               ƒ  ó0  K  — t         rJ ‚t        j                  «       } t        j                  «       4 ƒd{  –—† }|j	                  | j
                  «       ddd«      ƒd{  –—†  t        j                  t        | j                  j                  d   «      «      }t        j                  t        j                  d|› d�¬«      5  | j                  «       ƒ d{  –—†  ddd«       t         rJ ‚y7 Œ·7 ŒŽ# 1 ƒd{  –—†7  sw Y   ŒžxY w7 Œ.# 1 sw Y   Œ-xY w­w)z‡Test that trying to acquire a lock whose owner has exited raises an error.
    see https://github.com/python-trio/trio/issues/3035
    Nr   ú.^Owner of this lock exited without releasing: ú$r   )r   Útrior†   r&   r'   r=   ÚreÚescapeÚstrÚ_lotÚ	broken_byr!   r2   ÚBrokenResourceError)Úlockr(   Ú	owner_strs      r   Útest_lock_acquire_unowned_lockrß   £  sè   è ø€ õ *Ð)Ð)Ü�9‰9‹;€DÜ× Ñ Ó"÷ )ð ) gØ×Ñ˜4Ÿ<™<Ô(÷)÷ )ä—	‘	œ#˜dŸi™i×1Ñ1°!Ñ4Ó5Ó6€IÜ	�‰Ü× Ñ Ø>¸y¸kÈÐKô
ñ ð �l‰l‹n×Ð÷	õ
 *Ð)Ð)Ð)ð)øð )ø÷ )÷ )ñ )úð 	ø÷	ð üso   ‚5D·C/¸D»C3ÁDÁ"C1Á#A"DÃD
ÃDÃD
ÃDÃ1DÃ3DÃ9C<Ã:DÄDÄD
Ä
DÄDc               ƒ  óæ  K  — t         rJ ‚t        j                  «       } t        j                  t        j
                  t        j                  d¬«      «      5  t        j                  «       4 ƒd{  –—† }|j                  | j                  «       |j                  | j                  «       ddd«      ƒd{  –—†  ddd«       t         rJ ‚y7 Œ[7 Œ# 1 ƒd{  –—†7  sw Y   Œ'xY w# 1 sw Y   Œ+xY w­w)z�Test for error if awaiting on a lock whose owner exits without releasing.
    see https://github.com/python-trio/trio/issues/3035rÔ   r   N)
r   rÖ   r†   r!   ÚRaisesGroupÚ	RaisesExcrÜ   r&   r'   r=   )rÝ   r(   s     r   Útest_lock_multiple_acquirerã   ´  sÊ   è ø€ õ *Ð)Ð)Ü�9‰9‹;€DÜ	×	Ñ	Ü×ÑÜ×$Ñ$ØBô	
ó
ñ -ô ×$Ñ$Ó&÷ 	-ð 	-¨'Ø×Ñ˜tŸ|™|Ô,Ø×Ñ˜tŸ|™|Ô,÷	-÷ 	-÷-õ *Ð)Ð)Ð)ð	-øð 	-ø÷ 	-÷ 	-ñ 	-ú÷-ð -üsf   ‚AC1ÁC%Á0CÁ1C%Á47CÂ+C%Â6CÂ7C%Â;C1ÃC%ÃC%ÃC"	ÃCÃC"	ÃC%Ã%C.Ã*C1c               ƒ  ó˜  K  — t         rJ ‚d } t        j                  «       }|j                  «        t	        j
                  «       |j                  git         k(  sJ ‚t        j                  «       4 ƒd {  –—† }|j                  |j                  «       t        «       ƒ d {  –—†  |j                  «        t        t         «      dk(  sJ ‚t        t        t         «      «      } t         |    |j                  gk(  sJ ‚d d d «      ƒd {  –—†  |j                  j                  | gk(  sJ ‚t         rJ ‚y 7 Œ»7 Œ�7 Œ-# 1 ƒd {  –—†7  sw Y   Œ=xY w­wr’   )r   rÖ   r†   r:   r   r<   rÚ   r&   r'   r=   r   r9   rT   ÚnextÚiterrÛ   )Ú
child_taskrÝ   r(   s      r   Útest_lock_handoverrè   Å  s:  è ø€ Ý)Ð)Ð)Ø"€JÜ�9‰9‹;€Dð 	×ÑÔä×ÑÓØ�I‰Ið
ðô 
$ò	$ð $ð $ô × Ñ Ó"÷ 
Eð 
E gØ×Ñ˜4Ÿ<™<Ô(Ü$Ó&×&Ð&ð 	�‰Œô Ô-Ó.°!Ò3Ð3Ð3Üœ$Ô9Ó:Ó;ˆ
Ü)¨*Ñ5¸$¿)¹)¸ÒDÐDÐD÷
E÷ 
Eð �9‰9×Ñ : ,Ò.Ð.Ð.Ý)Ð)Ð)Ð)ð
Eøà&øð
Eø÷ 
E÷ 
Eñ 
Eüs[   ‚A1E
Á3D/Á4E
Á7)D5Â D1Â!AD5Ã:E
ÄD3Ä*E
Ä1D5Ä3E
Ä5EÄ;D>Ä<EÅE
r   )rj   ztype[Lock | StrictFIFOLock]r   r   )r½   r¿   r   r   )5Ú
__future__r   r×   rx   Úcollections.abcr   Útypingr   r!   Ú r   Ú_core._parking_lotr   Ú_syncÚ	_timeoutsr
   Útestingr   r   r)   rD   rH   rP   rX   r[   rf   ri   ÚmarkÚparametrizer†   r…   r}   rŒ   Ú_channelr�   rŽ   r�   r§   r°   Úlock_factoriesÚlock_factory_namesÚgeneric_lock_testr0   rc   r¾   Ú__annotations__r¿   rÈ   rÎ   rÒ   rß   rã   rè   r¥   rp   r   ú<module>rø      sÙ  ðÞ "ã 	Û Ý $Ý ã å Ý ;Ü Ý %ß @ó!DóHC&óL%ó !1óJ0óJ&óZ--ó`ð" ‡�×Ñ˜ T¨>Ð$:Ñ@VÐÓWðJ)Ø(ðJ)à	òJ)ó XðJ)óZQ"õh +Ý ,ô Ð+ô  ô !Ð+ô !ô"Ð+ô "ñ8 ÙØØÙÙØØð	€ò	Ð ð —K‘K×+Ñ+ØØØð ,ó Ð ð Øñà
ñð ñð ñ	ð
 ñð ñð 	ˆ)ó ð " " h ,Ñ/€ˆYÓ /ð
 ò'ó ð'ð8 ò<ó ð<ð. ðØðà	òó ðó**ó"*ô"*rp   