/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/commands.py

  • Committer: Jelmer Vernooij
  • Date: 2017-05-22 00:56:52 UTC
  • mfrom: (6621.2.26 py3_pokes)
  • Revision ID: jelmer@jelmer.uk-20170522005652-yjahcr9hwmjkno7n
Merge Python3 porting work ('py3 pokes')

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
import os
27
27
import sys
28
28
 
29
 
from breezy.lazy_import import lazy_import
 
29
from .lazy_import import lazy_import
30
30
lazy_import(globals(), """
31
31
import errno
32
32
import threading
46
46
    )
47
47
""")
48
48
 
49
 
from breezy.hooks import Hooks
50
 
from breezy.i18n import gettext
 
49
from .hooks import Hooks
 
50
from .i18n import gettext
51
51
# Compatibility - Option used to be in commands.
52
 
from breezy.option import Option
53
 
from breezy.plugin import disable_plugins, load_plugins
54
 
from breezy import registry
 
52
from .option import Option
 
53
from .plugin import disable_plugins, load_plugins
 
54
from . import registry
 
55
from .sixish import (
 
56
    string_types,
 
57
    )
55
58
 
56
59
 
57
60
class CommandInfo(object):
173
176
 
174
177
def _scan_module_for_commands(module):
175
178
    r = {}
176
 
    for name, obj in module.__dict__.iteritems():
 
179
    for name, obj in module.__dict__.items():
177
180
        if name.startswith("cmd_"):
178
181
            real_name = _unsquish_command_name(name)
179
182
            r[real_name] = obj
479
482
        purpose,sections,order = self._get_help_parts(doc)
480
483
 
481
484
        # If a custom usage section was provided, use it
482
 
        if sections.has_key('Usage'):
 
485
        if 'Usage' in sections:
483
486
            usage = sections.pop('Usage')
484
487
        else:
485
488
            usage = self._usage()
517
520
        if verbose:
518
521
            # Add the description, indenting it 2 spaces
519
522
            # to match the indentation of the options
520
 
            if sections.has_key(None):
 
523
            if None in sections:
521
524
                text = sections.pop(None)
522
525
                text = '\n  '.join(text.splitlines())
523
526
                result += gettext(':Description:\n  %s\n\n') % (text,)
577
580
        """
578
581
        def save_section(sections, order, label, section):
579
582
            if len(section) > 0:
580
 
                if sections.has_key(label):
 
583
                if label in sections:
581
584
                    sections[label] += '\n' + section
582
585
                else:
583
586
                    order.append(label)
627
630
        r = Option.STD_OPTIONS.copy()
628
631
        std_names = r.keys()
629
632
        for o in self.takes_options:
630
 
            if isinstance(o, basestring):
 
633
            if isinstance(o, string_types):
631
634
                o = option.Option.OPTIONS[o]
632
635
            r[o.name] = o
633
636
            if o.name in std_names:
654
657
        trace.set_verbosity_level(option._verbosity_level)
655
658
        if 'verbose' in self.supported_std_options:
656
659
            opts['verbose'] = trace.is_verbose()
657
 
        elif opts.has_key('verbose'):
 
660
        elif 'verbose' in opts:
658
661
            del opts['verbose']
659
662
        if 'quiet' in self.supported_std_options:
660
663
            opts['quiet'] = trace.is_quiet()
661
 
        elif opts.has_key('quiet'):
 
664
        elif 'quiet' in opts:
662
665
            del opts['quiet']
663
666
        # mix arguments and options into one dictionary
664
667
        cmdargs = _match_argform(self.name(), self.takes_args, args)
821
824
    # option name is given.  See http://bugs.python.org/issue2931
822
825
    try:
823
826
        options, args = parser.parse_args(args)
824
 
    except UnicodeEncodeError,e:
 
827
    except UnicodeEncodeError as e:
825
828
        raise errors.BzrCommandError(
826
829
            gettext('Only ASCII permitted in option names'))
827
830
 
828
 
    opts = dict([(k, v) for k, v in options.__dict__.iteritems() if
 
831
    opts = dict([(k, v) for k, v in options.__dict__.items() if
829
832
                 v is not option.OptionParser.DEFAULT_VALUE])
830
833
    return args, opts
831
834
 
928
931
    """
929
932
    try:
930
933
        return the_callable(*args, **kwargs)
931
 
    except (KeyboardInterrupt, Exception), e:
 
934
    except (KeyboardInterrupt, Exception) as e:
932
935
        # used to handle AssertionError and KeyboardInterrupt
933
936
        # specially here, but hopefully they're handled ok by the logger now
934
937
        exc_info = sys.exc_info()
935
938
        exitcode = trace.report_exception(exc_info, sys.stderr)
936
939
        if os.environ.get('BRZ_PDB'):
937
 
            print '**** entering debugger'
 
940
            print('**** entering debugger')
938
941
            import pdb
939
942
            pdb.post_mortem(exc_info[2])
940
943
        return exitcode
1096
1099
    cmd = argv.pop(0)
1097
1100
    cmd_obj = get_cmd_object(cmd, plugins_override=not opt_builtin)
1098
1101
    if opt_no_l10n:
1099
 
        cmd.l10n = False
 
1102
        cmd_obj.l10n = False
1100
1103
    run = cmd_obj.run_argv_aliases
1101
1104
    run_argv = [argv, alias_argv]
1102
1105
 
1138
1141
            result = func(*args, **kwargs)
1139
1142
            sys.stdout.flush()
1140
1143
            return result
1141
 
        except IOError, e:
 
1144
        except IOError as e:
1142
1145
            if getattr(e, 'errno', None) is None:
1143
1146
                raise
1144
1147
            if e.errno != errno.EPIPE:
1229
1232
    install_bzr_command_hooks()
1230
1233
    try:
1231
1234
        return run_bzr(argv)
1232
 
    except Exception, e:
 
1235
    except Exception as e:
1233
1236
        if (isinstance(e, (OSError, IOError))
1234
1237
            or not getattr(e, 'internal_error', True)):
1235
1238
            trace.report_exception(sys.exc_info(), sys.stderr)
1277
1280
    """This registry exists to allow other providers to exist"""
1278
1281
 
1279
1282
    def __iter__(self):
1280
 
        for key, provider in self.iteritems():
 
1283
        for key, provider in self.items():
1281
1284
            yield provider
1282
1285
 
1283
1286
command_providers_registry = ProvidersRegistry()