§
    „ßj¨V  ã                  óî  — d dl m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 d dlmZ ddlmZ ej        rd d	lmZ d d
lmZ d dlmZ  ej        d¦  «        Z ej        dej        dej        f         ¬¦  «        Zd%d„Z G d„ d¦  «        Z G d„ dej        e         ¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ de¦  «        Zd&d „Z d'd"„Z! G d#„ d$ej        e         ¦  «        Z"dS )(é    )ÚannotationsN)Ú
ContextVar©Úpartial)Úupdate_wrapper)Ú
attrgetteré   )ÚClosingIterator)ÚStartResponse)ÚWSGIApplication)ÚWSGIEnvironmentÚTÚF.)ÚboundÚlocalúLocal | LocalStack[t.Any]ÚreturnÚNonec                ó.   — |                       ¦   «          dS )zûRelease the data for the current context in a :class:`Local` or
    :class:`LocalStack` without using a :class:`LocalManager`.

    This should not be needed for modern use cases, and may be removed
    in the future.

    .. versionadded:: 0.6.1
    N)Ú__release_local__)r   s    úA/var/www/html/venv/lib/python3.11/site-packages/werkzeug/local.pyÚrelease_localr      s   € ð 
×ÒÑÔÐÐÐó    c                  óV   — e Zd ZdZdZddd„Zdd
„Zddœdd„Zdd„Zdd„Z	dd„Z
dd„ZdS ) ÚLocalaq  Create a namespace of context-local data. This wraps a
    :class:`ContextVar` containing a :class:`dict` value.

    This may incur a performance penalty compared to using individual
    context vars, as it has to copy data to avoid mutating the dict
    between nested contexts.

    :param context_var: The :class:`~contextvars.ContextVar` to use as
        storage for this local. If not given, one will be created.
        Context vars not created at the global scope may interfere with
        garbage collection.

    .. versionchanged:: 2.0
        Uses ``ContextVar`` instead of a custom storage implementation.
    )Ú	__storageNÚcontext_varú#ContextVar[dict[str, t.Any]] | Noner   r   c                ó‚   — |€ t          dt          | ¦  «        › d�¦  «        }t                               | d|¦  «         d S )Nzwerkzeug.Local<ú	>.storageÚ_Local__storage)r   ÚidÚobjectÚ__setattr__©Úselfr   s     r   Ú__init__zLocal.__init__6   sH   € ØÐõ
 %Ð%Jµr¸$±x´xÐ%JÐ%JÐ%JÑKÔKˆKå×Ò˜4Ð!2°KÑ@Ô@Ð@Ð@Ð@r   út.Iterator[tuple[str, t.Any]]c                ót   — t          | j                             i ¦  «                             ¦   «         ¦  «        S ©N)Úiterr!   ÚgetÚitems©r&   s    r   Ú__iter__zLocal.__iter__@   s,   € Ý�D”N×&Ò& rÑ*Ô*×0Ò0Ñ2Ô2Ñ3Ô3Ð3r   ©Úunbound_messageÚnameÚstrr1   ú
str | NoneúLocalProxy[t.Any]c               ó&   — t          | ||¬¦  «        S )zþCreate a :class:`LocalProxy` that access an attribute on this
        local namespace.

        :param name: Proxy this attribute.
        :param unbound_message: The error message that the proxy will
            show if the attribute isn't set.
        r0   ©Ú
LocalProxy©r&   r2   r1   s      r   Ú__call__zLocal.__call__C   s   € õ ˜$ °oÐFÑFÔFÐFr   c                ó:   — | j                              i ¦  «         d S r*   )r!   Úsetr.   s    r   r   zLocal.__release_local__O   s   € ØŒ×Ò˜2ÑÔÐÐÐr   út.Anyc                ól   — | j                              i ¦  «        }||v r||         S t          |¦  «        ‚r*   )r!   r,   ÚAttributeError©r&   r2   Úvaluess      r   Ú__getattr__zLocal.__getattr__R   s8   € Ø”×#Ò# BÑ'Ô'ˆà�6ˆ>ˆ>Ø˜$”<Ðå˜TÑ"Ô"Ð"r   Úvaluec                óœ   — | j                              i ¦  «                             ¦   «         }|||<   | j                              |¦  «         d S r*   )r!   r,   Úcopyr<   )r&   r2   rC   rA   s       r   r$   zLocal.__setattr__Z   sH   € Ø”×#Ò# BÑ'Ô'×,Ò,Ñ.Ô.ˆØˆˆt‰ØŒ×Ò˜6Ñ"Ô"Ð"Ð"Ð"r   c                óÂ   — | j                              i ¦  «        }||v r3|                     ¦   «         }||= | j                              |¦  «         d S t	          |¦  «        ‚r*   )r!   r,   rE   r<   r?   r@   s      r   Ú__delattr__zLocal.__delattr___   s^   € Ø”×#Ò# BÑ'Ô'ˆà�6ˆ>ˆ>Ø—[’[‘]”]ˆFØ�t�ØŒN×Ò˜vÑ&Ô&Ð&Ð&Ð&å  Ñ&Ô&Ð&r   r*   )r   r   r   r   )r   r(   )r2   r3   r1   r4   r   r5   ©r   r   )r2   r3   r   r=   )r2   r3   rC   r=   r   r   )r2   r3   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r'   r/   r:   r   rB   r$   rG   © r   r   r   r   #   sÐ   € € € € € ðð ð  €IðAð Að Að Að Að4ð 4ð 4ð 4ð ;?ð
Gð 
Gð 
Gð 
Gð 
Gð 
Gðð ð ð ð#ð #ð #ð #ð#ð #ð #ð #ð
'ð 'ð 'ð 'ð 'ð 'r   r   c                  ób   — e Zd ZdZdZddd„Zdd	„Zdd„Zdd„Ze	dd„¦   «         Z
	 dddœdd„ZdS )Ú
LocalStackaŠ  Create a stack of context-local data. This wraps a
    :class:`ContextVar` containing a :class:`list` value.

    This may incur a performance penalty compared to using individual
    context vars, as it has to copy data to avoid mutating the list
    between nested contexts.

    :param context_var: The :class:`~contextvars.ContextVar` to use as
        storage for this local. If not given, one will be created.
        Context vars not created at the global scope may interfere with
        garbage collection.

    .. versionchanged:: 2.0
        Uses ``ContextVar`` instead of a custom storage implementation.

    .. versionadded:: 0.6.1
    )Ú_storageNr   úContextVar[list[T]] | Noner   r   c                óX   — |€ t          dt          | ¦  «        › d�¦  «        }|| _        d S )Nzwerkzeug.LocalStack<r    )r   r"   rQ   r%   s     r   r'   zLocalStack.__init__   s4   € ØÐõ
 %Ð%O½B¸t¹H¼HÐ%OÐ%OÐ%OÑPÔPˆKà#ˆŒˆˆr   c                ó:   — | j                              g ¦  «         d S r*   )rQ   r<   r.   s    r   r   zLocalStack.__release_local__‰   s   € ØŒ×Ò˜"ÑÔÐÐÐr   Úobjr   úlist[T]c                ó¼   — | j                              g ¦  «                             ¦   «         }|                     |¦  «         | j                              |¦  «         |S )z'Add a new item to the top of the stack.)rQ   r,   rE   Úappendr<   )r&   rU   Ústacks      r   ÚpushzLocalStack.pushŒ   sP   € à”×!Ò! "Ñ%Ô%×*Ò*Ñ,Ô,ˆØ�Š�SÑÔÐØŒ×Ò˜%Ñ Ô Ð Øˆr   úT | Nonec                ó¸   — | j                              g ¦  «        }t          |¦  «        dk    rdS |d         }| j                              |dd…         ¦  «         |S )zjRemove the top item from the stack and return it. If the
        stack is empty, return ``None``.
        r   Néÿÿÿÿ)rQ   r,   Úlenr<   )r&   rY   Úrvs      r   ÚpopzLocalStack.pop“   sY   € ð ”×!Ò! "Ñ%Ô%ˆåˆu‰:Œ:˜Š?ˆ?Ø�4à�2ŒYˆØŒ×Ò˜%   œ*Ñ%Ô%Ð%Øˆ	r   c                óp   — | j                              g ¦  «        }t          |¦  «        dk    rdS |d         S )z[The topmost item on the stack.  If the stack is empty,
        `None` is returned.
        r   Nr]   )rQ   r,   r^   )r&   rY   s     r   ÚtopzLocalStack.top    s7   € ð
 ”×!Ò! "Ñ%Ô%ˆåˆu‰:Œ:˜Š?ˆ?Ø�4à�RŒyÐr   r0   r2   r4   r1   r5   c               ó&   — t          | ||¬¦  «        S )a@  Create a :class:`LocalProxy` that accesses the top of this
        local stack.

        :param name: If given, the proxy access this attribute of the
            top item, rather than the item itself.
        :param unbound_message: The error message that the proxy will
            show if the stack is empty.
        r0   r7   r9   s      r   r:   zLocalStack.__call__¬   s   € õ ˜$ °oÐFÑFÔFÐFr   r*   )r   rR   r   r   rH   )rU   r   r   rV   )r   r[   )r2   r4   r1   r4   r   r5   )rI   rJ   rK   rL   rM   r'   r   rZ   r`   Úpropertyrb   r:   rN   r   r   rP   rP   j   sÎ   € € € € € ðð ð$ €Ið$ð $ð $ð $ð $ðð ð ð ðð ð ð ðð ð ð ð ð	ð 	ð 	ñ „Xð	ð "&ðGØHLðGð Gð Gð Gð Gð Gð Gð Gr   rP   c                  óB   — e Zd ZdZdZ	 ddd„Zdd	„Zdd„Zdd„Zdd„Z	dS )ÚLocalManagera  Manage releasing the data for the current context in one or more
    :class:`Local` and :class:`LocalStack` objects.

    This should not be needed for modern use cases, and may be removed
    in the future.

    :param locals: A local or list of locals to manage.

    .. versionchanged:: 2.1
        The ``ident_func`` was removed.

    .. versionchanged:: 0.7
        The ``ident_func`` parameter was added.

    .. versionchanged:: 0.6.1
        The :func:`release_local` function can be used instead of a
        manager.
    )ÚlocalsNrg   úJNone | (Local | LocalStack[t.Any] | t.Iterable[Local | LocalStack[t.Any]])r   r   c                ó‚   — |€	g | _         d S t          |t          ¦  «        r
|g| _         d S t          |¦  «        | _         d S r*   )rg   Ú
isinstancer   Úlist)r&   rg   s     r   r'   zLocalManager.__init__Ð   sD   € ð
 ˆ>ØˆDŒKˆKˆKÝ˜¥Ñ&Ô&ð 	'Ø!˜(ˆDŒKˆKˆKå˜v™,œ,ˆDŒKˆKˆKr   c                ó8   — | j         D ]}t          |¦  «         ŒdS )z†Release the data in the locals for this context. Call this at
        the end of each request or use :meth:`make_middleware`.
        N)rg   r   )r&   r   s     r   ÚcleanupzLocalManager.cleanupÜ   s0   € ð ”[ð 	!ð 	!ˆEÝ˜%Ñ Ô Ð Ð ð	!ð 	!r   Úappr   c                ó   ‡ ‡— dˆˆ fd„}|S )	z…Wrap a WSGI application so that local data is released
        automatically after the response has been sent for a request.
        Úenvironr   Ústart_responser   r   út.Iterable[bytes]c                óB   •— t           ‰| |¦  «        ‰j        ¦  «        S r*   )r
   rm   )rp   rq   rn   r&   s     €€r   Úapplicationz1LocalManager.make_middleware.<locals>.applicationè   s#   ø€ õ # 3 3 w°Ñ#?Ô#?ÀÄÑNÔNÐNr   )rp   r   rq   r   r   rr   rN   )r&   rn   rt   s   `` r   Úmake_middlewarezLocalManager.make_middlewareã   s6   øø€ ð
	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð
 Ðr   Úfuncc                óH   — t          |                      |¦  «        |¦  «        S )zòLike :meth:`make_middleware` but used as a decorator on the
        WSGI application function.

        .. code-block:: python

            @manager.middleware
            def application(environ, start_response):
                ...
        )r   ru   )r&   rv   s     r   Ú
middlewarezLocalManager.middlewareï   s"   € õ ˜d×2Ò2°4Ñ8Ô8¸$Ñ?Ô?Ð?r   r3   c                ó\   — dt          | ¦  «        j        › dt          | j        ¦  «        › d�S )Nú<z storages: ú>)ÚtyperI   r^   rg   r.   s    r   Ú__repr__zLocalManager.__repr__û   s.   € ØF•4˜‘:”:Ô&ÐFÐFµ3°t´{Ñ3CÔ3CÐFÐFÐFÐFr   r*   )rg   rh   r   r   rH   )rn   r   r   r   )rv   r   r   r   ©r   r3   )
rI   rJ   rK   rL   rM   r'   rm   ru   rx   r}   rN   r   r   rf   rf   º   sŸ   € € € € € ðð ð& €Ið
 QUð
'ð 
'ð 
'ð 
'ð 
'ð!ð !ð !ð !ð
ð 
ð 
ð 
ð
@ð 
@ð 
@ð 
@ðGð Gð Gð Gð Gð Gr   rf   c                  óJ   — e Zd ZdZdZ	 	 	 	 ddd„Zdd„Zd d!d„Zd"d„Zd#d„Z	dS )$Ú_ProxyLookupa”  Descriptor that handles proxied attribute lookup for
    :class:`LocalProxy`.

    :param f: The built-in function this attribute is accessed through.
        Instead of looking up the special method, the function call
        is redone on the object.
    :param fallback: Return this function if the proxy is unbound
        instead of raising a :exc:`RuntimeError`.
    :param is_attr: This proxied name is an attribute, not a function.
        Call the fallback immediately to get the value.
    :param class_value: Value to return when accessed from the
        ``LocalProxy`` class directly. Used for ``__doc__`` so building
        docs still works.
    )Úbind_fÚfallbackÚis_attrÚclass_valuer2   NFÚfút.Callable[..., t.Any] | Noner‚   ú-t.Callable[[LocalProxy[t.Any]], t.Any] | Noner„   út.Any | Nonerƒ   Úboolr   r   c                ó„   ‡— t          ‰d¦  «        rd
ˆfd„}n‰�d
ˆfd	„}nd }|| _        || _        || _        || _        d S )NÚ__get__Úinstancer5   rU   r=   r   út.Callable[..., t.Any]c                óJ   •— ‰                      |t          |¦  «        ¦  «        S r*   ©r‹   r|   ©rŒ   rU   r…   s     €r   r�   z%_ProxyLookup.__init__.<locals>.bind_f  s   ø€ ð —y’y ¥d¨3¡i¤iÑ0Ô0Ð0r   c                ó$   •— t          ‰|¦  «        S r*   r   r�   s     €r   r�   z%_ProxyLookup.__init__.<locals>.bind_f%  s   ø€ õ ˜q #‘”Ð&r   ©rŒ   r5   rU   r=   r   r�   )Úhasattrr�   r‚   r„   rƒ   )r&   r…   r‚   r„   rƒ   r�   s    `    r   r'   z_ProxyLookup.__init__  sŒ   ø€ õ �1�iÑ Ô ð 	ð1ð 1ð 1ð 1ð 1ð 1ð 1ð
 ˆ]ð'ð 'ð 'ð 'ð 'ð 'ð 'ð ˆFàˆŒØ ˆŒØ&ˆÔØˆŒˆˆr   Úownerr5   r2   r3   c                ó   — || _         d S r*   ©r2   )r&   r”   r2   s      r   Ú__set_name__z_ProxyLookup.__set_name__3  s   € ØˆŒ	ˆ	ˆ	r   rŒ   útype | Noner=   c                óF  — |€| j         �| j         S | S 	 |                     ¦   «         }nH# t          $ r; | j        €‚ | j                             ||¦  «        }| j        r |¦   «         cY S |cY S w xY w| j        �|                      ||¦  «        S t          || j        ¦  «        S r*   )	r„   Ú_get_current_objectÚRuntimeErrorr‚   r‹   rƒ   r�   Úgetattrr2   )r&   rŒ   r”   rU   r‚   s        r   r‹   z_ProxyLookup.__get__6  sË   € ØÐØÔÐ+ØÔ'Ð'àˆKð	Ø×.Ò.Ñ0Ô0ˆCˆCøÝð 	ð 	ð 	ØŒ}Ð$Øà”}×,Ò,¨X°uÑ=Ô=ˆHàŒ|ð "ð  �x‘z”zÐ!Ð!Ð!àˆOˆOˆOð	øøøð Œ;Ð"Ø—;’;˜x¨Ñ-Ô-Ð-å�s˜DœIÑ&Ô&Ð&s   ”) ©>A.Á)A.Á-A.c                ó   — d| j         › �S )Nzproxy r–   r.   s    r   r}   z_ProxyLookup.__repr__Q  s   € Ø#˜œ	Ð#Ð#Ð#r   ÚargsÚkwargsc                óT   —  |                       |t          |¦  «        ¦  «        |i |¤ŽS )zíSupport calling unbound methods from the class. For example,
        this happens with ``copy.copy``, which does
        ``type(x).__copy__(x)``. ``type(x)`` can't be proxied, so it
        returns the proxy type and descriptor.
        r�   )r&   rŒ   rž   rŸ   s       r   r:   z_ProxyLookup.__call__T  s-   € ð 6ˆt�|Š|˜H¥d¨8¡n¤nÑ5Ô5°tÐF¸vÐFÐFÐFr   )NNNF)
r…   r†   r‚   r‡   r„   rˆ   rƒ   r‰   r   r   )r”   r5   r2   r3   r   r   r*   )rŒ   r5   r”   r˜   r   r=   r~   )rŒ   r5   rž   r=   rŸ   r=   r   r=   )
rI   rJ   rK   rL   rM   r'   r—   r‹   r}   r:   rN   r   r   r€   r€   ÿ   s©   € € € € € ðð ð I€Ið ,0ØBFØ$(Øð ð  ð  ð  ð  ðDð ð ð ð'ð 'ð 'ð 'ð 'ð6$ð $ð $ð $ðGð Gð Gð Gð Gð Gr   r€   c                  ó.   ‡ — e Zd ZdZdZ	 	 ddˆ fd
„Zˆ xZS )Ú	_ProxyIOpz…Look up an augmented assignment method on a proxied object. The
    method is wrapped to return the proxy instead of the object.
    rN   Nr…   r†   r‚   r‡   r   r   c                óh   •‡— t          ¦   «                              ‰|¦  «         dˆfd„}|| _        d S )	NrŒ   r5   rU   r=   r   r�   c                óZ   •‡ — dˆˆ fd„}|                      |t          |¦  «        ¦  «        S )Nr&   r=   Úotherr   r5   c                ó    •—  ‰| |¦  «         ‰S r*   rN   )r&   r¥   r…   rŒ   s     €€r   Úi_opz0_ProxyIOp.__init__.<locals>.bind_f.<locals>.i_opn  s   ø€ Ø��$˜‘”�Ø�r   )r&   r=   r¥   r=   r   r5   r�   )rŒ   rU   r§   r…   s   `  €r   r�   z"_ProxyIOp.__init__.<locals>.bind_fm  sC   øø€ ð ð  ð  ð  ð  ð  ð  ð —<’< ¥T¨#¡Y¤YÑ/Ô/Ð/r   r’   )Úsuperr'   r�   )r&   r…   r‚   r�   Ú	__class__s    `  €r   r'   z_ProxyIOp.__init__f  sK   øø€ õ
 	‰Œ×Ò˜˜HÑ%Ô%Ð%ð	0ð 	0ð 	0ð 	0ð 	0ð 	0ð ˆŒˆˆr   )NN)r…   r†   r‚   r‡   r   r   )rI   rJ   rK   rL   rM   r'   Ú__classcell__)r©   s   @r   r¢   r¢   _  s[   ø€ € € € € ðð ð €Ið ,0ØBFðð ð ð ð ð ð ð ð ð ð r   r¢   Úopc                óD   ‡ — dˆ fd„}t          j        t          |¦  «        S )z5Swap the argument order to turn an l-op into an r-op.rU   r=   r¥   r   c                ó   •—  ‰|| ¦  «        S r*   rN   )rU   r¥   r«   s     €r   Úr_opz_l_to_r_op.<locals>.r_opz  s   ø€ Øˆr�%˜‰~Œ~Ðr   )rU   r=   r¥   r=   r   r=   )ÚtÚcastr   )r«   r®   s   ` r   Ú
_l_to_r_opr±   w  s3   ø€ ðð ð ð ð ð õ Œ6•!�T‰?Œ?Ðr   Úoc                ó   — | S r*   rN   )r²   s    r   Ú	_identityr´   €  s   € Ø€Hr   c                  ó†  — e Zd ZU dZdZded<   	 	 dddœdd„Z eed„ d¬¦  «        Z ed„ d¬¦  «        Z ee	d„ ¬¦  «        Z
 ee¦  «        Z ee¦  «        Z e¦   «         Z eej        ¦  «        Z eej        ¦  «        Z eej        ¦  «        Z eej        ¦  «        Z eej        ¦  «        Z eej        ¦  «        Z ee¦  «        Z eed„ ¬¦  «        Z  ee!¦  «        Z" ee#¦  «        Z$ ee%¦  «        Z& ee'd„ ¬¦  «        Z( ed„ d¬¦  «        Z) ed„ ¦  «        Z* ed„ ¦  «        Z+ ed„ ¦  «        Z, ee-¦  «        Z. eej/        ¦  «        Z0 eej1        ¦  «        Z2 eej3        ¦  «        Z4 eej5        ¦  «        Z6 ee7¦  «        Z8 ee9¦  «        Z: ee;¦  «        Z< eej=        ¦  «        Z> eej?        ¦  «        Z@ eejA        ¦  «        ZB eejC        ¦  «        ZD eejE        ¦  «        ZF eejG        ¦  «        ZH eejI        ¦  «        ZJ eejK        ¦  «        ZL eeM¦  «        ZN eeO¦  «        ZP eejQ        ¦  «        ZR eejS        ¦  «        ZT eejU        ¦  «        ZV eejW        ¦  «        ZX eejY        ¦  «        ZZ e e[ej?        ¦  «        ¦  «        Z\ e e[ejA        ¦  «        ¦  «        Z] e e[ejC        ¦  «        ¦  «        Z^ e e[ejE        ¦  «        ¦  «        Z_ e e[ejG        ¦  «        ¦  «        Z` e e[ejI        ¦  «        ¦  «        Za e e[ejK        ¦  «        ¦  «        Zb e e[eM¦  «        ¦  «        Zc e e[eO¦  «        ¦  «        Zd e e[ejQ        ¦  «        ¦  «        Ze e e[ejS        ¦  «        ¦  «        Zf e e[ejU        ¦  «        ¦  «        Zg e e[ejW        ¦  «        ¦  «        Zh e e[ejY        ¦  «        ¦  «        Zi ejejk        ¦  «        Zl ejejm        ¦  «        Zn ejejo        ¦  «        Zp ejejq        ¦  «        Zr ejejs        ¦  «        Zt ejeju        ¦  «        Zv ejejw        ¦  «        Zx ejejy        ¦  «        Zz ejej{        ¦  «        Z| ejej}        ¦  «        Z~ ejej        ¦  «        Z€ ejej�        ¦  «        Z‚ ejejƒ        ¦  «        Z„ eej…        ¦  «        Z† eej‡        ¦  «        Zˆ ee‰¦  «        ZŠ eej‹        ¦  «        ZŒ ee�¦  «        ZŽ ee�¦  «        Z� ee‘¦  «        Z’ eej“        ¦  «        Z” ee•¦  «        Z– ee—j˜        ¦  «        Z™ ee—jš        ¦  «        Z› ee—jœ        ¦  «        Z� e¦   «         Zž e¦   «         ZŸ e¦   «         Z  e¦   «         Z¡ e¦   «         Z¢ e¦   «         Z£ e¦   «         Z¤ ee¥j¥        ¦  «        Z¦ ee¥j§        ¦  «        Z¨dS )r8   as	  A proxy to the object bound to a context-local object. All
    operations on the proxy are forwarded to the bound object. If no
    object is bound, a ``RuntimeError`` is raised.

    :param local: The context-local object that provides the proxied
        object.
    :param name: Proxy this attribute from the proxied object.
    :param unbound_message: The error message to show if the
        context-local object is unbound.

    Proxy a :class:`~contextvars.ContextVar` to make it easier to
    access. Pass a name to proxy that attribute.

    .. code-block:: python

        _request_var = ContextVar("request")
        request = LocalProxy(_request_var)
        session = LocalProxy(_request_var, "session")

    Proxy an attribute on a :class:`Local` namespace by calling the
    local with the attribute name:

    .. code-block:: python

        data = Local()
        user = data("user")

    Proxy the top item on a :class:`LocalStack` by calling the local.
    Pass a name to proxy that attribute.

    .. code-block::

        app_stack = LocalStack()
        current_app = app_stack()
        g = app_stack("g")

    Pass a function to proxy the return value from that function. This
    was previously used to access attributes of local objects before
    that was supported directly.

    .. code-block:: python

        session = LocalProxy(lambda: request.session)

    ``__repr__`` and ``__class__`` are proxied, so ``repr(x)`` and
    ``isinstance(x, cls)`` will look like the proxied object. Use
    ``issubclass(type(x), LocalProxy)`` to check if an object is a
    proxy.

    .. code-block:: python

        repr(user)  # <User admin>
        isinstance(user, User)  # True
        issubclass(type(user), LocalProxy)  # True

    .. versionchanged:: 2.2.2
        ``__wrapped__`` is set when wrapping an object, not only when
        wrapping a function, to prevent doctest from failing.

    .. versionchanged:: 2.2
        Can proxy a ``ContextVar`` or ``LocalStack`` directly.

    .. versionchanged:: 2.2
        The ``name`` parameter can be used with any proxied object, not
        only ``Local``.

    .. versionchanged:: 2.2
        Added the ``unbound_message`` parameter.

    .. versionchanged:: 2.0
        Updated proxied attributes and methods to reflect the current
        data model.

    .. versionchanged:: 0.6.1
        The class can be instantiated with a callable.
    )Ú	__wrappedrš   zt.Callable[[], T]rš   Nr0   r   ú9ContextVar[T] | Local | LocalStack[T] | t.Callable[[], T]r2   r4   r1   r   r   c               óú  ‡‡‡— |€t           Šnt          |¦  «        Š‰€dŠt          ‰t          ¦  «        r|€t	          d¦  «        ‚dˆˆˆfd„}nst          ‰t
          ¦  «        r	dˆˆˆfd„}nUt          ‰t          ¦  «        r	dˆˆˆfd„}n7t          ‰¦  «        rdˆˆfd„}n t	          d	t          ‰¦  «        › d
�¦  «        ‚t           
                    | d‰¦  «         t           
                    | d|¦  «         d S )Nzobject is not boundz2'name' is required when proxying a 'Local' object.r   r   c                 óX   •— 	  ‰ ‰¦  «        S # t           $ r t          ‰¦  «        d ‚w xY wr*   )r?   r›   )Úget_namer   r1   s   €€€r   rš   z0LocalProxy.__init__.<locals>._get_current_objectñ  sF   ø€ ðBØ#˜8 E™?œ?Ð*øÝ%ð Bð Bð BÝ& Ñ7Ô7¸TÐAðBøøøs   ƒ
 Ž)c                 óJ   •— ‰j         } | €t          ‰¦  «        ‚ ‰| ¦  «        S r*   )rb   r›   ©rU   rº   r   r1   s    €€€r   rš   z0LocalProxy.__init__.<locals>._get_current_objectù  s+   ø€ Ø”i�à�;Ý& Ñ7Ô7Ð7à�x ‘}”}Ð$r   c                 ó‚   •— 	 ‰                      ¦   «         } n# t          $ r t          ‰¦  «        d ‚w xY w ‰| ¦  «        S r*   )r,   ÚLookupErrorr›   r¼   s    €€€r   rš   z0LocalProxy.__init__.<locals>._get_current_object  sW   ø€ ðBØŸ)š)™+œ+�C�CøÝ"ð Bð Bð BÝ& Ñ7Ô7¸TÐAðBøøøð  �x ‘}”}Ð$s   ƒ ˜3c                 ó*   •—  ‰  ‰¦   «         ¦  «        S r*   rN   )rº   r   s   €€r   rš   z0LocalProxy.__init__.<locals>._get_current_object  s   ø€ Ø�x  ¡¤Ñ(Ô(Ð(r   zDon't know how to proxy 'z'.Ú_LocalProxy__wrappedrš   )r   r   )r´   r   rj   r   Ú	TypeErrorrP   r   Úcallabler|   r#   r$   )r&   r   r2   r1   rš   rº   s    ` ` @r   r'   zLocalProxy.__init__Þ  s   øøø€ ð ˆ<Ý ˆHˆHå! $Ñ'Ô'ˆHàÐ"Ø3ˆOå�e�UÑ#Ô#ð $	IØˆ|ÝÐ TÑUÔUÐUðBð Bð Bð Bð Bð Bð Bð Bð Bõ ˜�zÑ*Ô*ð 	Ið%ð %ð %ð %ð %ð %ð %ð %ð %õ ˜�zÑ*Ô*ð 	Ið%ð %ð %ð %ð %ð %ð %ð %ð %õ �e‰_Œ_ð 	Ið)ð )ð )ð )ð )ð )ð )ð )õ ÐG½¸U¹¼ÐGÐGÐGÑHÔHÐHå×Ò˜4Ð!7¸Ñ?Ô?Ð?Ý×Ò˜4Ð!6Ð8KÑLÔLÐLÐLÐLr   c                ó*   — t          | ¦  «        j        S r*   )r|   rL   r.   s    r   ú<lambda>zLocalProxy.<lambda>  s   € µ4¸±:´:Ô3E€ r   T)r„   r‚   rƒ   c                ó   — | j         S r*   )rÀ   r.   s    r   rÄ   zLocalProxy.<lambda>  s	   € ˜dÔ7€ r   )r‚   rƒ   c                ó2   — dt          | ¦  «        j        › d�S )Nrz   z	 unbound>)r|   rI   r.   s    r   rÄ   zLocalProxy.<lambda>  s   € Ð$F­¨T©
¬
Ô(;Ð$FÐ$FÐ$F€ r   )r‚   c                ó   — dS )NFrN   r.   s    r   rÄ   zLocalProxy.<lambda>+  s   € ¸€ r   c                ó   — g S r*   rN   r.   s    r   rÄ   zLocalProxy.<lambda>0  s   € °b€ r   c                ó    — t          | ¦  «        S r*   )r|   r.   s    r   rÄ   zLocalProxy.<lambda>;  s   € µ4¸±:´:€ r   c                ó"   — t          || ¦  «        S r*   )rj   ©r&   r¥   s     r   rÄ   zLocalProxy.<lambda><  ó   € ½ÀEÈ4Ñ9PÔ9P€ r   c                ó"   — t          || ¦  «        S r*   )Ú
issubclassrË   s     r   rÄ   zLocalProxy.<lambda>=  rÌ   r   c                ó   —  | |i |¤ŽS r*   rN   )r&   rž   rŸ   s      r   rÄ   zLocalProxy.<lambda>?  s   € ¸$¸$ÀÐ:OÈÐ:OÐ:O€ r   r*   )r   r·   r2   r4   r1   r4   r   r   )©rI   rJ   rK   rL   rM   Ú__annotations__r'   r€   Ú__wrapped__Úreprr}   r3   Ú__str__ÚbytesÚ	__bytes__Ú
__format__ÚoperatorÚltÚ__lt__ÚleÚ__le__ÚeqÚ__eq__ÚneÚ__ne__ÚgtÚ__gt__ÚgeÚ__ge__ÚhashÚ__hash__r‰   Ú__bool__rœ   rB   Úsetattrr$   ÚdelattrrG   ÚdirÚ__dir__r©   Ú__instancecheck__Ú__subclasscheck__r:   r^   Ú__len__Úlength_hintÚ__length_hint__ÚgetitemÚ__getitem__ÚsetitemÚ__setitem__ÚdelitemÚ__delitem__r+   r/   ÚnextÚ__next__ÚreversedÚ__reversed__ÚcontainsÚ__contains__ÚaddÚ__add__ÚsubÚ__sub__ÚmulÚ__mul__ÚmatmulÚ
__matmul__ÚtruedivÚ__truediv__ÚfloordivÚ__floordiv__ÚmodÚ__mod__ÚdivmodÚ
__divmod__ÚpowÚ__pow__ÚlshiftÚ
__lshift__ÚrshiftÚ
__rshift__Úand_Ú__and__ÚxorÚ__xor__Úor_Ú__or__r±   Ú__radd__Ú__rsub__Ú__rmul__Ú__rmatmul__Ú__rtruediv__Ú__rfloordiv__Ú__rmod__Ú__rdivmod__Ú__rpow__Ú__rlshift__Ú__rrshift__Ú__rand__Ú__rxor__Ú__ror__r¢   ÚiaddÚ__iadd__ÚisubÚ__isub__ÚimulÚ__imul__ÚimatmulÚ__imatmul__ÚitruedivÚ__itruediv__Ú	ifloordivÚ__ifloordiv__ÚimodÚ__imod__ÚipowÚ__ipow__ÚilshiftÚ__ilshift__ÚirshiftÚ__irshift__ÚiandÚ__iand__ÚixorÚ__ixor__ÚiorÚ__ior__ÚnegÚ__neg__ÚposÚ__pos__ÚabsÚ__abs__ÚinvertÚ
__invert__ÚcomplexÚ__complex__ÚintÚ__int__ÚfloatÚ	__float__ÚindexÚ	__index__ÚroundÚ	__round__ÚmathÚtruncÚ	__trunc__ÚfloorÚ	__floor__ÚceilÚ__ceil__Ú	__enter__Ú__exit__Ú	__await__Ú	__aiter__Ú	__anext__Ú
__aenter__Ú	__aexit__rE   Ú__copy__ÚdeepcopyÚ__deepcopy__rN   r   r   r8   r8   „  s*  € € € € € € ðKð KðZ 5€Ià*Ð*Ð*Ñ*ðð  ð6Mð
 '+ð6Mð 6Mð 6Mð 6Mð 6Mð 6Mðp ˆlØÐ&EÐ&EÈtðñ ô €Gð �,Ø7Ð7Øðñ ô €Kð
 ˆ|ØÐFÐFðñ ô €Hð ˆl˜3ÑÔ€GØ�˜UÑ#Ô#€IØ�‘”€JØˆ\˜(œ+Ñ&Ô&€FØˆ\˜(œ+Ñ&Ô&€FØˆ\˜(œ+Ñ&Ô&€FØˆ\˜(œ+Ñ&Ô&€FØˆ\˜(œ+Ñ&Ô&€FØˆ\˜(œ+Ñ&Ô&€FØˆ|˜DÑ!Ô!€HØˆ|˜DÐ+=Ð+=Ð>Ñ>Ô>€HØ�,˜wÑ'Ô'€Kà�,˜wÑ'Ô'€KØ�,˜wÑ'Ô'€KØˆl˜3¨¨Ð9Ñ9Ô9€Gð �Ð&=Ð&=ÀtÐLÑLÔL€IØ$˜Ð%PÐ%PÑQÔQÐØ$˜Ð%PÐ%PÑQÔQÐàˆ|ÐOÐOÑPÔP€HØˆl˜3ÑÔ€GØ"�l 8Ô#7Ñ8Ô8€OØ�,˜xÔ/Ñ0Ô0€KØ�,˜xÔ/Ñ0Ô0€KØ�,˜xÔ/Ñ0Ô0€Kàˆ|˜DÑ!Ô!€HØˆ|˜DÑ!Ô!€HØ�< Ñ)Ô)€LØ�< Ô 1Ñ2Ô2€LØˆl˜8œ<Ñ(Ô(€GØˆl˜8œ<Ñ(Ô(€GØˆl˜8œ<Ñ(Ô(€GØ�˜hœoÑ.Ô.€JØ�,˜xÔ/Ñ0Ô0€KØ�< Ô 1Ñ2Ô2€LØˆl˜8œ<Ñ(Ô(€GØ�˜fÑ%Ô%€JØˆl˜3ÑÔ€GØ�˜hœoÑ.Ô.€JØ�˜hœoÑ.Ô.€JØˆl˜8œ=Ñ)Ô)€GØˆl˜8œ<Ñ(Ô(€GØˆ\˜(œ,Ñ'Ô'€FØˆ|˜J˜J x¤|Ñ4Ô4Ñ5Ô5€HØˆ|˜J˜J x¤|Ñ4Ô4Ñ5Ô5€HØˆ|˜J˜J x¤|Ñ4Ô4Ñ5Ô5€HØ�,˜z˜z¨(¬/Ñ:Ô:Ñ;Ô;€KØ�< 
 
¨8Ô+;Ñ <Ô <Ñ=Ô=€LØ �L  ¨HÔ,=Ñ!>Ô!>Ñ?Ô?€MØˆ|˜J˜J x¤|Ñ4Ô4Ñ5Ô5€HØ�,˜z˜z¨&Ñ1Ô1Ñ2Ô2€KØˆ|˜J˜J s™OœOÑ,Ô,€HØ�,˜z˜z¨(¬/Ñ:Ô:Ñ;Ô;€KØ�,˜z˜z¨(¬/Ñ:Ô:Ñ;Ô;€KØˆ|˜J˜J x¤}Ñ5Ô5Ñ6Ô6€HØˆ|˜J˜J x¤|Ñ4Ô4Ñ5Ô5€HØˆl˜:˜: h¤lÑ3Ô3Ñ4Ô4€GØˆy˜œÑ'Ô'€HØˆy˜œÑ'Ô'€HØˆy˜œÑ'Ô'€HØ�)˜HÔ,Ñ-Ô-€KØ�9˜XÔ.Ñ/Ô/€LØ�I˜hÔ0Ñ1Ô1€MØˆy˜œÑ'Ô'€HØˆy˜œÑ'Ô'€HØ�)˜HÔ,Ñ-Ô-€KØ�)˜HÔ,Ñ-Ô-€KØˆy˜œÑ'Ô'€HØˆy˜œÑ'Ô'€HØˆi˜œÑ%Ô%€GØˆl˜8œ<Ñ(Ô(€GØˆl˜8œ<Ñ(Ô(€GØˆl˜3ÑÔ€GØ�˜hœoÑ.Ô.€JØ�,˜wÑ'Ô'€KØˆl˜3ÑÔ€GØ�˜UÑ#Ô#€IØ�˜Xœ^Ñ,Ô,€IØ�˜UÑ#Ô#€IØ�˜TœZÑ(Ô(€IØ�˜TœZÑ(Ô(€IØˆ|˜DœIÑ&Ô&€HØ�‘”€IØˆ|‰~Œ~€HØ�‘”€IØ�‘”€IØ�‘”€IØ�‘”€JØ�‘”€IØˆ|˜DœIÑ&Ô&€HØ�< ¤Ñ.Ô.€L€L€Lr   r8   )r   r   r   r   )r«   r   r   r   )r²   r   r   r   )#Ú
__future__r   rE   rR  r×   Útypingr¯   Úcontextvarsr   Ú	functoolsr   r   r   Úwsgir
   ÚTYPE_CHECKINGÚ_typeshed.wsgir   r   r   ÚTypeVarr   ÚCallableÚAnyr   r   r   ÚGenericrP   rf   r€   r¢   r±   r´   r8   rN   r   r   ú<module>rn     s˜  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð à !Ð !Ð !Ð !Ð !Ð !à„?ð /Ø,Ð,Ð,Ð,Ð,Ð,Ø.Ð.Ð.Ð.Ð.Ð.Ø.Ð.Ð.Ð.Ð.Ð.à€A„Iˆc�N„N€Ø€A„Iˆc˜œ C¨¬ JÔ/Ð0Ñ0Ô0€ð	ð 	ð 	ð 	ðD'ð D'ð D'ð D'ð D'ñ D'ô D'ð D'ðNMGð MGð MGð MGð MG�”˜1”ñ MGô MGð MGð`BGð BGð BGð BGð BGñ BGô BGð BGðJ]Gð ]Gð ]Gð ]Gð ]Gñ ]Gô ]Gð ]Gð@ð ð ð ð �ñ ô ð ð0ð ð ð ðð ð ð ðC/ð C/ð C/ð C/ð C/�”˜1”ñ C/ô C/ð C/ð C/ð C/r   