~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/progress.py

  • Committer: Vincent Ladeuil
  • Date: 2012-03-13 17:25:29 UTC
  • mfrom: (6499 +trunk)
  • mto: This revision was merged to the branch mainline in revision 6501.
  • Revision ID: v.ladeuil+lp@free.fr-20120313172529-i0suyjnepsor25i7
Merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
 
 
18
17
"""Progress indicators.
19
18
 
20
19
The usual way to use this is via bzrlib.ui.ui_factory.nested_progress_bar which
21
20
will manage a conceptual stack of nested activities.
22
21
"""
23
22
 
 
23
from __future__ import absolute_import
24
24
 
25
 
import sys
26
25
import time
27
26
import os
28
27
 
29
28
 
30
 
from bzrlib.symbol_versioning import (
31
 
    deprecated_in,
32
 
    deprecated_method,
33
 
    )
34
 
 
35
 
 
36
29
def _supports_progress(f):
37
30
    """Detect if we can use pretty progress bars on file F.
38
31
 
166
159
            self.ui_factory.clear_term()
167
160
 
168
161
 
169
 
# NOTE: This is also deprecated; you should provide a ProgressView instead.
170
 
class _BaseProgressBar(object):
171
 
 
172
 
    def __init__(self,
173
 
                 to_file=None,
174
 
                 show_pct=False,
175
 
                 show_spinner=False,
176
 
                 show_eta=False,
177
 
                 show_bar=True,
178
 
                 show_count=True,
179
 
                 to_messages_file=None,
180
 
                 _stack=None):
181
 
        object.__init__(self)
182
 
        if to_file is None:
183
 
            to_file = sys.stderr
184
 
        if to_messages_file is None:
185
 
            to_messages_file = sys.stdout
186
 
        self.to_file = to_file
187
 
        self.to_messages_file = to_messages_file
188
 
        self.last_msg = None
189
 
        self.last_cnt = None
190
 
        self.last_total = None
191
 
        self.show_pct = show_pct
192
 
        self.show_spinner = show_spinner
193
 
        self.show_eta = show_eta
194
 
        self.show_bar = show_bar
195
 
        self.show_count = show_count
196
 
        self._stack = _stack
197
 
        # seed throttler
198
 
        self.MIN_PAUSE = 0.1 # seconds
199
 
        now = time.time()
200
 
        # starting now
201
 
        self.start_time = now
202
 
        # next update should not throttle
203
 
        self.last_update = now - self.MIN_PAUSE - 1
204
 
 
205
 
    def finished(self):
206
 
        """Return this bar to its progress stack."""
207
 
        self.clear()
208
 
        self._stack.return_pb(self)
209
 
 
210
 
 
211
162
class DummyProgress(object):
212
163
    """Progress-bar standin that does nothing.
213
164