# Path: statik/templatetags.py
# class TemplateTagStore(object):
#     def __init__(self):
#     def invoke_tag(self, tag_name, context, *args, **kwargs):
#     def register_tag(self, name, fn):
#     def register_filter(self, name, fn):
#     def simple_tag(self, *args, **kwargs):
#             def decorator(fn):
#     def filter(self, *args, **kwargs):
#             def decorator(fn):


from io import open
from statik.errors import *
from statik.utils import *
from statik import templatetags
import os.path
import jinja2
import pystache
import logging
        logger.debug(
            "Configured the following template providers: %s",
            ", ".join(self.supported_providers)
        )

    def get_provider(self, name):
        """Allows for lazy instantiation of providers (Jinja2 templating is heavy, so only instantiate it if
        necessary)."""
        if name not in self.providers:
            cls = self.provider_classes[name]
            # instantiate the provider
            self.providers[name] = cls(self)
        return self.providers[name]

    def find_template_details(self, name):
        base_path = None
        name_with_ext = name
        found_ext = None
        for ext in self.exts:
            if name.endswith(ext):
                found_ext = ext

        if found_ext is None:
            base_path, found_ext = find_first_file_with_ext(self.template_paths, name, self.exts)
            if base_path is None or found_ext is None:
                raise MissingTemplateError(name=name)
            name_with_ext = "%s%s" % (name, found_ext)

        return name_with_ext, self.providers_by_ext[found_ext], base_path


# Path: statik/templatetags.py
# class TemplateTagStore(object):
#     def __init__(self):
#     def invoke_tag(self, tag_name, context, *args, **kwargs):
#     def register_tag(self, name, fn):
#     def register_filter(self, name, fn):
#     def simple_tag(self, *args, **kwargs):
#             def decorator(fn):
#     def filter(self, *args, **kwargs):
#             def decorator(fn):


# Path: statik/templating.py
from io import open
from statik.errors import *
from statik.utils import *
from statik import templatetags
import os.path
import jinja2
import pystache
import logging

        logger.debug(
            "Configured the following template providers: %s",
            ", ".join(self.supported_providers)
        )

    def get_provider(self, name):
        """Allows for lazy instantiation of providers (Jinja2 templating is heavy, so only instantiate it if
        necessary)."""
        if name not in self.providers:
            cls = self.provider_classes[name]
            # instantiate the provider
            self.providers[name] = cls(self)
        return self.providers[name]

    def find_template_details(self, name):
        base_path = None
        name_with_ext = name
        found_ext = None
        for ext in self.exts:
            if name.endswith(ext):
                found_ext = ext

        if found_ext is None:
            base_path, found_ext = find_first_file_with_ext(self.template_paths, name, self.exts)
            if base_path is None or found_ext is None:
                raise MissingTemplateError(name=name)
            name_with_ext = "%s%s" % (name, found_ext)

        return name_with_ext, self.providers_by_ext[found_ext], base_path


    def load_template(self, name):