§
    ùÛgèA  ã                   ó^   — d Z ddlmZ ddlmZmZ  G d„ de¦  «        Z G d„ de¦  «        Zd	S )
a   
    flask.blueprints
    ~~~~~~~~~~~~~~~~

    Blueprints are the recommended way to implement larger or more
    pluggable applications in Flask 0.7 and later.

    :copyright: (c) 2015 by Armin Ronacher.
    :license: BSD, see LICENSE for more details.
é    )Úupdate_wrapperé   )Ú_PackageBoundObjectÚ_endpoint_from_view_funcc                   ó    — e Zd ZdZd„ Zdd„ZdS )ÚBlueprintSetupStatezíTemporary holder object for registering a blueprint with the
    application.  An instance of this class is created by the
    :meth:`~flask.Blueprint.make_setup_state` method and later passed
    to all register callback functions.
    c                 óœ  — || _         || _        || _        || _        | j                             d¦  «        }|€| j        j        }|| _        | j                             d¦  «        }|€| j        j        }|| _        t          | j        j        ¦  «        | _	        | j	         
                    | j                             dd¦  «        ¦  «         d S )NÚ	subdomainÚ
url_prefixÚurl_defaults© )ÚappÚ	blueprintÚoptionsÚfirst_registrationÚgetr
   r   ÚdictÚurl_values_defaultsr   Úupdate)Úselfr   r   r   r   r
   r   s          úF/granary/edev/quantum/lib/python3.11/site-packages/flask/blueprints.pyÚ__init__zBlueprintSetupState.__init__   sÇ   € àˆŒð #ˆŒð ˆŒð #5ˆÔà”L×$Ò$ [Ñ1Ô1ˆ	ØÐØœÔ0ˆIð #ˆŒà”\×%Ò% lÑ3Ô3ˆ
ØÐØœÔ2ˆJð %ˆŒõ ! ¤Ô!CÑDÔDˆÔØÔ× Ò  ¤×!1Ò!1°.À"Ñ!EÔ!EÑFÔFÐFÐFÐFó    Nc                 ó"  — | j         r
| j         |z   }|                     d| j        ¦  «         |€t          |¦  «        }| j        }d|v r t          |fi |                     d¦  «        ¤Ž} | j        j        || j	        j
        ›d|›�|fd|i|¤Ž dS )z³A helper method to register a rule (and optionally a view function)
        to the application.  The endpoint is automatically prefixed with the
        blueprint's name.
        r
   NÚdefaultsú.)r   Ú
setdefaultr
   r   r   r   Úpopr   Úadd_url_ruler   Úname)r   ÚruleÚendpointÚ	view_funcr   r   s         r   r   z BlueprintSetupState.add_url_rule>   sÒ   € ð
 Œ?ð 	*Ø”? TÑ)ˆDØ×Ò˜;¨¬Ñ7Ô7Ð7ØÐÝ/°	Ñ:Ô:ˆHØÔ$ˆØ˜Ð Ð Ý˜HÐ@Ð@¨¯ª°JÑ(?Ô(?Ð@Ð@ˆHØˆŒÔ˜d¨t¬~Ô/BÐ/BÐ/BÀHÀHÐ$MØ'ð	Gð 	GØ2:ð	GØ>Eð	Gð 	Gð 	Gð 	Gð 	Gr   ©NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r      sK   € € € € € ðð ð$Gð $Gð $GðLGð Gð Gð Gð Gð Gr   r   c                   óê   — e Zd ZdZdZdZ	 	 	 	 d"d„Zd„ Zd„ Zd#d„Z	d#d„Z
d	„ Zd$d
„Zd„ Zd%d„Zd%d„Zd%d„Zd%d„Zd%d„Zd%d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d „ Z"d!„ Z#dS )&Ú	Blueprinta6  Represents a blueprint.  A blueprint is an object that records
    functions that will be called with the
    :class:`~flask.blueprints.BlueprintSetupState` later to register functions
    or other things on the main application.  See :ref:`blueprints` for more
    information.

    .. versionadded:: 0.7
    FNc
                 ó    — t          j        | |||	¬¦  «         || _        || _        || _        || _        || _        g | _        |€i }|| _        d S )N)Ú	root_path)	r   r   r    r   r
   Ústatic_folderÚstatic_url_pathÚdeferred_functionsr   )
r   r    Úimport_namer-   r.   Útemplate_folderr   r
   r   r,   s
             r   r   zBlueprint.__init__\   sm   € õ 	Ô$ T¨;¸Ø/8ð	:ñ 	:ô 	:ð 	:àˆŒ	Ø$ˆŒØ"ˆŒØ*ˆÔØ.ˆÔØ"$ˆÔØÐØˆLØ#/ˆÔ Ð Ð r   c                 ó’   — | j         r%| j        rddlm}  |t	          d¦  «        ¦  «         | j                             |¦  «         dS )záRegisters a function that is called when the blueprint is
        registered on the application.  This function is called with the
        state as argument as returned by the :meth:`make_setup_state`
        method.
        r   )ÚwarnzgThe blueprint was already registered once but is getting modified now.  These changes will not show up.N)Ú_got_registered_onceÚwarn_on_modificationsÚwarningsr3   ÚWarningr/   Úappend)r   Úfuncr3   s      r   ÚrecordzBlueprint.recordl   so   € ð Ô$ð 	/¨Ô)Cð 	/Ø%Ð%Ð%Ð%Ð%Ð%ØˆD•ð -ñ .ô .ñ /ô /ð /ð 	Ô×&Ò& tÑ,Ô,Ð,Ð,Ð,r   c                 óT   ‡— ˆfd„}|                       t          |‰¦  «        ¦  «        S )zýWorks like :meth:`record` but wraps the function in another
        function that will ensure the function is only called once.  If the
        blueprint is registered a second time on the application, the
        function passed is not called.
        c                 ó0   •— | j         r ‰| ¦  «         d S d S ©N)r   )Ústater9   s    €r   Úwrapperz&Blueprint.record_once.<locals>.wrapper   s)   ø€ ØÔ'ð Ø��U‘”���ðð r   )r:   r   )r   r9   r?   s    ` r   Úrecord_oncezBlueprint.record_oncey   s:   ø€ ð	ð 	ð 	ð 	ð 	ð �{Š{�>¨'°4Ñ8Ô8Ñ9Ô9Ð9r   c                 ó&   — t          | |||¦  «        S )zãCreates an instance of :meth:`~flask.blueprints.BlueprintSetupState`
        object that is later passed to the register callback functions.
        Subclasses can override this to return a subclass of the setup state.
        )r   )r   r   r   r   s       r   Úmake_setup_statezBlueprint.make_setup_state„   s   € õ
 # 4¨¨gÐ7IÑJÔJÐJr   c                 óÄ   — d| _         |                      |||¦  «        }| j        r%|                     | j        dz   | j        d¬¦  «         | j        D ]} ||¦  «         ŒdS )a>  Called by :meth:`Flask.register_blueprint` to register a blueprint
        on the application.  This can be overridden to customize the register
        behavior.  Keyword arguments from
        :func:`~flask.Flask.register_blueprint` are directly forwarded to this
        method in the `options` dictionary.
        Tz/<path:filename>Ústatic)r#   r"   N)r4   rB   Úhas_static_folderr   r.   Úsend_static_filer/   )r   r   r   r   r>   Údeferreds         r   ÚregisterzBlueprint.register‹   s�   € ð %)ˆÔ!Ø×%Ò% c¨7Ð4FÑGÔGˆØÔ!ð 	2Ø×Ò˜tÔ3Ð6HÑHØ)-Ô)>Ø(0ð ñ 2ô 2ð 2ð Ô/ð 	ð 	ˆHØˆH�U‰OŒOˆOˆOð	ð 	r   c                 ó   ‡ ‡‡— ˆˆˆ fd„}|S )z™Like :meth:`Flask.route` but for a blueprint.  The endpoint for the
        :func:`url_for` function is prefixed with the name of the blueprint.
        c                 ó^   •— ‰                      d| j        ¦  «        } ‰j        ‰|| fi ‰¤Ž | S )Nr"   )r   r%   r   )Úfr"   r   r!   r   s     €€€r   Ú	decoratorz"Blueprint.route.<locals>.decorator    s<   ø€ Ø—{’{ :¨q¬zÑ:Ô:ˆHØˆDÔ˜d H¨aÐ;Ð;°7Ð;Ð;Ð;ØˆHr   r   )r   r!   r   rL   s   ``` r   ÚroutezBlueprint.routeœ   s0   øøø€ ð	ð 	ð 	ð 	ð 	ð 	ð 	ð Ðr   c                 ód   ‡‡‡‡— ‰rd‰vs
J d¦   «         ‚|                       ˆˆˆˆfd„¦  «         dS )z Like :meth:`Flask.add_url_rule` but for a blueprint.  The endpoint for
        the :func:`url_for` function is prefixed with the name of the blueprint.
        r   z+Blueprint endpoints should not contain dotsc                 ó$   •—  | j         ‰‰‰fi ‰¤ŽS r=   )r   )Úsr"   r   r!   r#   s    €€€€r   ú<lambda>z(Blueprint.add_url_rule.<locals>.<lambda>¬   s#   ø€ ØˆAŒN˜4 ¨9Ð@Ð@¸Ð@Ð@ð r   N)r:   )r   r!   r"   r#   r   s    ````r   r   zBlueprint.add_url_rule¦   sz   øøøø€ ð ð 	VØ˜hÐ&Ð&Ð&Ð(UÑ&Ô&Ð&Ø�Šð Að Að Að Að Að Að Añ 	Bô 	Bð 	Bð 	Bð 	Br   c                 ó   ‡ ‡— ˆˆ fd„}|S )a\  Like :meth:`Flask.endpoint` but for a blueprint.  This does not
        prefix the endpoint with the blueprint name, this has to be done
        explicitly by the user of this method.  If the endpoint is prefixed
        with a `.` it will be registered to the current blueprint, otherwise
        it's an application independent endpoint.
        c                 ó@   •‡ — ˆˆ fd„}‰                      |¦  «         ‰ S )Nc                 ó&   •— ‰| j         j        ‰<   d S r=   )r   Úview_functions)r>   r"   rK   s    €€r   Úregister_endpointz@Blueprint.endpoint.<locals>.decorator.<locals>.register_endpoint·   s   ø€ Ø56�”	Ô(¨Ñ2Ð2Ð2r   ©r@   )rK   rV   r"   r   s   ` €€r   rL   z%Blueprint.endpoint.<locals>.decorator¶   s<   øø€ ð7ð 7ð 7ð 7ð 7ð 7à×ÒÐ.Ñ/Ô/Ð/ØˆHr   r   )r   r"   rL   s   `` r   r"   zBlueprint.endpoint¯   s*   øø€ ð	ð 	ð 	ð 	ð 	ð 	ð
 Ðr   c                 ó   ‡ ‡— ˆˆ fd„}|S )zþRegister a custom template filter, available application wide.  Like
        :meth:`Flask.template_filter` but for a blueprint.

        :param name: the optional name of the filter, otherwise the
                     function name will be used.
        c                 ó6   •— ‰                      | ‰¬¦  «         | S ©N)r    )Úadd_app_template_filter©rK   r    r   s    €€r   rL   z0Blueprint.app_template_filter.<locals>.decoratorÄ   ó!   ø€ Ø×(Ò(¨°Ð(Ñ6Ô6Ð6ØˆHr   r   ©r   r    rL   s   `` r   Úapp_template_filterzBlueprint.app_template_filter½   s*   øø€ ð	ð 	ð 	ð 	ð 	ð 	ð Ðr   c                 ó@   ‡‡— ˆˆfd„}|                       |¦  «         dS )aI  Register a custom template filter, available application wide.  Like
        :meth:`Flask.add_template_filter` but for a blueprint.  Works exactly
        like the :meth:`app_template_filter` decorator.

        :param name: the optional name of the filter, otherwise the
                     function name will be used.
        c                 ó>   •— ‰| j         j        j        ‰p‰j        <   d S r=   )r   Ú	jinja_envÚfiltersr%   ©r>   rK   r    s    €€r   Úregister_templatez<Blueprint.add_app_template_filter.<locals>.register_templateÑ   ó"   ø€ Ø>?ˆEŒIÔÔ'¨Ð(:°´
Ñ;Ð;Ð;r   NrW   ©r   rK   r    re   s    `` r   r[   z!Blueprint.add_app_template_filterÉ   sC   øø€ ð	@ð 	@ð 	@ð 	@ð 	@ð 	@à×ÒÐ*Ñ+Ô+Ð+Ð+Ð+r   c                 ó   ‡ ‡— ˆˆ fd„}|S )a  Register a custom template test, available application wide.  Like
        :meth:`Flask.template_test` but for a blueprint.

        .. versionadded:: 0.10

        :param name: the optional name of the test, otherwise the
                     function name will be used.
        c                 ó6   •— ‰                      | ‰¬¦  «         | S rZ   )Úadd_app_template_testr\   s    €€r   rL   z.Blueprint.app_template_test.<locals>.decoratorÞ   s!   ø€ Ø×&Ò& q¨tÐ&Ñ4Ô4Ð4ØˆHr   r   r^   s   `` r   Úapp_template_testzBlueprint.app_template_testÕ   ó*   øø€ ð	ð 	ð 	ð 	ð 	ð 	ð Ðr   c                 ó@   ‡‡— ˆˆfd„}|                       |¦  «         dS )aa  Register a custom template test, available application wide.  Like
        :meth:`Flask.add_template_test` but for a blueprint.  Works exactly
        like the :meth:`app_template_test` decorator.

        .. versionadded:: 0.10

        :param name: the optional name of the test, otherwise the
                     function name will be used.
        c                 ó>   •— ‰| j         j        j        ‰p‰j        <   d S r=   )r   rb   Útestsr%   rd   s    €€r   re   z:Blueprint.add_app_template_test.<locals>.register_templateí   s"   ø€ Ø<=ˆEŒIÔÔ% dÐ&8¨a¬jÑ9Ð9Ð9r   NrW   rg   s    `` r   rj   zBlueprint.add_app_template_testã   s=   øø€ ð	>ð 	>ð 	>ð 	>ð 	>ð 	>à×ÒÐ*Ñ+Ô+Ð+Ð+Ð+r   c                 ó   ‡ ‡— ˆˆ fd„}|S )a  Register a custom template global, available application wide.  Like
        :meth:`Flask.template_global` but for a blueprint.

        .. versionadded:: 0.10

        :param name: the optional name of the global, otherwise the
                     function name will be used.
        c                 ó6   •— ‰                      | ‰¬¦  «         | S rZ   )Úadd_app_template_globalr\   s    €€r   rL   z0Blueprint.app_template_global.<locals>.decoratorú   r]   r   r   r^   s   `` r   Úapp_template_globalzBlueprint.app_template_globalñ   rl   r   c                 ó@   ‡‡— ˆˆfd„}|                       |¦  «         dS )ai  Register a custom template global, available application wide.  Like
        :meth:`Flask.add_template_global` but for a blueprint.  Works exactly
        like the :meth:`app_template_global` decorator.

        .. versionadded:: 0.10

        :param name: the optional name of the global, otherwise the
                     function name will be used.
        c                 ó>   •— ‰| j         j        j        ‰p‰j        <   d S r=   )r   rb   Úglobalsr%   rd   s    €€r   re   z<Blueprint.add_app_template_global.<locals>.register_template	  rf   r   NrW   rg   s    `` r   rr   z!Blueprint.add_app_template_globalÿ   sC   øø€ ð	@ð 	@ð 	@ð 	@ð 	@ð 	@à×ÒÐ*Ñ+Ô+Ð+Ð+Ð+r   c                 ó<   ‡ ‡— ‰                       ˆˆ fd„¦  «         ‰S )z´Like :meth:`Flask.before_request` but for a blueprint.  This function
        is only executed before each request that is handled by a function of
        that blueprint.
        c                 ót   •— | j         j                             ‰j        g ¦  «                             ‰¦  «        S r=   )r   Úbefore_request_funcsr   r    r8   ©rP   rK   r   s    €€r   rQ   z*Blueprint.before_request.<locals>.<lambda>  s*   ø€  1¤5Ô#=ßŠZ˜œ	 2Ñ&Ô&§v¢v¨a¡y¤yð r   rW   ©r   rK   s   ``r   Úbefore_requestzBlueprint.before_request  ó<   øø€ ð
 	×Òð 1ð 1ð 1ð 1ð 1ñ 	2ô 	2ð 	2àˆr   c                 ó8   ‡— |                       ˆfd„¦  «         ‰S )z…Like :meth:`Flask.before_request`.  Such a function is executed
        before each request, even if outside of a blueprint.
        c                 ój   •— | j         j                             d g ¦  «                             ‰¦  «        S r=   )r   ry   r   r8   ©rP   rK   s    €r   rQ   z.Blueprint.before_app_request.<locals>.<lambda>  s(   ø€  1¤5Ô#=ßŠZ˜˜bÑ!Ô!§&¢&¨¡)¤)ð r   rW   r{   s    `r   Úbefore_app_requestzBlueprint.before_app_request  ó6   ø€ ð 	×Òð ,ð ,ð ,ð ,ñ 	-ô 	-ð 	-àˆr   c                 ó8   ‡— |                       ˆfd„¦  «         ‰S )zƒLike :meth:`Flask.before_first_request`.  Such a function is
        executed before the first request to the application.
        c                 óB   •— | j         j                             ‰¦  «        S r=   )r   Úbefore_first_request_funcsr8   r€   s    €r   rQ   z4Blueprint.before_app_first_request.<locals>.<lambda>"  s   ø€  1¤5Ô#C×#JÒ#JÈ1Ñ#MÔ#M€ r   rW   r{   s    `r   Úbefore_app_first_requestz"Blueprint.before_app_first_request  s(   ø€ ð 	×ÒÐMÐMÐMÐMÑNÔNÐNØˆr   c                 ó<   ‡ ‡— ‰                       ˆˆ fd„¦  «         ‰S )z²Like :meth:`Flask.after_request` but for a blueprint.  This function
        is only executed after each request that is handled by a function of
        that blueprint.
        c                 ót   •— | j         j                             ‰j        g ¦  «                             ‰¦  «        S r=   )r   Úafter_request_funcsr   r    r8   rz   s    €€r   rQ   z)Blueprint.after_request.<locals>.<lambda>*  s*   ø€  1¤5Ô#<ßŠZ˜œ	 2Ñ&Ô&§v¢v¨a¡y¤yð r   rW   r{   s   ``r   Úafter_requestzBlueprint.after_request%  r}   r   c                 ó8   ‡— |                       ˆfd„¦  «         ‰S )z™Like :meth:`Flask.after_request` but for a blueprint.  Such a function
        is executed after each request, even if outside of the blueprint.
        c                 ój   •— | j         j                             d g ¦  «                             ‰¦  «        S r=   )r   r‰   r   r8   r€   s    €r   rQ   z-Blueprint.after_app_request.<locals>.<lambda>2  s(   ø€  1¤5Ô#<ßŠZ˜˜bÑ!Ô!§&¢&¨¡)¤)ð r   rW   r{   s    `r   Úafter_app_requestzBlueprint.after_app_request.  r‚   r   c                 ó<   ‡ ‡— ‰                       ˆˆ fd„¦  «         ‰S )a=  Like :meth:`Flask.teardown_request` but for a blueprint.  This
        function is only executed when tearing down requests handled by a
        function of that blueprint.  Teardown request functions are executed
        when the request context is popped, even when no actual request was
        performed.
        c                 ót   •— | j         j                             ‰j        g ¦  «                             ‰¦  «        S r=   )r   Úteardown_request_funcsr   r    r8   rz   s    €€r   rQ   z,Blueprint.teardown_request.<locals>.<lambda>=  s*   ø€  1¤5Ô#?ßŠZ˜œ	 2Ñ&Ô&§v¢v¨a¡y¤yð r   rW   r{   s   ``r   Úteardown_requestzBlueprint.teardown_request6  s<   øø€ ð 	×Òð 1ð 1ð 1ð 1ð 1ñ 	2ô 	2ð 	2àˆr   c                 ó8   ‡— |                       ˆfd„¦  «         ‰S )z°Like :meth:`Flask.teardown_request` but for a blueprint.  Such a
        function is executed when tearing down each request, even if outside of
        the blueprint.
        c                 ój   •— | j         j                             d g ¦  «                             ‰¦  «        S r=   )r   r�   r   r8   r€   s    €r   rQ   z0Blueprint.teardown_app_request.<locals>.<lambda>F  s(   ø€  1¤5Ô#?ßŠZ˜˜bÑ!Ô!§&¢&¨¡)¤)ð r   rW   r{   s    `r   Úteardown_app_requestzBlueprint.teardown_app_requestA  s6   ø€ ð
 	×Òð ,ð ,ð ,ð ,ñ 	-ô 	-ð 	-àˆr   c                 ó<   ‡ ‡— ‰                       ˆˆ fd„¦  «         ‰S )z�Like :meth:`Flask.context_processor` but for a blueprint.  This
        function is only executed for requests handled by a blueprint.
        c                 ót   •— | j         j                             ‰j        g ¦  «                             ‰¦  «        S r=   )r   Útemplate_context_processorsr   r    r8   rz   s    €€r   rQ   z-Blueprint.context_processor.<locals>.<lambda>N  s*   ø€  1¤5Ô#DßŠZ˜œ	 2Ñ&Ô&§v¢v¨a¡y¤yð r   rW   r{   s   ``r   Úcontext_processorzBlueprint.context_processorJ  s<   øø€ ð 	×Òð 1ð 1ð 1ð 1ð 1ñ 	2ô 	2ð 	2àˆr   c                 ó8   ‡— |                       ˆfd„¦  «         ‰S )z—Like :meth:`Flask.context_processor` but for a blueprint.  Such a
        function is executed each request, even if outside of the blueprint.
        c                 ój   •— | j         j                             d g ¦  «                             ‰¦  «        S r=   )r   r—   r   r8   r€   s    €r   rQ   z1Blueprint.app_context_processor.<locals>.<lambda>V  s(   ø€  1¤5Ô#DßŠZ˜˜bÑ!Ô!§&¢&¨¡)¤)ð r   rW   r{   s    `r   Úapp_context_processorzBlueprint.app_context_processorR  r‚   r   c                 ó   ‡ ‡— ˆˆ fd„}|S )z�Like :meth:`Flask.errorhandler` but for a blueprint.  This
        handler is used for all requests, even if outside of the blueprint.
        c                 ó<   •‡ — ‰                      ˆˆ fd„¦  «         ‰ S )Nc                 óJ   •—  | j                              ‰¦  «        ‰¦  «        S r=   )r   Úerrorhandler)rP   ÚcoderK   s    €€r   rQ   z?Blueprint.app_errorhandler.<locals>.decorator.<locals>.<lambda>_  s"   ø€ Ð'? q¤u×'9Ò'9¸$Ñ'?Ô'?ÀÑ'BÔ'B€ r   rW   )rK   r    r   s   `€€r   rL   z-Blueprint.app_errorhandler.<locals>.decorator^  s*   øø€ Ø×ÒÐBÐBÐBÐBÐBÑCÔCÐCØˆHr   r   )r   r    rL   s   `` r   Úapp_errorhandlerzBlueprint.app_errorhandlerZ  s*   øø€ ð	ð 	ð 	ð 	ð 	ð 	ð Ðr   c                 ó<   ‡ ‡— ‰                       ˆˆ fd„¦  «         ‰S )zµRegisters a function as URL value preprocessor for this
        blueprint.  It's called before the view functions are called and
        can modify the url values provided.
        c                 ót   •— | j         j                             ‰j        g ¦  «                             ‰¦  «        S r=   )r   Úurl_value_preprocessorsr   r    r8   rz   s    €€r   rQ   z2Blueprint.url_value_preprocessor.<locals>.<lambda>h  s*   ø€  1¤5Ô#@ßŠZ˜œ	 2Ñ&Ô&§v¢v¨a¡y¤yð r   rW   r{   s   ``r   Úurl_value_preprocessorz Blueprint.url_value_preprocessorc  r}   r   c                 ó<   ‡ ‡— ‰                       ˆˆ fd„¦  «         ‰S )z§Callback function for URL defaults for this blueprint.  It's called
        with the endpoint and values and should update the values passed
        in place.
        c                 ót   •— | j         j                             ‰j        g ¦  «                             ‰¦  «        S r=   )r   Úurl_default_functionsr   r    r8   rz   s    €€r   rQ   z(Blueprint.url_defaults.<locals>.<lambda>q  s*   ø€  1¤5Ô#>ßŠZ˜œ	 2Ñ&Ô&§v¢v¨a¡y¤yð r   rW   r{   s   ``r   r   zBlueprint.url_defaultsl  r}   r   c                 ó8   ‡— |                       ˆfd„¦  «         ‰S )zESame as :meth:`url_value_preprocessor` but application wide.
        c                 ój   •— | j         j                             d g ¦  «                             ‰¦  «        S r=   )r   r¤   r   r8   r€   s    €r   rQ   z6Blueprint.app_url_value_preprocessor.<locals>.<lambda>x  s(   ø€  1¤5Ô#@ßŠZ˜˜bÑ!Ô!§&¢&¨¡)¤)ð r   rW   r{   s    `r   Úapp_url_value_preprocessorz$Blueprint.app_url_value_preprocessoru  ó6   ø€ ð 	×Òð ,ð ,ð ,ð ,ñ 	-ô 	-ð 	-àˆr   c                 ó8   ‡— |                       ˆfd„¦  «         ‰S )z;Same as :meth:`url_defaults` but application wide.
        c                 ój   •— | j         j                             d g ¦  «                             ‰¦  «        S r=   )r   r¨   r   r8   r€   s    €r   rQ   z,Blueprint.app_url_defaults.<locals>.<lambda>  s(   ø€  1¤5Ô#>ßŠZ˜˜bÑ!Ô!§&¢&¨¡)¤)ð r   rW   r{   s    `r   Úapp_url_defaultszBlueprint.app_url_defaults|  r¬   r   c                 ó   ‡ ‡— ˆˆ fd„}|S )a	  Registers an error handler that becomes active for this blueprint
        only.  Please be aware that routing does not happen local to a
        blueprint so an error handler for 404 usually is not handled by
        a blueprint unless it is caused inside a view function.  Another
        special case is the 500 internal server error which is always looked
        up from the application.

        Otherwise works as the :meth:`~flask.Flask.errorhandler` decorator
        of the :class:`~flask.Flask` object.
        c                 ó>   •‡ — ‰                      ˆˆ ˆfd„¦  «         ‰ S )Nc                 óF   •— | j                              ‰j        ‰‰¦  «        S r=   ©r   Ú_register_error_handlerr    ©rP   Úcode_or_exceptionrK   r   s    €€€r   rQ   z;Blueprint.errorhandler.<locals>.decorator.<locals>.<lambda>�  s#   ø€  q¤u×'DÒ'DØ”	Ð,¨añ(1ô (1€ r   rW   )rK   r¶   r   s   `€€r   rL   z)Blueprint.errorhandler.<locals>.decoratorŽ  s?   øø€ Ø×Òð 1ð 1ð 1ð 1ð 1ð 1ñ 2ô 2ð 2àˆHr   r   )r   r¶   rL   s   `` r   rŸ   zBlueprint.errorhandlerƒ  s*   øø€ ð	ð 	ð 	ð 	ð 	ð 	ð Ðr   c                 ó@   ‡ ‡‡— ‰                       ˆˆˆ fd„¦  «         dS )a1  Non-decorator version of the :meth:`errorhandler` error attach
        function, akin to the :meth:`~flask.Flask.register_error_handler`
        application-wide function of the :class:`~flask.Flask` object but
        for error handlers limited to this blueprint.

        .. versionadded:: 0.11
        c                 óF   •— | j                              ‰j        ‰‰¦  «        S r=   r³   rµ   s    €€€r   rQ   z2Blueprint.register_error_handler.<locals>.<lambda>œ  s#   ø€  1¤5×#@Ò#@ØŒIÐ(¨!ñ$-ô $-€ r   NrW   )r   r¶   rK   s   ```r   Úregister_error_handlerz Blueprint.register_error_handler”  sG   øøø€ ð 	×Òð -ð -ð -ð -ð -ð -ñ 	.ô 	.ð 	.ð 	.ð 	.r   )NNNNNNN)Fr$   r=   )$r%   r&   r'   r(   r5   r4   r   r:   r@   rB   rH   rM   r   r"   r_   r[   rk   rj   rs   rr   r|   r�   r†   rŠ   r�   r‘   r”   r˜   r›   r¡   r¥   r   r«   r¯   rŸ   r¹   r   r   r   r*   r*   O   s4  € € € € € ðð ð "ÐØ Ðà8<Ø7;Ø?CØð0ð 0ð 0ð 0ð -ð -ð -ð	:ð 	:ð 	:ðKð Kð Kð Kðð ð ð ð"ð ð ðBð Bð Bð Bðð ð ð
ð 
ð 
ð 
ð
,ð 
,ð 
,ð 
,ðð ð ð ð,ð ,ð ,ð ,ðð ð ð ð,ð ,ð ,ð ,ðð ð ðð ð ðð ð ðð ð ðð ð ð	ð 	ð 	ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð"	.ð 	.ð 	.ð 	.ð 	.r   r*   N)	r(   Ú	functoolsr   Úhelpersr   r   Úobjectr   r*   r   r   r   ú<module>r½      s­   ðð	ð 	ð %Ð $Ð $Ð $Ð $Ð $à BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bð;Gð ;Gð ;Gð ;Gð ;G˜&ñ ;Gô ;Gð ;Gð|N.ð N.ð N.ð N.ð N.Ð#ñ N.ô N.ð N.ð N.ð N.r   