/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 bzrlib/registry.py

  • Committer: Richard Wilbur
  • Date: 2016-02-04 19:07:28 UTC
  • mto: This revision was merged to the branch mainline in revision 6618.
  • Revision ID: richard.wilbur@gmail.com-20160204190728-p0zvfii6zase0fw7
Update COPYING.txt from the original http://www.gnu.org/licenses/gpl-2.0.txt  (Only differences were in whitespace.)  Thanks to Petr Stodulka for pointing out the discrepancy.

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 
19
19
from __future__ import absolute_import
20
20
 
21
 
from .pyutils import get_named_object
22
 
 
23
 
from .sixish import viewitems
 
21
from bzrlib.pyutils import get_named_object
24
22
 
25
23
 
26
24
class _ObjectGetter(object):
104
102
        self._default_key = None
105
103
        # Map from key => (is_lazy, info)
106
104
        self._dict = {}
107
 
        self._aliases = {}
108
105
        self._help_dict = {}
109
106
        self._info_dict = {}
110
107
 
111
 
    def aliases(self):
112
 
        """Return a set of the format names which are aliases."""
113
 
        return dict(viewitems(self._aliases))
114
 
 
115
 
    def alias_map(self):
116
 
        ret = {}
117
 
        for alias, target in viewitems(self._aliases):
118
 
            ret.setdefault(target, []).append(alias)
119
 
        return ret
120
 
 
121
108
    def register(self, key, obj, help=None, info=None,
122
109
                 override_existing=False):
123
110
        """Register a new object to a name.
165
152
        self._dict[key] = _LazyObjectGetter(module_name, member_name)
166
153
        self._add_help_and_info(key, help=help, info=info)
167
154
 
168
 
    def register_alias(self, key, target, info=None):
169
 
        """Register an alias.
170
 
 
171
 
        :param key: Alias name
172
 
        :param target: Target key name
173
 
        """
174
 
        if key in self._dict and key not in self._aliases:
175
 
            raise KeyError('Key %r already registered and not an alias' % key)
176
 
        self._dict[key] = self._dict[target]
177
 
        self._aliases[key] = target
178
 
        if info is None:
179
 
            info = self._info_dict[target]
180
 
        self._add_help_and_info(key, help=self._help_dict[target], info=info)
181
 
 
182
155
    def _add_help_and_info(self, key, help=None, info=None):
183
156
        """Add the help and information about this key"""
184
157
        self._help_dict[key] = help
254
227
 
255
228
    def keys(self):
256
229
        """Get a list of registered entries"""
257
 
        return sorted(self._dict)
 
230
        return sorted(self._dict.keys())
258
231
 
259
232
    def iteritems(self):
260
 
        for key in self._dict:
261
 
            yield key, self._dict[key].get_obj()
 
233
        for key, getter in self._dict.iteritems():
 
234
            yield key, getter.get_obj()
262
235
 
263
236
    def items(self):
264
237
        # We should not use the iteritems() implementation below (see bug
265
238
        # #430510)
266
 
        return [(key, self._dict[key].get_obj()) for key in self.keys()]
 
239
        return sorted([(key, getter.get_obj())
 
240
                       for key, getter in self._dict.items()])
267
241
 
268
242
    def _set_default_key(self, key):
269
 
        if key not in self._dict:
 
243
        if not self._dict.has_key(key):
270
244
            raise KeyError('No object registered under key %s.' % key)
271
245
        else:
272
246
            self._default_key = key