##// END OF EJS Templates
Remove unnecessary metaclass and allow registration of magic classes....
Fernando Perez -
Show More
@@ -1999,12 +1999,10 b' class InteractiveShell(SingletonConfigurable):'
1999 user_magics=mf.UserMagics(self))
1999 user_magics=mf.UserMagics(self))
2000 self.configurables.append(self.magics_manager)
2000 self.configurables.append(self.magics_manager)
2001
2001
2002 all_m = [t(self) for t in [mf.BasicMagics, mf.CodeMagics,
2002 self.magics_manager.register(mf.BasicMagics, mf.CodeMagics,
2003 mf.ConfigMagics, mf.NamespaceMagics, mf.ExecutionMagics,
2003 mf.ConfigMagics, mf.NamespaceMagics, mf.ExecutionMagics,
2004 mf.AutoMagics, mf.OSMagics, mf.LoggingMagics, mf.ExtensionsMagics,
2004 mf.AutoMagics, mf.OSMagics, mf.LoggingMagics, mf.ExtensionsMagics,
2005 mf.PylabMagics, mf.DeprecatedMagics] ]
2005 mf.PylabMagics, mf.DeprecatedMagics)
2006 self.all_m = all_m
2007 self.magics_manager.register(*all_m)
2008
2006
2009 # FIXME: Move the color initialization to the DisplayHook, which
2007 # FIXME: Move the color initialization to the DisplayHook, which
2010 # should be split into a prompt manager and displayhook. We probably
2008 # should be split into a prompt manager and displayhook. We probably
@@ -178,6 +178,10 b' class MagicsManager(Configurable):'
178 if not m.registered:
178 if not m.registered:
179 raise ValueError("Class of magics %r was constructed without "
179 raise ValueError("Class of magics %r was constructed without "
180 "the @register_macics class decorator")
180 "the @register_macics class decorator")
181 if type(m) is type:
182 # If we're given an uninstantiated class
183 m = m(self.shell)
184
181 for mtype in magic_types:
185 for mtype in magic_types:
182 self.magics[mtype].update(m.magics[mtype])
186 self.magics[mtype].update(m.magics[mtype])
183
187
@@ -228,10 +232,7 b' class Magics(object):'
228 # Non-configurable class attributes
232 # Non-configurable class attributes
229 magics = Dict
233 magics = Dict
230
234
231 class __metaclass__(type):
235 registered = False
232 def __new__(cls, name, bases, dct):
233 cls.registered = False
234 return type.__new__(cls, name, bases, dct)
235
236
236 def __init__(self, shell):
237 def __init__(self, shell):
237 if not(self.__class__.registered):
238 if not(self.__class__.registered):
@@ -241,7 +242,8 b' class Magics(object):'
241 for mtype in magic_types:
242 for mtype in magic_types:
242 tab = mtab[mtype]
243 tab = mtab[mtype]
243 for magic_name, meth_name in self.magics[mtype].iteritems():
244 for magic_name, meth_name in self.magics[mtype].iteritems():
244 tab[magic_name] = getattr(self, meth_name)
245 if isinstance(meth_name, basestring):
246 tab[magic_name] = getattr(self, meth_name)
245 self.magics.update(mtab)
247 self.magics.update(mtab)
246
248
247 def arg_err(self,func):
249 def arg_err(self,func):
@@ -143,7 +143,6 b' class BasicMagics(Magics):'
143 magic_docs.append('%s%s:\n\t%s\n' %
143 magic_docs.append('%s%s:\n\t%s\n' %
144 (escape, fname, fndoc))
144 (escape, fname, fndoc))
145
145
146
147 magic_docs = ''.join(magic_docs)
146 magic_docs = ''.join(magic_docs)
148
147
149 if mode == 'rest':
148 if mode == 'rest':
General Comments 0
You need to be logged in to leave comments. Login now