code: def stage(self, fileobj, creds=None, callback=None):
          
  
          if not hasattr(fileobj, 'read'):
              fileobj = open(fileobj, 'rb')
  
          if not creds:
              res = self._get_credentials()
              creds = res.json()
  
          session = boto3_session(
              aws_access_key_id=creds['accessKeyId'],
              aws_secret_access_key=creds['secretAccessKey'],
              aws_session_token=creds['sessionToken'],
              region_name='us-east-1')
  
          s3 = session.resource('s3')
          bucket = s3.Bucket(creds['bucket'])
          key = creds['key']
          bucket.upload_fileobj(fileobj, key, Callback=callback)
  
          return creds['url']
docs: Stages data in a Mapbox-owned S3 bucket
  
          If creds are not provided, temporary credentials will be
          generated using the Mapbox API.
  
          Parameters
          ----------
          fileobj: file object or filename
              A Python file object opened in binary mode or a filename.
          creds: dict
              AWS credentials allowing uploads to the destination bucket.
          callback: func
              A function that takes a number of bytes processed as its
              sole argument.
  
          Returns
          -------
          str
              The URL of the staged data