/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 breezy/inter.py

  • Committer: Breezy landing bot
  • Author(s): Jelmer Vernooij
  • Date: 2020-06-23 01:17:33 UTC
  • mfrom: (7516.1.1 merge-3.1)
  • Revision ID: breezy.the.bot@gmail.com-20200623011733-ohfy5ukvyehd2kpf
Merge lp:brz/3.1.

Merged from https://code.launchpad.net/~jelmer/brz/merge-3.1/+merge/386223

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 
19
19
from .errors import BzrError
20
20
from .lock import LogicalLockResult
 
21
from .pyutils import get_named_object
21
22
 
22
23
 
23
24
class NoCompatibleInter(BzrError):
90
91
        If an optimised worker exists it will be used otherwise
91
92
        a default Inter worker instance will be created.
92
93
        """
93
 
        for provider in reversed(klass._optimisers):
 
94
        for i, provider in enumerate(reversed(klass._optimisers)):
 
95
            if isinstance(provider, tuple):
 
96
                provider = get_named_object(provider[0], provider[1])
 
97
                klass._optimisers[-i] = provider
94
98
            if provider.is_compatible(source, target):
95
99
                return provider(source, target)
96
100
        raise NoCompatibleInter(source, target)
97
101
 
 
102
    @classmethod
 
103
    def iter_optimisers(klass):
 
104
        for provider in klass._optimisers:
 
105
            if isinstance(provider, tuple):
 
106
                yield get_named_object(provider[0], provider[1])
 
107
            else:
 
108
                yield provider
 
109
 
98
110
    def lock_read(self):
99
111
        """Take out a logical read lock.
100
112
 
118
130
        """Register an InterObject optimiser."""
119
131
        klass._optimisers.append(optimiser)
120
132
 
 
133
    @classmethod
 
134
    def register_lazy_optimiser(klass, module_name, member_name):
 
135
        # TODO(jelmer): Allow passing in a custom .is_compatible
 
136
        klass._optimisers.append((module_name, member_name))
 
137
 
121
138
    def unlock(self):
122
139
        """Release the locks on source and target."""
123
140
        try: