Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions multiurl/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ def close(self, *args, **kwargs):
pass


def progress_bar(total, initial=0, desc=None):
def progress_bar(total, initial=0, desc=None, disable=False):
try:
# There is a bug in tqdm that expects ipywidgets
# to be installed if running in a notebook
Expand All @@ -45,7 +45,8 @@ def progress_bar(total, initial=0, desc=None):
from tqdm import tqdm # noqa F401
except ImportError:
tqdm = NoBar

if disable:
tqdm = NoBar
return tqdm(
total=total,
initial=initial,
Expand Down Expand Up @@ -107,7 +108,7 @@ def extension(self, url=None):
extensions.append(".unknown")
return "".join(reversed(extensions))

def download(self, target):
def download(self, target, disable_progress_bar=False):
if os.path.exists(target) and not self.override_target_file:
return

Expand All @@ -124,6 +125,7 @@ def download(self, target):
total=size,
initial=skip,
desc=self.title(),
disable=disable_progress_bar,
) as pbar:
with open(download, mode) as f:
total = self.transfer(f, pbar)
Expand Down
4 changes: 2 additions & 2 deletions multiurl/downloader.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,5 +107,5 @@ def Downloader(url, **kwargs):
return MultiDownloader(downloaders)


def download(url, target, **kwargs):
return Downloader(url, **kwargs).download(target)
def download(url, target, disable_progress_bar=False, **kwargs):
return Downloader(url, **kwargs).download(target, disable_progress_bar)
9 changes: 9 additions & 0 deletions tests/test_downloader.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,11 @@
import os

import pytest
from tqdm.std import tqdm

from multiurl import Downloader, download
from multiurl.http import FullHTTPDownloader
from multiurl.base import progress_bar, NoBar


def test_http():
Expand Down Expand Up @@ -109,6 +111,13 @@ def test_ftp_download(tmp_path, ftpserver):
assert original.read() == downloaded.read()


def test_progress_bar():
bar = progress_bar(10, False, 5)
assert isinstance(bar, tqdm)

nobar = progress_bar(10, True, 5)
assert isinstance(nobar, NoBar)

if __name__ == "__main__":
logging.basicConfig(level=logging.DEBUG)
# test_order()