docs: def _update_entity(entity, if_match, encryption_required=False,
                     key_encryption_key=None, encryption_resolver=None):
      '''
      Constructs an update entity request.
      :param entity:
          The entity to insert. Could be a dict or an entity object.
      :param object key_encryption_key:
          The user-provided key-encryption-key. Must implement the following methods:
          wrap_key(key)--wraps the specified key using an algorithm of the user's choice.
          get_key_wrap_algorithm()--returns the algorithm used to wrap the specified symmetric key.
          get_kid()--returns a string key id for this key-encryption-key.
      :param function(partition_key, row_key, property_name) encryption_resolver:
          A function that takes in an entities partition key, row key, and property name and returns
          a boolean that indicates whether that property should be encrypted.
      '''
      _validate_not_none('if_match', if_match)
      _validate_entity(entity, key_encryption_key is not None)
      _validate_encryption_required(encryption_required, key_encryption_key)
  
      request = HTTPRequest()
      request.method = 'PUT'
      request.headers = {
          _DEFAULT_CONTENT_TYPE_HEADER[0]: _DEFAULT_CONTENT_TYPE_HEADER[1],
          _DEFAULT_ACCEPT_HEADER[0]: _DEFAULT_ACCEPT_HEADER[1],
          'If-Match': _to_str(if_match),
      }
      if key_encryption_key:
          entity = _encrypt_entity(entity, key_encryption_key, encryption_resolver)
      request.body = _get_request_body(_convert_entity_to_json(entity))
  
      return request