~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/plugin.py

(jelmer) Fix bug #1010339,
 use encoding_type='exact' for bzr testament (John A Meinel)

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
 
17
 
17
18
"""bzr python plugin support.
18
19
 
19
20
When load_plugins() is invoked, any python module in any directory in
29
30
called.
30
31
"""
31
32
 
32
 
from __future__ import absolute_import
33
 
 
34
33
import os
35
34
import sys
36
35
 
49
48
    errors,
50
49
    trace,
51
50
    )
52
 
from bzrlib.i18n import gettext
53
51
from bzrlib import plugins as _mod_plugins
54
52
""")
55
53
 
139
137
        try:
140
138
            name, path = spec.split('@')
141
139
        except ValueError:
142
 
            raise errors.BzrCommandError(gettext(
143
 
                '"%s" is not a valid <plugin_name>@<plugin_path> description ')
 
140
            raise errors.BzrCommandError(
 
141
                '"%s" is not a valid <plugin_name>@<plugin_path> description '
144
142
                % spec)
145
143
        specs.append((name, path))
146
144
    return specs
508
506
            result = self.module.__doc__
509
507
        if result[-1] != '\n':
510
508
            result += '\n'
511
 
        from bzrlib import help_topics
512
 
        result += help_topics._format_see_also(additional_see_also)
 
509
        # there is code duplicated here and in bzrlib/help_topic.py's
 
510
        # matching Topic code. This should probably be factored in
 
511
        # to a helper function and a common base class.
 
512
        if additional_see_also is not None:
 
513
            see_also = sorted(set(additional_see_also))
 
514
        else:
 
515
            see_also = None
 
516
        if see_also:
 
517
            result += 'See also: '
 
518
            result += ', '.join(see_also)
 
519
            result += '\n'
513
520
        return result
514
521
 
515
522
    def get_help_topic(self):
516
 
        """Return the module help topic: its basename."""
 
523
        """Return the modules help topic - its __name__ after bzrlib.plugins.."""
517
524
        return self.module.__name__[len('bzrlib.plugins.'):]
518
525
 
519
526
 
632
639
        return None
633
640
 
634
641
    def load_module(self, fullname):
635
 
        """Load a plugin from a specific directory (or file)."""
 
642
        """Load a plugin from a specific directory."""
636
643
        # We are called only for specific paths
637
644
        plugin_path = self.specific_paths[fullname]
638
645
        loading_path = None