def METHOD_NAME(oldattr, updattr, updprec=None):
    if isinstance(updattr, ColorAttr):
        if updprec is None:
            updprec = updattr.precedence
        updcolor = updattr.color
        updattr = updattr.attributes
    else:
        updcolor = updattr & curses.A_COLOR
        updattr = updattr & ~curses.A_COLOR
        if updprec is None:
            updprec = 0
    # starting values, work backwards
    newcolor = oldattr.color
    newattr = oldattr.attributes | updattr
    newprec = oldattr.precedence
    if not newcolor or updprec > newprec:
        if updcolor:
            newcolor = updcolor
        newprec = updprec
    return ColorAttr(newcolor, newattr, newprec, newcolor | newattr)