[merge] put back Option.short_name()

Martin Pool mbp at canonical.com
Fri Jan 12 03:59:12 GMT 2007


On 10 Jan 2007, John Arbash Meinel <john at arbash-meinel.com> wrote:
> For "SHORT_OPTIONS" I think we can do what I did with
> bzrlib.DEFAULT_IGNORES. Especially since the machinery is already there.
> 
> Just replace SHORT_OPTIONS with an object that handles __setitem__ or
> something like that to give a deprecation warning, and then does
> something like:
> 
> def __setitem__(self, key, value):
>   symbol_versioning.warn()
>   value._short_name = key
> 
> 
> At least, that would be my feeling.
> 
> I also think that plugins might want the ability to do:
> 
> Option.OPTIONS['long-command-option'].set_short_name('l')
> 
> 
> At least, I can see someone wanting to define an option that they use
> all the time.
> 
> We almost have the functionality in ALIASES, but what you really want
> there is a short-option expansion like popt has. IIRC, You can alias -X
> => --y --z --x=10 in something like ~/.popt_aliases

OK, here is a bundle for 0.14 that:

  adds a DeprecatedDict similar to the list - the implementation is a 
  bit different but shorter

  restores SHORT_OPTIONS: it doesn't handle every manipulation that you 
  could possible do, but it should support James and Aaron's cases and 
  it gives a clue how to update the code

  adds set_short_name

  and tests for the above


-- 
Martin
-------------- next part --------------
# Bazaar revision bundle v0.8
#
# message:
#   doc cleanup
# committer: mbp at sourcefrog.net
# date: Fri 2007-01-12 14:58:07.884000063 +1100

=== modified file bzrlib/option.py // last-changed:mbp at sourcefrog.net-200701120
... 35212-rgjqu83owh9s5s2p
--- bzrlib/option.py
+++ bzrlib/option.py
@@ -26,6 +26,7 @@
 from bzrlib import (
     errors,
     revisionspec,
+    symbol_versioning,
     )
 """)
 from bzrlib.trace import warning
@@ -109,10 +110,11 @@
             (typestring, type_list)
         raise errors.BzrCommandError(msg)
 
+
 class Option(object):
     """Description of a command line option
     
-    :ivar short_name: If this option has a single-letter name, this is it.
+    :ivar _short_name: If this option has a single-letter name, this is it.
     Otherwise None.
     """
 
@@ -138,13 +140,27 @@
         self.name = name
         self.help = help
         self.type = type
-        self.short_name = short_name
+        self._short_name = short_name
         if type is None:
             assert argname is None
         elif argname is None:
             argname = 'ARG'
         self.argname = argname
 
+    def short_name(self):
+        if self._short_name:
+            return self._short_name
+        else:
+            # remove this when SHORT_OPTIONS is removed
+            # XXX: This is accessing a DeprecatedDict, so we call the super 
+            # method to avoid warnings
+            for (k, v) in dict.iteritems(Option.SHORT_OPTIONS):
+                if v == self:
+                    return k
+
+    def set_short_name(self, short_name):
+        self._short_name = short_name
+
     def get_negation_name(self):
         if self.name.startswith('no-'):
             return self.name[3:]
@@ -184,7 +200,7 @@
         argname =  self.argname
         if argname is not None:
             argname = argname.upper()
-        yield self.name, self.short_name, argname, self.help
+        yield self.name, self.short_name(), argname, self.help
 
 
 class OptionParser(optparse.OptionParser):
@@ -202,7 +218,7 @@
     parser = OptionParser()
     parser.remove_option('--help')
     for option in options.itervalues():
-        option.add_option(parser, option.short_name)
+        option.add_option(parser, option.short_name())
     return parser
 
 
@@ -262,3 +278,21 @@
 _global_option('dry-run',
                help="show what would be done, but don't actually do anything")
 _global_option('name-from-revision', help='The path name in the old tree.')
+
+
+# prior to 0.14 these were always globally registered; the old dict is
+# available for plugins that use it but it should not be used.
+Option.SHORT_OPTIONS = symbol_versioning.DeprecatedDict(
+    symbol_versioning.zero_fourteen,
+    'SHORT_OPTIONS',
+    {
+        'F': Option.OPTIONS['file'],
+        'h': Option.OPTIONS['help'],
+        'm': Option.OPTIONS['message'],
+        'r': Option.OPTIONS['revision'],
+        'v': Option.OPTIONS['verbose'],
+        'l': Option.OPTIONS['long'],
+        'q': Option.OPTIONS['quiet'],
+    },
+    'Set the short option name when constructing the Option.',
+    )

=== modified file bzrlib/symbol_versioning.py
--- bzrlib/symbol_versioning.py
+++ bzrlib/symbol_versioning.py
@@ -1,5 +1,5 @@
-# Copyright (C) 2006 Canonical Ltd
-#   Authors: Robert Collins <robert.collins at canonical.com>
+# Copyright (C) 2006, 2007 Canonical Ltd
+#   Authors: Robert Collins <robert.collins at canonical.com> and others
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -176,6 +176,52 @@
     decorated_callable.is_deprecated = True
 
 
+def _dict_deprecation_wrapper(wrapped_method):
+    """Returns a closure that emits a warning and calls the superclass"""
+    def cb(dep_dict, *args, **kwargs):
+        msg = 'access to %s' % (dep_dict._variable_name, )
+        msg = dep_dict._deprecation_version % (msg,)
+        if dep_dict._advice:
+            msg += ' ' + dep_dict._advice
+        warn(msg, DeprecationWarning, stacklevel=2)
+        return wrapped_method(dep_dict, *args, **kwargs)
+    return cb
+
+
+class DeprecatedDict(dict):
+    """A dictionary that complains when read or written."""
+
+    is_deprecated = True
+
+    def __init__(self,
+        deprecation_version,
+        variable_name,
+        initial_value,
+        advice,
+        ):
+        """Create a dict that warns when read or modified.
+
+        :param deprecation_version: something like zero_nine
+        :param initial_value: The contents of the dict
+        :param variable_name: This allows better warnings to be printed
+        :param advice: String of advice on what callers should do instead 
+            of using this variable.
+        """
+        self._deprecation_version = deprecation_version
+        self._variable_name = variable_name
+        self._advice = advice
+        dict.__init__(self, initial_value)
+
+    # This isn't every possible method but it should trap anyone using the
+    # dict -- add more if desired
+    __len__ = _dict_deprecation_wrapper(dict.__len__)
+    __getitem__ = _dict_deprecation_wrapper(dict.__getitem__)
+    __setitem__ = _dict_deprecation_wrapper(dict.__setitem__)
+    __delitem__ = _dict_deprecation_wrapper(dict.__delitem__)
+    keys = _dict_deprecation_wrapper(dict.keys)
+    __contains__ = _dict_deprecation_wrapper(dict.__contains__)
+
+
 def deprecated_list(deprecation_version, variable_name,
                     initial_value, extra=None):
     """Create a list that warns when modified

=== modified file bzrlib/tests/test_options.py // last-changed:mbp at sourcefrog.n
... et-20070112035212-rgjqu83owh9s5s2p
--- bzrlib/tests/test_options.py
+++ bzrlib/tests/test_options.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2005, 2006 Canonical Ltd
+# Copyright (C) 2005, 2006, 2007 Canonical Ltd
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,12 +16,16 @@
 
 from bzrlib.builtins import cmd_commit, cmd_log, cmd_status
 from bzrlib.commands import Command, parse_args
-from bzrlib import errors
-from bzrlib import option
+from bzrlib import (
+        errors,
+        option,
+        symbol_versioning,
+        )
 from bzrlib.tests import TestCase
 
-# TODO: might be nice to just parse them into a structured form and test
-# against that, rather than running the whole command.
+def parse(options, args):
+    parser = option.get_optparser(dict((o.name, o) for o in options))
+    return parser.parse_args(args)
 
 class OptionTests(TestCase):
     """Command-line option tests"""
@@ -65,18 +69,48 @@
 
     def test_get_short_name(self):
         file_opt = option.Option.OPTIONS['file']
-        self.assertEquals(file_opt.short_name, 'F')
+        self.assertEquals(file_opt.short_name(), 'F')
         force_opt = option.Option.OPTIONS['force']
-        self.assertEquals(force_opt.short_name, None)
+        self.assertEquals(force_opt.short_name(), None)
+
+    def test_set_short_name(self):
+        o = option.Option('wiggle')
+        o.set_short_name('w')
+        self.assertEqual(o.short_name(), 'w')
+
+    def test_old_short_names(self):
+        # test the deprecated method for getting and setting short option
+        # names
+        expected_warning = (
+            "access to SHORT_OPTIONS was deprecated in version 0.14."
+            " Set the short option name when constructing the Option.",
+            DeprecationWarning, 2)
+        _warnings = []
+        def capture_warning(message, category, stacklevel=None):
+            _warnings.append((message, category, stacklevel))
+        old_warning_method = symbol_versioning.warn
+        try:
+            # an example of the kind of thing plugins might want to do through
+            # the old interface - make a new option and then give it a short
+            # name.
+            symbol_versioning.set_warning_method(capture_warning)
+            example_opt = option.Option('example', help='example option')
+            option.Option.SHORT_OPTIONS['w'] = example_opt
+            self.assertEqual(example_opt.short_name(), 'w')
+            self.assertEqual([expected_warning], _warnings)
+            # now check that it can actually be parsed with the registered
+            # value
+            opts, args = parse([example_opt], ['-w', 'foo'])
+            self.assertEqual(opts.example, True)
+            self.assertEqual(args, ['foo'])
+        finally:
+            symbol_versioning.set_warning_method(old_warning_method)
 
     def test_allow_dash(self):
         """Test that we can pass a plain '-' as an argument."""
         self.assertEqual((['-'], {}), parse_args(cmd_commit(), ['-']))
 
     def test_conversion(self):
-        def parse(options, args):
-            parser = option.get_optparser(dict((o.name, o) for o in options))
-            return parser.parse_args(args)
         options = [option.Option('hello')]
         opts, args = parse(options, ['--no-hello', '--hello'])
         self.assertEqual(True, opts.hello)

=== modified file bzrlib/tests/test_symbol_versioning.py // last-changed:mbp at so
... urcefrog.net-20070111080821-yz6m2b1byj72jg0y
--- bzrlib/tests/test_symbol_versioning.py
+++ bzrlib/tests/test_symbol_versioning.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2006 Canonical Ltd
+# Copyright (C) 2006, 2007 Canonical Ltd
 #   Authors: Robert Collins <robert.collins at canonical.com>
 #
 # This program is free software; you can redistribute it and/or modify
@@ -31,6 +31,14 @@
     'a_deprecated_list', ['one'], extra="Don't use me")
 
 
+a_deprecated_dict = symbol_versioning.DeprecatedDict(
+    symbol_versioning.zero_fourteen,
+    'a_deprecated_dict',
+    dict(a=42),
+    advice='Pull the other one!',
+    )
+
+
 class TestDeprecationWarnings(TestCase):
 
     def capture_warning(self, message, category, stacklevel=None):
@@ -81,8 +89,6 @@
         expected_warning = (
             "Modifying a_deprecated_list was deprecated in version 0.9."
             " Don't use me", DeprecationWarning, 3)
-        expected_doctstring = ('appending to a_deprecated_list is deprecated')
-
         old_warning_method = symbol_versioning.warn
         try:
             symbol_versioning.set_warning_method(self.capture_warning)
@@ -117,6 +123,26 @@
         finally:
             symbol_versioning.set_warning_method(old_warning_method)
 
+    def test_deprecated_dict(self):
+        expected_warning = (
+            "access to a_deprecated_dict was deprecated in version 0.14."
+            " Pull the other one!", DeprecationWarning, 2)
+        old_warning_method = symbol_versioning.warn
+        try:
+            symbol_versioning.set_warning_method(self.capture_warning)
+            self.assertEqual(len(a_deprecated_dict), 1)
+            self.assertEqual([expected_warning], self._warnings)
+
+            a_deprecated_dict['b'] = 42
+            self.assertEqual(a_deprecated_dict['b'], 42)
+            self.assertTrue('b' in a_deprecated_dict)
+            del a_deprecated_dict['b']
+            self.assertFalse('b' in a_deprecated_dict)
+            self.assertEqual([expected_warning] * 6, self._warnings)
+        finally:
+            symbol_versioning.set_warning_method(old_warning_method)
+
+
     def check_deprecated_callable(self, expected_warning, expected_docstring,
                                   expected_name, expected_module,
                                   deprecated_callable):

=== modified file tools/doc_generate/autodoc_rstx.py // last-changed:mbp at source
... frog.net-20070110072857-mmf4qblq5u67jz0k
--- tools/doc_generate/autodoc_rstx.py
+++ tools/doc_generate/autodoc_rstx.py
@@ -115,7 +115,7 @@
             l = '        --' + option_name
             if option.type is not None:
                 l += ' ' + option.argname.upper()
-            short_name = option.short_name
+            short_name = option.short_name()
             if short_name:
                 assert len(short_name) == 1
                 l += ', -' + short_name

=== modified directory  // last-changed:mbp at sourcefrog.net-20070112035807-7b5ca
... anb3y6b4r56
# revision id: mbp at sourcefrog.net-20070112035807-7b5caanb3y6b4r56
# sha1: dfd87165eb0d9af5cc78eca53863ee200fa167b9
# inventory sha1: 6eebda2b7207204c438d5aaf820d729e3a6ddd5e
# parent ids:
#   mbp at sourcefrog.net-20070112035212-rgjqu83owh9s5s2p
# base id: pqm at pqm.ubuntu.com-20070109142832-337c25188ea46f2d
# properties:
#   branch-nick: options

# message:
#   add test that legacy SHORT_OPTIONS really works, and set_short_name
# committer: mbp at sourcefrog.net
# date: Fri 2007-01-12 14:52:12.335999966 +1100

=== modified file bzrlib/option.py // encoding:base64
LS0tIGJ6cmxpYi9vcHRpb24ucHkKKysrIGJ6cmxpYi9vcHRpb24ucHkKQEAgLTE1OCw2ICsxNTgs
OSBAQAogICAgICAgICAgICAgICAgIGlmIHYgPT0gc2VsZjoKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGsKIAorICAgIGRlZiBzZXRfc2hvcnRfbmFtZShzZWxmLCBzaG9ydF9uYW1lKToKKyAg
ICAgICAgc2VsZi5fc2hvcnRfbmFtZSA9IHNob3J0X25hbWUKKwogICAgIGRlZiBnZXRfbmVnYXRp
b25fbmFtZShzZWxmKToKICAgICAgICAgaWYgc2VsZi5uYW1lLnN0YXJ0c3dpdGgoJ25vLScpOgog
ICAgICAgICAgICAgcmV0dXJuIHNlbGYubmFtZVszOl0KCg==

=== modified file bzrlib/tests/test_options.py // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X29wdGlvbnMucHkKKysrIGJ6cmxpYi90ZXN0cy90ZXN0X29w
dGlvbnMucHkKQEAgLTIzLDggKzIzLDkgQEAKICAgICAgICAgKQogZnJvbSBienJsaWIudGVzdHMg
aW1wb3J0IFRlc3RDYXNlCiAKLSMgVE9ETzogbWlnaHQgYmUgbmljZSB0byBqdXN0IHBhcnNlIHRo
ZW0gaW50byBhIHN0cnVjdHVyZWQgZm9ybSBhbmQgdGVzdAotIyBhZ2FpbnN0IHRoYXQsIHJhdGhl
ciB0aGFuIHJ1bm5pbmcgdGhlIHdob2xlIGNvbW1hbmQuCitkZWYgcGFyc2Uob3B0aW9ucywgYXJn
cyk6CisgICAgcGFyc2VyID0gb3B0aW9uLmdldF9vcHRwYXJzZXIoZGljdCgoby5uYW1lLCBvKSBm
b3IgbyBpbiBvcHRpb25zKSkKKyAgICByZXR1cm4gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykKIAog
Y2xhc3MgT3B0aW9uVGVzdHMoVGVzdENhc2UpOgogICAgICIiIkNvbW1hbmQtbGluZSBvcHRpb24g
dGVzdHMiIiIKQEAgLTcyLDYgKzczLDExIEBACiAgICAgICAgIGZvcmNlX29wdCA9IG9wdGlvbi5P
cHRpb24uT1BUSU9OU1snZm9yY2UnXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhmb3JjZV9v
cHQuc2hvcnRfbmFtZSgpLCBOb25lKQogCisgICAgZGVmIHRlc3Rfc2V0X3Nob3J0X25hbWUoc2Vs
Zik6CisgICAgICAgIG8gPSBvcHRpb24uT3B0aW9uKCd3aWdnbGUnKQorICAgICAgICBvLnNldF9z
aG9ydF9uYW1lKCd3JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvLnNob3J0X25hbWUoKSwg
J3cnKQorCiAgICAgZGVmIHRlc3Rfb2xkX3Nob3J0X25hbWVzKHNlbGYpOgogICAgICAgICAjIHRl
c3QgdGhlIGRlcHJlY2F0ZWQgbWV0aG9kIGZvciBnZXR0aW5nIGFuZCBzZXR0aW5nIHNob3J0IG9w
dGlvbgogICAgICAgICAjIG5hbWVzCkBAIC04OCwxMCArOTQsMTUgQEAKICAgICAgICAgICAgICMg
dGhlIG9sZCBpbnRlcmZhY2UgLSBtYWtlIGEgbmV3IG9wdGlvbiBhbmQgdGhlbiBnaXZlIGl0IGEg
c2hvcnQKICAgICAgICAgICAgICMgbmFtZS4KICAgICAgICAgICAgIHN5bWJvbF92ZXJzaW9uaW5n
LnNldF93YXJuaW5nX21ldGhvZChjYXB0dXJlX3dhcm5pbmcpCi0gICAgICAgICAgICB3b3JraW5n
X3RyZWVfb3B0ID0gb3B0aW9uLk9wdGlvbignd29ya2luZyB0cmVlJywgaGVscD0nZXhhbXBsZSBv
cHRpb24nKQotICAgICAgICAgICAgb3B0aW9uLk9wdGlvbi5TSE9SVF9PUFRJT05TWyd3J10gPSB3
b3JraW5nX3RyZWVfb3B0Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdvcmtpbmdfdHJl
ZV9vcHQuc2hvcnRfbmFtZSgpLCAndycpCisgICAgICAgICAgICBleGFtcGxlX29wdCA9IG9wdGlv
bi5PcHRpb24oJ2V4YW1wbGUnLCBoZWxwPSdleGFtcGxlIG9wdGlvbicpCisgICAgICAgICAgICBv
cHRpb24uT3B0aW9uLlNIT1JUX09QVElPTlNbJ3cnXSA9IGV4YW1wbGVfb3B0CisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGV4YW1wbGVfb3B0LnNob3J0X25hbWUoKSwgJ3cnKQogICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChbZXhwZWN0ZWRfd2FybmluZ10sIF93YXJuaW5ncykKKyAg
ICAgICAgICAgICMgbm93IGNoZWNrIHRoYXQgaXQgY2FuIGFjdHVhbGx5IGJlIHBhcnNlZCB3aXRo
IHRoZSByZWdpc3RlcmVkCisgICAgICAgICAgICAjIHZhbHVlCisgICAgICAgICAgICBvcHRzLCBh
cmdzID0gcGFyc2UoW2V4YW1wbGVfb3B0XSwgWyctdycsICdmb28nXSkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwob3B0cy5leGFtcGxlLCBUcnVlKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChhcmdzLCBbJ2ZvbyddKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc3lt
Ym9sX3ZlcnNpb25pbmcuc2V0X3dhcm5pbmdfbWV0aG9kKG9sZF93YXJuaW5nX21ldGhvZCkKIApA
QCAtMTAwLDkgKzExMSw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKFsnLSddLCB7fSks
IHBhcnNlX2FyZ3MoY21kX2NvbW1pdCgpLCBbJy0nXSkpCiAKICAgICBkZWYgdGVzdF9jb252ZXJz
aW9uKHNlbGYpOgotICAgICAgICBkZWYgcGFyc2Uob3B0aW9ucywgYXJncyk6Ci0gICAgICAgICAg
ICBwYXJzZXIgPSBvcHRpb24uZ2V0X29wdHBhcnNlcihkaWN0KChvLm5hbWUsIG8pIGZvciBvIGlu
IG9wdGlvbnMpKQotICAgICAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCiAg
ICAgICAgIG9wdGlvbnMgPSBbb3B0aW9uLk9wdGlvbignaGVsbG8nKV0KICAgICAgICAgb3B0cywg
YXJncyA9IHBhcnNlKG9wdGlvbnMsIFsnLS1uby1oZWxsbycsICctLWhlbGxvJ10pCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgb3B0cy5oZWxsbykKCg==

=== modified directory  // last-changed:mbp at sourcefrog.net-20070112035212-rgjqu
... 83owh9s5s2p
# revision id: mbp at sourcefrog.net-20070112035212-rgjqu83owh9s5s2p
# sha1: f2ba4af7c82d84237753b70b320d8bfa2d76cd97
# inventory sha1: 20110b4398dbd381927856e8b9824d84e34d5f94
# parent ids:
#   mbp at sourcefrog.net-20070112034025-lxlybpp2qcxrs3py
# properties:
#   branch-nick: options

# message:
#   Restore access to SHORT_OPTIONS for compatibility
# committer: mbp at sourcefrog.net
# date: Fri 2007-01-12 14:40:25.421999931 +1100

=== modified file bzrlib/option.py // encoding:base64
LS0tIGJ6cmxpYi9vcHRpb24ucHkKKysrIGJ6cmxpYi9vcHRpb24ucHkKQEAgLTI2LDYgKzI2LDcg
QEAKIGZyb20gYnpybGliIGltcG9ydCAoCiAgICAgZXJyb3JzLAogICAgIHJldmlzaW9uc3BlYywK
KyAgICBzeW1ib2xfdmVyc2lvbmluZywKICAgICApCiAiIiIpCiBmcm9tIGJ6cmxpYi50cmFjZSBp
bXBvcnQgd2FybmluZwpAQCAtMTQ3LDcgKzE0OCwxNSBAQAogICAgICAgICBzZWxmLmFyZ25hbWUg
PSBhcmduYW1lCiAKICAgICBkZWYgc2hvcnRfbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNl
bGYuX3Nob3J0X25hbWUKKyAgICAgICAgaWYgc2VsZi5fc2hvcnRfbmFtZToKKyAgICAgICAgICAg
IHJldHVybiBzZWxmLl9zaG9ydF9uYW1lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIHJl
bW92ZSB0aGlzIHdoZW4gU0hPUlRfT1BUSU9OUyBpcyByZW1vdmVkCisgICAgICAgICAgICAjIFhY
WDogVGhpcyBpcyBhY2Nlc3NpbmcgYSBEZXByZWNhdGVkRGljdCwgc28gd2UgY2FsbCB0aGUgc3Vw
ZXIgCisgICAgICAgICAgICAjIG1ldGhvZCB0byBhdm9pZCB3YXJuaW5ncworICAgICAgICAgICAg
Zm9yIChrLCB2KSBpbiBkaWN0Lml0ZXJpdGVtcyhPcHRpb24uU0hPUlRfT1BUSU9OUyk6CisgICAg
ICAgICAgICAgICAgaWYgdiA9PSBzZWxmOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gawog
CiAgICAgZGVmIGdldF9uZWdhdGlvbl9uYW1lKHNlbGYpOgogICAgICAgICBpZiBzZWxmLm5hbWUu
c3RhcnRzd2l0aCgnbm8tJyk6CkBAIC0yNjYsMyArMjc1LDIxIEBACiBfZ2xvYmFsX29wdGlvbign
ZHJ5LXJ1bicsCiAgICAgICAgICAgICAgICBoZWxwPSJzaG93IHdoYXQgd291bGQgYmUgZG9uZSwg
YnV0IGRvbid0IGFjdHVhbGx5IGRvIGFueXRoaW5nIikKIF9nbG9iYWxfb3B0aW9uKCduYW1lLWZy
b20tcmV2aXNpb24nLCBoZWxwPSdUaGUgcGF0aCBuYW1lIGluIHRoZSBvbGQgdHJlZS4nKQorCisK
KyMgcHJpb3IgdG8gMC4xNCB0aGVzZSB3ZXJlIGFsd2F5cyBnbG9iYWxseSByZWdpc3RlcmVkOyB0
aGUgb2xkIGRpY3QgaXMKKyMgYXZhaWxhYmxlIGZvciBwbHVnaW5zIHRoYXQgdXNlIGl0IGJ1dCBp
dCBzaG91bGQgbm90IGJlIHVzZWQuCitPcHRpb24uU0hPUlRfT1BUSU9OUyA9IHN5bWJvbF92ZXJz
aW9uaW5nLkRlcHJlY2F0ZWREaWN0KAorICAgIHN5bWJvbF92ZXJzaW9uaW5nLnplcm9fZm91cnRl
ZW4sCisgICAgJ1NIT1JUX09QVElPTlMnLAorICAgIHsKKyAgICAgICAgJ0YnOiBPcHRpb24uT1BU
SU9OU1snZmlsZSddLAorICAgICAgICAnaCc6IE9wdGlvbi5PUFRJT05TWydoZWxwJ10sCisgICAg
ICAgICdtJzogT3B0aW9uLk9QVElPTlNbJ21lc3NhZ2UnXSwKKyAgICAgICAgJ3InOiBPcHRpb24u
T1BUSU9OU1sncmV2aXNpb24nXSwKKyAgICAgICAgJ3YnOiBPcHRpb24uT1BUSU9OU1sndmVyYm9z
ZSddLAorICAgICAgICAnbCc6IE9wdGlvbi5PUFRJT05TWydsb25nJ10sCisgICAgICAgICdxJzog
T3B0aW9uLk9QVElPTlNbJ3F1aWV0J10sCisgICAgfSwKKyAgICAnU2V0IHRoZSBzaG9ydCBvcHRp
b24gbmFtZSB3aGVuIGNvbnN0cnVjdGluZyB0aGUgT3B0aW9uLicsCisgICAgKQoK

=== modified file bzrlib/tests/test_options.py // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X29wdGlvbnMucHkKKysrIGJ6cmxpYi90ZXN0cy90ZXN0X29w
dGlvbnMucHkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBDYW5v
bmljYWwgTHRkCisjIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNyBDYW5vbmljYWwgTHRk
CiAjCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0xNiw4ICsxNiwxMSBAQAogCiBm
cm9tIGJ6cmxpYi5idWlsdGlucyBpbXBvcnQgY21kX2NvbW1pdCwgY21kX2xvZywgY21kX3N0YXR1
cwogZnJvbSBienJsaWIuY29tbWFuZHMgaW1wb3J0IENvbW1hbmQsIHBhcnNlX2FyZ3MKLWZyb20g
YnpybGliIGltcG9ydCBlcnJvcnMKLWZyb20gYnpybGliIGltcG9ydCBvcHRpb24KK2Zyb20gYnpy
bGliIGltcG9ydCAoCisgICAgICAgIGVycm9ycywKKyAgICAgICAgb3B0aW9uLAorICAgICAgICBz
eW1ib2xfdmVyc2lvbmluZywKKyAgICAgICAgKQogZnJvbSBienJsaWIudGVzdHMgaW1wb3J0IFRl
c3RDYXNlCiAKICMgVE9ETzogbWlnaHQgYmUgbmljZSB0byBqdXN0IHBhcnNlIHRoZW0gaW50byBh
IHN0cnVjdHVyZWQgZm9ybSBhbmQgdGVzdApAQCAtNjksNiArNzIsMjkgQEAKICAgICAgICAgZm9y
Y2Vfb3B0ID0gb3B0aW9uLk9wdGlvbi5PUFRJT05TWydmb3JjZSddCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKGZvcmNlX29wdC5zaG9ydF9uYW1lKCksIE5vbmUpCiAKKyAgICBkZWYgdGVzdF9v
bGRfc2hvcnRfbmFtZXMoc2VsZik6CisgICAgICAgICMgdGVzdCB0aGUgZGVwcmVjYXRlZCBtZXRo
b2QgZm9yIGdldHRpbmcgYW5kIHNldHRpbmcgc2hvcnQgb3B0aW9uCisgICAgICAgICMgbmFtZXMK
KyAgICAgICAgZXhwZWN0ZWRfd2FybmluZyA9ICgKKyAgICAgICAgICAgICJhY2Nlc3MgdG8gU0hP
UlRfT1BUSU9OUyB3YXMgZGVwcmVjYXRlZCBpbiB2ZXJzaW9uIDAuMTQuIgorICAgICAgICAgICAg
IiBTZXQgdGhlIHNob3J0IG9wdGlvbiBuYW1lIHdoZW4gY29uc3RydWN0aW5nIHRoZSBPcHRpb24u
IiwKKyAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgX3dhcm5pbmdz
ID0gW10KKyAgICAgICAgZGVmIGNhcHR1cmVfd2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgc3Rh
Y2tsZXZlbD1Ob25lKToKKyAgICAgICAgICAgIF93YXJuaW5ncy5hcHBlbmQoKG1lc3NhZ2UsIGNh
dGVnb3J5LCBzdGFja2xldmVsKSkKKyAgICAgICAgb2xkX3dhcm5pbmdfbWV0aG9kID0gc3ltYm9s
X3ZlcnNpb25pbmcud2FybgorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIGFuIGV4YW1wbGUg
b2YgdGhlIGtpbmQgb2YgdGhpbmcgcGx1Z2lucyBtaWdodCB3YW50IHRvIGRvIHRocm91Z2gKKyAg
ICAgICAgICAgICMgdGhlIG9sZCBpbnRlcmZhY2UgLSBtYWtlIGEgbmV3IG9wdGlvbiBhbmQgdGhl
biBnaXZlIGl0IGEgc2hvcnQKKyAgICAgICAgICAgICMgbmFtZS4KKyAgICAgICAgICAgIHN5bWJv
bF92ZXJzaW9uaW5nLnNldF93YXJuaW5nX21ldGhvZChjYXB0dXJlX3dhcm5pbmcpCisgICAgICAg
ICAgICB3b3JraW5nX3RyZWVfb3B0ID0gb3B0aW9uLk9wdGlvbignd29ya2luZyB0cmVlJywgaGVs
cD0nZXhhbXBsZSBvcHRpb24nKQorICAgICAgICAgICAgb3B0aW9uLk9wdGlvbi5TSE9SVF9PUFRJ
T05TWyd3J10gPSB3b3JraW5nX3RyZWVfb3B0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHdvcmtpbmdfdHJlZV9vcHQuc2hvcnRfbmFtZSgpLCAndycpCisgICAgICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKFtleHBlY3RlZF93YXJuaW5nXSwgX3dhcm5pbmdzKQorICAgICAgICBmaW5hbGx5
OgorICAgICAgICAgICAgc3ltYm9sX3ZlcnNpb25pbmcuc2V0X3dhcm5pbmdfbWV0aG9kKG9sZF93
YXJuaW5nX21ldGhvZCkKKwogICAgIGRlZiB0ZXN0X2FsbG93X2Rhc2goc2VsZik6CiAgICAgICAg
ICIiIlRlc3QgdGhhdCB3ZSBjYW4gcGFzcyBhIHBsYWluICctJyBhcyBhbiBhcmd1bWVudC4iIiIK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoWyctJ10sIHt9KSwgcGFyc2VfYXJncyhjbWRfY29t
bWl0KCksIFsnLSddKSkKCg==

=== modified directory  // last-changed:mbp at sourcefrog.net-20070112034025-lxlyb
... pp2qcxrs3py
# revision id: mbp at sourcefrog.net-20070112034025-lxlybpp2qcxrs3py
# sha1: 1f4b3e26617532305a24cb0377784ed36020cdbf
# inventory sha1: d11ad0dd9ac9ab3797d02cb7a964d211df25fbf4
# parent ids:
#   mbp at sourcefrog.net-20070111080821-yz6m2b1byj72jg0y
# properties:
#   branch-nick: options

# message:
#   Add a simple DeprecatedDict class
#   
# committer: mbp at sourcefrog.net
# date: Thu 2007-01-11 19:08:21.834000111 +1100

=== modified file bzrlib/option.py // encoding:base64
LS0tIGJ6cmxpYi9vcHRpb24ucHkKKysrIGJ6cmxpYi9vcHRpb24ucHkKQEAgLTEwOSw2ICsxMDks
NyBAQAogICAgICAgICAgICAgKHR5cGVzdHJpbmcsIHR5cGVfbGlzdCkKICAgICAgICAgcmFpc2Ug
ZXJyb3JzLkJ6ckNvbW1hbmRFcnJvcihtc2cpCiAKKwogY2xhc3MgT3B0aW9uKG9iamVjdCk6CiAg
ICAgIiIiRGVzY3JpcHRpb24gb2YgYSBjb21tYW5kIGxpbmUgb3B0aW9uCiAgICAgCgo=

=== modified file bzrlib/symbol_versioning.py // encoding:base64
LS0tIGJ6cmxpYi9zeW1ib2xfdmVyc2lvbmluZy5weQorKysgYnpybGliL3N5bWJvbF92ZXJzaW9u
aW5nLnB5CkBAIC0xNzYsNiArMTc2LDUyIEBACiAgICAgZGVjb3JhdGVkX2NhbGxhYmxlLmlzX2Rl
cHJlY2F0ZWQgPSBUcnVlCiAKIAorZGVmIF9kaWN0X2RlcHJlY2F0aW9uX3dyYXBwZXIoZnVuYyk6
CisgICAgIiIiUmV0dXJucyBhIGNsb3N1cmUgdGhhdCBlbWl0cyBhIHdhcm5pbmcgYW5kIGNhbGxz
IHRoZSBzdXBlcmNsYXNzIiIiCisgICAgZGVmIGNiKGRlcF9kaWN0LCAqYXJncywgKiprd2FyZ3Mp
OgorICAgICAgICBtc2cgPSAnYWNjZXNzIHRvICVzJyAlIChkZXBfZGljdC5fdmFyaWFibGVfbmFt
ZSwgKQorICAgICAgICBtc2cgPSBkZXBfZGljdC5fZGVwcmVjYXRpb25fdmVyc2lvbiAlIChtc2cs
KQorICAgICAgICBpZiBkZXBfZGljdC5fYWR2aWNlOgorICAgICAgICAgICAgbXNnICs9ICcgJyAr
IGRlcF9kaWN0Ll9hZHZpY2UKKyAgICAgICAgd2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywg
c3RhY2tsZXZlbD0yKQorICAgICAgICByZXR1cm4gZnVuYyhkZXBfZGljdCwgKmFyZ3MsICoqa3dh
cmdzKQorICAgIHJldHVybiBjYgorCisKK2NsYXNzIERlcHJlY2F0ZWREaWN0KGRpY3QpOgorICAg
ICIiIkEgZGljdGlvbmFyeSB0aGF0IGNvbXBsYWlucyB3aGVuIHJlYWQgb3Igd3JpdHRlbi4iIiIK
KworICAgIGlzX2RlcHJlY2F0ZWQgPSBUcnVlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwKKyAg
ICAgICAgZGVwcmVjYXRpb25fdmVyc2lvbiwKKyAgICAgICAgdmFyaWFibGVfbmFtZSwKKyAgICAg
ICAgaW5pdGlhbF92YWx1ZSwKKyAgICAgICAgYWR2aWNlLAorICAgICAgICApOgorICAgICAgICAi
IiJDcmVhdGUgYSBkaWN0IHRoYXQgd2FybnMgd2hlbiByZWFkIG9yIG1vZGlmaWVkLgorCisgICAg
ICAgIDpwYXJhbSBkZXByZWNhdGlvbl92ZXJzaW9uOiBzb21ldGhpbmcgbGlrZSB6ZXJvX25pbmUK
KyAgICAgICAgOnBhcmFtIGluaXRpYWxfdmFsdWU6IFRoZSBjb250ZW50cyBvZiB0aGUgZGljdAor
ICAgICAgICA6cGFyYW0gdmFyaWFibGVfbmFtZTogVGhpcyBhbGxvd3MgYmV0dGVyIHdhcm5pbmdz
IHRvIGJlIHByaW50ZWQKKyAgICAgICAgOnBhcmFtIGFkdmljZTogU3RyaW5nIG9mIGFkdmljZSBv
biB3aGF0IGNhbGxlcnMgc2hvdWxkIGRvIGluc3RlYWQgCisgICAgICAgICAgICBvZiB1c2luZyB0
aGlzIHZhcmlhYmxlLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fZGVwcmVjYXRpb25fdmVy
c2lvbiA9IGRlcHJlY2F0aW9uX3ZlcnNpb24KKyAgICAgICAgc2VsZi5fdmFyaWFibGVfbmFtZSA9
IHZhcmlhYmxlX25hbWUKKyAgICAgICAgc2VsZi5fYWR2aWNlID0gYWR2aWNlCisgICAgICAgIGRp
Y3QuX19pbml0X18oc2VsZiwgaW5pdGlhbF92YWx1ZSkKKworICAgICMgVGhpcyBpc24ndCBldmVy
eSBwb3NzaWJsZSBtZXRob2QgYnV0IGl0IHNob3VsZCB0cmFwIGFueW9uZSB1c2luZyB0aGUKKyAg
ICAjIGRpY3QgLS0gYWRkIG1vcmUgaWYgZGVzaXJlZAorICAgIF9fbGVuX18gPSBfZGljdF9kZXBy
ZWNhdGlvbl93cmFwcGVyKGRpY3QuX19sZW5fXykKKyAgICBfX2dldGl0ZW1fXyA9IF9kaWN0X2Rl
cHJlY2F0aW9uX3dyYXBwZXIoZGljdC5fX2dldGl0ZW1fXykKKyAgICBfX3NldGl0ZW1fXyA9IF9k
aWN0X2RlcHJlY2F0aW9uX3dyYXBwZXIoZGljdC5fX3NldGl0ZW1fXykKKyAgICBfX2RlbGl0ZW1f
XyA9IF9kaWN0X2RlcHJlY2F0aW9uX3dyYXBwZXIoZGljdC5fX2RlbGl0ZW1fXykKKyAgICBrZXlz
ID0gX2RpY3RfZGVwcmVjYXRpb25fd3JhcHBlcihkaWN0LmtleXMpCisgICAgX19jb250YWluc19f
ID0gX2RpY3RfZGVwcmVjYXRpb25fd3JhcHBlcihkaWN0Ll9fY29udGFpbnNfXykKKworCiBkZWYg
ZGVwcmVjYXRlZF9saXN0KGRlcHJlY2F0aW9uX3ZlcnNpb24sIHZhcmlhYmxlX25hbWUsCiAgICAg
ICAgICAgICAgICAgICAgIGluaXRpYWxfdmFsdWUsIGV4dHJhPU5vbmUpOgogICAgICIiIkNyZWF0
ZSBhIGxpc3QgdGhhdCB3YXJucyB3aGVuIG1vZGlmaWVkCgo=

=== modified file bzrlib/tests/test_symbol_versioning.py // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X3N5bWJvbF92ZXJzaW9uaW5nLnB5CisrKyBienJsaWIvdGVz
dHMvdGVzdF9zeW1ib2xfdmVyc2lvbmluZy5weQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDA2IENhbm9uaWNhbCBMdGQKKyMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IENhbm9u
aWNhbCBMdGQKICMgICBBdXRob3JzOiBSb2JlcnQgQ29sbGlucyA8cm9iZXJ0LmNvbGxpbnNAY2Fu
b25pY2FsLmNvbT4KICMKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTMxLDYgKzMxLDE0IEBACiAgICAgJ2Ff
ZGVwcmVjYXRlZF9saXN0JywgWydvbmUnXSwgZXh0cmE9IkRvbid0IHVzZSBtZSIpCiAKIAorYV9k
ZXByZWNhdGVkX2RpY3QgPSBzeW1ib2xfdmVyc2lvbmluZy5EZXByZWNhdGVkRGljdCgKKyAgICBz
eW1ib2xfdmVyc2lvbmluZy56ZXJvX2ZvdXJ0ZWVuLAorICAgICdhX2RlcHJlY2F0ZWRfZGljdCcs
CisgICAgZGljdChhPTQyKSwKKyAgICBhZHZpY2U9J1B1bGwgdGhlIG90aGVyIG9uZSEnLAorICAg
ICkKKworCiBjbGFzcyBUZXN0RGVwcmVjYXRpb25XYXJuaW5ncyhUZXN0Q2FzZSk6CiAKICAgICBk
ZWYgY2FwdHVyZV93YXJuaW5nKHNlbGYsIG1lc3NhZ2UsIGNhdGVnb3J5LCBzdGFja2xldmVsPU5v
bmUpOgpAQCAtODEsOCArODksNiBAQAogICAgICAgICBleHBlY3RlZF93YXJuaW5nID0gKAogICAg
ICAgICAgICAgIk1vZGlmeWluZyBhX2RlcHJlY2F0ZWRfbGlzdCB3YXMgZGVwcmVjYXRlZCBpbiB2
ZXJzaW9uIDAuOS4iCiAgICAgICAgICAgICAiIERvbid0IHVzZSBtZSIsIERlcHJlY2F0aW9uV2Fy
bmluZywgMykKLSAgICAgICAgZXhwZWN0ZWRfZG9jdHN0cmluZyA9ICgnYXBwZW5kaW5nIHRvIGFf
ZGVwcmVjYXRlZF9saXN0IGlzIGRlcHJlY2F0ZWQnKQotCiAgICAgICAgIG9sZF93YXJuaW5nX21l
dGhvZCA9IHN5bWJvbF92ZXJzaW9uaW5nLndhcm4KICAgICAgICAgdHJ5OgogICAgICAgICAgICAg
c3ltYm9sX3ZlcnNpb25pbmcuc2V0X3dhcm5pbmdfbWV0aG9kKHNlbGYuY2FwdHVyZV93YXJuaW5n
KQpAQCAtMTE3LDYgKzEyMywyNiBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc3lt
Ym9sX3ZlcnNpb25pbmcuc2V0X3dhcm5pbmdfbWV0aG9kKG9sZF93YXJuaW5nX21ldGhvZCkKIAor
ICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZGljdChzZWxmKToKKyAgICAgICAgZXhwZWN0ZWRfd2Fy
bmluZyA9ICgKKyAgICAgICAgICAgICJhY2Nlc3MgdG8gYV9kZXByZWNhdGVkX2RpY3Qgd2FzIGRl
cHJlY2F0ZWQgaW4gdmVyc2lvbiAwLjE0LiIKKyAgICAgICAgICAgICIgUHVsbCB0aGUgb3RoZXIg
b25lISIsIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgb2xkX3dhcm5pbmdfbWV0aG9k
ID0gc3ltYm9sX3ZlcnNpb25pbmcud2FybgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzeW1i
b2xfdmVyc2lvbmluZy5zZXRfd2FybmluZ19tZXRob2Qoc2VsZi5jYXB0dXJlX3dhcm5pbmcpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhX2RlcHJlY2F0ZWRfZGljdCksIDEpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtleHBlY3RlZF93YXJuaW5nXSwgc2VsZi5fd2Fy
bmluZ3MpCisKKyAgICAgICAgICAgIGFfZGVwcmVjYXRlZF9kaWN0WydiJ10gPSA0MgorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChhX2RlcHJlY2F0ZWRfZGljdFsnYiddLCA0MikKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYicgaW4gYV9kZXByZWNhdGVkX2RpY3QpCisgICAgICAg
ICAgICBkZWwgYV9kZXByZWNhdGVkX2RpY3RbJ2InXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZSgnYicgaW4gYV9kZXByZWNhdGVkX2RpY3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKFtleHBlY3RlZF93YXJuaW5nXSAqIDYsIHNlbGYuX3dhcm5pbmdzKQorICAgICAgICBmaW5h
bGx5OgorICAgICAgICAgICAgc3ltYm9sX3ZlcnNpb25pbmcuc2V0X3dhcm5pbmdfbWV0aG9kKG9s
ZF93YXJuaW5nX21ldGhvZCkKKworCiAgICAgZGVmIGNoZWNrX2RlcHJlY2F0ZWRfY2FsbGFibGUo
c2VsZiwgZXhwZWN0ZWRfd2FybmluZywgZXhwZWN0ZWRfZG9jc3RyaW5nLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX25hbWUsIGV4cGVjdGVkX21vZHVsZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXByZWNhdGVkX2NhbGxhYmxlKToKCg==

=== modified directory  // last-changed:mbp at sourcefrog.net-20070111080821-yz6m2
... b1byj72jg0y
# revision id: mbp at sourcefrog.net-20070111080821-yz6m2b1byj72jg0y
# sha1: d2437365da89be040f041ef2849093d90bcc6aa0
# inventory sha1: 77c33dfbef09af28d29b17fd9dbe55e087d0b313
# parent ids:
#   mbp at sourcefrog.net-20070110072857-mmf4qblq5u67jz0k
# properties:
#   branch-nick: options

# message:
#   Back out previous incompatible change: Option.short_name is now again
#   a method that returns the short name, if any.
#   
# committer: mbp at sourcefrog.net
# date: Wed 2007-01-10 18:28:57.526999950 +1100

=== modified file bzrlib/option.py // encoding:base64
LS0tIGJ6cmxpYi9vcHRpb24ucHkKKysrIGJ6cmxpYi9vcHRpb24ucHkKQEAgLTExMiw3ICsxMTIs
NyBAQAogY2xhc3MgT3B0aW9uKG9iamVjdCk6CiAgICAgIiIiRGVzY3JpcHRpb24gb2YgYSBjb21t
YW5kIGxpbmUgb3B0aW9uCiAgICAgCi0gICAgOml2YXIgc2hvcnRfbmFtZTogSWYgdGhpcyBvcHRp
b24gaGFzIGEgc2luZ2xlLWxldHRlciBuYW1lLCB0aGlzIGlzIGl0LgorICAgIDppdmFyIF9zaG9y
dF9uYW1lOiBJZiB0aGlzIG9wdGlvbiBoYXMgYSBzaW5nbGUtbGV0dGVyIG5hbWUsIHRoaXMgaXMg
aXQuCiAgICAgT3RoZXJ3aXNlIE5vbmUuCiAgICAgIiIiCiAKQEAgLTEzOCwxMyArMTM4LDE2IEBA
CiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICAgc2VsZi5oZWxwID0gaGVscAogICAg
ICAgICBzZWxmLnR5cGUgPSB0eXBlCi0gICAgICAgIHNlbGYuc2hvcnRfbmFtZSA9IHNob3J0X25h
bWUKKyAgICAgICAgc2VsZi5fc2hvcnRfbmFtZSA9IHNob3J0X25hbWUKICAgICAgICAgaWYgdHlw
ZSBpcyBOb25lOgogICAgICAgICAgICAgYXNzZXJ0IGFyZ25hbWUgaXMgTm9uZQogICAgICAgICBl
bGlmIGFyZ25hbWUgaXMgTm9uZToKICAgICAgICAgICAgIGFyZ25hbWUgPSAnQVJHJwogICAgICAg
ICBzZWxmLmFyZ25hbWUgPSBhcmduYW1lCiAKKyAgICBkZWYgc2hvcnRfbmFtZShzZWxmKToKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX3Nob3J0X25hbWUKKwogICAgIGRlZiBnZXRfbmVnYXRpb25fbmFt
ZShzZWxmKToKICAgICAgICAgaWYgc2VsZi5uYW1lLnN0YXJ0c3dpdGgoJ25vLScpOgogICAgICAg
ICAgICAgcmV0dXJuIHNlbGYubmFtZVszOl0KQEAgLTE4NCw3ICsxODcsNyBAQAogICAgICAgICBh
cmduYW1lID0gIHNlbGYuYXJnbmFtZQogICAgICAgICBpZiBhcmduYW1lIGlzIG5vdCBOb25lOgog
ICAgICAgICAgICAgYXJnbmFtZSA9IGFyZ25hbWUudXBwZXIoKQotICAgICAgICB5aWVsZCBzZWxm
Lm5hbWUsIHNlbGYuc2hvcnRfbmFtZSwgYXJnbmFtZSwgc2VsZi5oZWxwCisgICAgICAgIHlpZWxk
IHNlbGYubmFtZSwgc2VsZi5zaG9ydF9uYW1lKCksIGFyZ25hbWUsIHNlbGYuaGVscAogCiAKIGNs
YXNzIE9wdGlvblBhcnNlcihvcHRwYXJzZS5PcHRpb25QYXJzZXIpOgpAQCAtMjAyLDcgKzIwNSw3
IEBACiAgICAgcGFyc2VyID0gT3B0aW9uUGFyc2VyKCkKICAgICBwYXJzZXIucmVtb3ZlX29wdGlv
bignLS1oZWxwJykKICAgICBmb3Igb3B0aW9uIGluIG9wdGlvbnMuaXRlcnZhbHVlcygpOgotICAg
ICAgICBvcHRpb24uYWRkX29wdGlvbihwYXJzZXIsIG9wdGlvbi5zaG9ydF9uYW1lKQorICAgICAg
ICBvcHRpb24uYWRkX29wdGlvbihwYXJzZXIsIG9wdGlvbi5zaG9ydF9uYW1lKCkpCiAgICAgcmV0
dXJuIHBhcnNlcgogCiAKCg==

=== modified file bzrlib/tests/test_options.py // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X29wdGlvbnMucHkKKysrIGJ6cmxpYi90ZXN0cy90ZXN0X29w
dGlvbnMucHkKQEAgLTY1LDkgKzY1LDkgQEAKIAogICAgIGRlZiB0ZXN0X2dldF9zaG9ydF9uYW1l
KHNlbGYpOgogICAgICAgICBmaWxlX29wdCA9IG9wdGlvbi5PcHRpb24uT1BUSU9OU1snZmlsZSdd
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZpbGVfb3B0LnNob3J0X25hbWUsICdGJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZmlsZV9vcHQuc2hvcnRfbmFtZSgpLCAnRicpCiAgICAg
ICAgIGZvcmNlX29wdCA9IG9wdGlvbi5PcHRpb24uT1BUSU9OU1snZm9yY2UnXQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhmb3JjZV9vcHQuc2hvcnRfbmFtZSwgTm9uZSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoZm9yY2Vfb3B0LnNob3J0X25hbWUoKSwgTm9uZSkKIAogICAgIGRlZiB0
ZXN0X2FsbG93X2Rhc2goc2VsZik6CiAgICAgICAgICIiIlRlc3QgdGhhdCB3ZSBjYW4gcGFzcyBh
IHBsYWluICctJyBhcyBhbiBhcmd1bWVudC4iIiIKCg==

=== modified file tools/doc_generate/autodoc_rstx.py // encoding:base64
LS0tIHRvb2xzL2RvY19nZW5lcmF0ZS9hdXRvZG9jX3JzdHgucHkKKysrIHRvb2xzL2RvY19nZW5l
cmF0ZS9hdXRvZG9jX3JzdHgucHkKQEAgLTExNSw3ICsxMTUsNyBAQAogICAgICAgICAgICAgbCA9
ICcgICAgICAgIC0tJyArIG9wdGlvbl9uYW1lCiAgICAgICAgICAgICBpZiBvcHRpb24udHlwZSBp
cyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBsICs9ICcgJyArIG9wdGlvbi5hcmduYW1lLnVw
cGVyKCkKLSAgICAgICAgICAgIHNob3J0X25hbWUgPSBvcHRpb24uc2hvcnRfbmFtZQorICAgICAg
ICAgICAgc2hvcnRfbmFtZSA9IG9wdGlvbi5zaG9ydF9uYW1lKCkKICAgICAgICAgICAgIGlmIHNo
b3J0X25hbWU6CiAgICAgICAgICAgICAgICAgYXNzZXJ0IGxlbihzaG9ydF9uYW1lKSA9PSAxCiAg
ICAgICAgICAgICAgICAgbCArPSAnLCAtJyArIHNob3J0X25hbWUKCg==

=== modified directory  // last-changed:mbp at sourcefrog.net-20070110072857-mmf4q
... blq5u67jz0k
# revision id: mbp at sourcefrog.net-20070110072857-mmf4qblq5u67jz0k
# sha1: 97a437e8201611fe41b455a14549553dbb4f7e1d
# inventory sha1: a10400112a85453f77c0e2ec8c530090b17ad6a2
# parent ids:
#   pqm at pqm.ubuntu.com-20070109142832-337c25188ea46f2d
# properties:
#   branch-nick: options



More information about the bazaar mailing list