'Add or change a roster item.
:param jid: The JID of the entry to modify.
:param name: The user\'s nickname for this JID.
:param subscription: The subscription status. May be one of
``\'to\'``, ``\'from\'``, ``\'both\'``, or
``\'none\'``. If set to ``\'remove\'``,
the entry will be deleted.
:param groups: The roster groups that contain this item.
:param block: Specify if the roster request will block
until a response is received, or a timeout
occurs. Defaults to ``True``.
:param timeout: The length of time (in seconds) to wait
for a response before continuing if blocking
is used. Defaults to
:attr:`~sleekxmpp.xmlstream.xmlstream.XMLStream.response_timeout`.
:param callback: Optional reference to a stream handler function.
Will be executed when the roster is received.
Implies ``block=False``.'

def update_roster(self, jid, **kwargs):

    current = self.client_roster[jid]
    name = kwargs.get(u'name', current[u'name'])
    subscription = kwargs.get(u'subscription', current[u'subscription'])
    groups = kwargs.get(u'groups', current[u'groups'])
    block = kwargs.get(u'block', True)
    timeout = kwargs.get(u'timeout', None)
    callback = kwargs.get(u'callback', None)
    return self.client_roster.update(jid, name, subscription, groups, block, timeout, callback)
