HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib/python3.10/site-packages/flask/__pycache__/views.cpython-310.pyc
o

'we��@sfddlmZddlZddlmZddlmZddlmZe	gd��Z
Gdd	�d	�ZGd
d�de�ZdS)�)�annotationsN�)�typing)�current_app)�request)�get�post�head�options�delete�put�trace�patchc@sZeZdZUdZdZded<dZded<gZded<d	Zd
ed<ddd�Z	e
ddd��ZdS)�ViewaSubclass 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]�methodszt.ClassVar[bool | None]�provide_automatic_optionszt.ClassVar[list[t.Callable]]�
decoratorsTzt.ClassVar[bool]�init_every_request�return�ft.ResponseReturnValuecCst��)z�The 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��self�r�D/home/arjun/projects/env/lib/python3.10/site-packages/flask/views.py�dispatch_requestMszView.dispatch_request�name�str�
class_args�t.Any�class_kwargs�ft.RouteCallablecs�|jr
d	���fdd��n|�i����d	�fdd��|jr/|�_|j�_|jD]}|���q(|�_|�_|j�_|j�_|j�_|j�_�S)
afConvert 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.
        �kwargsrrrcs&�j�i���}t�|j�di|��S�Nr)�
view_classr�ensure_syncr)r"r)rr �viewrrr&is��zView.as_view.<locals>.viewcst��j�di|��Sr#)rr%r)r"rrrr&rsN�r"rrr)rr�__name__�
__module__r$�__doc__rr)�clsrrr �	decoratorr)rr rr&r�as_viewTs 

zView.as_view)rr)rrrrr rrr!)r(r)�__qualname__r*r�__annotations__rrrr�classmethodr-rrrrrs
"
rcs,eZdZdZd�fdd�Zdd	d
�Z�ZS)
�
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")
        )
    r"rr�Nonecs~t�jdi|��d|jvr;t�}|jD]}t|dd�r"|�|j�qtD]}t	||�r3|�
|���q%|r=||_dSdSdS)Nrr)�super�__init_subclass__�__dict__�set�	__bases__�getattr�updater�http_method_funcs�hasattr�add�upper)r+r"r�base�key��	__class__rrr4�s

�
�
�zMethodView.__init_subclass__rcKs\t|tj��d�}|durtjdkrt|dd�}|dus$Jdtj����t�|�di|��S)N�HEADrzUnimplemented method r)r8r�method�lowerrr%)rr"�methrrrr�s
zMethodView.dispatch_request)r"rrr2r')r(r)r.r*r4r�
__classcell__rrr@rr1�sr1)
�
__future__rr�t��ft�globalsrr�	frozensetr:rr1rrrr�<module>s�z