def update_entity(self, table_name, entity, if_match='<STR_LIT:*>', timeout=None):
_validate_not_none('<STR_LIT>', table_name)<EOL>request = _update_entity(entity, if_match, self.require_encryption, self.key_encryption_key,<EOL>self.encryption_resolver_function)        <EOL>request.host_locations = self._get_host_locations()<EOL>request.path = _get_entity_path(table_name, entity['<STR_LIT>'], entity['<STR_LIT>'])<EOL>request.query['<STR_LIT>'] = _int_to_str(timeout)<EOL>return self._perform_request(request, _extract_etag)<EOL>
Updates an existing entity in a table. Throws if the entity does not exist. 
The update_entity operation replaces the entire entity and can be used to 
remove properties.

:param str table_name:
    The name of the table containing the entity to update.
:param entity:
    The entity to update. Could be a dict or an entity object. 
    Must contain a PartitionKey and a RowKey.
:type entity: a dict or :class:`~azure.storage.table.models.Entity`
:param str if_match:
    The client may specify the ETag for the entity on the 
    request in order to compare to the ETag maintained by the service 
    for the purpose of optimistic concurrency. The update operation 
    will be performed only if the ETag sent by the client matches the 
    value maintained by the server, indicating that the entity has 
    not been modified since it was retrieved by the client. To force 
    an unconditional update, set If-Match to the wildcard character (*).
:param int timeout:
    The server timeout, expressed in seconds.
:return: The etag of the entity.
:rtype: str