예제 #1
0
    def test_run(self):
        progress = CliProgress()

        progress.start(title='Test Bar',
                       text='Doing stuff',
                       min_value=100,
                       max_value=300,
                       init_value=100)

        time.sleep(.1)

        progress.update(value=150, text='Updating')

        time.sleep(.1)

        progress.add(quantum=50, text='Updating')

        time.sleep(.1)

        self.assertFalse(progress.canceled)

        progress.end()
예제 #2
0
import time
import logging
from hyo2.abc.lib.logging import set_logging

from hyo2.abc.lib.progress.cli_progress import CliProgress

logger = logging.getLogger(__name__)
set_logging(ns_list=["hyo2.abc"])

progress = CliProgress()

progress.start(title='Test Bar',
               text='Doing stuff',
               min_value=100,
               max_value=300,
               init_value=100)

time.sleep(.1)

progress.update(value=150, text='Updating')

time.sleep(.1)

progress.add(quantum=50, text='Updating')

time.sleep(.1)

print("canceled? %s" % progress.canceled)

progress.end()
예제 #3
0
class OneDrive:
    def __init__(self,
                 show_progress: bool = False,
                 debug_mode: bool = False,
                 progress: AbstractProgress = None):
        if debug_mode:
            self.debug_level = 2
        else:
            self.debug_level = 0
        self.show_progress = show_progress
        self.chunk_count = None
        self.filesize = None
        self.file_count = None
        self.file_nr = None
        if progress is None:
            self.progress = CliProgress()
        else:
            self.progress = progress

    def get_file(self, file_src: str, file_dst: str, unzip_it: bool = False):
        """ Retrieve a file

        Args:
            file_src:           File source
            file_dst:           File destination
            unzip_it:           Unzip the retrieved file
        """

        file_dst = os.path.abspath(file_dst)
        if os.path.exists(file_dst):
            os.remove(file_dst)

        response = requests.get(file_src, stream=True)
        total_size_in_bytes = int(response.headers.get('content-length', 0))
        logger.debug("size in bytes: %d" % total_size_in_bytes)
        block_size = 1024 * 1024
        blocks = total_size_in_bytes / block_size + 2.0
        quantum = 100.0 / blocks
        if self.show_progress:
            self.progress.start(text="Downloading", has_abortion=True)

        with open(file_dst, 'wb') as file:
            for data in response.iter_content(chunk_size=block_size):
                if self.show_progress:
                    if self.progress.canceled:
                        raise RuntimeError("download stopped by user")
                    self.progress.add(quantum=quantum)
                file.write(data)

        if self.show_progress:
            self.progress.end()

        if unzip_it:
            import zipfile

            try:
                z = zipfile.ZipFile(file_dst, "r")

                unzip_path = os.path.dirname(file_dst)

                logger.debug("unzipping %s to %s" % (file_dst, unzip_path))

                name_list = z.namelist()
                self.file_nr = len(name_list)
                if self.show_progress:
                    self.progress.start(text="Unzipping", has_abortion=True)

                self.file_count = 0
                for item in name_list:
                    # print(item)
                    z.extract(item, unzip_path)
                    self.file_count += 1
                    if self.show_progress:
                        if self.progress.canceled:
                            raise RuntimeError("unzip stopped by user")
                        pct = int((self.file_count / self.file_nr) * 100.0)
                        self.progress.update(pct)
                z.close()
                os.remove(file_dst)
                if self.show_progress:
                    self.progress.end()

            except Exception as e:
                traceback.print_exc()
                raise RuntimeError(
                    "unable to unzip the downloaded file: %s -> %s" %
                    (file_dst, e))
예제 #4
0
class TestABCLibCliProgress(unittest.TestCase):
    def setUp(self):
        self.progress = CliProgress()

    def test_start_minimal(self):
        try:
            self.progress.start()
        except Exception as e:
            self.fail(e)

    def test_start_custom_title_text(self):
        try:
            self.progress.start(title='Test Bar', text='Doing stuff')
        except Exception as e:
            self.fail(e)

    def test_start_custom_min_max(self):
        try:
            self.progress.start(min_value=100, max_value=300, init_value=100)
        except Exception as e:
            self.fail(e)

    def test_start_minimal_update(self):
        try:
            self.progress.start()
            self.progress.update(50)
        except Exception as e:
            self.fail(e)

    def test_start_minimal_update_raising(self):
        with self.assertRaises(Exception) as context:
            self.progress.start()
            self.progress.update(1000)

    def test_start_minimal_add(self):
        try:
            self.progress.start()
            self.progress.add(50)
        except Exception as e:
            self.fail(e)

    def test_start_minimal_add_raising(self):
        with self.assertRaises(Exception) as context:
            self.progress.start()
            self.progress.add(1000)

    def test_run(self):
        progress = CliProgress()

        progress.start(title='Test Bar',
                       text='Doing stuff',
                       min_value=100,
                       max_value=300,
                       init_value=100)

        time.sleep(.1)

        progress.update(value=150, text='Updating')

        time.sleep(.1)

        progress.add(quantum=50, text='Updating')

        time.sleep(.1)

        self.assertFalse(progress.canceled)

        progress.end()