class documentation

class PackageLoader(BaseLoader): (source)

View In Hierarchy

Load templates from a directory in a Python package. :param package_name: Import name of the package that contains the template directory. :param package_path: Directory within the imported package that contains the templates. :param encoding: Encoding of template files. The following example looks up templates in the ``pages`` directory within the ``project.ui`` package. .. code-block:: python loader = PackageLoader("project.ui", "pages") Only packages installed as directories (standard pip behavior) or zip/egg files (less common) are supported. The Python API for introspecting data in packages is too limited to support other installation methods the way this loader requires. There is limited support for :pep:`420` namespace packages. The template directory is assumed to only be in one namespace contributor. Zip files contributing to a namespace are not supported. .. versionchanged:: 3.0 No longer uses ``setuptools`` as a dependency. .. versionchanged:: 3.0 Limited PEP 420 namespace package support.

Method __init__ Undocumented
Method get_source 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.
Method list_templates Iterates over all templates. If the loader does not support that it should raise a :exc:`TypeError` which is the default behavior.
Instance Variable encoding Undocumented
Instance Variable package_name Undocumented
Instance Variable package_path Undocumented
Instance Variable _archive Undocumented
Instance Variable _loader Undocumented
Instance Variable _template_root Undocumented

Inherited from BaseLoader:

Method load Loads a template. This method looks up the template in the cache or loads one by calling :meth:`get_source`. Subclasses should not override this method as loaders working on collections of other loaders (such as :class:`PrefixLoader` or :class:`ChoiceLoader`) will not call this method but `get_source` directly.
Class Variable has_source_access Undocumented
def __init__(self, package_name, package_path='templates', encoding='utf-8'): (source)

Undocumented

Parameters
package_name:strUndocumented
package_path:strUndocumented
encoding:strUndocumented
def get_source(self, environment, template): (source)

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 a string. 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.

Parameters
environment:EnvironmentUndocumented
template:strUndocumented
Returns
t.Tuple[str, str, t.Optional[t.Callable[[], bool]]]Undocumented
def list_templates(self): (source)

Iterates over all templates. If the loader does not support that it should raise a :exc:`TypeError` which is the default behavior.

Returns
t.List[str]Undocumented
encoding = (source)

Undocumented

package_name = (source)

Undocumented

package_path = (source)

Undocumented

_archive = (source)

Undocumented

_loader = (source)

Undocumented

_template_root = (source)

Undocumented