+
    Nj2                        ^ RI Ht ^ RIt^RIHt ^RIHt ^RIHt ]P                  ! R]P                  R]P                  3,          R7      t]! . RO4      t ! R	 R
4      t ! R R]4      tR# )    )annotationsN)typing)current_app)requestF.)boundc                  v    ] tR t^t$ RtRtR]R&   RtR]R&   . tR]R&   R	t	R
]R&   R R lt
]R R l4       tRtR# )Viewa  Subclass this class and override :meth:`dispatch_request` to
create a generic class-based view. Call :meth:`as_view` to create a
view function that creates an instance of the class with the given
arguments and calls its ``dispatch_request`` method with any URL
variables.

See :doc:`views` for a detailed guide.

.. code-block:: python

    class Hello(View):
        init_every_request = False

        def dispatch_request(self, name):
            return f"Hello, {name}!"

    app.add_url_rule(
        "/hello/<name>", view_func=Hello.as_view("hello")
    )

Set :attr:`methods` on the class to change what methods the view
accepts.

Set :attr:`decorators` on the class to apply a list of decorators to
the generated view function. Decorators applied to the class itself
will not be applied to the generated view function!

Set :attr:`init_every_request` to ``False`` for efficiency, unless
you need to store request-global data on ``self``.
Nz$t.ClassVar[t.Collection[str] | None]methodszt.ClassVar[bool | None]provide_automatic_optionsz(t.ClassVar[list[t.Callable[..., t.Any]]]
decoratorsTzt.ClassVar[bool]init_every_requestc                   V ^8  d   QhRR/# )   returnft.ResponseReturnValue )formats   "M/data/cameron/venvs/serve_omidlab/lib/python3.14/site-packages/flask/views.py__annotate__View.__annotate__N   s     $ $"8 $    c                    \        4       h)zThe actual view function behavior. Subclasses must override
this and return a valid response. Any variables from the URL
rule are passed as keyword arguments.
)NotImplementedError)selfs   &r   dispatch_requestView.dispatch_requestN   s    
 "##r   c               (    V ^8  d   QhRRRRRRRR/# )r   namestr
class_argst.Anyclass_kwargsr   zft.RouteCallabler   )r   s   "r   r   r   V   s,     1 11%*1<A1	1r   c                  aaaa V P                   '       d   R VVV3R lloMV ! S/ SB oR V3R lloV P                  '       d4   VSn        V P                  Sn        V P                   F  pV! S4      oK  	  V Sn        VSn        V P
                  Sn        V P                  Sn        V P                  Sn        V P                  Sn        S# )a  Convert the class into a view function that can be registered
for a route.

By default, the generated view will create a new instance of the
view class for every request and call its
:meth:`dispatch_request` method. If the view class sets
:attr:`init_every_request` to ``False``, the same instance will
be used for every request.

Except for ``name``, all other arguments passed to this method
are forwarded to the view class ``__init__`` method.

.. versionchanged:: 2.2
    Added the ``init_every_request`` class attribute.
c                    V ^8  d   QhRRRR/# r   kwargsr"   r   r   r   )r   s   "r   r   "View.as_view.<locals>.__annotate__j   s     P Pu P)? Pr   c                 t   < SP                   ! S/ SB p\        P                  ! VP                  4      ! R/ V B # Nr   )
view_classr   ensure_syncr   )r'   r   r!   r#   views   , r   r-   View.as_view.<locals>.viewj   s=    #/ #..t/D/DEOOOr   c                    V ^8  d   QhRRRR/# r&   r   )r   s   "r   r   r(   s   s     P Pu P)? Pr   c                 P   < \         P                  ! SP                  4      ! R/ V B # r*   )r   r,   r   )r'   r   s   ,r   r-   r.   s   s"    "..t/D/DEOOOr   )r   r   __name__
__module__r+   __doc__r   r   )clsr   r!   r#   	decoratorr   r-   s   &&jl @@r   as_viewView.as_viewU   s    & !!!P P 
3l3DP P >>> DM!nnDO ^^	  , {{..{{),)F)F&r   r   )r1   r2   __qualname____firstlineno__r3   r   __annotations__r   r   r   r   classmethodr6   __static_attributes__r   r   r   r
   r
      sW    D 59G18
 :>6= <>J8= ,0(/$ 1 1r   r
   c                  >   a  ] tR t^tRtR V 3R lltR R ltRtV ;t# )
MethodViewa  Dispatches request methods to the corresponding instance methods.
For example, if you implement a ``get`` method, it will be used to
handle ``GET`` requests.

This can be useful for defining a REST API.

:attr:`methods` is automatically set based on the methods defined on
the class.

See :doc:`views` for a detailed guide.

.. code-block:: python

    class CounterAPI(MethodView):
        def get(self):
            return str(session.get("counter", 0))

        def post(self):
            session["counter"] = session.get("counter", 0) + 1
            return redirect(url_for("counter"))

    app.add_url_rule(
        "/counter", view_func=CounterAPI.as_view("counter")
    )
c                    V ^8  d   QhRRRR/# )r   r'   r"   r   Noner   )r   s   "r   r   MethodView.__annotate__   s     & & &4 &r   c                	  < \         SV `  ! R/ VB  R V P                  9  d   \        4       pV P                   F3  p\        VR R4      '       g   K  VP                  VP                  4       K5  	  \         F5  p\        W4      '       g   K  VP                  VP                  4       4       K7  	  V'       d	   W n        R# R# R# )r   Nr   )super__init_subclass____dict__set	__bases__getattrupdater   http_method_funcshasattraddupper)r4   r'   r   basekey	__class__s   &,   r   rD   MethodView.__init_subclass__   s    !+F+CLL(eG4D11NN4<<0 & )3$$KK		, ) %  )r   c                    V ^8  d   QhRRRR/# r&   r   )r   s   "r   r   rA      s     	7 	7 	73I 	7r   c                	   \        V \        P                  P                  4       R 4      pVf#   \        P                  R8X  d   \        V RR 4      pVf   Q R\        P                  : 24       h\        P
                  ! V4      ! R/ VB # )NHEADgetzUnimplemented method r   )rH   r   methodlowerr   r,   )r   r'   meths   &, r   r   MethodView.dispatch_request   st    tW^^113T: <GNNf44-DK#88J!KK&&t,6v66r   r   )	r1   r2   r8   r9   r3   rD   r   r<   __classcell__)rP   s   @r   r>   r>      s    4& &"	7 	7r   r>   )rU   postheadoptionsdeleteputtracepatch)
__future__r   r   t ftglobalsr   r   TypeVarCallableAnyr   	frozensetrJ   r
   r>   r   r   r   <module>rk      s\    "     IIcCJ/0I 
w wt57 57r   