~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/config.py

  • Committer: Patch Queue Manager
  • Date: 2011-09-08 11:01:15 UTC
  • mfrom: (6123.1.16 gpg-typo)
  • Revision ID: pqm@cupuasso-20110908110115-gbb9benwkdksvzk5
(jelmer) Fix a typo (invalid format identifier) in an error message in
 bzrlib.gpg. (Jelmer Vernooij)

Show diffs side-by-side

added added

removed removed

Lines of Context:
77
77
import sys
78
78
 
79
79
 
80
 
import bzrlib
81
80
from bzrlib.decorators import needs_write_lock
82
81
from bzrlib.lazy_import import lazy_import
83
82
lazy_import(globals(), """
91
90
    debug,
92
91
    errors,
93
92
    lazy_regex,
94
 
    library_state,
95
93
    lockdir,
96
94
    mail_client,
97
95
    mergetools,
103
101
    urlutils,
104
102
    win32utils,
105
103
    )
106
 
from bzrlib.i18n import gettext
107
104
from bzrlib.util.configobj import configobj
108
105
""")
109
106
from bzrlib import (
448
445
                        elif m.group(2).lower() == 'g':
449
446
                            val *= 10**9
450
447
                else:
451
 
                    ui.ui_factory.show_warning(gettext('Invalid config value for "{0}" '
452
 
                                               ' value {1!r} is not an SI unit.').format(
453
 
                                                option_name, val))
 
448
                    ui.ui_factory.show_warning('Invalid config value for "%s" '
 
449
                                               ' value %r is not an SI unit.'
 
450
                                                % (option_name, val))
454
451
                    val = default
455
452
            except TypeError:
456
453
                val = default
625
622
        for (oname, value, section, conf_id, parser) in self._get_options():
626
623
            if oname.startswith('bzr.mergetool.'):
627
624
                tool_name = oname[len('bzr.mergetool.'):]
628
 
                tools[tool_name] = self.get_user_option(oname)
 
625
                tools[tool_name] = value
629
626
        trace.mutter('loaded merge tools: %r' % tools)
630
627
        return tools
631
628
 
2364
2361
                raise AssertionError(
2365
2362
                    'Only empty lists are supported as default values')
2366
2363
            self.default = u','
2367
 
        elif isinstance(default, (str, unicode, bool, int, float)):
 
2364
        elif isinstance(default, (str, unicode, bool, int)):
2368
2365
            # Rely on python to convert strings, booleans and integers
2369
2366
            self.default = u'%s' % (default,)
2370
2367
        else:
2429
2426
    return int(unicode_str)
2430
2427
 
2431
2428
 
2432
 
def float_from_store(unicode_str):
2433
 
    return float(unicode_str)
2434
 
 
2435
 
 
2436
 
 
2437
2429
# Use a an empty dict to initialize an empty configobj avoiding all
2438
2430
# parsing and encoding checks
2439
2431
_list_converter_config = configobj.ConfigObj(
2536
2528
    Option('default_format', default='2a',
2537
2529
           help='Format used when creating branches.'))
2538
2530
option_registry.register(
2539
 
    Option('dpush_strict', default=None,
2540
 
           from_unicode=bool_from_store,
2541
 
           help='''\
2542
 
The default value for ``dpush --strict``.
2543
 
 
2544
 
If present, defines the ``--strict`` option default value for checking
2545
 
uncommitted changes before pushing into a different VCS without any
2546
 
custom bzr metadata.
2547
 
'''))
2548
 
option_registry.register(
2549
2531
    Option('editor',
2550
2532
           help='The command called to launch an editor to enter a message.'))
2551
2533
option_registry.register(
2576
2558
           help= 'Unicode encoding for output'
2577
2559
           ' (terminal encoding if not specified).'))
2578
2560
option_registry.register(
2579
 
    Option('push_strict', default=None,
2580
 
           from_unicode=bool_from_store,
2581
 
           help='''\
2582
 
The default value for ``push --strict``.
2583
 
 
2584
 
If present, defines the ``--strict`` option default value for checking
2585
 
uncommitted changes before sending a merge directive.
2586
 
'''))
2587
 
option_registry.register(
2588
2561
    Option('repository.fdatasync', default=True,
2589
2562
           from_unicode=bool_from_store,
2590
2563
           help='''\
2594
2567
to physical disk.  This is somewhat slower, but means data should not be
2595
2568
lost if the machine crashes.  See also dirstate.fdatasync.
2596
2569
'''))
2597
 
option_registry.register(
2598
 
    Option('send_strict', default=None,
2599
 
           from_unicode=bool_from_store,
2600
 
           help='''\
2601
 
The default value for ``send --strict``.
2602
 
 
2603
 
If present, defines the ``--strict`` option default value for checking
2604
 
uncommitted changes before pushing.
2605
 
'''))
2606
 
 
2607
 
option_registry.register(
2608
 
    Option('serve.client_timeout',
2609
 
           default=300.0, from_unicode=float_from_store,
2610
 
           help="If we wait for a new request from a client for more than"
2611
 
                " X seconds, consider the client idle, and hangup."))
2612
2570
 
2613
2571
 
2614
2572
class Section(object):
2657
2615
        del self.options[name]
2658
2616
 
2659
2617
 
2660
 
class CommandLineSection(MutableSection):
2661
 
    """A section used to carry command line overrides for the config options."""
2662
 
 
2663
 
    def __init__(self, opts=None):
2664
 
        if opts is None:
2665
 
            opts = {}
2666
 
        super(CommandLineSection, self).__init__('cmdline-overrides', opts)
2667
 
 
2668
 
    def _reset(self):
2669
 
        # The dict should be cleared but not replaced so it can be shared.
2670
 
        self.options.clear()
2671
 
 
2672
 
    def _from_cmdline(self, overrides):
2673
 
        # Reset before accepting new definitions
2674
 
        self._reset()
2675
 
        for over in overrides:
2676
 
            try:
2677
 
                name, value = over.split('=', 1)
2678
 
            except ValueError:
2679
 
                raise errors.BzrCommandError(
2680
 
                    gettext("Invalid '%s', should be of the form 'name=value'")
2681
 
                    % (over,))
2682
 
            self.set(name, value)
2683
 
 
2684
 
 
2685
2618
class Store(object):
2686
2619
    """Abstract interface to persistent storage for configuration options."""
2687
2620
 
3272
3205
        # Mostly for debugging use
3273
3206
        return "<config.%s(%s)>" % (self.__class__.__name__, id(self))
3274
3207
 
3275
 
    def _get_overrides(self):
3276
 
        # Hack around library_state.initialize never called
3277
 
        if bzrlib.global_state is not None:
3278
 
            return [bzrlib.global_state.cmdline_overrides]
3279
 
        return []
3280
 
 
3281
3208
 
3282
3209
class _CompatibleStack(Stack):
3283
3210
    """Place holder for compatibility with previous design.
3309
3236
    def __init__(self):
3310
3237
        # Get a GlobalStore
3311
3238
        gstore = GlobalStore()
3312
 
        super(GlobalStack, self).__init__(
3313
 
            [self._get_overrides, gstore.get_sections],
3314
 
            gstore)
 
3239
        super(GlobalStack, self).__init__([gstore.get_sections], gstore)
3315
3240
 
3316
3241
 
3317
3242
class LocationStack(_CompatibleStack):
3325
3250
        matcher = LocationMatcher(lstore, location)
3326
3251
        gstore = GlobalStore()
3327
3252
        super(LocationStack, self).__init__(
3328
 
            [self._get_overrides,
3329
 
             matcher.get_sections, gstore.get_sections],
3330
 
            lstore)
 
3253
            [matcher.get_sections, gstore.get_sections], lstore)
3331
3254
 
3332
3255
 
3333
3256
class BranchStack(_CompatibleStack):
3339
3262
        matcher = LocationMatcher(lstore, branch.base)
3340
3263
        gstore = GlobalStore()
3341
3264
        super(BranchStack, self).__init__(
3342
 
            [self._get_overrides,
3343
 
             matcher.get_sections, bstore.get_sections, gstore.get_sections],
 
3265
            [matcher.get_sections, bstore.get_sections, gstore.get_sections],
3344
3266
            bstore)
3345
3267
        self.branch = branch
3346
3268