
    EvgK                         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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e          Z G d d          ZddZd Zd Zd Zd ZdS )    )defaultdict)import_module)walk_packages)apps)settings)ErrorWarning)TemplateDoesNotExist)make_context)Engine)InvalidTemplateLibrary   )
BaseEnginec                   F     e Zd ZdZ fdZd Zd Zd Zd Zd Z	d Z
 xZS )	DjangoTemplates	templatesc                    |                                 }|                    d                                           }|                    dd           |                    dt          j                   |                    dd           |                    di           }|                     |          |d<   t                                          |           t          | j
        | j        fi || _        d S )NOPTIONS
autoescapeTdebugfile_charsetzutf-8	libraries)copypop
setdefaultr   DEBUGgetget_templatetag_librariessuper__init__r   dirsapp_dirsengine)selfparamsoptionsr   	__class__s       \/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/template/backends/django.pyr    zDjangoTemplates.__init__   s    **Y'',,..<...7HN333>7333KKR00	#==iHH   TYAAAA    c                 V    g |                                  |                                 S N)"_check_string_if_invalid_is_string+_check_for_template_tags_with_the_same_name)r$   kwargss     r(   checkzDjangoTemplates.check   s4    
4466
==??
 	
r)   c                     | j         j        }t          |t                    s't	          d|dt          |          d| d          gS g S )NzC'string_if_invalid' in TEMPLATES OPTIONS must be a string but got: z (z).ztemplates.E002objid)r#   string_if_invalid
isinstancestrr   type)r$   values     r(   r,   z2DjangoTemplates._check_string_if_invalid_is_string$   sa    -%%% 	',uud5kkkk;'	    	r)   c                    t          t                    }t                      D ] \  }}||                             |           !| j        j                                        D ] \  }}||                             |           !g }|                                D ]n\  }}t          |          dk    rVd                    d t          |          D                       }|
                    t          |d| | d                     o|S )Nr   z, c              3   4   K   | ]}t          |          V  d S r+   )repr).0items     r(   	<genexpr>zNDjangoTemplates._check_for_template_tags_with_the_same_name.<locals>.<genexpr>>   s(      !G!G$t**!G!G!G!G!G!Gr)   z, is used for multiple template tag modules: ztemplates.W003r1   )r   setget_template_tag_modulesaddr#   r   itemslenjoinsortedappendr	   )r$   r   module_namemodule_patherrorslibrary_namerB   s          r(   r-   z;DjangoTemplates._check_for_template_tags_with_the_same_name1   s.   $$	(@(B(B 	4 	4$Kk"&&{3333(,(=(C(C(E(E 	4 	4$Kk"&&{3333#,??#4#4 
	 
	L%5zzA~~		!G!G!G!G!GGG' # # # # +	     r)   c                 R    t          | j                            |          |           S r+   )Templater#   from_string)r$   template_codes     r(   rM   zDjangoTemplates.from_stringJ   s"    //>>EEEr)   c                     	 t          | j                            |          |           S # t          $ r}t	          ||            Y d }~d S d }~ww xY wr+   )rL   r#   get_templater
   reraise)r$   template_nameexcs      r(   rP   zDjangoTemplates.get_templateM   sh    	DK44]CCTJJJ# 	 	 	C	s   '* 
AA

Ac                 L    t                      }|                    |           |S )z
        Return a collation of template tag libraries from installed
        applications and the supplied custom_libraries argument.
        )get_installed_librariesupdate)r$   custom_librariesr   s      r(   r   z)DjangoTemplates.get_templatetag_librariesS   s*    
 ,--	)***r)   )__name__
__module____qualname__app_dirnamer    r/   r,   r-   rM   rP   r   __classcell__)r'   s   @r(   r   r      s        K	B 	B 	B 	B 	B
 
 
    2F F F        r)   r   c                   2    e Zd Zd Zed             ZddZdS )rL   c                 "    || _         || _        d S r+   )templatebackend)r$   r_   r`   s      r(   r    zTemplate.__init__^   s     r)   c                     | j         j        S r+   )r_   origin)r$   s    r(   rb   zTemplate.originb   s    }##r)   Nc                     t          ||| j        j        j                  }	 | j                            |          S # t          $ r }t          || j                   Y d }~d S d }~ww xY w)N)r   )r   r`   r#   r   r_   renderr
   rQ   )r$   contextrequestrS   s       r(   rd   zTemplate.renderf   s    W)<)G
 
 
	'=''000# 	' 	' 	'C&&&&&&&&&	's   = 
A'A""A')NN)rX   rY   rZ   r    propertyrb   rd    r)   r(   rL   rL   ]   sR           $ $ X$' ' ' ' ' 'r)   rL   Nc                     |p| j         } | j        | j        | j        || j        d}t          | d          r| j        |_        |S )z
    Create a new TemplateDoesNotExist. Preserve its declared attributes and
    template debug data but discard __traceback__, __context__, and __cause__
    to make this object suitable for keeping around (in a cache, for example).
    )triedr`   chaintemplate_debug)r`   r'   argsrj   rk   hasattrrl   rS   r`   news      r(   copy_exceptionrq   p   sS     $G
#-G39
U
U
UCs$%% 0 /Jr)   c                 (    t          | |          }|| )zT
    Reraise TemplateDoesNotExist while maintaining template debug information.
    )rq   ro   s      r(   rQ   rQ   }   s     g
&
&C
3r)   c               #   X  K   dg} |                      d t          j                    D                        | D ]q}	 t          |          }n# t          $ r Y w xY wt          |d          r>t          |          D ].}|                    |                              d          |fV  /rdS )z^
    Yield (module_name, module_path) pairs for all installed template tag
    libraries.
    zdjango.templatetagsc              3   *   K   | ]}|j          d V  dS )z.templatetagsN)name)r<   
app_configs     r(   r>   z+get_template_tag_modules.<locals>.<genexpr>   s>        .8:?)))     r)   __path__.N)	extendr   get_app_configsr   ImportErrorrn   get_package_librariesremoveprefixlstrip)
candidates	candidatepkgru   s       r(   r@   r@      s      
 ((J  <@<P<R<R        	E 	E			**CC 	 	 	H	 3
## 	E-c22 E E''	2299#>>DDDDD	E 	Es   A
AAc                  2    d t                      D             S )a  
    Return the built-in template tag libraries and those from installed
    applications. Libraries are stored in a dictionary where keys are the
    individual module names, not the full module paths. Example:
    django.templatetags.i18n is stored as i18n.
    c                     i | ]\  }}||	S rh   rh   )r<   rG   	full_names      r(   
<dictcomp>z+get_installed_libraries.<locals>.<dictcomp>   s+       #9;	Y  r)   )r@   rh   r)   r(   rU   rU      s)     =U=W=W   r)   c              #     K   t          | j        | j        dz             D ]a}	 t          |d                   }n.# t          $ r!}t          d|d         d|          |d}~ww xY wt          |d          r
|d         V  bdS )zZ
    Recursively yield template tag libraries defined in submodules of a
    package.
    rx   r   zLInvalid template library specified. ImportError raised when trying to load 'z': Nregister)r   rw   rX   r   r{   r   rn   )r   entrymodulees       r(   r|   r|      s      
 s|S\C-?@@ 
 
	"58,,FF 	 	 	((-21XXXqq:  	 6:&& 	(NNN
 
s   9
A$AA$r+   )collectionsr   	importlibr   pkgutilr   django.appsr   django.confr   django.core.checksr   r	   django.templater
   django.template.contextr   django.template.enginer   django.template.libraryr   baser   r   rL   rq   rQ   r@   rU   r|   rh   r)   r(   <module>r      s   # # # # # # # # # # # # ! ! ! ! ! !                   - - - - - - - - 0 0 0 0 0 0 0 0 0 0 0 0 ) ) ) ) ) ) : : : : : :      J J J J Jj J J JZ' ' ' ' ' ' ' '&
 
 
 
  E E E,	 	 	    r)   