~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/plugin.py

Fix BzrDir.create_workingtree for NULL_REVISION

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# Copyright (C) 2004, 2005 by Canonical Ltd
2
 
 
 
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
5
5
# the Free Software Foundation; either version 2 of the License, or
6
6
# (at your option) any later version.
7
 
 
 
7
#
8
8
# This program is distributed in the hope that it will be useful,
9
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
11
# GNU General Public License for more details.
12
 
 
 
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
46
46
 
47
47
import bzrlib
48
48
from bzrlib.config import config_dir
49
 
from bzrlib.trace import log_error, mutter, log_exception, warning, \
 
49
from bzrlib.trace import log_error, mutter, warning, \
50
50
        log_exception_quietly
51
51
from bzrlib.errors import BzrError
52
52
from bzrlib import plugins
66
66
    return result
67
67
 
68
68
 
 
69
def disable_plugins():
 
70
    """Disable loading plugins.
 
71
 
 
72
    Future calls to load_plugins() will be ignored.
 
73
    """
 
74
    # TODO: jam 20060131 This should probably also disable
 
75
    #       load_from_dirs()
 
76
    global _loaded
 
77
    _loaded = True
 
78
 
 
79
 
69
80
def load_plugins():
70
81
    """Load bzrlib plugins.
71
82
 
100
111
    Plugins are loaded into bzrlib.plugins.NAME, and can be found there
101
112
    for future reference.
102
113
    """
103
 
    # The problem with imp.get_suffixes() is that it doesn't include
104
 
    # .pyo which is technically valid
105
 
    # It also means that "testmodule.so" will show up as both test and testmodule
106
 
    # though it is only valid as 'test'
107
 
    # but you should be careful, because "testmodule.py" loads as testmodule.
108
 
    suffixes = imp.get_suffixes()
109
 
    suffixes.append(('.pyo', 'rb', imp.PY_COMPILED))
110
 
    package_entries = ['__init__.py', '__init__.pyc', '__init__.pyo']
 
114
    # Get the list of valid python suffixes for __init__.py?
 
115
    # this includes .py, .pyc, and .pyo (depending on if we are running -O)
 
116
    # but it doesn't include compiled modules (.so, .dll, etc)
 
117
    valid_suffixes = [suffix for suffix, mod_type, flags in imp.get_suffixes()
 
118
                              if flags in (imp.PY_SOURCE, imp.PY_COMPILED)]
 
119
    package_entries = ['__init__'+suffix for suffix in valid_suffixes]
111
120
    for d in dirs:
112
121
        if not d:
113
122
            continue
126
135
                else: # This directory is not a package
127
136
                    continue
128
137
            else:
129
 
                for suffix_info in suffixes:
 
138
                for suffix_info in imp.get_suffixes():
130
139
                    if f.endswith(suffix_info[0]):
131
140
                        f = f[:-len(suffix_info[0])]
132
141
                        if suffix_info[2] == imp.C_EXTENSION and f.endswith('module'):