def update_text(s,**kws):
    """
    Replace arbitrary placeholders in string

    Placeholder names should be supplied as keywords
    with the corresponding values being the text to
    replace them with in the supplied string.

    When placeholders appear in the string they
    should be contained within '<...>'.

    For example:

    >>> text = "Hello my name is <NAME>"
    >>> update_text(text,NAME="Joe")
    ... "Hello my is name is Joe"

    Arguments:
      s (str): text to be updated
      kws (mapping): keywords mapping placeholder
        names to new values

    Returns:
      String: the original text updated by
        substituting
    """
    for kw in kws:
        placeholder = "<%s>" % kw
        new_text = kws[kw]
        if new_text is None:
            continue
        s = s.replace(placeholder,new_text)
    return s