Source code for openscm_zenodo.uploading

"""
File uploading handling

Thanks https://gist.github.com/tyhoff/b757e6af83c1fd2b7b83057adf02c139
for the progress bar.
"""
import logging
import os
import os.path

import requests
from tqdm import tqdm
from tqdm.utils import CallbackIOWrapper

_LOGGER = logging.getLogger(__name__)


"""dict: Configuration for upload progress bar"""
TQDM_KWARGS = dict(unit="B", unit_scale=True, unit_divisor=1024,)


[docs]def upload_with_progress_bar(filepath, upload_url): """ Upload file with a progress bar Parameters ---------- filepath : str Path to file to upload upload_url : str URL to put the file onto """ _LOGGER.info("Uploading %s to %s", filepath, upload_url) file_size = os.stat(filepath).st_size with open(filepath, "rb") as file_handle: with tqdm(total=file_size, **TQDM_KWARGS) as tqdm_bar: wrapped_file = CallbackIOWrapper(tqdm_bar.update, file_handle, "read") requests.put(upload_url, data=wrapped_file)