def update(self, id, *args, **kwargs):
if not args and not kwargs:<EOL><INDENT>raise Exception('<STR_LIT>')<EOL><DEDENT>attributes = args[<NUM_LIT:0>] if args else kwargs<EOL>attributes = dict((k, v) for k, v in attributes.iteritems() if k in self.OPTS_KEYS_TO_PERSIST)<EOL>if "<STR_LIT:value>" in attributes:<EOL><INDENT>attributes["<STR_LIT:value>"] = Coercion.to_string(attributes["<STR_LIT:value>"])<EOL><DEDENT>_, _, deal = self.http_client.put("<STR_LIT>".format(id=id), body=attributes)<EOL>deal["<STR_LIT:value>"] = Coercion.to_decimal(deal["<STR_LIT:value>"])<EOL>return deal<EOL>
Update a deal

Updates deal information
If the specified deal does not exist, the request will return an error
<figure class="notice">
In order to modify tags used on a record, you need to supply the entire set
`tags` are replaced every time they are used in a request
</figure>

:calls: ``put /deals/{id}``
:param int id: Unique identifier of a Deal.
:param tuple *args: (optional) Single object representing Deal resource which attributes should be updated.
:param dict **kwargs: (optional) Deal attributes to update.
:return: Dictionary that support attriubte-style access and represents updated Deal resource.
:rtype: dict