class_docstr: This loader works like the `PrefixLoader` just that no prefix is
  specified.  If a template could not be found by one loader the next one
  is tried.
  
  >>> loader = ChoiceLoader([
  ...     FileSystemLoader('/path/to/user/templates'),
  ...     FileSystemLoader('/path/to/system/templates')
  ... ])
  
  This is useful if you want to allow users to override builtin templates
  from a different location.
class_docstr_tok: ["This","loader","works","like","the","`","PrefixLoader","`","just","that","no","prefix","is","specified",".","If","a","template","could","not","be","found","by","one","loader","the","next","one","is","tried",".",">",">",">","loader","=","ChoiceLoader","(","[","...","FileSystemLoader","(","'\/path\/to\/user\/templates","'",")",",","...","FileSystemLoader","(","'\/path\/to\/system\/templates","'",")","...","]",")","This","is","useful","if","you","want","to","allow","users","to","override","builtin","templates","from","a","different","location","."]
code: def get_source(
      self, environment: "Environment", template: str
  ) -> t.Tuple[str, t.Optional[str], t.Optional[t.Callable[[], bool]]]:
      for loader in self.loaders:
          try:
              return loader.get_source(environment, template)
          except TemplateNotFound:
              pass
      raise TemplateNotFound(template)
  
imports: import importlib.util
  import os
  import posixpath
  import sys
  import pkgutil
  import typing
  import weakref
  import zipimport
  from collections import abc
  from hashlib import sha1
  from importlib import import_module
  from types import ModuleType
  from .exceptions import TemplateNotFound
  from .utils import internalcode
  from .utils import open_if_exists
  import __res
label_desc: Use image node_id 2 for calling the ChoiceLoader obj's underlying member method code with example usage: obj.get_source(environment, template) and returns: loader