def find_by_filename(filename=None, engines=None):
if engines is None:<EOL><INDENT>engines = ENGINES<EOL><DEDENT>if filename is None:<EOL><INDENT>return list_engines_by_priority(engines)<EOL><DEDENT>return sorted((e for e in engines if e.supports(filename)),<EOL>key=operator.methodcaller("<STR_LIT>"))<EOL>
Find a list of template engine classes to render template `filename`.

:param filename: Template file name (may be a absolute/relative path)
:param engines: Template engines

:return: A list of engines support given template file