R
    ¢¤Òjrr  ã                   óB  €   Q s ] PHs] PHs] PHs] PHs] QHGs ] QHGs ] QH%G
sGsGs ] QH@Gs , Q-Ns  Q Q\O&                  2      s  Q Q\O&                  2      s  Q Q
\2      s  Q Q\2      s  Q Q2      s  Q Q\\\2      s  Q Q\\\2      sQ sQ s  Q Q\2      s  Q Q\2      s  Q  Q!\2      s   Q" Q\ 2      s!  Q# Q\ 2      s"  Q$ Q\2      s#Q% s$Q&,s%  Q' Q(2      s&  Q) Q\&\2      s'  Q* Q	\&\2      s(  Q+ Q\\2      s)  Q, Q\2      s*P! ).z4Utilities for with-statement contexts.  See PEP 343.)Údeque©Úwraps)ÚisasyncgenfunctionÚiscoroutinefunctionÚisgeneratorfunction)ÚGenericAliasÚclosingÚnullcontextÚAbstractContextManagerÚAbstractAsyncContextManagerÚAsyncExitStackÚContextDecoratorÚ	ExitStackÚredirect_stdoutÚredirect_stderrÚsuppressÚaclosingÚchdirc                   ót   ` €   \ sQ s]s n Qs\ \2      sQsQ s	\
O                  Q 2       s\Q 2       sQsU sP! )r   z,An abstract base class for context managers.c                ó   €   U ! ©z0Return `self` upon entering the runtime context.© ©Úselfs   &Ú'/usr/local/lib/python3.15/contextlib.pyÚ	__enter__Ú AbstractContextManager.__enter__   s   � àˆó    c                ó   €   P! ©z9Raise any exception triggered within the runtime context.r   ©r   Úexc_typeÚ	exc_valueÚ	tracebacks   &&&&r   Ú__exit__ÚAbstractContextManager.__exit__#   s   � ñ r   c                óT   €   U [         I c   [        O                   UQ Q2      ! [        ! )r   r%   )r   Ú_collections_abcÚ_check_methodsÚNotImplemented©ÚclsÚCs   &&r   Ú__subclasshook__Ú'AbstractContextManager.__subclasshook__(   s&   � àÔ(Ó(Ü#×2Ò2°1°kÀ:ÓNÐNÜÐr   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úclassmethodr   Ú__class_getitem__Ú	__slots__r   ÚabcÚabstractmethodr%   r.   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r      sK   ø‡ � á6á# LÓ1Ðà€Iòð 	×Ññó ðð ñó ör   c                   ót   ` €   \ sQ s]/s n Qs\ \2      sQsQ s	\
O                  Q 2       s\Q 2       sQsU sP! )r   z9An abstract base class for asynchronous context managers.c              ƒ  ó      €   U ! 3hr   r   r   s   &r   Ú
__aenter__Ú&AbstractAsyncContextManager.__aenter__7   s
   é � àˆùó   ‚c              ƒ  ó      €   P! 3hr    r   r!   s   &&&&r   Ú	__aexit__Ú%AbstractAsyncContextManager.__aexit__;   s
   é � ñ ùrB   c                óT   €   U [         I c   [        O                   UQ Q2      ! [        ! )r@   rD   )r   r(   r)   r*   r+   s   &&r   r.   Ú,AbstractAsyncContextManager.__subclasshook__@   s-   � àÔ-Ó-Ü#×2Ò2°1°lØ3>ó@ð @äÐr   r   )r0   r1   r2   r3   r4   r5   r   r6   r7   r@   r8   r9   rD   r.   r:   r;   r<   s   @r   r   r   /   sK   ø‡ � áCá# LÓ1Ðà€Iòð 	×Ññó ðð ñó ör   c                   ó2   ` €   \ sQ s]Hs n QsQ sQ sQsU sP! )r   zJA base class or mixin that enables context managers to work as decorators.c                ó   €   U ! )a  Return a recreated instance of self.

Allows an otherwise one-shot context manager like
_GeneratorContextManager to support use as
a decorator via implicit recreation.

This is a private interface just for _GeneratorContextManager.
See issue #11647 for details.
r   r   s   &r   Ú_recreate_cmÚContextDecorator._recreate_cmK   s	   � ð ˆr   c                óü   ` `€   [        R2      o[        R2      %       c   UU 1Q  koU U2      ! [        R2      %       c   UU 1Q koU U2      ! [        R2      %       c   UU 1Q koU U2      ! UU 1Q koU U2      ! )c                 ó`  :   €   RO                  2       9^tt^ 2        [        R U - U@   2      9^tt^2       E Pi  w€  K
 oU   Pi  w€  K
  oU3w €   J   K KBPPP2      E Pi  w€  K 
  L ) E Pi  w€  K 
 %       f   h     L9 hPPP2       P!  ) %       f   h     P! 9 h3h©N©rJ   r   ©ÚargsÚkwdsÚgenÚvalueÚfuncr   s   *,  €€r   Úasyncgen_innerÚ1ContextDecorator.__call__.<locals>.asyncgen_inner[   sr   øé � Ø×&Ñ&×(Õ(Ü'©¨dÐ(;°dÒ(;×<×<Ö<ÀÙ+.÷ (ò ( %Ø"'žKñ  =ñ(¨3÷  =×<×<×<×<Ö<ú÷ )×(×(Ò(üsŒ   ƒB.� B½A¾BÁA2	ÁA
Á
AÁA
Á
A2	ÁBÁA
ÁA2	ÁBÁ*A.
Á+BÁ2BÁ9A=Á:BÂBÂBÂ
B.ÂB+	Â#B+	Â%	B.c               Ÿ   ó¦   :   €   RO                  2       9^tt^ 2        R U - U@   E  Pi  w€  K
 ttPPP2       !  K ) %       f   h     P! 9 h3hrN   ©rJ   ©rQ   rR   rU   r   s   *,€€r   Úasync_innerÚ.ContextDecorator.__call__.<locals>.async_innerd   s>   øé � Ø×&Ñ&×(Õ(Ù!% tÐ!4¨tÒ!4×4Ñ4÷ )Ò(Ù4÷ )×(Ð(üs+   ƒA�=«;
¬=°A»=½A	ÁA	Á	Ac            	   ?   ó  :   €   RO                  2       9^tt^ 2        [        R U - U@   2      9^tt^ 2       oSF  Pi  w€  K
 ttPPP2       ttPPP2       !  K ) %       f   h     L9 hPPP2       P!  ) %       f   h     P! 9 h3hrN   ©rJ   r	   )rQ   rR   rS   rU   r   s   *, €€r   Ú	gen_innerÚ,ContextDecorator.__call__.<locals>.gen_innerk   sZ   øé � Ø×&Ñ&×(Õ(¬'±$¸Ð2EÀÒ2E×*FÔ*FÈ#Ø'*ŸN™N÷ +GÑ*F×(Ò(Ù*÷ +G×*Fú×(×(×(Ò(üsV   ƒB�A8¸A	¿AÁ A	Á
A8ÁBÁA	ÁA+Á$A+Á&A8Á.
BÁ8B		ÂB		Â	Bc                  ó†   :€   RO                  2       9^tt^ 2        R U - U@   ttPPP2       !  ) %       f   h     P! 9 hrN   rY   rZ   s   *,€€r   ÚinnerÚ(ContextDecorator.__call__.<locals>.innerr   s.   ø� Ø×&Ñ&×(Õ(Ù Ð.¨Ò.÷ )×(×(Ó(ús   ›	/¯A 	¸A 	©r   Ú_isasyncgenfunctionÚ_iscoroutinefunctionÚ_isgeneratorfunction©r   rU   ÚwrapperrV   r[   r_   rb   s   ff     r   Ú__call__ÚContextDecorator.__call__W   st   ù� Ü˜“+ˆÜ˜t×$Ò$ö(ñ ˜>Ó*Ð*Ü! $×'Ò'ö5ñ ˜;Ó'Ð'Ü! $×'Ò'ö,ñ ˜9Ó%Ð%ö/ñ ˜5“>Ð!r   r   ©	r0   r1   r2   r3   r4   rJ   rj   r:   r;   r<   s   @r   r   r   H   s   ø‡ � ÙPò
÷"ð "r   c                   ó2   ` €   \ sQ s]ys n QsQ sQ sQsU sP! )ÚAsyncContextDecoratorzPA base class or mixin that enables async context managers to work as decorators.c                ó   €   U ! )z-Return a recreated instance of self.
        r   r   s   &r   rJ   Ú"AsyncContextDecorator._recreate_cm|   s	   � ð ˆr   c                óü   ` `€   [        R2      o[        R2      %       c   UU 1Q  koU U2      ! [        R2      %       c   UU 1Q koU U2      ! [        R2      %       c   UU 1Q koU U2      ! UU 1Q koU U2      ! )c                 ó¤  :   €   RO                  2       9^tt^2       E Pi  w€  K
  [        R U - U@   2      9^tt^2       E Pi  w€  K
 oU   Pi  w€  K
  oU3w €   J   K? K KBPPP2      E Pi  w€  K 
  L ) E Pi  w€  K 
 %       f   h     L9 hPPP2      E Pi  w€  K 
  P!  ) E Pi  w€  K 
 %       f   h     P! 9 h3hrN   rO   rP   s   *,  €€r   rV   Ú6AsyncContextDecorator.__call__.<locals>.asyncgen_inner…   s�   øé � à×%Ñ%×'×'×'Ü™T 4Ð0¨4Ò0×1×1Ö1°Sá'*÷ $ò $˜eØ#žñ	 (Ù1ñ$ s÷ 2×1×1×1×1Ö1ú÷ (×'×'×'×'×'Ð'üs¶   ƒC¢A#
£C§ B1ÁA%ÁB1ÁA>	ÁA)
ÁA'ÁA)
Á
A>	Á#CÁ%B1Á'A)
Á)A>	Á*B1Á6A:
Á7B1Á>BÂB	ÂBÂBÂB1ÂCÂ(B,Â)CÂ1C	Â8B<Â9C	ÃC	Ã	Cc            	   Ÿ   óì   :   €   RO                  2       9^tt^2       E Pi  w€  K
  R U - U@   E  Pi  w€  K
 ttPPP2      E Pi  w€  K
  !  K+ K K	 ) E Pi  w€  K 
 %       f   h     P! 9 h3hrN   rY   rZ   s   *,€€r   r[   Ú3AsyncContextDecorator.__call__.<locals>.async_inner�   sG   øé � Ø×,Ñ,×.×.×.Ù!% tÐ!4¨tÒ!4×4Ñ4÷ /×.Ö.Ù4÷ /×.×.Õ.üsY   ƒA4¢A
£A4§AµA
¶AºA4ÁAÁ	A4ÁAÁA4ÁA1	ÁA ÁA1	Á)A1	Á+	A4c            	     óN  :   €   RO                  2       9^tt^2       E Pi  w€  K
  [        R U - U@   2      9^tt^ 2       oSF   D	  oU3w €   J  	  PPP2       PPP2      E Pi  w€  K
  P!  KK ) %       f   h     K&9 h K ) E Pi  w€  K 
 %       f   h     P! 9 h3hrN   r^   rP   s   *,  €€r   r_   Ú1AsyncContextDecorator.__call__.<locals>.gen_inner—   sc   øé � Ø×,Ñ,×.×.×.Ü ¡ tÐ!4¨tÒ!4×5Ô5¸Ü%(˜EØ"'žKñ &)÷ 6÷ /×.Õ.ß5×5ú÷ /×.×.Õ.üsh   ƒB%¢A/
£B%§BÁA1	ÁBÁB%Á'BÁ(B%Á1BÁ:BÁ<BÂB%ÂB"	ÂBÂB"	ÂB"	Â	B%c            	   Ÿ   óÔ   :   €   RO                  2       9^tt^2       E Pi  w€  K
  R U - U@   ttPPP2      E Pi  w€  K
  !  K! K ) E Pi  w€  K 
 %       f   h     P! 9 h3hrN   rY   rZ   s   *,€€r   rb   Ú-AsyncContextDecorator.__call__.<locals>.inner    s<   øé � Ø×,Ñ,×.×.×.Ù Ð.¨Ò.÷ /×.×.×.×.×.Ô.üsG   ƒA(¢A
£A(§	A	°A(¾A¿A(ÁA(Á	A%	ÁAÁA%	ÁA%	Á	A(rd   rh   s   ff     r   rj   ÚAsyncContextDecorator.__call__�   st   ù� Ü˜“+ˆÜ˜t×$Ò$ö$ñ ˜>Ó*Ð*Ü! $×'Ò'ö5ñ ˜;Ó'Ð'Ü! $×'Ò'ö(ñ ˜9Ó%Ð%ö/ñ ˜5“>Ð!r   r   rl   r<   s   @r   rn   rn   y   s   ø‡ � ÙVò÷
#"ð #"r   rn   c                   ó2   ` €   \ sQ s]§s n QsQ sQ sQsU sP! )Ú_GeneratorContextManagerBasezBShared functionality for @contextmanager and @asynccontextmanager.c                ó¦   €   U U- U@   U m         VUtU m        U m        U m        [	        UQ P2      oUe   [        U 2      O                  oV@m        P! )r4   )rS   rU   rQ   rR   ÚgetattrÚtyper4   )r   rU   rQ   rR   Údocs   &&&& r   Ú__init__Ú%_GeneratorContextManagerBase.__init__ª   sN   � Ù˜Ð& Ò&ˆŒØ*.°dÐ'ˆŒ	�4”9˜dœiä�d˜I tÓ,ˆØŠ;Ü�t“*×$Ñ$ˆCØŽr   c                óf   €   U O                  U O                  U O                  U O                  2      ! rN   )Ú	__class__rU   rQ   rR   r   s   &r   rJ   Ú)_GeneratorContextManagerBase._recreate_cm¸   s#   � ð �~‰~˜dŸi™i¨¯©°D·I±IÓ>Ð>r   )r4   rQ   rU   rS   rR   )	r0   r1   r2   r3   r4   r�   rJ   r:   r;   r<   s   @r   r|   r|   §   s   ø‡ � ÙLò÷?ð ?r   r|   c                   ó2   ` €   \ sQ s]¿s n QsQ sQ sQsU sP! )Ú_GeneratorContextManagerz%Helper for @contextmanager decorator.c                ór   €   U ; U ;U ; [        U O                  2      !  [
         c    [        Q 2      Pgh 9 h)úgenerator didn't yield)rQ   rR   rU   ÚnextrS   ÚStopIterationÚRuntimeErrorr   s   &r   r   Ú"_GeneratorContextManager.__enter__Æ   sD   � ð ˆI�t�y $ )ð	CÜ˜Ÿ™“>Ð!øÜô 	CÜÐ7Ó8¸dÐBð	Cús   ‰ ž	6¨6c                óp  €   Ue#    [        U O                  2        [        Q2      gUe   U 2       o U O                  O                  U2        [        Q2      g S O                  O                  2        h 9 h [         c     P
! h 9 h [         c   oXBIt Po=! Po=h[         cJ   oXBI c   X4m         Po=P
! [        S[        2      %       c   SO                  SI c   X2m         Po=P
! g Po=h[         c   oXBIc   g X4m         Po=P
! Po=hh 9 h S O                  O                  2        h 9 h)Núgenerator didn't stopz#generator didn't stop after throw())
rŠ   rS   rŒ   Úcloser‹   ÚthrowÚ__traceback__Ú
isinstanceÚ	__cause__ÚBaseException©r   ÚtyprT   r$   Úexcs   &&&& r   r%   Ú!_GeneratorContextManager.__exit__Ï   s  � ØŠ;ð%Ü�T—X‘X”ð%Ü&Ð'>Ó?Ð?ð Š}ñ ›�ð#Ø—‘—‘˜uÔ%ðF!Ü"Ð#HÓIÐIøðW —H‘H—N‘NÕ$ûô !ô Úðûô !ô (ð Ð'Õ'ûÜô à“<Ø(1Ô%Ý ô ˜u¤m×4Ò4ØŸ™¨Ó.à*3Ô'Ý ØûÜ ô 
ð Ó#ØØ$-Ô!Ýûð
ûð —‘—‘Õ ús™   ‡A: �A ´B ÁD ÁA7Á:	B	ÂB	ÂB	Â	DÂDÂBÂDÂDÂ,DÂ-C1Â2C1Â>C1ÃC1Ã$C1Ã0C1Ã1DÃ>DÃ?DÄDÄDÄD5r   )	r0   r1   r2   r3   r4   r   r%   r:   r;   r<   s   @r   r‡   r‡   ¿   s   ø‡ � ñ
 0òC÷7!ð 7!r   r‡   c                   ó2   ` €   \ sQ sQs n QsQ sQ sQsU sP! )Ú_AsyncGeneratorContextManageré  z*Helper for @asynccontextmanager decorator.c              ƒ  ó’      €   U ; U ;U ; [        U O                  2      E  Pi  w€  K
 !  K [
         c    [        Q2      Pgh 9 h3h)Nr‰   )rQ   rR   rU   ÚanextrS   ÚStopAsyncIterationrŒ   r   s   &r   r@   Ú(_AsyncGeneratorContextManager.__aenter__  sO   é � ð ˆI�t�y $ )ð	CÜ˜tŸx™x›×(Ñ(Ð(Ñ(øÜ!ô 	CÜÐ7Ó8¸dÐBð	Cüs*   ‚A‹, ¤*¥, ©Aª, ¬	A¶AÁAc              ƒ  óà     €   Ue-    [        U O                  2      E  Pi  w€  K
   [        Q2      gUe   U 2       o U O                  O                  U2      E  Pi  w€  K
   [        Q2      g KM S O                  O                  2       E  Pi  w€  K 
  h 9 h [         c     P
! h 9 h KN [         c   oXBIt Po=! Po=h[         cP   oXBI c   X4m         Po=P
! [        S[        [        12      %       c   SO                  SI c   X2m         Po=P
! g Po=h[         c   oXBIc   g X4m         Po=P
! Po=hh 9 h S O                  O                  2       E  Pi  w€  K 
  h 9 h3h)Nr�   z$generator didn't stop after athrow())rž   rS   rŒ   ÚacloserŸ   Úathrowr’   r“   r‹   r”   r•   r–   s   &&&& r   rD   Ú'_AsyncGeneratorContextManager.__aexit__  s6  é � ØŠ;ð,Ü˜DŸH™H“o×%Ò%ð,Ü&Ð'>Ó?Ð?ð Š}ñ ›�ð#Ø—h‘h—o‘o eÓ,×,Ò,ðF(Ü"Ð#IÓJÐJñe &øð Ÿ(™(Ÿ/™/Ó+×+Ô+ûô &ô Úðúñ -øÜ%ô (ð Ð'Õ'ûÜô à“<Ø(1Ô%Ý ô ˜u¤}Ô6HÐ&I×JÒJØŸ™¨Ó.à*3Ô'Ý ØûÜ ô 
ð Ó#ØØ$-Ô!Ýûð
ûð —h‘h—o‘oÓ'×'Ô'üs  ‚E.‰B ¢A1£B ©A3 ´E.¸E.Á B1 ÁB/Á B1 Á&E Á1B Á3BÂB
ÂBÂE.Â	B,Â'B,Â(E.Â+B,Â,E.Â/B1 Â1	EÂ;EÂ<CÂ>EÂ?E.ÃEÃEÃDÃDÃE.Ã#DÃ?DÄDÄE.ÄDÄEÄ)EÄ*D<Ä/D<Ä6E.Ä<EÅE.ÅE+Å#E'
Å$E+Å+E.r   )	r0   r1   r2   r3   r4   r@   rD   r:   r;   r<   s   @r   r›   r›     s   ø‡ � ñ
 5òC÷7(ð 7(r   r›   c                ó2   ` €   [        R 2      U 1Q k2       oU! )a�  @contextmanager decorator.

Typical usage:

    @contextmanager
    def some_generator(<arguments>):
        <setup>
        try:
            yield <value>
        finally:
            <cleanup>

This makes this:

    with some_generator(<arguments>) as <variable>:
        <body>

equivalent to this:

    <setup>
    try:
        <variable> = <value>
        <body>
    finally:
        <cleanup>
c                  ó   :€   [        RV2      ! rN   )r‡   ©rQ   rR   rU   s   *,€r   ÚhelperÚcontextmanager.<locals>.helperm  s   ø� ä'¨¨dÓ9Ð9r   r   ©rU   r¨   s   f r   Úcontextmanagerr«   R  s    ø� ô6 ˆ4ƒ[ô:ó ð:à€Mr   c                ó2   ` €   [        R 2      U 1Q k2       oU! )a±  @asynccontextmanager decorator.

Typical usage:

    @asynccontextmanager
    async def some_async_generator(<arguments>):
        <setup>
        try:
            yield <value>
        finally:
            <cleanup>

This makes this:

    async with some_async_generator(<arguments>) as <variable>:
        <body>

equivalent to this:

    <setup>
    try:
        <variable> = <value>
        <body>
    finally:
        <cleanup>
c                  ó   :€   [        RV2      ! rN   )r›   r§   s   *,€r   r¨   Ú#asynccontextmanager.<locals>.helperŽ  s   ø� ä,¨T°4Ó>Ð>r   r   rª   s   f r   Úasynccontextmanagerr¯   s  s    ø� ô6 ˆ4ƒ[ô?ó ð?à€Mr   c                   ó8   ` €   \ sQ sQs n QsQ sQ sQ sQsU s	P! )r	   é”  a
  Context to automatically close something at the end of a block.

Code like this:

    with closing(<module>.open(<arguments>)) as f:
        <block>

is equivalent to this:

    f = <module>.open(<arguments>)
    try:
        <block>
    finally:
        f.close()

c                ó   €   Vm         P! rN   ©Úthing©r   r´   s   &&r   r�   Úclosing.__init__¥  ó   � ØŽ
r   c                ó   €   U O                   ! rN   r³   r   s   &r   r   Úclosing.__enter__§  s   � Ø�z‰zÐr   c                ó<   €   U O                   O                  2        P! rN   )r´   r�   ©r   Úexc_infos   &*r   r%   Úclosing.__exit__©  s   � Ø�
‰
×ÑÖr   r³   ©
r0   r1   r2   r3   r4   r�   r   r%   r:   r;   r<   s   @r   r	   r	   ”  s   ø‡ � ñò ò÷ð r   c                   ó8   ` €   \ sQ sQs n QsQ sQ sQ sQsU s	P! )r   é­  ar  Async context manager for safely finalizing an asynchronously cleaned-up
resource such as an async generator, calling its ``aclose()`` method.

Code like this:

    async with aclosing(<module>.fetch(<arguments>)) as agen:
        <block>

is equivalent to this:

    agen = <module>.fetch(<arguments>)
    try:
        <block>
    finally:
        await agen.aclose()

c                ó   €   Vm         P! rN   r³   rµ   s   &&r   r�   Úaclosing.__init__¿  r·   r   c              ƒ  ó$      €   U O                   ! 3hrN   r³   r   s   &r   r@   Úaclosing.__aenter__Á  s   é � Ø�z‰zÐùó   ‚c              ‡  ó\      €   U O                   O                  2       E  Pi  w€  K
  P!  K3hrN   )r´   r¢   r»   s   &*r   rD   Úaclosing.__aexit__Ã  s   é � Ø�j‰j×ÑÓ!×!Ö!ùs   ‚ ,¢*£,r³   )
r0   r1   r2   r3   r4   r�   r@   rD   r:   r;   r<   s   @r   r   r   ­  s   ø‡ � ñò"ò÷"ð "r   c                   ó8   ` €   \ sQ sQs n PsQ sQ sQ sQsU s	P! )Ú_RedirectStreaméÇ  c                ó"   €   Vm         , U m        P! rN   ©Ú_new_targetÚ_old_targets)r   Ú
new_targets   &&r   r�   Ú_RedirectStream.__init__Ë  s   � Ø%ÔàˆÖr   c                óÌ   €   U O                   O                  [        [        U O                  2      2       [        [        U O                  U O                  2       U O                  ! rN   )rÎ   Úappendr~   ÚsysÚ_streamÚsetattrrÍ   r   s   &r   r   Ú_RedirectStream.__enter__Ð  sC   � Ø×Ñ× Ñ ¤¬¨d¯l©lÓ!;Ô<Ü”�T—\‘\ 4×#3Ñ#3Ô4Ø×ÑÐr   c                ón   €   [        [        U O                  U O                  O	                  2       2       P! rN   )rÕ   rÓ   rÔ   rÎ   Úpop)r   ÚexctypeÚexcinstÚexctbs   &&&&r   r%   Ú_RedirectStream.__exit__Õ  s!   � Ü”�T—\‘\ 4×#4Ñ#4×#8Ñ#8Ó#:Ö;r   rÌ   )
r0   r1   r2   r3   rÔ   r�   r   r%   r:   r;   r<   s   @r   rÉ   rÉ   Ç  s   ø‡ � à€Gòò
 ÷
<ð <r   rÉ   c                   ó    €   \ sQ sQsQsQsQsP! )r   éÙ  a  Context manager for temporarily redirecting stdout to another file.

# How to send help() to stderr
with redirect_stdout(sys.stderr):
    help(dir)

# How to write help() to a file
with open('help.txt', 'w') as f:
    with redirect_stdout(f):
        help(pow)
Ústdoutr   ©r0   r1   r2   r3   r4   rÔ   r:   r   r   r   r   r   Ù  s   ‡ ñ
ð „Gr   c                   ó    €   \ sQ sQsQsQsQsP! )r   éé  zCContext manager for temporarily redirecting stderr to another file.Ústderrr   rà   r   r   r   r   r   é  s
   ‡ ÙMà„Gr   c                   ó8   ` €   \ sQ sQs n QsQ sQ sQ sQsU s	P! )r   éï  a'  Context manager to suppress specified exceptions

After the exception is suppressed, execution proceeds with the next
statement following the with statement.

     with suppress(FileNotFoundError):
         os.remove(somefile)
     # Execution still resumes here if the file was already removed
c                ó   €   Vm         P! rN   ©Ú_exceptions)r   Ú
exceptionss   &*r   r�   Úsuppress.__init__ú  s   � Ø%Ör   c                ó   €   P! rN   r   r   s   &r   r   Úsuppress.__enter__ý  ó   � Ùr   c                óÄ   €   Ue   P! [        VO                  2      %       c   P	! [        U[        2      %       c&   UO                  U O                  2      v  qEUe   P	! UgP
! rN   )Ú
issubclassrè   ÚBaseExceptionGroupÚsplit)r   rÙ   rÚ   rÛ   ÚmatchÚrests   &&&&  r   r%   Úsuppress.__exit__   sT   � ð Š?ÙÜ�g×/Ñ/×0Ò0ÙÜ�gÔ1×2Ò2Ø!Ÿ-™-¨×(8Ñ(8Ó9‰KˆEØŠ|ÙØˆJÙr   rç   r¾   r<   s   @r   r   r   ï  s   ø‡ � ñò&ò÷ð r   c                 ór   €   ] QHGoGo [        U 2      o U VQ2      oU V`2      !  [         c    St ! h 9 h)é    )Úgetattr_staticÚ_descriptor_get)Úinspectr÷   rø   r   ÚAttributeError)ÚobjÚnameÚdefaultr÷   rø   r,   Údescrs   &&&    r   Ú_lookup_specialrÿ     s@   � ç7Ü
ˆs‹)€CðÙ˜sÓ)ˆñ ˜5Ó&Ð&øô ô ØŠðús   –& ¦	6°6µ6ÚSENTINELc                   ó^   ` €   \ sQ sQs n Qs\Q 2       sQ sQ sQ s	Q s
Q sQQ	 ksQ
sU sP! )Ú_BaseExitStacké$  z.A base class for ExitStack and AsyncExitStack.c               ó   ` ``€   UU U1Q  koU! )c                 ó   :€   R R- R@    P! rN   r   ©r"   r˜   ÚtbrQ   ÚcallbackrR   s   &&&€€€r   Ú_exit_wrapperÚ8_BaseExitStack._create_cb_wrapper.<locals>._exit_wrapper)  s   ø� Ù�dÐ#˜dÕ#r   r   ©r  rQ   rR   r	  s   bjl r   Ú_create_cb_wrapperÚ!_BaseExitStack._create_cb_wrapper'  s   ú� ÷	$àÐr   c                ó&   €   [        2       U m        P! rN   )r   Ú_exit_callbacksr   s   &r   r�   Ú_BaseExitStack.__init__-  s   � Ü$›wˆÖr   c                óh   €   [        U 2       2       oU O                  Um        [        2       U m        U! )z@Preserve the context stack by transferring it to a new instance.)r   r  r   )r   Ú	new_stacks   & r   Úpop_allÚ_BaseExitStack.pop_all0  s+   � ä˜”J“Lˆ	Ø$(×$8Ñ$8ˆ	Ô!Ü$›wˆÔØÐr   c                óD   €   [        UQU2      oU O                  U2       U! )zîRegisters a callback with the standard __exit__ method signature.

Can suppress exceptions the same way __exit__ method can.
Also accepts any object with an __exit__ method (registering a call
to the method instead of the object itself).
r%   ©rÿ   Ú_push_exit_callback©r   ÚexitÚexit_methods   && r   ÚpushÚ_BaseExitStack.push7  s%   � ô & d¨J¸Ó=ˆØ× Ñ  Ô-Øˆr   c                óh  €   [        UQ[        2      oU[        I c2   [        U2      o[        QUO                   QUO
                   Q02      g[        UQ[        2      oU[        I c2   [        U2      o[        QUO                   QUO
                   Q02      gU 2       oU O                  U2       U! )z“Enters the supplied context manager.

If successful, also pushes its __exit__ method as a callback and
returns the result of the __enter__ method.
r   Ú'Ú.z6' object does not support the context manager protocolr%   ©rÿ   Ú	_sentinelr   Ú	TypeErrorr1   r2   r  ©r   ÚcmÚ_enterr,   Ú_exitÚresults   &&    r   Úenter_contextÚ_BaseExitStack.enter_contextB  sÄ   � ô !  [´)Ó<ˆØ”YÓÜ�r“(ˆCÜ˜a §¡Ð/¨q°×1AÑ1AÐ0Bð CGð Hó Ið Iä  J´	Ó:ˆØ”IÓÜ�r“(ˆCÜ˜a §¡Ð/¨q°×1AÑ1AÐ0Bð CGð Hó Ið Iá“ˆØ× Ñ  Ô'Øˆr   c               ód   €   U O                    U,UN3- U@   oVm        U O                  U2       U! )zLRegisters an arbitrary callback and arguments.

Cannot suppress exceptions.
)r  Ú__wrapped__r  ©r   r  rQ   rR   r	  s   ""*, r   r  Ú_BaseExitStack.callbackV  s9   � ð
 ×/Ò/°ÐH¸4ÒHÀ4ÒHˆð %-Ô!Ø× Ñ  Ô/Øˆr   c                ó@   €   U O                   O                  V!12       P! rN   )r  rÒ   )r   r  Úis_syncs   &&&r   r  Ú"_BaseExitStack._push_exit_callbackc  s   � Ø×Ñ×#Ñ# WÐ$7Ö8r   )r  )T)r0   r1   r2   r3   r4   Ústaticmethodr  r�   r  r  r(  r  r  r:   r;   r<   s   @r   r  r  $  s=   ø‡ � Ù8àñó ðò
'òò	òò(÷9ò 9r   r  c                   ó8   ` €   \ sQ sQs n QsQ sQ sQ sQsU s	P! )r   éh  ao  Context manager for dynamic management of a stack of exit callbacks.

For example:
    with ExitStack() as stack:
        files = [stack.enter_context(open(fname)) for fname in filenames]
        # All opened files will automatically be closed at the end of
        # the with statement, even if attempts to open files later
        # in the list raise an exception.
c                ó   €   U ! rN   r   r   s   &r   r   ÚExitStack.__enter__s  s   � Øˆr   c                óø  `€   U]*          oUPIo[         O                   2       nU1Q koP
oP
oU O                  %       c]   U O                  O                  2       v  qxU%       f   P g Ue   QoL[	        U2      V"O
                  1oU U    %       c	   P	oP
oPoJl  Jn  U%       c    UO                  o
UgS9%       c    S!  [         c   o	S X’2       P	oS	o Po	=	J®  Po	=	hh 9 h [         c
    W
Sm        g h 9 h)é   c                 ó\   :€    U O                   oUd   V!I c   P! URI c   LSo J#  Vm         P! ©r7  ©Ú__context__©Únew_excÚold_excÚexc_contextÚ	frame_excs   && €r   Ú_fix_exception_contextÚ2ExitStack.__exit__.<locals>._fix_exception_context}  ó7   ø� àØ%×1Ñ1�ØÒ&¨+Ó*@áØ )Ó+ØØ%’ð #*Ör   ©NNN©rÓ   Ú	exceptionr  rØ   r   r’   r•   r;  )r   Úexc_detailsr˜   Úreceived_excrA  Úsuppressed_excÚpending_raiser/  Úcbr=  Ú	fixed_ctxr@  s   &*         @r   r%   ÚExitStack.__exit__v  s  ø� Ø˜!�nˆØ $�ˆô —M’M“Oˆ	õ	*ð  ˆØˆØ×"×"Ð"Ø×.Ñ.×2Ñ2Ó4‰KˆGßˆN�7ðØ’;Ø"2‘Kä"& s£)¨S×2CÑ2CÐ"C�KÙ�{×#Ñ#Ø%)�NØ$)�MØ’Cñ $÷ ðð  ŸO™O�	Ø�	ð ×.Ð. Ð.øô !ô á& wÔ4Ø $�Ø–ûð	ûô !ô Ø"+�”Øðús<   Á(C  Á,&C  ÂC  Â&C% Ã 	C"Ã
C"ÃCÃC"Ã%	C9Ã/
C9c                ó.   €   U O                  PPP2       P! ©z%Immediately unwind the context stack.)r%   r   s   &r   r�   ÚExitStack.close¬  s   � à�‰�d˜D $Ö'r   r   )
r0   r1   r2   r3   r4   r   r%   r�   r:   r;   r<   s   @r   r   r   h  s   ø‡ � ñòò4/÷l(ð (r   c                   óZ   ` €   \ sQ sQs n Qs\Q 2       sQ sQ sQ s	Q s
Q sQ	 sQ
sU sP! )r   é²  a³  Async context manager for dynamic management of a stack of exit
callbacks.

For example:
    async with AsyncExitStack() as stack:
        connections = [await stack.enter_async_context(get_connection())
            for i in range(5)]
        # All opened connections will automatically be released at the
        # end of the async with statement, even if attempts to open a
        # connection later in the list raise an exception.
c               ó   ` ``€   UU U1Q  koU! )c              “   ó<   :   €   R R- R@   E  Pi  w€  K
  P!  K3hrN   r   r  s   &&&€€€r   r	  Ú>AsyncExitStack._create_async_cb_wrapper.<locals>._exit_wrapperÁ  s   øé � Ù˜DÐ) DÒ)×)Ö)ùs   ƒ’“r   r  s   bjl r   Ú_create_async_cb_wrapperÚ'AsyncExitStack._create_async_cb_wrapper¿  s   ú� ÷	*àÐr   c              ƒ  óŠ     €   [        UQ[        2      oU[        I c2   [        U2      o[        QUO                   QUO
                   Q02      g[        UQ[        2      oU[        I c2   [        U2      o[        QUO                   QUO
                   Q02      gU 2       E  Pi  w€  K
 oU O                  UP
2       U!  K3h)z›Enters the supplied async context manager.

If successful, also pushes its __aexit__ method as a callback and
returns the result of the __aenter__ method.
r@   r  r  zC' object does not support the asynchronous context manager protocolrD   r   r#  s   &&    r   Úenter_async_contextÚ"AsyncExitStack.enter_async_contextÅ  sÒ   é � ô !  \´9Ó=ˆØ”YÓÜ�r“(ˆCÜ˜a §¡Ð/¨q°×1AÑ1AÐ0Bð CTð Uó Vð Vä  K´Ó;ˆØ”IÓÜ�r“(ˆCÜ˜a §¡Ð/¨q°×1AÑ1AÐ0Bð CTð Uó Vð Vá“x—‘ˆØ× Ñ  ¨Ô.Øˆñ  ùs   ‚CŸACÁ+<CÂ'CÂ(Cc                óF   €   [        UQU2      oU O                  UP
2       U! )zûRegisters a coroutine function with the standard __aexit__ method
signature.

Can suppress exceptions the same way __aexit__ method can.
Also accepts any object with an __aexit__ method (registering a call
to the method instead of the object itself).
rD   r  r  s   && r   Úpush_async_exitÚAsyncExitStack.push_async_exitÙ  s'   � ô & d¨K¸Ó>ˆØ× Ñ  ¨eÔ4Øˆr   c               óf   €   U O                    U,UN3- U@   oVm        U O                  UP
2       U! )zVRegisters an arbitrary coroutine function and arguments.

Cannot suppress exceptions.
)rV  r+  r  r,  s   ""*, r   Úpush_async_callbackÚ"AsyncExitStack.push_async_callbackå  s;   � ð
 ×5Ò5°hÐNÀÒNÈÒNˆð %-Ô!Ø× Ñ  °Ô6Øˆr   c              ƒ  óN      €   U O                  PPP2      E  Pi  w€  K
  P!  K3hrO  )rD   r   s   &r   r¢   ÚAsyncExitStack.acloseò  s   é � à�n‰n˜T 4¨Ó.×.Ö.ùs   ‚%›#œ%c              ƒ  ó      €   U ! 3hrN   r   r   s   &r   r@   ÚAsyncExitStack.__aenter__ö  s
   é � ØˆùrB   c              ‡  ó(  `   €   U]*          oUPIo[         O                   2       nU1Q koP
oP
oU O                  %       co   U O                  O                  2       v  qx Ue   QoL[	        U2      V"O
                  1oU%       c	   U U    o	LU U    E  Pi  w€  K
 o	U	%       c	   P	oP
oPoJ~  J€  U%       c    UO                  oUgS9%       c    S!  K9 [         c   o
S X¢2       P	oS
o Po
=
JÂ  Po
=
hh 9 h [         c
    WSm        g h 9 h3h)r7  c                 ó\   :€    U O                   oUd   V!I c   P! URI c   LSo J#  Vm         P! r9  r:  r<  s   && €r   rA  Ú8AsyncExitStack.__aexit__.<locals>._fix_exception_context   rC  r   rD  rE  )r   rG  r˜   rH  rA  rI  rJ  r/  rK  Úcb_suppressr=  rL  r@  s   &*          @r   rD   ÚAsyncExitStack.__aexit__ù  s  øé � Ø˜!�nˆØ $�ˆô —M’M“Oˆ	õ	*ð  ˆØˆØ×"×"Ð"Ø×.Ñ.×2Ñ2Ó4‰KˆGðØ’;Ø"2‘Kä"& s£)¨S×2CÑ2CÐ"C�KßÙ"$ kÒ"2‘Ká(*¨KÒ(8×"8Ñ"8�KçØ%)�NØ$)�MØ’Cñ ÷ ðð  ŸO™O�	Ø�	ð ×.Ð. Ð.ñ+ #9øô !ô á& wÔ4Ø $�Ø–ûð	ûô !ô Ø"+�”Øðüsƒ   ƒ?DÁDÁ C Á$!C ÂC ÂCÂC Â'C Â-DÂ:C; ÃDÃDÃC Ã	C8Ã C8Ã!C3Ã-DÃ3C8Ã8DÃ;	DÄ
DÄDr   )r0   r1   r2   r3   r4   r1  rV  rY  r\  r_  r¢   r@   rD   r:   r;   r<   s   @r   r   r   ²  sA   ø‡ � ñ
ð ñó ðò
ò(
òò/ò÷8/ð 8/r   c                   óH   ` €   \ sQ sQs n QsQ	Q ksQ sQ sQ sQ s	Qs
U sP! )
r
   é4  a7  Context manager that does no additional processing.

Used as a stand-in for a normal context manager, when a particular
block of code is only sometimes used with a normal context manager:

cm = optional_cm if condition else nullcontext()
with cm:
    # Perform operation, using optional_cm if condition is True
c                ó   €   Vm         P! rN   ©Úenter_result)r   rn  s   &&r   r�   Únullcontext.__init__?  s   � Ø(Ör   c                ó   €   U O                   ! rN   rm  r   s   &r   r   Únullcontext.__enter__B  s   � Ø× Ñ Ð r   c                ó   €   P! rN   r   ©r   Úexcinfos   &*r   r%   Únullcontext.__exit__E  rí   r   c              ƒ  ó$      €   U O                   ! 3hrN   rm  r   s   &r   r@   Únullcontext.__aenter__H  s   é � Ø× Ñ Ð ùrÅ   c              ‡  ó      €   P! 3hrN   r   rs  s   &*r   rD   Únullcontext.__aexit__K  s   é � ÙùrB   rm  rN   )r0   r1   r2   r3   r4   r�   r   r%   r@   rD   r:   r;   r<   s   @r   r
   r
   4  s(   ø‡ � ñô)ò!òò!÷ð r   c                   ó8   ` €   \ sQ sQs n QsQ sQ sQ sQsU s	P! )r   éO  zHNon thread-safe context manager to change the current working directory.c                ó"   €   Vm         , U m        P! rN   )ÚpathÚ_old_cwd)r   r}  s   &&r   r�   Úchdir.__init__R  s   � ØŒ	ØˆŽr   c                ó¤   €   U O                   O                  [        O                   2       2       [        O                   U O
                  2       P! rN   )r~  rÒ   ÚosÚgetcwdr   r}  r   s   &r   r   Úchdir.__enter__V  s*   � Ø�‰×ÑœRŸYšY›[Ô)Ü
�Š�—‘Ör   c                ód   €   [         O                   U O                  O                  2       2       P! rN   )r�  r   r~  rØ   rs  s   &*r   r%   Úchdir.__exit__Z  s   � Ü
�Š�—‘×"Ñ"Ó$Ö%r   )r~  r}  r¾   r<   s   @r   r   r   O  s   ø‡ � ÙRòò÷&ð &r   )r¯   r«   r	   r
   r   r   r   r   r   r   r   r   r   r   )+r4   r8   r�  rÓ   r(   Úcollectionsr   Ú	functoolsr   rù   r   re   r   rf   r   rg   Útypesr   Ú__all__ÚABCr   r   Úobjectr   rn   r|   r‡   r›   r«   r¯   r	   r   rÉ   r   r   r   rÿ   r!  r  r   r   r
   r   r   r   r   Ú<module>rŒ     sU  ñÙ :ã 
Û 	Û 
Û Ý Ý ÷ñ õ
 ò€ô˜SŸW™Wô ô0 #§'¡'ô ô2."�vô ."ôb+"˜Fô +"÷\?ñ ?ô0G!Ø ØØôG!ôRG(Ø ØØôG(òTòBôBÐ$ô ô2"Ð*ô "ô4<Ð,ô <ô$�oô ô �oô ô$Ð%ô $òN'ð ˆL€	÷@9ñ @9ôHF(�Ð 6ô F(ôT/�^Ð%@ô /ôDÐ(Ð*Eô ô6&Ð"ö &r   