def METHOD_NAME(
    self, objects: List[str], remote_engine: "PsycopgEngine"
) -> List[Tuple[str, str]]:
    """
    Upload objects to Minio
    :param remote_engine: Remote Engine class
    :param objects: List of object IDs to upload
    :return: List of tuples with successfully uploaded objects and their URLs.
    """
    worker_threads = self.params.get(
        "threads", int(get_singleton(CONFIG, "SG_ENGINE_POOL")) - 1
    )
    # Determine upload URLs
    logging.info("Getting upload URLs from the registry...")
    urls = get_object_upload_urls(remote_engine, objects)
    local_engine = get_engine()
    def _do_upload(object_url):
        object_id, url = object_url
        # We get 3 URLs here (one for each of object itself, footer and schema -- emit
        # just the first one for logging)
        logging.debug("%s -> %s", object_id, url[0])
        try:
            local_engine.run_api_call("upload_object", object_id, url)
            return object_id
        except Exception:
            logging.exception("Error uploading object %s", object_id)
            return None
    successful: List[str] = []
    try:
        local_engine.autocommit = True
        with ThreadPoolExecutor(max_workers=worker_threads) as tpe:
            pbar = tqdm(
                tpe.map(_do_upload, zip(objects, urls)),
                total=len(objects),
                unit="objs",
                ascii=SG_CMD_ASCII,
            )
            for object_id in pbar:
                if object_id:
                    successful.append(object_id)
                    pbar.set_postfix(object=object_id[:10] + "...")
        if len(successful) < len(objects):
            raise IncompleteObjectUploadError(
                reason=None,
                successful_objects=successful,
                successful_object_urls=successful,
            )
        # The "URL" in this case is the same object ID: we ask the registry
        # for the actual URL by giving it the object ID.
        return [(s, s) for s in successful]
    except KeyboardInterrupt as e:
        raise IncompleteObjectUploadError(
            reason=e,
            successful_objects=successful,
            successful_object_urls=successful,
        )
    finally:
        local_engine.autocommit = False
        local_engine.close_others()