docs: def upload_file(ctx, opts, owner, repo, filepath, skip_errors, md5_checksum):
      """Upload a package file via the API."""
      filename = click.format_filename(filepath)
      basename = os.path.basename(filename)
  
      click.echo(
          "Requesting file upload for %(filename)s ... "
          % {"filename": click.style(basename, bold=True)},
          nl=False,
      )
  
      context_msg = "Failed to request file upload!"
      with handle_api_exceptions(
          ctx, opts=opts, context_msg=context_msg, reraise_on_error=skip_errors
      ):
          with maybe_spinner(opts):
              identifier, upload_url, upload_fields = request_file_upload(
                  owner=owner, repo=repo, filepath=filename, md5_checksum=md5_checksum
              )
  
      click.secho("OK", fg="green")
  
      context_msg = "Failed to upload file!"
      with handle_api_exceptions(ctx, opts=opts, context_msg=context_msg):
          filesize = utils.get_file_size(filepath=filename)
  
          label = "Uploading %(filename)s:" % {
              "filename": click.style(basename, bold=True)
          }
  
          with click.progressbar(
              length=filesize,
              label=label,
              fill_char=click.style("#", fg="green"),
              empty_char=click.style("-", fg="red"),
          ) as pb:
  
              def progress_callback(monitor):
                  pb.update(monitor.bytes_read)
  
              api_upload_file(
                  upload_url=upload_url,
                  upload_fields=upload_fields,
                  filepath=filename,
                  callback=progress_callback,
              )
  
      return identifier