<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def make_banner( text: typing.Optional[str] = None, context: typing.Optional[Context] = None, banner_template: typing.Optional[str] = None, context_format: ContextFormat = "full", ) -> str: """Generates a full banner with version info, the given text, and a formatted list of context variables. """

    banner_text = text or speak()
    banner_template = banner_template or BANNER_TEMPLATE
    ctx = format_context(context or {}, formatter=context_format)
    out = banner_template.format(version=sys.version, text=banner_text, context=ctx)
    return out