File: //home/arjun/projects/env/lib/python3.10/site-packages/jinja2/__pycache__/loaders.cpython-310.pyc
o
%we�Z � @ sX d Z ddlZddlZddlZddlZddlZddlZddl Z ddl
mZ ddlm
Z
ddlmZ ddlmZ ddlmZ dd lmZ dd
lmZ ejrWddlmZ ddlmZ d
edeje fdd�ZG dd� d�ZG dd� de�ZG dd� de�ZG dd� de�Z G dd� de�Z!G dd� de�Z"G dd� de�Z#G dd � d e�Z$G d!d"� d"e�Z%dS )#zKAPI and implementations for loading templates from different data
sources.
� N)�abc)�sha1)�
import_module)�
ModuleType� )�TemplateNotFound)�internalcode)�open_if_exists)�Environment)�Template�template�returnc C sb g }| � d�D ]'}tjj|v stjjrtjj|v s|tjjkr#t| ��|r.|dkr.|�|� q|S )z�Split a path into segments and perform a sanity check. If it detects
'..' in the path it will raise a `TemplateNotFound` error.
�/�.)�split�os�path�sep�altsep�pardirr �append)r �pieces�piece� r �G/home/arjun/projects/env/lib/python3.10/site-packages/jinja2/loaders.py�split_template_path s �
�r c @ s� e Zd ZdZdZdddedejeeje ejej g e
f f fdd�Zdeje fd d
�Z
e dddded
ejejeejf ddfdd��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 open(path) as f:
source = f.read()
return source, path, lambda: mtime == getmtime(path)
T�environmentr
r r
c C s"