
    Nwg                     B    d Z ddlmZ ddlmZ ddlmZ  G d de      Zy)z
The Response class in REST framework is similar to HTTPResponse, except that
it is initialized with unrendered data, instead of a pre-rendered string.

The appropriate renderer is called during Django's template response rendering.
    )	responses)SimpleTemplateResponse)
Serializerc                   Z     e Zd ZdZ	 	 	 d fd	Zd Zed        Zed        Z fdZ	 xZ
S )Responsez]
    An HttpResponse that allows its data to be rendered into
    arbitrary media types.
    c                     t         
|   d|       t        |t              rd}t	        |      || _        || _        || _        || _        |r|j                         D ]
  \  }}	|	| |<    yy)z
        Alters the init arguments slightly.
        For example, drop 'template_name', and instead use 'data'.

        Setting 'renderer' and 'media_type' will typically be deferred,
        For example being set automatically by the `APIView`.
        N)statusztYou passed a Serializer instance as data, but probably meant to pass serialized `.data` or `.error`. representation.)
super__init__
isinstancer   AssertionErrordatatemplate_name	exceptioncontent_typeitems)selfr   r	   r   headersr   r   msgnamevalue	__class__s             N/var/www/horilla/myenv/lib/python3.12/site-packages/rest_framework/response.pyr   zResponse.__init__   s     	f-dJ', 
 !%%	*"(&}} #e"T
#     c                     | S )N )clsargskwargss      r   __class_getitem__zResponse.__class_getitem__2   s    
r   c                    t        | dd       }t        | dd       }t        | dd       }|sJ d       |sJ d       |J d       | |d<   |j                  }|j                  }| j                  }||dj	                  ||      }n||}|| d	<   |j                  | j                  ||      }t        |t              r|sJ d
       |j                  |      S |s| d	= |S )Naccepted_rendereraccepted_media_typerenderer_contextz&.accepted_renderer not set on Responsez(.accepted_media_type not set on Responsez%.renderer_context not set on Responseresponsez{}; charset={}zContent-Typez?renderer returned unicode, and did not specify a charset value.)
getattr
media_typecharsetr   formatrenderr   r   strencode)r   rendererr#   contextr'   r(   r   rets           r   rendered_contentzResponse.rendered_content5   s   4!4d;%d,A4H$ 2D9AAAx"N$NN""K$KK""
((
""((G$7+22:wGL!%L+^oodii)<gFc3 #7 ::g&&^$
r   c                 B    t        j                  | j                  d      S )zw
        Returns reason text corresponding to our HTTP response status code.
        Provided for convenience.
         )r   getstatus_code)r   s    r   status_textzResponse.status_textW   s     }}T--r22r   c                 L    t         |          }dD ]
  }||v s||=  g |d<   |S )zO
        Remove attributes from the response that shouldn't be cached.
        )r"   r$   resolver_matchclientrequestjsonwsgi_request_closable_objects)r
   __getstate__)r   statekeyr   s      r   r=   zResponse.__getstate___   sE     $&
 	C e|#J	 &(!"r   )NNNNFN)__name__
__module____qualname____doc__r   r    propertyr0   r5   r=   __classcell__)r   s   @r   r   r      sP    
 *.-1/3#<  B 3 3 r   r   N)rC   http.clientr   django.template.responser   rest_framework.serializersr   r   r   r   r   <module>rI      s$    " ; 1]% ]r   