code: def compose(self, sources, client=None):
          
          client = self._require_client(client)
          query_params = {}
  
          if self.user_project is not None:
              query_params["userProject"] = self.user_project
  
          request = {
              "sourceObjects": [{"name": source.name} for source in sources],
              "destination": self._properties.copy(),
          }
          api_response = client._connection.api_request(
              method="POST",
              path=self.path + "/compose",
              query_params=query_params,
              data=request,
              _target_object=self,
          )
          self._set_properties(api_response)
docs: Concatenate source blobs into this one.
  
          If :attr:`user_project` is set on the bucket, bills the API request
          to that project.
  
          :type sources: list of :class:`Blob`
          :param sources: blobs whose contents will be composed into 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 blob's bucket.