~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/ui/__init__.py

Abbreviate pack_stat struct format to '>6L'

Show diffs side-by-side

added added

removed removed

Lines of Context:
47
47
from bzrlib.lazy_import import lazy_import
48
48
lazy_import(globals(), """
49
49
from bzrlib import (
 
50
    config,
50
51
    osutils,
51
52
    progress,
52
53
    trace,
145
146
            "This may take some time. Upgrade the repositories to the "
146
147
            "same format for better performance."
147
148
            ),
 
149
        experimental_format_fetch=("Fetching into experimental format "
 
150
            "%(to_format)s.\n"
 
151
            "This format may be unreliable or change in the future "
 
152
            "without an upgrade path.\n"),
148
153
        deprecated_command=(
149
154
            "The command 'bzr %(deprecated_name)s' "
150
155
            "has been deprecated in bzr %(deprecated_in_version)s. "
151
156
            "Please use 'bzr %(recommended_name)s' instead."),
 
157
        deprecated_command_option=(
 
158
            "The option '%(deprecated_name)s' to 'bzr %(command)s' "
 
159
            "has been deprecated in bzr %(deprecated_in_version)s. "
 
160
            "Please use '%(recommended_name)s' instead."),
152
161
        recommend_upgrade=("%(current_format_name)s is deprecated "
153
162
            "and a better format is available.\n"
154
163
            "It is recommended that you upgrade by "
155
164
            "running the command\n"
156
165
            "  bzr upgrade %(basedir)s"),
 
166
        locks_steal_dead=(
 
167
            u"Stole dead lock %(lock_url)s %(other_holder_info)s."),
157
168
        )
158
169
 
159
170
    def __init__(self):
204
215
        """
205
216
        return self.get_boolean(prompt % prompt_kwargs)
206
217
 
207
 
    def get_password(self, prompt='', **kwargs):
 
218
    def get_password(self, prompt=u'', **kwargs):
208
219
        """Prompt the user for a password.
209
220
 
210
 
        :param prompt: The prompt to present the user
 
221
        :param prompt: The prompt to present the user (must be unicode)
211
222
        :param kwargs: Arguments which will be expanded into the prompt.
212
223
                       This lets front ends display different things if
213
224
                       they so choose.
241
252
        """
242
253
        # XXX: is the caller supposed to close the resulting object?
243
254
        if encoding is None:
244
 
            from bzrlib import config
245
 
            encoding = config.GlobalConfig().get_user_option(
246
 
                'output_encoding')
 
255
            encoding = config.GlobalStack().get('output_encoding')
247
256
        if encoding is None:
248
257
            encoding = osutils.get_terminal_encoding(trace=True)
249
258
        if encoding_type is None:
304
313
        try:
305
314
            template = self._user_warning_templates[warning_id]
306
315
        except KeyError:
307
 
            fail = "failed to format warning %r, %r" % (warning_id, message_args)
308
 
            warnings.warn(fail)   # so tests will fail etc
 
316
            fail = "bzr warning: %r, %r" % (warning_id, message_args)
 
317
            warnings.warn("no template for warning: " + fail)   # so tests will fail etc
309
318
            return fail
310
319
        try:
311
320
            return template % message_args
312
321
        except ValueError, e:
313
 
            fail = "failed to format warning %r, %r: %s" % (
 
322
            fail = "bzr unprintable warning: %r, %r, %s" % (
314
323
                warning_id, message_args, e)
315
324
            warnings.warn(fail)   # so tests will fail etc
316
325
            return fail
319
328
        """Get a boolean question answered from the user.
320
329
 
321
330
        :param prompt: a message to prompt the user with. Should be a single
322
 
        line without terminating \n.
 
331
            line without terminating \\n.
323
332
        :return: True or False for y/yes or n/no.
324
333
        """
325
334
        raise NotImplementedError(self.get_boolean)
328
337
        """Get an integer from the user.
329
338
 
330
339
        :param prompt: a message to prompt the user with. Could be a multi-line
331
 
            prompt but without a terminating \n.
 
340
            prompt but without a terminating \\n.
332
341
 
333
342
        :return: A signed integer.
334
343
        """
406
415
        """Show a warning to the user."""
407
416
        raise NotImplementedError(self.show_warning)
408
417
 
409
 
    def warn_cross_format_fetch(self, from_format, to_format):
410
 
        """Warn about a potentially slow cross-format transfer.
411
 
        
412
 
        This is deprecated in favor of show_user_warning, but retained for api
413
 
        compatibility in 2.0 and 2.1.
414
 
        """
415
 
        self.show_user_warning('cross_format_fetch', from_format=from_format,
416
 
            to_format=to_format)
417
 
 
418
 
    def warn_experimental_format_fetch(self, inter):
419
 
        """Warn about fetching into experimental repository formats."""
420
 
        if inter.target._format.experimental:
421
 
            trace.warning("Fetching into experimental format %s.\n"
422
 
                "This format may be unreliable or change in the future "
423
 
                "without an upgrade path.\n" % (inter.target._format,))
424
 
 
425
418
 
426
419
class NoninteractiveUIFactory(UIFactory):
427
420
    """Base class for UIs with no user."""
483
476
    def get_integer(self, prompt):
484
477
        return self.responses.pop(0)
485
478
 
486
 
    def get_password(self, prompt='', **kwargs):
 
479
    def get_password(self, prompt=u'', **kwargs):
487
480
        return self.responses.pop(0)
488
481
 
489
482
    def get_username(self, prompt, **kwargs):