[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