~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/ui/__init__.py

  • Committer: Andrew Bennetts
  • Date: 2010-10-13 00:26:41 UTC
  • mto: This revision was merged to the branch mainline in revision 5498.
  • Revision ID: andrew.bennetts@canonical.com-20101013002641-9tlh9k89mlj1666m
Keep docs-plain working.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2011 Canonical Ltd
 
1
# Copyright (C) 2005-2010 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
42
42
"""
43
43
 
44
44
 
 
45
import os
 
46
import sys
45
47
import warnings
46
48
 
47
49
from bzrlib.lazy_import import lazy_import
48
50
lazy_import(globals(), """
 
51
import getpass
 
52
 
49
53
from bzrlib import (
 
54
    errors,
50
55
    osutils,
51
56
    progress,
52
57
    trace,
53
58
    )
54
59
""")
 
60
from bzrlib.symbol_versioning import (
 
61
    deprecated_function,
 
62
    deprecated_in,
 
63
    deprecated_method,
 
64
    )
55
65
 
56
66
 
57
67
_valid_boolean_strings = dict(yes=True, no=False,
144
154
            "%(from_format)s to %(to_format)s.\n"
145
155
            "This may take some time. Upgrade the repositories to the "
146
156
            "same format for better performance."
147
 
            ),
148
 
        deprecated_command=(
149
 
            "The command 'bzr %(deprecated_name)s' "
150
 
            "has been deprecated in bzr %(deprecated_in_version)s. "
151
 
            "Please use 'bzr %(recommended_name)s' instead."),
152
 
        recommend_upgrade=("%(current_format_name)s is deprecated "
153
 
            "and a better format is available.\n"
154
 
            "It is recommended that you upgrade by "
155
 
            "running the command\n"
156
 
            "  bzr upgrade %(basedir)s"),
157
 
        locks_steal_dead=(
158
 
            u"Stole dead lock %(lock_url)s %(other_holder_info)s."),
 
157
            )
159
158
        )
160
159
 
161
160
    def __init__(self):
206
205
        """
207
206
        return self.get_boolean(prompt % prompt_kwargs)
208
207
 
209
 
    def get_password(self, prompt=u'', **kwargs):
 
208
    def get_password(self, prompt='', **kwargs):
210
209
        """Prompt the user for a password.
211
210
 
212
 
        :param prompt: The prompt to present the user (must be unicode)
 
211
        :param prompt: The prompt to present the user
213
212
        :param kwargs: Arguments which will be expanded into the prompt.
214
213
                       This lets front ends display different things if
215
214
                       they so choose.
306
305
        try:
307
306
            template = self._user_warning_templates[warning_id]
308
307
        except KeyError:
309
 
            fail = "bzr warning: %r, %r" % (warning_id, message_args)
310
 
            warnings.warn("no template for warning: " + fail)   # so tests will fail etc
 
308
            fail = "failed to format warning %r, %r" % (warning_id, message_args)
 
309
            warnings.warn(fail)   # so tests will fail etc
311
310
            return fail
312
311
        try:
313
312
            return template % message_args
314
313
        except ValueError, e:
315
 
            fail = "bzr unprintable warning: %r, %r, %s" % (
 
314
            fail = "failed to format warning %r, %r: %s" % (
316
315
                warning_id, message_args, e)
317
316
            warnings.warn(fail)   # so tests will fail etc
318
317
            return fail
321
320
        """Get a boolean question answered from the user.
322
321
 
323
322
        :param prompt: a message to prompt the user with. Should be a single
324
 
            line without terminating \\n.
 
323
        line without terminating \n.
325
324
        :return: True or False for y/yes or n/no.
326
325
        """
327
326
        raise NotImplementedError(self.get_boolean)
330
329
        """Get an integer from the user.
331
330
 
332
331
        :param prompt: a message to prompt the user with. Could be a multi-line
333
 
            prompt but without a terminating \\n.
 
332
            prompt but without a terminating \n.
334
333
 
335
334
        :return: A signed integer.
336
335
        """
344
343
        """
345
344
        return NullProgressView()
346
345
 
347
 
    def recommend_upgrade(self, current_format_name, basedir):
348
 
        """Recommend the user upgrade a control directory.
349
 
 
350
 
        :param current_format_name: Description of the current format
351
 
        :param basedir: Location of the control dir
352
 
        """
353
 
        self.show_user_warning('recommend_upgrade',
354
 
            current_format_name=current_format_name, basedir=basedir)
 
346
    def recommend_upgrade(self,
 
347
        current_format_name,
 
348
        basedir):
 
349
        # XXX: this should perhaps be in the TextUIFactory and the default can do
 
350
        # nothing
 
351
        #
 
352
        # XXX: Change to show_user_warning - that will accomplish the previous
 
353
        # xxx. -- mbp 2010-02-25
 
354
        trace.warning("%s is deprecated "
 
355
            "and a better format is available.\n"
 
356
            "It is recommended that you upgrade by "
 
357
            "running the command\n"
 
358
            "  bzr upgrade %s",
 
359
            current_format_name,
 
360
            basedir)
355
361
 
356
362
    def report_transport_activity(self, transport, byte_count, direction):
357
363
        """Called by transports as they do IO.
485
491
    def get_integer(self, prompt):
486
492
        return self.responses.pop(0)
487
493
 
488
 
    def get_password(self, prompt=u'', **kwargs):
 
494
    def get_password(self, prompt='', **kwargs):
489
495
        return self.responses.pop(0)
490
496
 
491
497
    def get_username(self, prompt, **kwargs):