/breezy/unstable

To get this branch, use:
bzr branch https://code.breezy-vcs.org/breezy/unstable

« back to all changes in this revision

Viewing changes to breezy/hooks.py

  • Committer: Jelmer Vernooij
  • Date: 2017-05-24 01:39:33 UTC
  • mfrom: (3815.3776.6)
  • Revision ID: jelmer@jelmer.uk-20170524013933-ir4y4tqtrsiz2ka2
New upstream snapshot.

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 bzrlib import (
 
21
from . import (
22
22
    registry,
23
23
    symbol_versioning,
24
24
    )
25
 
from bzrlib.lazy_import import lazy_import
 
25
from .lazy_import import lazy_import
26
26
lazy_import(globals(), """
27
27
import textwrap
28
28
 
29
 
from bzrlib import (
 
29
from breezy import (
30
30
    _format_version_tuple,
31
31
    errors,
32
32
    pyutils,
33
33
    )
34
 
from bzrlib.i18n import gettext
 
34
from breezy.i18n import gettext
35
35
""")
36
36
 
37
37
 
52
52
        instance.
53
53
 
54
54
        This is useful for resetting/restoring all the hooks to a known state,
55
 
        as is done in bzrlib.tests.TestCase._clear_hooks.
 
55
        as is done in breezy.tests.TestCase._clear_hooks.
56
56
        """
57
57
        for key in self.keys():
58
58
            yield key, self.key_to_parent_and_attribute(key)
59
59
 
60
 
    def key_to_parent_and_attribute(self, (module_name, member_name)):
 
60
    def key_to_parent_and_attribute(self, key):
61
61
        """Convert a known_hooks key to a (parent_obj, attr) pair.
62
62
 
63
63
        :param key: A tuple (module_name, member_name) as found in the keys of
65
65
        :return: The parent_object of the hook and the name of the attribute on
66
66
            that parent object where the hook is kept.
67
67
        """
68
 
        parent_mod, parent_member, attr = pyutils.calc_parent_name(module_name,
69
 
            member_name)
 
68
        parent_mod, parent_member, attr = pyutils.calc_parent_name(*key)
70
69
        return pyutils.get_named_object(parent_mod, parent_member), attr
71
70
 
72
71
 
73
72
_builtin_known_hooks = (
74
 
    ('bzrlib.branch', 'Branch.hooks', 'BranchHooks'),
75
 
    ('bzrlib.controldir', 'ControlDir.hooks', 'ControlDirHooks'),
76
 
    ('bzrlib.commands', 'Command.hooks', 'CommandHooks'),
77
 
    ('bzrlib.config', 'ConfigHooks', '_ConfigHooks'),
78
 
    ('bzrlib.info', 'hooks', 'InfoHooks'),
79
 
    ('bzrlib.lock', 'Lock.hooks', 'LockHooks'),
80
 
    ('bzrlib.merge', 'Merger.hooks', 'MergeHooks'),
81
 
    ('bzrlib.msgeditor', 'hooks', 'MessageEditorHooks'),
82
 
    ('bzrlib.mutabletree', 'MutableTree.hooks', 'MutableTreeHooks'),
83
 
    ('bzrlib.smart.client', '_SmartClient.hooks', 'SmartClientHooks'),
84
 
    ('bzrlib.smart.server', 'SmartTCPServer.hooks', 'SmartServerHooks'),
85
 
    ('bzrlib.status', 'hooks', 'StatusHooks'),
86
 
    ('bzrlib.transport', 'Transport.hooks', 'TransportHooks'),
87
 
    ('bzrlib.version_info_formats.format_rio', 'RioVersionInfoBuilder.hooks',
 
73
    ('breezy.branch', 'Branch.hooks', 'BranchHooks'),
 
74
    ('breezy.controldir', 'ControlDir.hooks', 'ControlDirHooks'),
 
75
    ('breezy.commands', 'Command.hooks', 'CommandHooks'),
 
76
    ('breezy.config', 'ConfigHooks', '_ConfigHooks'),
 
77
    ('breezy.info', 'hooks', 'InfoHooks'),
 
78
    ('breezy.lock', 'Lock.hooks', 'LockHooks'),
 
79
    ('breezy.merge', 'Merger.hooks', 'MergeHooks'),
 
80
    ('breezy.msgeditor', 'hooks', 'MessageEditorHooks'),
 
81
    ('breezy.mutabletree', 'MutableTree.hooks', 'MutableTreeHooks'),
 
82
    ('breezy.smart.client', '_SmartClient.hooks', 'SmartClientHooks'),
 
83
    ('breezy.smart.server', 'SmartTCPServer.hooks', 'SmartServerHooks'),
 
84
    ('breezy.status', 'hooks', 'StatusHooks'),
 
85
    ('breezy.transport', 'Transport.hooks', 'TransportHooks'),
 
86
    ('breezy.version_info_formats.format_rio', 'RioVersionInfoBuilder.hooks',
88
87
        'RioVersionInfoBuilderHooks'),
89
 
    ('bzrlib.merge_directive', 'BaseMergeDirective.hooks',
 
88
    ('breezy.merge_directive', 'BaseMergeDirective.hooks',
90
89
        'MergeDirectiveHooks'),
91
90
    )
92
91
 
96
95
del _builtin_known_hooks, _hook_module, _hook_attribute, _hook_class
97
96
 
98
97
 
99
 
def known_hooks_key_to_object((module_name, member_name)):
 
98
def known_hooks_key_to_object(key):
100
99
    """Convert a known_hooks key to a object.
101
100
 
102
101
    :param key: A tuple (module_name, member_name) as found in the keys of
103
102
        the known_hooks registry.
104
103
    :return: The object this specifies.
105
104
    """
106
 
    return pyutils.get_named_object(module_name, member_name)
 
105
    return pyutils.get_named_object(*key)
107
106
 
108
107
 
109
108
class Hooks(dict):
321
320
        return '\n'.join(strings)
322
321
 
323
322
    def __eq__(self, other):
324
 
        return (type(other) == type(self) and other.__dict__ == self.__dict__)
 
323
        return (isinstance(other, type(self)) and other.__dict__ == self.__dict__)
325
324
 
326
325
    def hook_lazy(self, callback_module, callback_member, callback_label):
327
326
        """Lazily register a callback to be called when this HookPoint fires.
400
399
 
401
400
The class that contains each hook is given before the hooks it supplies. For
402
401
instance, BranchHooks as the class is the hooks class for
403
 
`bzrlib.branch.Branch.hooks`.
 
402
`breezy.branch.Branch.hooks`.
404
403
 
405
404
Each description also indicates whether the hook runs on the client (the
406
405
machine where bzr was invoked) or the server (the machine addressed by