44__description__ = 'Library to manage plugins/extensions in your applications.'
55
66import os
7+ import logging
8+
9+ logger = logging .getLogger ('pluginloader' )
710
811
912class PluginFactory (object ):
@@ -19,14 +22,17 @@ def __init__(self):
1922 self .plugins = {}
2023
2124 def load_file (self , filename , onlyif = None , context = None ):
22- onlyif = self ._default_condition if onlyif is None else onlyif
23- context = context or {}
24- with open (filename ) as fd :
25- exec (fd .read (), context )
26-
27- for name , clazz in context .items ():
28- if (self ._apply_condition (onlyif , name , clazz )):
29- self .plugins [name ] = PluginFactory (clazz )
25+ try :
26+ onlyif = self ._default_condition if onlyif is None else onlyif
27+ context = context or {}
28+ with open (filename ) as fd :
29+ exec (fd .read (), context )
30+
31+ for name , clazz in context .items ():
32+ if (self ._apply_condition (onlyif , name , clazz )):
33+ self .plugins [name ] = PluginFactory (clazz )
34+ except :
35+ logger .exception ('Error loading file %s. Ignored' % filename )
3036
3137 def load_directory (self , path , onlyif = None , recursive = False , context = None ):
3238 for filename in os .listdir (path ):
0 commit comments