code: def put(self, f, digest=None):
          
  
          if digest:
              actual_digest = digest
          else:
              actual_digest = self._compute_digest(f)
  
          created = self.conn.client.blob_put(self.container_name,
                                              actual_digest, f)
          if digest:
              return created
          return actual_digest
docs: Upload a blob
  
          :param f:
              File object to be uploaded (required to support seek if digest is
              not provided).
          :param digest:
              Optional SHA-1 hex digest of the file contents. Gets computed
              before actual upload if not provided, which requires an extra file
              read.
          :return:
              The hex digest of the uploaded blob if not provided in the call.
              Otherwise a boolean indicating if the blob has been newly created.