
    h
                     L    S SK JrJr  S SKJr  S SKJr  S SKJr   " S S5      r	g)    )ImproperlyConfiguredSuspiciousFileOperation)get_app_template_dirs)	safe_join)cached_propertyc                   R    \ rS rSrS rS r\S 5       rS rS r	\
S 5       rS rS	rg
)
BaseEngine   c                    UR                  5       nUR                  S5      U l        [        UR                  S5      5      U l        UR                  S5      U l        U(       a)  [        SR                  SR                  U5      5      5      eg)zP
Initialize the template engine.

`params` is a dict of configuration settings.
NAMEDIRSAPP_DIRSzUnknown parameters: {}z, N)	copypopnamelistdirsapp_dirsr   formatjoin)selfparamss     O/var/www/html/env/lib/python3.13/site-packages/django/template/backends/base.py__init__BaseEngine.__init__   sp     JJv&	F+,	

:.&(//		&0AB      c                     / $ )N )r   kwargss     r   checkBaseEngine.check   s    	r   c                 ^    [        SR                  U R                  R                  5      5      e)NzA{} doesn't support loading templates from installed applications.)r   r   	__class____name__)r   s    r   app_dirnameBaseEngine.app_dirname   s(    ""F4>>#:#:;
 	
r   c                     [        S5      e)zS
Create and return a template for the given source code.

This method is optional.
z>subclasses of BaseEngine should provide a from_string() methodNotImplementedError)r   template_codes     r   from_stringBaseEngine.from_string$   s     "L
 	
r   c                     [        S5      e)zh
Load and return a template for the given name.

Raise TemplateDoesNotExist if no such template exists.
z=subclasses of BaseEngine must provide a get_template() methodr(   )r   template_names     r   get_templateBaseEngine.get_template.   s     "K
 	
r   c                     [        U R                  5      nU R                  (       a  U[        U R                  5      -  nU$ )z7
Return a list of directories to search for templates.
)tupler   r   r   r%   )r   template_dirss     r   r3   BaseEngine.template_dirs;   s5     dii(==243C3CDDMr   c              #   p   #    U R                    H  n [        X!5      v   M     g! [         a     M#  f = f7f)z
Iterate over candidate files for template_name.

Ignore files that don't lie inside configured template dirs to avoid
directory traversal attacks.
N)r3   r   r   )r   r.   template_dirs      r   iter_template_filenames"BaseEngine.iter_template_filenamesF   s<      !..L<< / +  s   6%6
3636)r   r   r   N)r$   
__module____qualname____firstlineno__r   r    propertyr%   r+   r/   r   r3   r7   __static_attributes__r   r   r   r	   r	      sC     
 


  r   r	   N)
django.core.exceptionsr   r   django.template.utilsr   django.utils._osr   django.utils.functionalr   r	   r   r   r   <module>rB      s    P 7 & 3L Lr   