import datetime
import html
import os.path
from jinja2 import Environment, FileSystemLoader, Template
from jinja2.exceptions import TemplateNotFound
from ..utils import format_bytes, format_time, format_time_ago, key_split, typename
FILTERS = {
"datetime_from_timestamp": datetime.datetime.fromtimestamp,
"format_bytes": format_bytes,
"format_time": format_time,
"format_time_ago": format_time_ago,
"html_escape": html.escape,
"key_split": key_split,
"type": type,
"typename": typename,
}
TEMPLATE_PATHS = [os.path.join(os.path.dirname(os.path.abspath(__file__)), "templates")]
def get_environment() -> Environment:
loader = FileSystemLoader(TEMPLATE_PATHS)
environment = Environment(loader=loader)
environment.filters.update(FILTERS)
return environment
def get_template(name: str) -> Template:
try:
return get_environment().get_template(name)
except TemplateNotFound as e:
raise TemplateNotFound(
f"Unable to find {name} in dask.widgets.TEMPLATE_PATHS {TEMPLATE_PATHS}"
) from e