o
    þÞhñ
  ã                   @   sF   d dl mZmZ d dlmZ d dlmZ d dlmZ G dd„ dƒZ	dS )é    )ÚImproperlyConfiguredÚSuspiciousFileOperation)Úget_app_template_dirs)Ú	safe_join)Úcached_propertyc                   @   sL   e Zd Zdd„ Zdd„ Zedd„ ƒZdd„ Zd	d
„ Ze	dd„ ƒZ
dd„ ZdS )Ú
BaseEnginec                 C   sL   |  ¡ }| d¡| _t| d¡ƒ| _| d¡| _|r$td d |¡¡ƒ‚dS )zh
        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Úparams© r   ú]/var/www/html/premium_crap/venv/lib/python3.10/site-packages/django/template/backends/base.pyÚ__init__   s   ÿÿzBaseEngine.__init__c                 K   s   g S )Nr   )r   Úkwargsr   r   r   Úcheck   s   zBaseEngine.checkc                 C   s   t d | jj¡ƒ‚)NzA{} doesn't support loading templates from installed applications.)r   r   Ú	__class__Ú__name__)r   r   r   r   Úapp_dirname   s   
þzBaseEngine.app_dirnamec                 C   ó   t dƒ‚)zk
        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_coder   r   r   Úfrom_string$   ó   ÿzBaseEngine.from_stringc                 C   r   )z€
        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_namer   r   r   Úget_template.   r"   zBaseEngine.get_templatec                 C   s"   t | jƒ}| jr|t| jƒ7 }|S )zG
        Return a list of directories to search for templates.
        )Útupler   r   r   r   )r   Útemplate_dirsr   r   r   r&   ;   s   
zBaseEngine.template_dirsc              	   c   s4   � | j D ]}zt||ƒV  W q ty   Y qw dS )z´
        Iterate over candidate files for template_name.

        Ignore files that don't lie inside configured template dirs to avoid
        directory traversal attacks.
        N)r&   r   r   )r   r#   Útemplate_dirr   r   r   Úiter_template_filenamesF   s   €
ýýz"BaseEngine.iter_template_filenamesN)r   Ú
__module__Ú__qualname__r   r   Úpropertyr   r!   r$   r   r&   r(   r   r   r   r   r      s    



r   N)
Údjango.core.exceptionsr   r   Údjango.template.utilsr   Údjango.utils._osr   Údjango.utils.functionalr   r   r   r   r   r   Ú<module>   s
    