docs: def upload_files(self, owner, id, file, **kwargs):
          """
          Upload files
          Upload multiple files at once to a dataset via multipart request.  This endpoint expects requests of type `multipart/form-data` and you can include one or more parts named `file`, each containing a different file to be uploaded.  For example, assuming that, you want to upload two local files named `file1.csv` and `file2.csv` to a hypothetical dataset `https://data.world/awesome-user/awesome-dataset`, this is what the cURL command would look like.  ```bash curl \\   -H \"Authorization: Bearer <YOUR_API_TOKEN>\" \\   -F \"file=@file1.csv\" \\   -F \"file=@file2.csv\" \\   https://api.data.world/v0/uploads/awesome-user/awesome-dataset/files ```  Swagger clients will limit this method of upload to one file at a time. Other HTTP clients capable of making multipart/form-data requests can be used to upload multiple files in a single request.
          This method makes a synchronous HTTP request by default. To make an
          asynchronous HTTP request, please define a `callback` function
          to be invoked when receiving the response.
          >>> def callback_function(response):
          >>>     pprint(response)
          >>>
          >>> thread = api.upload_files(owner, id, file, callback=callback_function)
  
          :param callback function: The callback function
              for asynchronous request. (optional)
          :param str owner: User name and unique identifier of the creator of a dataset or project. For example, in the URL: [https://data.world/jonloyens/an-intro-to-dataworld-dataset](https://data.world/jonloyens/an-intro-to-dataworld-dataset), jonloyens is the unique identifier of the owner. (required)
          :param str id: Dataset unique identifier. For example, in the URL:[https://data.world/jonloyens/an-intro-to-dataworld-dataset](https://data.world/jonloyens/an-intro-to-dataworld-dataset), an-intro-to-dataworld-dataset is the unique identifier of the dataset. (required)
          :param file file: Multipart-encoded file contents (required)
          :param bool expand_archives: Indicates whether compressed files should be expanded upon upload.
          :return: SuccessMessage
                   If the method is called asynchronously,
                   returns the request thread.
          """
          kwargs['_return_http_data_only'] = True
          if kwargs.get('callback'):
              return self.upload_files_with_http_info(owner, id, file, **kwargs)
          else:
              (data) = self.upload_files_with_http_info(owner, id, file, **kwargs)
              return data