o
    i	                  	   @   s   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	 ddl
mZ G dd	 d	eZG d
d deZG dd deeee	eeZdS )   )cached_property   )WWWAuthenticateMixin)BaseResponse)CommonResponseDescriptorsMixin)CORSResponseMixin)ETagResponseMixinc                   @   sX   e Zd ZdZdZdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zedd ZdS )ResponseStreamzA file descriptor like object used by the :class:`ResponseStreamMixin` to
    represent the body of the stream.  It directly pushes into the response
    iterable of the response object.
    zwb+c                 C   s   || _ d| _d S )NF)responseclosed)selfr
    r   U/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/werkzeug/wrappers/response.py__init__   s   
zResponseStream.__init__c                 C   sB   | j rtd| jjdd | jj| | jjdd  t|S )NI/O operation on closed fileT)mutablezContent-Length)r   
ValueErrorr
   _ensure_sequenceappendheaderspoplen)r   valuer   r   r   write   s   zResponseStream.writec                 C   s   |D ]}|  | qd S N)r   )r   seqitemr   r   r   
writelines   s   zResponseStream.writelinesc                 C   s
   d| _ d S )NT)r   r   r   r   r   close!   s   
zResponseStream.closec                 C   s   | j rtdd S )Nr   r   r   r   r   r   r   flush$   s   zResponseStream.flushc                 C   s   | j rtddS )Nr   Fr    r   r   r   r   isatty(   s   zResponseStream.isattyc                 C   s   | j   ttt| j j S r   )r
   r   summapr   r   r   r   r   tell-   s   
zResponseStream.tellc                 C   s   | j jS r   )r
   charsetr   r   r   r   encoding1   s   zResponseStream.encodingN)__name__
__module____qualname____doc__moder   r   r   r   r!   r"   r%   propertyr'   r   r   r   r   r	   	   s    r	   c                   @   s   e Zd ZdZedd ZdS )ResponseStreamMixinzMixin for :class:`BaseResponse` subclasses.  Classes that inherit from
    this mixin will automatically get a :attr:`stream` property that provides
    a write-only interface to the response iterable.
    c                 C   s   t | S )z+The response iterable as write-only stream.)r	   r   r   r   r   stream<   s   zResponseStreamMixin.streamN)r(   r)   r*   r+   r   r/   r   r   r   r   r.   6   s    r.   c                   @   s   e Zd ZdZdS )Responsea  Full featured response object implementing the following mixins:

    -   :class:`ETagResponseMixin` for etag and cache control handling
    -   :class:`WWWAuthenticateMixin` for HTTP authentication support
    -   :class:`~werkzeug.wrappers.cors.CORSResponseMixin` for Cross
        Origin Resource Sharing headers
    -   :class:`ResponseStreamMixin` to add support for the ``stream``
        property
    -   :class:`CommonResponseDescriptorsMixin` for various HTTP
        descriptors
    N)r(   r)   r*   r+   r   r   r   r   r0   B   s    r0   N)utilsr   authr   base_responser   common_descriptorsr   corsr   etagr   objectr	   r.   r0   r   r   r   r   <module>   s     -
