forked from virt-manager/virt-manager
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprogress.py
52 lines (40 loc) · 1.15 KB
/
progress.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#
# Copyright 2021 Red Hat, Inc.
#
# This work is licensed under the GNU GPLv2 or later.
# See the COPYING file in the top-level directory.
#
import sys
from . import _progresspriv
class Meter:
"""
Meter class that hides the internals of the backend implementation
from virtinst and friends
"""
# Used by virt-manager subclass
format_number = _progresspriv.format_number
format_time = _progresspriv.format_time
def __init__(self, quiet=False):
self._text = None
self._size = None
self._total_read = 0
if quiet:
self._meter = _progresspriv.BaseMeter()
else:
self._meter = _progresspriv.TextMeter(output=sys.stdout)
def start(self, text, size):
self._text = text
self._size = size
self._total_read = 0
self._meter.start(text, size)
def update(self, new_total):
self._total_read = new_total
self._meter.update(new_total)
def end(self):
self._meter.end()
def make_meter(quiet):
return Meter(quiet=quiet)
def ensure_meter(meter):
if meter:
return meter
return make_meter(quiet=True)