code: def update_publisher_asset(self, upload_stream, publisher_name, asset_type=None, file_name=None, **kwargs):
          
          route_values = {}
          if publisher_name is not None:
              route_values['publisherName'] = self._serialize.url('publisher_name', publisher_name, 'str')
          query_parameters = {}
          if asset_type is not None:
              query_parameters['assetType'] = self._serialize.query('asset_type', asset_type, 'str')
          if "callback" in kwargs:
              callback = kwargs["callback"]
          else:
              callback = None
          content = self._client.stream_upload(upload_stream, callback=callback)
          response = self._send(http_method='PUT',
                                location_id='21143299-34f9-4c62-8ca8-53da691192f9',
                                version='5.0-preview.1',
                                route_values=route_values,
                                query_parameters=query_parameters,
                                content=content,
                                media_type='application/octet-stream')
          return self._deserialize('{str}', self._unwrap_collection(response))
docs: UpdatePublisherAsset.
          [Preview API] Update publisher asset like logo. It accepts asset file as an octet stream and file name is passed in header values.
          :param object upload_stream: Stream to upload
          :param str publisher_name: Internal name of the publisher
          :param str asset_type: Type of asset. Default value is 'logo'.
          :param String file_name: Header to pass the filename of the uploaded data
          :rtype: {str}