

_Vy                 @   s4  d  d l  Z  d  d l m Z d  d l m Z m Z m Z d d l m Z d d l	 m
 Z
 d d l m Z d d l m Z m Z m Z d d	 l m Z d d
 l m Z e d d d  Z e d d d  Z d e e e d d d d  Z d d d  Z Gd d   d e j  Z Gd d   d e j e e   Z d S)    N)six)DeprecationInstanceCheckRemovedInDjango20WarningRemovedInDjango110Warning   )engines)DjangoTemplates)Origin)_context_instance_undefined_dictionary_undefined_dirs_undefined)TemplateDoesNotExist)basec             C   s   g  } t  |  } x | D] } yY t | t  rA | j |  |  S| t k	 rj t j d | j d d n | j |   SWq t k
 r } z | j	 |  WYd d } ~ Xq Xq Wt |  d |  d S)zw
    Loads and returns a template for the given name.

    Raises TemplateDoesNotExist if no such template exists.
    z_Skipping template backend %s because its get_template method doesn't support the dirs argument.
stacklevel   Nchain)
_engine_list
isinstancer   get_templater   warningswarnnamer   append)template_namedirsusingr   r   enginee r   8/tmp/pip-build-ghmbqnp_/Django/django/template/loader.pyr      s    

$r   c             C   s   g  } t  |  } x |  D] } x | D] } yY t | t  rN | j | |  S| t k	 rw t j d | j d d n | j |  SWq& t k
 r } z | j	 |  WYd d } ~ Xq& Xq& Wq W|  r t d j
 |   d |  n t d   d S)z
    Loads and returns a template for one of the given names.

    Tries names in order and returns the first template found.

    Raises TemplateDoesNotExist if no such template exists.
    z_Skipping template backend %s because its get_template method doesn't support the dirs argument.r   r   Nz, r   zNo template names provided)r   r   r   r   r   r   r   r   r   r   join)Ztemplate_name_listr   r   r   r   r   r   r   r   r   r   select_template.   s$    

(r!   c             C   s  | t  k rp | t k rp | t k rp t |  t t f  rN t |  d | } n t |  d | } | j | |  Sg  } xt	 |  D]}	 y t |	 t
  r | d k	 r t d   n  |	 j j |  | | | |  S| t  k	 r t j d |	 j d d nR | t k	 r$t j d |	 j d d n) | t k	 rMt j d |	 j d d n  Wq t k
 r}
 z | j |
  w WYd d }
 ~
 Xq Xq W|  rt |  t t f  rd	 j |   }  n  t |  d
 |  n t d   d S)z
    Loads a template and renders it with a context. Returns a string.

    template_name may be a string or a list of strings.
    r   Nz`render_to_string doesn't support the request argument when some deprecated arguments are passed.zoSkipping template backend %s because its render_to_string method doesn't support the context_instance argument.r   r   zcSkipping template backend %s because its render_to_string method doesn't support the dirs argument.ziSkipping template backend %s because its render_to_string method doesn't support the dictionary argument.z, r   zNo template names provided)r
   r   r   r   listtupler!   r   renderr   r   
ValueErrorr   render_to_stringr   r   r   r   r   r    )r   contextZcontext_instancer   
dictionaryrequestr   templater   r   r   r   r   r   r&   O   sJ    
	

r&   c             C   s!   |  d  k r t  j   St  |  g S)N)r   all)r   r   r   r   r      s    r   c                   s(   e  Z d  Z d Z   f d d   Z   S)
BaseLoaderFc                s3   t  j d t d d t t |   j | |   d  S)NzXdjango.template.loader.BaseLoader was superseded by django.template.loaders.base.Loader.r   r   )r   r   r   superr,   __init__)selfargskwargs)	__class__r   r   r.      s    zBaseLoader.__init__)__name__
__module____qualname__Z_accepts_engine_in_initr.   r   r   )r2   r   r,      s   r,   c               @   s   e  Z d  Z d Z e Z d S)LoaderOriginzdjango.template.OriginN)r3   r4   r5   alternativer   Zdeprecation_warningr   r   r   r   r6      s   r6   )r   Zdjango.utilsr   Zdjango.utils.deprecationr   r   r    r   Zbackends.djangor   r   r	   r   r
   r   r   
exceptionsr   loadersr   r!   r&   r   ZLoaderr,   with_metaclassr6   r   r   r   r   <module>   s$   !;