Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
djangorestframework / __pycache__ / renderers.cpython-35.pyc
Size: Mime:


«¬šYŒã@sŒdZddlmZddlZddlZddlmZddlmZddl	m
Z
ddlmZddl
mZdd	lmZdd
lmZmZddlmZddlmZdd
lmZddlmZmZmZmZddlm Z m!Z!m"Z"m#Z#m$Z$m%Z%ddl&m'Z'ddl(m)Z)m*Z*ddl+m,Z,ddl-m.Z.ddl/m0Z0ddl1m2Z2dd„Z3Gdd„de4ƒZ5Gdd„de5ƒZ6Gdd„de5ƒZ7Gdd„de7ƒZ8Gd d!„d!e5ƒZ9Gd"d#„d#e5ƒZ:Gd$d%„d%e:ƒZ;Gd&d'„d'e5ƒZ<Gd(d)„d)e5ƒZ=Gd*d+„d+e5ƒZ>Gd,d-„d-e5ƒZ?dS).a
Renderers are used to serialize a response into specific media types.

They give us a generic way of being able to handle various media types
on the response, such as JSON encoded data or HTML output.

REST framework also provides an HTML renderer that renders the browsable API.
é)Úunicode_literalsN)ÚOrderedDict)Úforms)Úsettings)ÚImproperlyConfigured)ÚPage)Úparse_header)ÚTemplateÚloader)Úencode_multipart)Úsix)Ú	mark_safe)ÚVERSIONÚ
exceptionsÚserializersÚstatus)ÚINDENT_SEPARATORSÚLONG_SEPARATORSÚSHORT_SEPARATORSÚcoreapiÚpygments_cssÚtemplate_render)Ú
ParseError)Úis_form_media_typeÚoverride_method)Úapi_settings)Úencoders)Úget_breadcrumbs)ÚClassLookupDictcCs|dkrdS|S)Nr©)ÚvaluerrúW/Users/carlton/Documents/Django-Stack/django-rest-framework/rest_framework/renderers.pyÚzero_as_none&sr"c@s@eZdZdZdZdZdZdZdddd„ZdS)ÚBaseRendererzŒ
    All renderers should extend this class, setting the `media_type`
    and `format` attributes, and override the `.render()` method.
    Nzutf-8ÚtextcCstdƒ‚dS)Nz3Renderer class requires .render() to be implemented)ÚNotImplementedError)ÚselfÚdataÚaccepted_media_typeÚrenderer_contextrrr!Úrender4szBaseRenderer.render)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
media_typeÚformatÚcharsetÚrender_styler*rrrr!r#*sr#c@sbeZdZdZdZdZejZe	j
Ze	jZ
dZdd„Zdddd„ZdS)	ÚJSONRendererz,
    Renderer which serializes to JSON.
    zapplication/jsonÚjsonNc
Csy|rit|jdƒƒ\}}y*tttt|dƒdƒdƒƒSWntttfk
rhYnX|j	ddƒS)NÚasciiÚindentér)
rÚencoder"ÚmaxÚminÚintÚKeyErrorÚ
ValueErrorÚ	TypeErrorÚget)r&r(r)Úbase_media_typeÚparamsrrr!Ú
get_indentHs*zJSONRenderer.get_indentc
CsÏ|dkrtƒS|pi}|j||ƒ}|dkrU|jrLtnt}nt}tj|d|jd|d|j	d|ƒ}t
|tjƒrË|j
ddƒj
dd	ƒ}t|jd
ƒƒS|S)zB
        Render `data` into JSON, returning a bytestring.
        NÚclsr6Úensure_asciiÚ
separatorsu
z\u2028u
z\u2029zutf-8)ÚbytesrBÚcompactrrrr4ÚdumpsÚ
encoder_classrDÚ
isinstancerÚ	text_typeÚreplacer8)r&r'r(r)r6rEÚretrrr!r*Ws	zJSONRenderer.render)r+r,r-r.r/r0rÚJSONEncoderrIrÚUNICODE_JSONrDÚCOMPACT_JSONrGr1rBr*rrrr!r38s	
	r3c@s|eZdZdZdZdZdZddgZdZdddd	„Z	d
d„Z
dd
„Zdd„Zdd„Z
dS)ÚTemplateHTMLRenderera_
    An HTML renderer for use with templates.

    The data supplied to the Response object should be a dictionary that will
    be used as context for the template.

    The template name is determined by (in order of preference):

    1. An explicit `.template_name` attribute set on the response.
    2. An explicit `.template_name` attribute set on this class.
    3. The return result of calling `view.get_template_names()`.

    For example:
        data = {'users': User.objects.all()}
        return Response(data, template_name='users.html')

    For pre-rendered HTML, see StaticHTMLRenderer.
    z	text/htmlÚhtmlNz%(status_code)s.htmlzapi_exception.htmlzutf-8c
Cs²|p	i}|d}|d}|d}|jrE|j|ƒ}n!|j||ƒ}|j|ƒ}t|dƒr|j|||ƒ}	n|j||ƒ}	t||	d|ƒS)aQ
        Renders data to HTML, using Django's standard template rendering.

        The template name is determined by (in order of preference):

        1. An explicit .template_name set on the response.
        2. An explicit .template_name set on this class.
        3. The return result of calling view.get_template_names().
        ÚviewÚrequestÚresponseÚresolve_context)Ú	exceptionÚget_exception_templateÚget_template_namesÚresolve_templateÚhasattrrVÚget_template_contextr)
r&r'r(r)rSrTrUÚtemplateÚtemplate_namesÚcontextrrr!r*–s



	zTemplateHTMLRenderer.rendercCs
tj|ƒS)N)r
Úselect_template)r&r^rrr!rZ²sz%TemplateHTMLRenderer.resolve_templatecCs$|d}|jr |j|d<|S)NrUÚstatus_code)rWra)r&r'r)rUrrr!r\µs
	
z)TemplateHTMLRenderer.get_template_contextcCsh|jr|jgS|jr&|jgSt|dƒr?|jƒSt|dƒrX|jgStdƒ‚dS)NrYÚ
template_namezaReturned a template response with no `template_name` attribute set on either the view or response)rbr[rYr)r&rUrSrrr!rY»s	
	


z'TemplateHTMLRenderer.get_template_namescsf‡fdd†|jDƒ}y|j|ƒSWn2tk
ratdˆjˆjjƒfƒSYnXdS)Ncs#g|]}|dˆji‘qS)ra)ra)Ú.0Úname)rUrr!ú
<listcomp>És	z?TemplateHTMLRenderer.get_exception_template.<locals>.<listcomp>z%d %s)Úexception_template_namesrZÚ	Exceptionr	raÚstatus_textÚtitle)r&rUr^r)rUr!rXÈs

z+TemplateHTMLRenderer.get_exception_template)r+r,r-r.r/r0rbrfr1r*rZr\rYrXrrrr!rQzs	
rQc@s:eZdZdZdZdZdZdddd„ZdS)ÚStaticHTMLRendereraV
    An HTML renderer class that simply returns pre-rendered HTML.

    The data supplied to the Response object should be a string representing
    the pre-rendered HTML content.

    For example:
        data = '<html><body>example</body></html>'
        return Response(data)

    For template rendered HTML, see TemplateHTMLRenderer.
    z	text/htmlrRzutf-8NcCs“|p	i}|jdƒ}|r|jr|d}|j|ƒ}t|dƒrj|j|||ƒ}n|j||ƒ}t||d|ƒS|S)NrUrTrV)r?rWrXr[rVr\r)r&r'r(r)rUrTr]r_rrr!r*çs
zStaticHTMLRenderer.render)r+r,r-r.r/r0r1r*rrrr!rjÖs
rjcZ@s“eZdZdZdZdZdZdZdZe	e
jddd	d
ie
jddd	die
j
ddd	die
jddd	d
ie
jddd	d
ie
jddd	die
jddd	die
jddd	die
jddd	die
jddie
jddie
jddie
jddie
jddie
jddie
jddie
jddiiƒZdd„Zdddd„ZdS)ÚHTMLFormRendererai
    Renderers serializer data into an HTML form.

    If the serializer was instantiated without an object then this will
    return an HTML form not bound to any object,
    otherwise it will return an HTML form with the appropriate initial data
    populated from the object.

    Note that rendering of field and form errors is not currently supported.
    z	text/htmlÚformzutf-8zrest_framework/vertical/z	form.htmlÚ
base_templatez
input.htmlÚ
input_typer$ÚemailÚurlÚnumberzdatetime-localÚdateÚtimeÚfilez
checkbox.htmlzselect.htmlzselect_multiple.htmlz
fieldset.htmlzlist_fieldset.htmlcCst|jtjƒrdSt|j|ƒ}|j|jƒd|kra|jd|j	ƒ|d<||d<|j
ƒ}|jdƒdkr¶t|jtj
ƒr¶|jjdƒ|_d|krÏ|d}n|djdƒd|d	}tj|ƒ}d
|d|i}t||ƒS)NÚÚ
template_packÚrendererrnzdatetime-localÚZr]ú/rmÚfieldÚstyle)rJÚ_fieldrÚHiddenFieldÚdictÚ
default_styleÚupdater{r?rvÚ
as_form_fieldr rrKÚrstripÚstripr
Úget_templater)r&rzZparent_styler{rbr]r_rrr!Úrender_fieldGs 
*
zHTMLFormRenderer.render_fieldNc
Csœ|p	i}|j}|jdiƒ}d|kr@|j|d<||d<|djdƒ}|d|j}tj|ƒ}d|d|i}	t||	ƒS)zN
        Render serializer data and return an HTML form, as a string.
        r{rvrwryrl)Ú
serializerr?rvrƒrmr
r„r)
r&r'r(r)rlr{rvrbr]r_rrr!r*`s	

zHTMLFormRenderer.render)r+r,r-r.r/r0r1rvrmrrÚFieldÚ
EmailFieldÚURLFieldÚIntegerFieldÚ
FloatFieldÚ
DateTimeFieldÚ	DateFieldÚ	TimeFieldÚ	FileFieldÚBooleanFieldÚChoiceFieldÚMultipleChoiceFieldÚRelatedFieldÚManyRelatedFieldÚ
SerializerÚListSerializerÚ
FilePathFieldrr…r*rrrr!rk÷sh
																rkc@sÜeZdZdZdZdZdZdZdZe	Z
dd„Zd	d
„Zdd„Z
d
d„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zddd d!„ZdS)"ÚBrowsableAPIRendererz6
    HTML renderer used to self-document the API.
    z	text/htmlÚapizrest_framework/api.htmlz rest_framework/filters/base.htmlzutf-8cCsOdd„|jDƒ}dd„|Dƒ}|s3dS|rD|dƒS|dƒS)zs
        Return an instance of the first valid renderer.
        (Don't use another documenting renderer.)
        cSs%g|]}t|tƒs|‘qSr)Ú
issubclassr˜)rcrwrrr!re†s	z=BrowsableAPIRenderer.get_default_renderer.<locals>.<listcomp>cSs%g|]}t|dƒs|‘qS)rY)r[)rcrwrrr!reˆs	Nr)Úrenderer_classes)r&rSÚ	renderersZnon_template_renderersrrr!Úget_default_renderersz)BrowsableAPIRenderer.get_default_renderercCsu|s
dSd|d<|j|||ƒ}t|ddƒ}|d	ksWtd|ƒ‚|dkrqdt|ƒS|S)
zm
        Get the content as if it had been rendered by the default
        non-documenting renderer.
        z[No renderers were found]ér6r2r$Úbinaryz7Expected .render_style "text" or "binary", but got "%s"z[%d bytes of binary content])ztextzbinary)r*ÚgetattrÚAssertionErrorÚlen)r&rwr'r(r)Úcontentr2rrr!Úget_content‘s

z BrowsableAPIRenderer.get_contentcCs`||jkrdSy-|j|ƒ|dk	r?|j||ƒWntjk
r[dSYnXdS)zI
        Returns True if a form should be shown for this method.
        NFT)Úallowed_methodsÚcheck_permissionsÚcheck_object_permissionsrÚAPIException)r&rSÚmethodrTÚobjrrr!Úshow_form_for_method¥s
	z)BrowsableAPIRenderer.show_form_for_methodc	Os,d|d|jd|i|d<|||ŽS)NrTr0rSr_)r0)r&Úserializer_classZ
view_instancerTÚargsÚkwargsrrr!Ú_get_serializer´s	z$BrowsableAPIRenderer._get_serializercCst|ddƒ}|rUt|ddƒrUt|ddƒ}t|tƒr[d}nd}|j|kr­|dk	r­yd|ji}Wntk
r£i}YnX|}ni}d}t|||ƒL}|j||||ƒsêdS|dkrúd	St|d
dƒ}	t|ddƒ}
|	r,|
sItdd
„|j	DƒƒrMdS|dk	ry|j
|ƒSWntk
r~YnX|	r»|dkr©|jd||}q|j|}nK|dkrë|j
|j||d||}n|j
|j|||}|j
|ƒSWdQRXdS)zÏ
        Return a string representing a rendered HTML form, possibly bound to
        either the input or output data.

        In the absence of the View having an associated form then return None.
        r†NÚmanyFÚinstancer'ÚDELETEÚOPTIONSTÚget_serializerr¬css|]}t|jƒVqdS)N)rr/)rcÚparserrrr!ú	<genexpr>åsz>BrowsableAPIRenderer.get_rendered_html_form.<locals>.<genexpr>ÚPUTÚPATCH)zDELETEzOPTIONS)úPUTúPATCH)r¹rº)r rJrr©r'rrr«ÚanyÚparser_classesÚrender_form_for_serializerr>r´r¯r¬)r&r'rSr©rTr†r±r®Zexisting_serializerZhas_serializerZhas_serializer_classrrr!Úget_rendered_html_form¼sN	
	
z+BrowsableAPIRenderer.get_rendered_html_formcCsJt|dƒr|jƒ|jƒ}|j|j|jdddiiƒS)NÚinitial_datar{rvzrest_framework/horizontal)r[Úis_validÚform_renderer_classr*r'r()r&r†Z
form_rendererrrr!r½ÿs
z/BrowsableAPIRenderer.render_form_for_serializerc
sÂt|ddƒ‰ˆrUtˆddƒrUtˆddƒ}t|tƒr[d}nd}t|||ƒN}|j||||ƒsŒdS|jd}t|ddƒ}t|dƒrR|rR|dkrá|jd|ƒ‰n|jƒ‰|ƒ}|j}	|j	j
ƒ}
d|
d<‡fd
d†ˆjjƒDƒ}|j
||	|
ƒ‰nd‰dd„|jDƒ}dd„|Dƒ‰|d‰G‡‡‡fdd†dtjƒ}|ƒSWdQRXdS)z¸
        Returns a form that allows for arbitrary content types to be tunneled
        via standard HTML forms.
        (Which are typically application/x-www-form-urlencoded)
        r†Nr°Fr±rÚrenderer_classr´r·r¸ržr6cs8i|].\}}tˆj|tjƒs||“qSr)rJÚfieldsrr})rcÚkÚv)r†rr!ú
<dictcomp>/s		
z:BrowsableAPIRenderer.get_raw_data_form.<locals>.<dictcomp>cSsg|]}|j‘qSr)r/)rcrµrrr!re8s	z:BrowsableAPIRenderer.get_raw_data_form.<locals>.<listcomp>cSsg|]}||f‘qSrr)rcr/rrr!re9s	c
sveZdZejddd”d”dejdddiƒƒZejdd	dejddd
iƒd”ƒZ	dS)zBBrowsableAPIRenderer.get_raw_data_form.<locals>.GenericContentFormÚlabelz
Media typeÚchoicesÚinitialÚwidgetÚattrsz
data-overridezcontent-typeZContentr£N)
r+r,r-rr‘ÚSelectÚ
_content_typeÚ	CharFieldÚTextareaÚ_contentr)rÈr£rÉrr!ÚGenericContentForm<s		rÑ)zPUTzPATCH)r rJrrr«r¼r[r´r(r)Úcopyr'Úitemsr*rÚForm)
r&r'rSr©rTr±Zdefault_parserrÂrwÚacceptedr_Úmedia_typesrÑr)rÈr£rÉr†r!Úget_raw_data_form
s6	
		
"
%
z&BrowsableAPIRenderer.get_raw_data_formcCs
|jƒS)N)Ú
get_view_name)r&rSrrr!Úget_nameKszBrowsableAPIRenderer.get_namecCs,|tjtjfkrdS|jddƒS)NrurRT)rÚHTTP_401_UNAUTHORIZEDÚHTTP_403_FORBIDDENÚget_view_description)r&rSrarrr!Úget_descriptionNsz$BrowsableAPIRenderer.get_descriptioncCst|j|ƒS)N)rÚpath)r&rTrrr!rSsz$BrowsableAPIRenderer.get_breadcrumbsc
Cs;t|dƒs t|dƒr$dSt|ddƒ}t|tƒrHn^|dk	r“|dk	r“y|j|ƒWq¦ttfk
rdSYq¦Xnt|tƒs¦dS|jƒ}g}xK|jD]@}t|dƒrÂ|ƒj	|||ƒ}|rÂ|j
|ƒqÂW|sdStj|j
ƒ}	d|i}
t|	|
ƒS)NÚget_querysetÚfilter_backendsÚ	paginatorÚto_htmlÚelements)r[r rJÚlistÚget_resultsr>r<rßràrâÚappendr
r„Úfilter_templater)r&r'rSrTráÚquerysetrãÚbackendrRr]r_rrr!Úget_filter_formVs0 z$BrowsableAPIRenderer.get_filter_formc5Cs§|d}|d}|d}|j|ƒ}|j||d|ƒ}|j||d|ƒ}	|j||d|ƒ}
|	p~|
}tt|jƒƒƒ}d}
|rÌd|j}
|jrÌ|
d	|j7}
|
|d
<t|ddƒr|jj	r|j}nd}t
j}tt
d
dƒ}|jdƒr@|dd…}|j
ddƒ}d|j||||ƒd|d|d|d|jd|j||jƒd|j|ƒdtd|d|j|ƒd|jddd„|jDƒd|d|j||d|ƒd|j||d|ƒd |j||d!|ƒd"|j||d#|ƒd$|j|||ƒd%|	d&|d'|
d(|d)t|jd*kƒd+td,|d-|i}|S).z5
        Returns the context used to render.
        rSrTrUÚPOSTr·r¸ruz%sz ;%szContent-TyperáNÚCSRF_HEADER_NAMEZHTTP_X_CSRFTokenÚHTTP_éÚ_ú-r£ÚuserÚdescriptionrdÚversionZbreadcrumblistr¥Zavailable_formatscSsg|]}|j‘qSr)r0)rcZrenderer_clsrrr!re£s	z4BrowsableAPIRenderer.get_context.<locals>.<listcomp>Úresponse_headersZput_formZ	post_formZdelete_formr²Zoptions_formr³Zfilter_formÚraw_data_put_formÚraw_data_post_formÚraw_data_patch_formÚraw_data_put_or_patch_formZdisplay_edit_formsi“rÚcsrf_cookie_nameÚcsrf_header_name)rr×rÚsortedrÓr/r1r ráZdisplay_page_controlsrÚCSRF_COOKIE_NAMEÚ
startswithrLr¤rñrÝrarÙrrr¥r›r¾rêÚboolr)r&r'r(r)rSrTrUrwrörõr÷rørôZrenderer_content_typerárùrúr_rrr!Úget_contextusd



	
			z BrowsableAPIRenderer.get_contextNcCsŠ|p	d|_|pi|_tj|jƒ}|j|||ƒ}t||d|dƒ}|d}|jtj	kr†tj
|_|S)zG
        Render the HTML for the browsable API representation.
        rurTrU)r(r)r
r„r]rÿrrarÚHTTP_204_NO_CONTENTÚHTTP_200_OK)r&r'r(r)r]r_rMrUrrr!r*ºs
zBrowsableAPIRenderer.render)r+r,r-r.r/r0r]rçr1rkrÁrr¤r«r¯r¾r½r×rÙrÝrrêrÿr*rrrr!r˜vs(CAEr˜cs@eZdZdZdZdddd„Z‡fdd†Z‡S)Ú
AdminRendererzrest_framework/admin.htmlÚadminNc
Cs¼|p	d|_|pi|_|d}|d}|jd}|jtjkrÓ|j|||j|ƒ|_ddddij|jd	ƒ|_	t
||d
ƒ"}|j||j|jŽ}WdQRX|j
}tj|jƒ}|j|||ƒ}t||d|dƒ}	|jtjkrSd|krStj|_|jƒ|d<d}	|jtjkr¸tj|_y|j|ƒdd
|d<Wntk
r±|j|d<YnXd}	|	S)NrurUrTrSrëZCreater·ZEditZErrorsÚGETÚLocationéééþÿÿÿ)r(r)rarÚHTTP_400_BAD_REQUESTr¾r©Ú
error_formr?Úerror_titlerr­r®r'r
r„r]rÿrÚHTTP_201_CREATEDÚHTTP_303_SEE_OTHERÚbuild_absolute_urirrr<Ú	full_path)
r&r'r(r)rUrTrSr]r_rMrrr!r*Ós4


$"	
zAdminRenderer.rendercshtt|ƒj|||ƒ}t|dddƒ}|dk	rƒ|dk	rƒy|j|ƒ}Wq‰ttfk
r|}Yq‰Xn|}|dkr¤i}d}n:t|tƒrÒ|rÃ|dni}d}n|}d}dd„|j	ƒDƒ}	d	d„|j	ƒDƒ}
||d
<|	|d<|
|d<||d
<t|ddƒ|d<t|ddƒ|d<|S)zG
        Render the HTML for the browsable API representation.
        rSráNÚdetailrräcSs"g|]}|dkr|‘qS)rpr)rcÚkeyrrr!res	z-AdminRenderer.get_context.<locals>.<listcomp>cSs"g|]}|dkr|‘qS)rpr)rcrrrr!res	r{ÚcolumnsÚdetailsÚresultsr
r)
Úsuperrrÿr rår>r<rJräÚkeys)r&r'r(r)r_rárÚheaderr{rr)Ú	__class__rr!rÿûs4		



zAdminRenderer.get_context)r+r,r-r]r0r*rÿrr)rr!rÏs(rc@s[eZdZdZdZdZdZdZdddgZd	d
„Z	dddd
„Z
dS)ÚDocumentationRendererz	text/htmlrRzutf-8zrest_framework/docs/index.htmlÚemacsÚshellÚ
javascriptÚpythonc	Cs(d|d|jdt|jƒd|iS)NÚdocumentZlangsÚ
code_stylerT)Ú	languagesrr)r&r'rTrrr!rÿ*s	z!DocumentationRenderer.get_contextNcCs?tj|jƒ}|j||dƒ}t||d|dƒS)NrT)r
r„r]rÿr)r&r'r(r)r]r_rrr!r*2szDocumentationRenderer.render)r+r,r-r/r0r1r]rr rÿr*rrrr!r"src@s:eZdZdZdZdZdZdddd„ZdS)ÚSchemaJSRendererzapplication/javascriptrzutf-8zrest_framework/schema.jsNc	Cshtjjƒ}tj|j|ƒƒ}tj|jƒ}dt	|ƒi}|d}t
||d|ƒS)NÚschemarT)rÚcodecsÚ
CoreJSONCodecÚbase64Ú	b64encoder8r
r„r]r
r)	r&r'r(r)Úcodecr"r]r_rTrrr!r*>s
zSchemaJSRenderer.render)r+r,r-r/r0r1r]r*rrrr!r!8s
r!c@s:eZdZdZdZdZdZdddd„ZdS)ÚMultiPartRendererz,multipart/form-data; boundary=BoUnDaRyStRiNgÚ	multipartzutf-8ÚBoUnDaRyStRiNgNcCs\t|dƒrLx:|jƒD],\}}t|tƒstd|ƒ‚qWt|j|ƒS)NrÓz¦Test data contained a dictionary value for key '%s', but multipart uploads do not support nested data. You may want to consider using format='json' in this test case.)r[rÓrJr~r¡rÚBOUNDARY)r&r'r(r)rr rrr!r*NszMultiPartRenderer.render)r+r,r-r/r0r1r+r*rrrr!r(Hs
r(c@s@eZdZdZdZdZdd„Zdddd„ZdS)ÚCoreJSONRendererzapplication/coreapi+jsonNÚcorejsoncCststdƒ‚dS)Nz7Using CoreJSONRenderer, but `coreapi` is not installed.)rr¡)r&rrr!Ú__init___szCoreJSONRenderer.__init__cCs:t|jddƒƒ}tjjƒ}|j|d|ƒS)Nr6r)rþr?rr#r$Údump)r&r'r/r)r6r'rrr!r*bszCoreJSONRenderer.render)r+r,r-r/r1r0r.r*rrrr!r,Zs
r,)@r.Ú
__future__rr%r4ÚcollectionsrÚdjangorÚdjango.confrÚdjango.core.exceptionsrÚdjango.core.paginatorrÚdjango.http.multipartparserrÚdjango.templater	r
Údjango.test.clientrÚdjango.utilsrÚdjango.utils.htmlr
Úrest_frameworkrrrrÚrest_framework.compatrrrrrrÚrest_framework.exceptionsrÚrest_framework.requestrrÚrest_framework.settingsrÚrest_framework.utilsrZ rest_framework.utils.breadcrumbsrÚ"rest_framework.utils.field_mappingrr"Úobjectr#r3rQrjrkr˜rrr!r(r,rrrr!Ú<module>sD".B\!ÿZS