template error handling
Template errors may occur in one of two contexts -- during loading or during evaluation. It is of course possible that a loading error of one template occurs during the evaluation of another, for example when a template evoques another template that is not yet loaded. Thus the big differentiator for errors is not the type of error but when an error happens.
All errors not occurring during evaluation are raised as exceptions, as any other normal application error.
The behaviour of evaluation errors may be controlled via two domain parameters:
errors: int = 3
sets evaluation behaviour for errors, and may be an int between 0 and 4:4 = raise
will re-raise the exception given by the error.3 = render
will render the error as a 1-line descriptive summary of the error.2 = name
will render the error as the indicative string:EvalError[expr], where expr is the actual source of the failed expression.1 = zero
(not yet implemented) assume the zero object for the inferred python type for the failed expression being evaluated. Examples, if astrthen proceed with the empty string, if alistproceed with empty list, if anintproceed with 0, etc.0 = silent
no output is generated for the error, i.e. errors are rendered as the the empty string.
log: logging.getLogger("evoque")
sets the logger to be used for all evaluation errors; independently of the setting oferrors, evaluation errors are always logged. Also, the output of callinginspect(False)from within a template are sent to log.info().