§
    ¸)ýfk  ã                   ó|  — d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl	m
Z
mZ g d¢Z G d„ dej        ¦  «        Z G d	„ d
ej        ¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ d¦  «        Z G d„ deee¦  «        Z G d„ deee¦  «        Zd„ Zd„ Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ d e¦  «        Z G d!„ d"e¦  «        Z G d#„ d$¦  «        Z G d%„ d&ee¦  «        Z G d'„ d(ee¦  «        Z  G d)„ d*ee¦  «        Z! G d+„ d,e¦  «        Z"dS )-z4Utilities for with-statement contexts.  See PEP 343.é    N)Údeque©Úwraps)Ú
MethodTypeÚGenericAlias)ÚasynccontextmanagerÚcontextmanagerÚclosingÚnullcontextÚAbstractContextManagerÚAbstractAsyncContextManagerÚAsyncExitStackÚContextDecoratorÚ	ExitStackÚredirect_stdoutÚredirect_stderrÚsuppressÚaclosingÚchdirc                   ód   — e Zd ZdZ ee¦  «        Zd„ Zej	        d„ ¦   «         Z
ed„ ¦   «         ZdS )r   z,An abstract base class for context managers.c                 ó   — | S ©z0Return `self` upon entering the runtime context.© ©Úselfs    úV/home/blender/git/blender-v430/install_release/4.3/python/lib/python3.11/contextlib.pyÚ	__enter__z AbstractContextManager.__enter__   s   € àˆó    c                 ó   — dS ©z9Raise any exception triggered within the runtime context.Nr   ©r   Úexc_typeÚ	exc_valueÚ	tracebacks       r   Ú__exit__zAbstractContextManager.__exit__   s	   € ð ˆtr   c                 óN   — | t           u rt          j        |dd¦  «        S t          S )Nr   r%   )r   Ú_collections_abcÚ_check_methodsÚNotImplemented©ÚclsÚCs     r   Ú__subclasshook__z'AbstractContextManager.__subclasshook__    s)   € àÕ(Ð(Ð(Ý#Ô2°1°kÀ:ÑNÔNÐNÝÐr   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr   Ú__class_getitem__r   ÚabcÚabstractmethodr%   r-   r   r   r   r   r      ss   € € € € € à6Ð6à#˜ LÑ1Ô1Ððð ð ð 	Ôðð ñ Ôðð ðð ñ „[ðð ð r   r   c                   ód   — e Zd ZdZ ee¦  «        Zd„ Zej	        d„ ¦   «         Z
ed„ ¦   «         ZdS )r   z9An abstract base class for asynchronous context managers.c              ƒ   ó
   K  — | S r   r   r   s    r   Ú
__aenter__z&AbstractAsyncContextManager.__aenter__-   s   è è € àˆr   c              ƒ   ó
   K  — dS r    r   r!   s       r   Ú	__aexit__z%AbstractAsyncContextManager.__aexit__1   s   è è € ð ˆtr   c                 óN   — | t           u rt          j        |dd¦  «        S t          S )Nr8   r:   )r   r'   r(   r)   r*   s     r   r-   z,AbstractAsyncContextManager.__subclasshook__6   s3   € àÕ-Ð-Ð-Ý#Ô2°1°lØ3>ñ@ô @ð @åÐr   N)r.   r/   r0   r1   r2   r   r3   r8   r4   r5   r:   r-   r   r   r   r   r   '   ss   € € € € € àCÐCà#˜ LÑ1Ô1Ððð ð ð 	Ôðð ñ Ôðð ðð ñ „[ðð ð r   r   c                   ó   — e Zd ZdZd„ Zd„ ZdS )r   zJA base class or mixin that enables context managers to work as decorators.c                 ó   — | S )a6  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_cmzContextDecorator._recreate_cmA   s	   € ð ˆr   c                 ó@   ‡ ‡— t          ‰¦  «        ˆˆ fd„¦   «         }|S )Nc                  óp   •— ‰                      ¦   «         5   ‰| i |¤Žcd d d ¦  «         S # 1 swxY w Y   d S ©N©r>   ©ÚargsÚkwdsÚfuncr   s     €€r   Úinnerz(ContextDecorator.__call__.<locals>.innerN   s‹   ø€ à×"Ò"Ñ$Ô$ð +ð +Ø�t˜TÐ* TÐ*Ð*ð+ð +ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð +ð +s   –+«/²/r   ©r   rF   rG   s   `` r   Ú__call__zContextDecorator.__call__M   s9   øø€ Ý	ˆt‰Œð	+ð 	+ð 	+ð 	+ð 	+ñ 
Œð	+ð ˆr   N©r.   r/   r0   r1   r>   rI   r   r   r   r   r   >   s8   € € € € € ØPÐPð
ð 
ð 
ðð ð ð ð r   r   c                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚAsyncContextDecoratorzPA base class or mixin that enables async context managers to work as decorators.c                 ó   — | S )z-Return a recreated instance of self.
        r   r   s    r   r>   z"AsyncContextDecorator._recreate_cmX   s	   € ð ˆr   c                 ó@   ‡ ‡— t          ‰¦  «        ˆˆ fd„¦   «         }|S )Nc               Ÿ   ó¤   •K  — ‰                      ¦   «         4 ƒd {V —†  ‰| i |¤Žƒ d {V —†cd d d ¦  «        ƒd {V —† S # 1 ƒd {V —†swxY w Y   d S rA   rB   rC   s     €€r   rG   z-AsyncContextDecorator.__call__.<locals>.inner^   sû   øè è € à×(Ò(Ñ*Ô*ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1Ø!˜T 4Ð0¨4Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ð1ð 1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð 1ð 1s   ž?¿
A	ÁA	r   rH   s   `` r   rI   zAsyncContextDecorator.__call__]   s9   øø€ Ý	ˆt‰Œð	1ð 	1ð 	1ð 	1ð 	1ñ 
Œð	1ð ˆr   NrJ   r   r   r   rL   rL   U   s8   € € € € € ØVÐVðð ð ð
ð ð ð ð r   rL   c                   ó   — e Zd ZdZd„ Zd„ ZdS )Ú_GeneratorContextManagerBasezBShared functionality for @contextmanager and @asynccontextmanager.c                 ó¨   —  ||i |¤Ž| _         |||c| _        | _        | _        t	          |dd ¦  «        }|€t          | ¦  «        j        }|| _        d S )Nr1   )ÚgenrF   rD   rE   ÚgetattrÚtyper1   )r   rF   rD   rE   Údocs        r   Ú__init__z%_GeneratorContextManagerBase.__init__h   s]   € Ø�4˜Ð& Ð&Ð&ˆŒØ*.°°dÐ'ˆŒ	�4”9˜dœiå�d˜I tÑ,Ô,ˆØˆ;Ý�t‘*”*Ô$ˆCØˆŒˆˆr   c                 óN   — |                       | j        | j        | j        ¦  «        S rA   )Ú	__class__rF   rD   rE   r   s    r   r>   z)_GeneratorContextManagerBase._recreate_cmv   s    € ð �~Š~˜dœi¨¬°D´IÑ>Ô>Ð>r   N)r.   r/   r0   r1   rW   r>   r   r   r   rQ   rQ   e   s8   € € € € € ØLÐLðð ð ð?ð ?ð ?ð ?ð ?r   rQ   c                   ó   — e Zd ZdZd„ Zd„ ZdS )Ú_GeneratorContextManagerz%Helper for @contextmanager decorator.c                 ót   — | ` | `| `	 t          | j        ¦  «        S # t
          $ r t          d¦  «        d ‚w xY w©Nzgenerator didn't yield)rD   rE   rF   ÚnextrS   ÚStopIterationÚRuntimeErrorr   s    r   r   z"_GeneratorContextManager.__enter__„   sU   € ð ˆI�t�y $ )ð	CÝ˜œ‘>”>Ð!øÝð 	Cð 	Cð 	CÝÐ7Ñ8Ô8¸dÐBð	Cøøøs   ˆ œ7c                 óf  — |€T	 t          | j        ¦  «         	 t          d¦  «        ‚# | j                             ¦   «          w xY w# t          $ r Y dS w xY w|€
 |¦   «         }	 | j                             |||¦  «         n„# t          $ r}||ucY d }~S d }~wt          $ rB}||u r||_        Y d }~dS t          |t          ¦  «        r|j        |u r||_        Y d }~dS ‚ d }~wt          $ r}||ur‚ ||_        Y d }~dS d }~ww xY w	 t          d¦  «        ‚# | j                             ¦   «          w xY w)Núgenerator didn't stopFz#generator didn't stop after throw())
r^   rS   r`   Úcloser_   ÚthrowÚ__traceback__Ú
isinstanceÚ	__cause__ÚBaseException©r   ÚtypÚvaluer$   Úexcs        r   r%   z!_GeneratorContextManager.__exit__�   s®  € Øˆ;ð%Ý�T”X‘”�ð%Ý&Ð'>Ñ?Ô?Ð?øà”H—N’NÑ$Ô$Ð$Ð$øøøøõ !ð ð ð Ø�u�uðøøøð ˆ}ð ˜™œ�ð#Ø”—’˜s E¨9Ñ5Ô5Ð5Ð5øÝ ð (ð (ð (ð  %Ð'Ð'Ð'Ð'Ð'Ð'Ð'øøøøÝð ð ð à˜%�<�<Ø(1�CÔ%Ø ˜5˜5˜5˜5˜5õ ˜u¥mÑ4Ô4ð!àœ¨Ð.Ð.à*3�EÔ'Ø ˜5˜5˜5˜5˜5ØøøøøÝ ð 
ð 
ð 
ð ˜eÐ#Ð#ØØ$-�Ô!Ø�u�u�u�u�uøøøøð
øøøð!Ý"Ð#HÑIÔIÐIøà”—’Ñ Ô Ð Ð øøøsh   „A ™( ¨AÁ
AÁAÁ$B Â
DÂBÂDÂDÂ!CÂ2%CÃCÃDÃ+C=Ã=DÄD ÄD0N)r.   r/   r0   r1   r   r%   r   r   r   r[   r[   }   s=   € € € € € ð
 0Ð/ðCð Cð Cð7!ð 7!ð 7!ð 7!ð 7!r   r[   c                   ó   — e Zd ZdZd„ Zd„ ZdS )Ú_AsyncGeneratorContextManagerz*Helper for @asynccontextmanager decorator.c              ƒ   ó„   K  — | ` | `| `	 t          | j        ¦  «        ƒ d {V —†S # t
          $ r t          d¦  «        d ‚w xY wr]   )rD   rE   rF   ÚanextrS   ÚStopAsyncIterationr`   r   s    r   r8   z(_AsyncGeneratorContextManager.__aenter__Í   sk   è è € ð ˆI�t�y $ )ð	CÝ˜tœx™œÐ(Ð(Ð(Ð(Ð(Ð(Ð(øÝ!ð 	Cð 	Cð 	CÝÐ7Ñ8Ô8¸dÐBð	Cøøøs   Š$ ¤?c              ƒ   ó¨  K  — |€`	 t          | j        ¦  «        ƒ d {V —† 	 t          d¦  «        ‚# | j                             ¦   «         ƒ d {V —† w xY w# t          $ r Y dS w xY w|€
 |¦   «         }	 | j                             |||¦  «        ƒ d {V —† n‹# t          $ r}||ucY d }~S d }~wt          $ rI}||u r||_        Y d }~dS t          |t          t          f¦  «        r|j	        |u r||_        Y d }~dS ‚ d }~wt          $ r}||ur‚ ||_        Y d }~dS d }~ww xY w	 t          d¦  «        ‚# | j                             ¦   «         ƒ d {V —† w xY w)Nrb   Fz$generator didn't stop after athrow())rp   rS   r`   Úacloserq   Úathrowre   rf   r_   rg   rh   ri   s        r   r:   z'_AsyncGeneratorContextManager.__aexit__Ö   s  è è € Øˆ;ð,Ý˜DœH‘o”oÐ%Ð%Ð%Ð%Ð%Ð%Ð%ð,Ý&Ð'>Ñ?Ô?Ð?øàœ(Ÿ/š/Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+øøøøõ &ð ð ð Ø�u�uðøøøð ˆ}ð ˜™œ�ð#Ø”h—o’o c¨5°)Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<øÝ%ð (ð (ð (ð  %Ð'Ð'Ð'Ð'Ð'Ð'Ð'øøøøÝð ð ð à˜%�<�<Ø(1�CÔ%Ø ˜5˜5˜5˜5˜5õ ˜u¥}Õ6HÐ&IÑJÔJð!àœ¨Ð.Ð.à*3�EÔ'Ø ˜5˜5˜5˜5˜5ØøøøøÝ ð 
ð 
ð 
ð ˜eÐ#Ð#ØØ$-�Ô!Ø�u�u�u�u�uøøøøð
øøøð(Ý"Ð#IÑJÔJÐJøà”h—o’oÑ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ð'øøøsh   †A ¡0 °!AÁ
A"Á!A"Á2"B Â
DÂB(Â"DÂ(DÂ5C9Ã,C9Ã8C9Ã9DÄDÄDÄ!D0 Ä0!EN)r.   r/   r0   r1   r8   r:   r   r   r   rn   rn   Æ   s=   € € € € € ð
 5Ð4ðCð Cð Cð7(ð 7(ð 7(ð 7(ð 7(r   rn   c                 ó<   ‡ — t          ‰ ¦  «        ˆ fd„¦   «         }|S )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                  ó&   •— t          ‰| |¦  «        S rA   )r[   ©rD   rE   rF   s     €r   Úhelperzcontextmanager.<locals>.helper+  s   ø€ å'¨¨d°DÑ9Ô9Ð9r   r   ©rF   rx   s   ` r   r	   r	     s3   ø€ õ6 ˆ4�[„[ð:ð :ð :ð :ñ „[ð:à€Mr   c                 ó<   ‡ — t          ‰ ¦  «        ˆ fd„¦   «         }|S )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                  ó&   •— t          ‰| |¦  «        S rA   )rn   rw   s     €r   rx   z#asynccontextmanager.<locals>.helperL  s   ø€ å,¨T°4¸Ñ>Ô>Ð>r   r   ry   s   ` r   r   r   1  s3   ø€ õ6 ˆ4�[„[ð?ð ?ð ?ð ?ñ „[ð?à€Mr   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )r
   a2  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                 ó   — || _         d S rA   ©Úthing©r   r   s     r   rW   zclosing.__init__c  ó   € ØˆŒ
ˆ
ˆ
r   c                 ó   — | j         S rA   r~   r   s    r   r   zclosing.__enter__e  s
   € ØŒzÐr   c                 ó8   — | j                              ¦   «          d S rA   )r   rc   ©r   Úexc_infos     r   r%   zclosing.__exit__g  s   € ØŒ
×ÒÑÔÐÐÐr   N©r.   r/   r0   r1   rW   r   r%   r   r   r   r
   r
   R  sK   € € € € € ðð ð ð ð ðð ð ðð ð ð ð r   r
   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )r   až  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                 ó   — || _         d S rA   r~   r€   s     r   rW   zaclosing.__init__}  r�   r   c              ƒ   ó   K  — | j         S rA   r~   r   s    r   r8   zaclosing.__aenter__  s   è è € ØŒzÐr   c              ‡   óH   K  — | j                              ¦   «         ƒ d {V —† d S rA   )r   rs   r„   s     r   r:   zaclosing.__aexit__�  s2   è è € ØŒj×ÒÑ!Ô!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ð!r   N)r.   r/   r0   r1   rW   r8   r:   r   r   r   r   r   k  sK   € € € € € ðð ð"ð ð ðð ð ð"ð "ð "ð "ð "r   r   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )Ú_RedirectStreamNc                 ó"   — || _         g | _        d S rA   )Ú_new_targetÚ_old_targets)r   Ú
new_targets     r   rW   z_RedirectStream.__init__‰  s   € Ø%ˆÔàˆÔÐÐr   c                 ó´   — | j                              t          t          | j        ¦  «        ¦  «         t          t          | j        | j        ¦  «         | j        S rA   )r�   ÚappendrT   ÚsysÚ_streamÚsetattrrŽ   r   s    r   r   z_RedirectStream.__enter__Ž  sE   € ØÔ× Ò ¥­¨d¬lÑ!;Ô!;Ñ<Ô<Ð<Ý•�T”\ 4Ô#3Ñ4Ô4Ð4ØÔÐr   c                 ój   — t          t          | j        | j                             ¦   «         ¦  «         d S rA   )r•   r“   r”   r�   Úpop©r   ÚexctypeÚexcinstÚexctbs       r   r%   z_RedirectStream.__exit__“  s+   € Ý•�T”\ 4Ô#4×#8Ò#8Ñ#:Ô#:Ñ;Ô;Ð;Ð;Ð;r   )r.   r/   r0   r”   rW   r   r%   r   r   r   rŒ   rŒ   …  sF   € € € € € à€Gðð ð ð
 ð  ð  ð
<ð <ð <ð <ð <r   rŒ   c                   ó   — e Zd ZdZdZdS )r   aA  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)
    ÚstdoutN©r.   r/   r0   r1   r”   r   r   r   r   r   —  s   € € € € € ð
ð 
ð €G€G€Gr   r   c                   ó   — e Zd ZdZdZdS )r   zCContext manager for temporarily redirecting stderr to another file.ÚstderrNrž   r   r   r   r   r   §  s   € € € € € ØMÐMà€G€G€Gr   r   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )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                 ó   — || _         d S rA   )Ú_exceptions)r   Ú
exceptionss     r   rW   zsuppress.__init__¸  s   € Ø%ˆÔÐÐr   c                 ó   — d S rA   r   r   s    r   r   zsuppress.__enter__»  ó   € Øˆr   c                 ó4   — |d uot          || j        ¦  «        S rA   )Ú
issubclassr£   r˜   s       r   r%   zsuppress.__exit__¾  s!   € ð ˜dÐ"ÐL¥z°'¸4Ô;KÑ'LÔ'LÐLr   Nr†   r   r   r   r   r   ­  sP   € € € € € ðð ð&ð &ð &ðð ð ð
Mð 
Mð 
Mð 
Mð 
Mr   r   c                   ój   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zdd„ZdS )Ú_BaseExitStackz.A base class for ExitStack and AsyncExitStack.c                 ó"   — t          || ¦  «        S rA   ©r   ©ÚcmÚcm_exits     r   Ú_create_exit_wrapperz#_BaseExitStack._create_exit_wrapperÎ  ó   € å˜' 2Ñ&Ô&Ð&r   c                ó   ‡ ‡‡— ˆˆ ˆfd„}|S )Nc                 ó   •—  ‰‰i ‰¤Ž d S rA   r   ©r"   rl   ÚtbrD   ÚcallbackrE   s      €€€r   Ú_exit_wrapperz8_BaseExitStack._create_cb_wrapper.<locals>._exit_wrapperÔ  s   ø€ ØˆH�dÐ#˜dÐ#Ð#Ð#Ð#Ð#r   r   ©r¶   rD   rE   r·   s   ``` r   Ú_create_cb_wrapperz!_BaseExitStack._create_cb_wrapperÒ  s.   øøø€ ð	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$àÐr   c                 ó,   — t          ¦   «         | _        d S rA   )r   Ú_exit_callbacksr   s    r   rW   z_BaseExitStack.__init__Ø  s   € Ý$™wœwˆÔÐÐr   c                 ór   —  t          | ¦  «        ¦   «         }| j        |_        t          ¦   «         | _        |S )z@Preserve the context stack by transferring it to a new instance.)rU   r»   r   )r   Ú	new_stacks     r   Úpop_allz_BaseExitStack.pop_allÛ  s0   € à•D˜‘J”J‘L”Lˆ	Ø$(Ô$8ˆ	Ô!Ý$™wœwˆÔØÐr   c                 ó¬   — t          |¦  «        }	 |j        }|                      ||¦  «         n%# t          $ r |                      |¦  «         Y nw xY w|S )a  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).
        )rU   r%   Ú_push_cm_exitÚAttributeErrorÚ_push_exit_callback©r   ÚexitÚ_cb_typeÚexit_methods       r   Úpushz_BaseExitStack.pushâ  su   € õ ˜‘:”:ˆð	2Ø"Ô+ˆKð
 ×Ò˜t [Ñ1Ô1Ð1Ð1øõ	 ð 	+ð 	+ð 	+à×$Ò$ TÑ*Ô*Ð*Ð*Ð*ð	+øøøð
 ˆs   ‘/ ¯AÁAc                 óä   — t          |¦  «        }	 |j        }|j        }n/# t          $ r" t	          d|j        › d|j        › d�¦  «        d‚w xY w ||¦  «        }|                      ||¦  «         |S )z«Enters the supplied context manager.

        If successful, also pushes its __exit__ method as a callback and
        returns the result of the __enter__ method.
        ú'ú.z6' object does not support the context manager protocolN)rU   r   r%   rÁ   Ú	TypeErrorr/   r0   rÀ   ©r   r®   r+   Ú_enterÚ_exitÚresults         r   Úenter_contextz_BaseExitStack.enter_contextö  s³   € õ �2‰hŒhˆð	SØ”]ˆFØ”LˆEˆEøÝð 	Sð 	Sð 	SÝð H ¤ð Hð H°Ô1Að Hð Hð Hñ Iô IØNRðSð	Søøøð �˜‘”ˆØ×Ò˜2˜uÑ%Ô%Ð%Øˆs	   ‘   ,Ac                ó`   —  | j         |g|¢R i |¤Ž}||_        |                      |¦  «         |S )z\Registers an arbitrary callback and arguments.

        Cannot suppress exceptions.
        )r¹   Ú__wrapped__rÂ   ©r   r¶   rD   rE   r·   s        r   r¶   z_BaseExitStack.callback	  sI   € ð
 0˜Ô/°ÐH¸4ÐHÐHÐHÀ4ÐHÐHˆð %-ˆÔ!Ø× Ò  Ñ/Ô/Ð/Øˆr   c                 ó^   — |                       ||¦  «        }|                      |d¦  «         dS )z;Helper to correctly register callbacks to __exit__ methods.TN)r°   rÂ   ©r   r®   r¯   r·   s       r   rÀ   z_BaseExitStack._push_cm_exit  s3   € à×1Ò1°"°gÑ>Ô>ˆØ× Ò  °Ñ5Ô5Ð5Ð5Ð5r   Tc                 ó>   — | j                              ||f¦  «         d S rA   )r»   r’   )r   r¶   Úis_syncs      r   rÂ   z"_BaseExitStack._push_exit_callback  s$   € ØÔ×#Ò# W¨hÐ$7Ñ8Ô8Ð8Ð8Ð8r   N)T)r.   r/   r0   r1   Ústaticmethodr°   r¹   rW   r¾   rÇ   rÐ   r¶   rÀ   rÂ   r   r   r   rª   rª   Ë  s¼   € € € € € Ø8Ð8àð'ð 'ñ „\ð'ð ðð ñ „\ðð
'ð 'ð 'ðð ð ðð ð ð(ð ð ð&ð ð ð6ð 6ð 6ð
9ð 9ð 9ð 9ð 9ð 9r   rª   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )r   a‹  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                 ó   — | S rA   r   r   s    r   r   zExitStack.__enter__+  s   € Øˆr   c                 ó®  ‡
— |d         d u}t          j        ¦   «         d         Š
ˆ
fd„}d}d}| j        rj| j                             ¦   «         \  }}|sJ ‚	  ||Ž rd}d}d}n6#  t          j        ¦   «         } ||d         |d         ¦  «         d}|}Y nxY w| j        °j|r2	 |d         j        }	|d         ‚# t
          $ r |	|d         _        ‚ w xY w|o|S )Nr   é   c                 óF   •— 	 | j         }|�||u rd S |‰u rn|} Œ|| _         d S rA   ©Ú__context__©Únew_excÚold_excÚexc_contextÚ	frame_excs      €r   Ú_fix_exception_contextz2ExitStack.__exit__.<locals>._fix_exception_context4  óM   ø€ ð&Ø%Ô1�ØÐ&¨+¸Ð*@Ð*@à�FØ )Ð+Ð+ØØ%�ð&ð #*ˆGÔÐÐr   FT©NNN©r“   r…   r»   r—   rß   rh   )r   Úexc_detailsÚreceived_excrå   Úsuppressed_excÚpending_raiser×   ÚcbÚnew_exc_detailsÚ	fixed_ctxrä   s             @r   r%   zExitStack.__exit__.  sA  ø€ Ø" 1”~¨TÐ1ˆõ ”L‘N”N 1Ô%ˆ	ð	*ð 	*ð 	*ð 	*ð 	*ð  ˆØˆØÔ"ð 	.ØÔ.×2Ò2Ñ4Ô4‰KˆG�RØˆNˆN�7ð
.Ø�2�{Ð#ð 5Ø%)�NØ$)�MØ"4�Køøð.Ý"%¤,¡.¤.�à&Ð& °qÔ'9¸;Àq¼>ÑJÔJÐJØ $�Ø-���øøøð Ô"ð 	.ð ð 	ðð (¨œNÔ6�	Ø! !”nÐ$øÝ ð ð ð Ø-6�˜A”Ô*Øðøøøð Ð. Ð.s   ÁA" Á"1BÂ"B7 Â7Cc                 ó4   — |                       ddd¦  «         dS ©z%Immediately unwind the context stack.N)r%   r   s    r   rc   zExitStack.close_  s   € à�Š�d˜D $Ñ'Ô'Ð'Ð'Ð'r   N)r.   r/   r0   r1   r   r%   rc   r   r   r   r   r      sL   € € € € € ðð ðð ð ð//ð //ð //ðb(ð (ð (ð (ð (r   r   c                   óh   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ ZdS )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                 ó"   — t          || ¦  «        S rA   r¬   r­   s     r   Ú_create_async_exit_wrapperz)AsyncExitStack._create_async_exit_wrapperr  r±   r   c                ó   ‡ ‡‡— ˆˆ ˆfd„}|S )Nc              “   ó(   •K  —  ‰‰i ‰¤Žƒ d {V —† d S rA   r   r´   s      €€€r   r·   z>AsyncExitStack._create_async_cb_wrapper.<locals>._exit_wrapperx  s4   øè è € Ø�(˜DÐ) DÐ)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)Ð)r   r   r¸   s   ``` r   Ú_create_async_cb_wrapperz'AsyncExitStack._create_async_cb_wrapperv  s.   øøø€ ð	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*àÐr   c              ƒ   óô   K  — t          |¦  «        }	 |j        }|j        }n/# t          $ r" t	          d|j        › d|j        › d�¦  «        d‚w xY w ||¦  «        ƒ d{V —†}|                      ||¦  «         |S )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Ê   zC' object does not support the asynchronous context manager protocolN)rU   r8   r:   rÁ   rË   r/   r0   Ú_push_async_cm_exitrÌ   s         r   Úenter_async_contextz"AsyncExitStack.enter_async_context|  sÁ   è è € õ �2‰hŒhˆð	'Ø”^ˆFØ”MˆEˆEøÝð 	'ð 	'ð 	'Ýð U ¤ð Uð U°Ô1Að Uð Uð Uñ ô à"&ð'ð	'øøøð �v˜b‘z”zÐ!Ð!Ð!Ð!Ð!Ð!ˆØ× Ò   UÑ+Ô+Ð+Øˆs	   “" ¢,Ac                 ó®   — t          |¦  «        }	 |j        }|                      ||¦  «         n&# t          $ r |                      |d¦  «         Y nw xY w|S )a#  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).
        F)rU   r:   rù   rÁ   rÂ   rÃ   s       r   Úpush_async_exitzAsyncExitStack.push_async_exitŽ  sw   € õ ˜‘:”:ˆð	8Ø"Ô,ˆKð
 ×$Ò$ T¨;Ñ7Ô7Ð7Ð7øõ	 ð 	2ð 	2ð 	2à×$Ò$ T¨5Ñ1Ô1Ð1Ð1Ð1ð	2øøøð
 ˆs   ‘/ ¯ AÁAc                ób   —  | j         |g|¢R i |¤Ž}||_        |                      |d¦  «         |S )zfRegisters an arbitrary coroutine function and arguments.

        Cannot suppress exceptions.
        F)r÷   rÒ   rÂ   rÓ   s        r   Úpush_async_callbackz"AsyncExitStack.push_async_callback   sK   € ð
 6˜Ô5°hÐNÀÐNÐNÐNÈÐNÐNˆð %-ˆÔ!Ø× Ò  °Ñ6Ô6Ð6Øˆr   c              ƒ   óD   K  — |                       ddd¦  «        ƒ d{V —† dS rñ   )r:   r   s    r   rs   zAsyncExitStack.aclose­  s4   è è € à�nŠn˜T 4¨Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.Ð.r   c                 ó^   — |                       ||¦  «        }|                      |d¦  «         dS )zLHelper to correctly register coroutine function to __aexit__
        method.FN)rô   rÂ   rÕ   s       r   rù   z"AsyncExitStack._push_async_cm_exit±  s5   € ð ×7Ò7¸¸GÑDÔDˆØ× Ò  °Ñ6Ô6Ð6Ð6Ð6r   c              ƒ   ó
   K  — | S rA   r   r   s    r   r8   zAsyncExitStack.__aenter__·  s   è è € Øˆr   c              ‡   óÊ  ‡K  — |d         d u}t          j        ¦   «         d         Šˆfd„}d}d}| j        rv| j                             ¦   «         \  }}	 |r ||Ž }n ||Ž ƒ d {V —†}|rd}d}d}n6#  t          j        ¦   «         }	 ||	d         |d         ¦  «         d}|	}Y nxY w| j        °v|r2	 |d         j        }
|d         ‚# t
          $ r |
|d         _        ‚ w xY w|o|S )Nr   rÜ   c                 óF   •— 	 | j         }|�||u rd S |‰u rn|} Œ|| _         d S rA   rÞ   rà   s      €r   rå   z8AsyncExitStack.__aexit__.<locals>._fix_exception_contextÀ  ræ   r   FTrç   rè   )r   ré   rê   rå   rë   rì   r×   rí   Úcb_suppressrî   rï   rä   s              @r   r:   zAsyncExitStack.__aexit__º  si  øè è € Ø" 1”~¨TÐ1ˆõ ”L‘N”N 1Ô%ˆ	ð	*ð 	*ð 	*ð 	*ð 	*ð  ˆØˆØÔ"ð 	.ØÔ.×2Ò2Ñ4Ô4‰KˆG�Rð.Øð 9Ø"$ " kÐ"2�K�Kà(*¨¨KÐ(8Ð"8Ð"8Ð"8Ð"8Ð"8Ð"8�Kàð 5Ø%)�NØ$)�MØ"4�Køøð.Ý"%¤,¡.¤.�à&Ð& °qÔ'9¸;Àq¼>ÑJÔJÐJØ $�Ø-���øøøð# Ô"ð 	.ð$ ð 	ðð (¨œNÔ6�	Ø! !”nÐ$øÝ ð ð ð Ø-6�˜A”Ô*Øðøøøð Ð. Ð.s   ÁA0 Á01B#Â0C ÃCN)r.   r/   r0   r1   rØ   rô   r÷   rú   rü   rþ   rs   rù   r8   r:   r   r   r   r   r   e  s½   € € € € € ð
ð 
ð ð'ð 'ñ „\ð'ð ðð ñ „\ðð
ð ð ð$ð ð ð$ð ð ð/ð /ð /ð7ð 7ð 7ðð ð ð3/ð 3/ð 3/ð 3/ð 3/r   r   c                   ó2   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ ZdS )	r   aO  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
    Nc                 ó   — || _         d S rA   ©Úenter_result)r   r  s     r   rW   znullcontext.__init__û  s   € Ø(ˆÔÐÐr   c                 ó   — | j         S rA   r  r   s    r   r   znullcontext.__enter__þ  s   € ØÔ Ð r   c                 ó   — d S rA   r   ©r   Úexcinfos     r   r%   znullcontext.__exit__  r¦   r   c              ƒ   ó   K  — | j         S rA   r  r   s    r   r8   znullcontext.__aenter__  s   è è € ØÔ Ð r   c              ‡   ó
   K  — d S rA   r   r  s     r   r:   znullcontext.__aexit__  s   è è € Øˆr   rA   )	r.   r/   r0   r1   rW   r   r%   r8   r:   r   r   r   r   r   ð  sn   € € € € € ðð ð)ð )ð )ð )ð!ð !ð !ðð ð ð!ð !ð !ðð ð ð ð r   r   c                   ó$   — e Zd ZdZd„ Zd„ Zd„ ZdS )r   zHNon thread-safe context manager to change the current working directory.c                 ó"   — || _         g | _        d S rA   )ÚpathÚ_old_cwd)r   r  s     r   rW   zchdir.__init__  s   € ØˆŒ	ØˆŒˆˆr   c                 óŽ   — | j                              t          j        ¦   «         ¦  «         t          j        | j        ¦  «         d S rA   )r  r’   ÚosÚgetcwdr   r  r   s    r   r   zchdir.__enter__  s6   € ØŒ×Ò�RœY™[œ[Ñ)Ô)Ð)Ý
Œ�”ÑÔÐÐÐr   c                 ó\   — t          j        | j                             ¦   «         ¦  «         d S rA   )r  r   r  r—   r  s     r   r%   zchdir.__exit__  s&   € Ý
Œ�”×"Ò"Ñ$Ô$Ñ%Ô%Ð%Ð%Ð%r   Nr†   r   r   r   r   r     sG   € € € € € ØRÐRðð ð ðð ð ð&ð &ð &ð &ð &r   r   )#r1   r4   r  r“   r'   Úcollectionsr   Ú	functoolsr   Útypesr   r   Ú__all__ÚABCr   r   Úobjectr   rL   rQ   r[   rn   r	   r   r
   r   rŒ   r   r   r   rª   r   r   r   r   r   r   r   ú<module>r     sï  ðØ :Ð :Ø 
€
€
€
Ø 	€	€	€	Ø 
€
€
€
Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *ðð ð €ðð ð ð ð ˜SœWñ ô ð ð,ð ð ð ð  #¤'ñ ô ð ð.ð ð ð ð �vñ ô ð ð.ð ð ð ð ˜Fñ ô ð ð ?ð ?ð ?ð ?ð ?ñ ?ô ?ð ?ð0G!ð G!ð G!ð G!ð G!Ø ØØñG!ô G!ð G!ðRG(ð G(ð G(ð G(ð G(Ø ØØñG(ô G(ð G(ðTð ð ðBð ð ðBð ð ð ð Ð$ñ ô ð ð2"ð "ð "ð "ð "Ð*ñ "ô "ð "ð4<ð <ð <ð <ð <Ð,ñ <ô <ð <ð$ð ð ð ð �oñ ô ð ð ð ð ð ð �oñ ô ð ðMð Mð Mð Mð MÐ%ñ Mô Mð Mð<Q9ð Q9ð Q9ð Q9ð Q9ñ Q9ô Q9ð Q9ðjA(ð A(ð A(ð A(ð A(�Ð 6ñ A(ô A(ð A(ðJH/ð H/ð H/ð H/ð H/�^Ð%@ñ H/ô H/ð H/ðVð ð ð ð Ð(Ð*Eñ ô ð ð6&ð &ð &ð &ð &Ð"ñ &ô &ð &ð &ð &r   