관리-도구
편집 파일: loaders.cpython-311.pyc
� S�DgE � � � d Z ddlZddlZddlZddlmZ ddlmZ ddlmZ ddl m Z ddl mZ dd l mZ dd l m Z ddlmZ ddlmZ dd lmZ d� Z G d� de� � Z G d� de� � Z G d� de� � Z G d� de� � Z G d� de� � Z G d� de� � Z G d� de� � Z G d� de� � Z G d� d e� � ZdS )!zKAPI and implementations for loading templates from different data sources. � N)�sha1)�path)� ModuleType� )�abc��fspath)� iteritems)�string_types)�TemplateNotFound)�internalcode)�open_if_existsc � � g }| � d� � D ]f}t j |v s*t j rt j |v s|t j k rt | � � �|r|dk r|� |� � �g|S )z�Split a path into segments and perform a sanity check. If it detects '..' in the path it will raise a `TemplateNotFound` error. �/�.)�splitr �sep�altsep�pardirr �append)�template�pieces�pieces �n/builddir/build/BUILD/imunify360-venv-2.4.0/opt/imunify360/venv/lib/python3.11/site-packages/jinja2/loaders.py�split_template_pathr s� � � �F�����$�$� !� !���H������ � $��u� 4� 4����#�#�"�8�,�,�,� � !�u��|�|��M�M�%� � � ���M� c �: � e Zd ZdZdZd� Zd� Zedd�� � ZdS )� BaseLoadera� Baseclass for all loaders. Subclass this and override `get_source` to implement a custom loading mechanism. The environment provides a `get_template` method that calls the loader's `load` method to get the :class:`Template` object. A very basic example for a loader that looks up templates on the file system could look like this:: from jinja2 import BaseLoader, TemplateNotFound from os.path import join, exists, getmtime class MyLoader(BaseLoader): def __init__(self, path): self.path = path def get_source(self, environment, template): path = join(self.path, template) if not exists(path): raise TemplateNotFound(template) mtime = getmtime(path) with file(path) as f: source = f.read().decode('utf-8') return source, path, lambda: mtime == getmtime(path) Tc �f � | j st d| j j z � � �t |� � �)a� Get the template source, filename and reload helper for a template. It's passed the environment and template name and has to return a tuple in the form ``(source, filename, uptodate)`` or raise a `TemplateNotFound` error if it can't locate the template. The source part of the returned tuple must be the source of the template as unicode string or a ASCII bytestring. The filename should be the name of the file on the filesystem if it was loaded from there, otherwise `None`. The filename is used by python for the tracebacks if no loader extension is used. The last item in the tuple is the `uptodate` function. If auto reloading is enabled it's always called to check if the template changed. No arguments are passed so the function must store the old state somewhere (for example in a closure). If it returns `False` the template will be reloaded. z&%s cannot provide access to the source)�has_source_access�RuntimeError� __class__�__name__r )�self�environmentr s r � get_sourcezBaseLoader.get_sourceG s>