code: def rename_blob(self, blob, new_name, client=None):
          
          same_name = blob.name == new_name
  
          new_blob = self.copy_blob(blob, self, new_name, client=client)
  
          if not same_name:
              blob.delete(client=client)
  
          return new_blob
docs: Rename the given blob using copy and delete operations.
  
          If :attr:`user_project` is set, bills the API request to that project.
  
          Effectively, copies blob to the same bucket with a new name, then
          deletes the blob.
  
          .. warning::
  
            This method will first duplicate the data and then delete the
            old blob.  This means that with very large objects renaming
            could be a very (temporarily) costly or a very slow operation.
  
          :type blob: :class:`google.cloud.storage.blob.Blob`
          :param blob: The blob to be renamed.
  
          :type new_name: str
          :param new_name: The new name for this blob.
  
          :type client: :class:`~google.cloud.storage.client.Client` or
                        ``NoneType``
          :param client: Optional. The client to use.  If not passed, falls back
                         to the ``client`` stored on the current bucket.
  
          :rtype: :class:`Blob`
          :returns: The newly-renamed blob.