'Upload an asset to this release.
All parameters are required.
:param str content_type: The content type of the asset. Wikipedia has
a list of common media types
:param str name: The name of the file
:param asset: The file or bytes object to upload.
:param label: (optional), An alternate short description of the asset.
:returns: :class:`Asset <Asset>`'

@requires_auth
def upload_asset(self, content_type, name, asset, label=None):

    headers = {u'Content-Type': content_type}
    params = {u'name': name, u'label': label}
    self._remove_none(params)
    url = self.upload_urlt.expand(params)
    r = self._post(url, data=asset, json=False, headers=headers)
    if (r.status_code in (201, 202)):
        return Asset(r.json(), self)
    raise error_for(r)
