Show More
@@ -985,10 +985,7 b' class HistoryMagics(Magics):' | |||||
985 |
|
985 | |||
986 |
|
986 | |||
987 | def init_ipython(ip): |
|
987 | def init_ipython(ip): | |
988 |
ip. |
|
988 | ip.register_magics(HistoryMagics) | |
989 | #ip.define_magic('hist', HistoryMagics.history) |
|
|||
990 | #ip.define_magic('recall', HistoryMagics.rep) |
|
|||
991 |
|
||||
992 | # XXX - ipy_completers are in quarantine, need to be updated to new apis |
|
989 | # XXX - ipy_completers are in quarantine, need to be updated to new apis | |
993 | #import ipy_completers |
|
990 | #import ipy_completers | |
994 | #ipy_completers.quick_completer('%hist' ,'-g -t -r -n') |
|
991 | #ipy_completers.quick_completer('%hist' ,'-g -t -r -n') |
@@ -1999,7 +1999,11 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 | self.magics_manager.register(mf.BasicMagics, mf.CodeMagics, |
|
2002 | # Expose as public API new_magic and registere_magics | |
|
2003 | self.new_magic = self.magics_manager.new_magic | |||
|
2004 | self.register_magics = self.magics_manager.register | |||
|
2005 | ||||
|
2006 | self.register_magics(mf.BasicMagics, mf.CodeMagics, | |||
2003 | mf.ConfigMagics, mf.NamespaceMagics, mf.ExecutionMagics, |
|
2007 | mf.ConfigMagics, mf.NamespaceMagics, mf.ExecutionMagics, | |
2004 | mf.AutoMagics, mf.OSMagics, mf.LoggingMagics, mf.ExtensionsMagics, |
|
2008 | mf.AutoMagics, mf.OSMagics, mf.LoggingMagics, mf.ExtensionsMagics, | |
2005 | mf.PylabMagics, mf.DeprecatedMagics) |
|
2009 | mf.PylabMagics, mf.DeprecatedMagics) | |
@@ -2053,22 +2057,13 b' class InteractiveShell(SingletonConfigurable):' | |||||
2053 |
|
2057 | |||
2054 | def define_magic(self, magic_name, func): |
|
2058 | def define_magic(self, magic_name, func): | |
2055 | """Expose own function as magic function for ipython |
|
2059 | """Expose own function as magic function for ipython | |
2056 |
|
||||
2057 | Example:: |
|
|||
2058 |
|
||||
2059 | def foo_impl(self, parameter_s=''): |
|
|||
2060 | 'My very own magic!. (Use docstrings, IPython reads them).' |
|
|||
2061 | print 'Magic function. Passed parameter is between < >:' |
|
|||
2062 | print '<%s>' % parameter_s |
|
|||
2063 | print 'The self object is:', self |
|
|||
2064 |
|
2060 | |||
2065 | ip.define_magic('foo', foo_impl) |
|
2061 | Note: this API is now deprecated. Instead, you should use | |
|
2062 | `get_ipython().new_magic`. | |||
2066 | """ |
|
2063 | """ | |
2067 | return self.magics_manager |
|
2064 | warn('Deprecated API, use get_ipython().new_magic: %s\n' % | |
2068 | im = types.MethodType(func, self._magic) |
|
2065 | magic_name) | |
2069 |
|
|
2066 | return self.new_magic(func, magic_name) | |
2070 | setattr(self._magic, 'magic_' + magic_name, im) |
|
|||
2071 | return old |
|
|||
2072 |
|
2067 | |||
2073 | def find_line_magic(self, magic_name): |
|
2068 | def find_line_magic(self, magic_name): | |
2074 | """Find and return a line magic by name.""" |
|
2069 | """Find and return a line magic by name.""" |
@@ -89,6 +89,11 b' def register_magics(cls):' | |||||
89 | magics['cell'] = {} |
|
89 | magics['cell'] = {} | |
90 | return cls |
|
90 | return cls | |
91 |
|
91 | |||
|
92 | def _record_magic(dct, mtype, mname, func): | |||
|
93 | if mtype == 'line_cell': | |||
|
94 | dct['line'][mname] = dct['cell'][mname] = func | |||
|
95 | else: | |||
|
96 | dct[mtype][mname] = func | |||
92 |
|
97 | |||
93 | def validate_type(magic_type): |
|
98 | def validate_type(magic_type): | |
94 | if magic_type not in magic_types: |
|
99 | if magic_type not in magic_types: | |
@@ -185,7 +190,7 b' class MagicsManager(Configurable):' | |||||
185 | for mtype in magic_types: |
|
190 | for mtype in magic_types: | |
186 | self.magics[mtype].update(m.magics[mtype]) |
|
191 | self.magics[mtype].update(m.magics[mtype]) | |
187 |
|
192 | |||
188 |
def |
|
193 | def new_magic(self, func, magic_name=None, magic_type='line'): | |
189 | """Expose own function as magic function for ipython |
|
194 | """Expose own function as magic function for ipython | |
190 |
|
195 | |||
191 | Example:: |
|
196 | Example:: | |
@@ -198,11 +203,11 b' class MagicsManager(Configurable):' | |||||
198 |
|
203 | |||
199 | ip.define_magic('foo', foo_impl) |
|
204 | ip.define_magic('foo', foo_impl) | |
200 | """ |
|
205 | """ | |
|
206 | ||||
201 | # Create the new method in the user_magics and register it in the |
|
207 | # Create the new method in the user_magics and register it in the | |
202 | # global table |
|
208 | # global table | |
203 |
self.user_magics.new_magic( |
|
209 | newm, name = self.user_magics.new_magic(func, magic_type, magic_name) | |
204 |
self.magics |
|
210 | _record_magic(self.magics, magic_type, name, newm) | |
205 | self.user_magics.magics[magic_type][magic_name] |
|
|||
206 |
|
211 | |||
207 | # Key base class that provides the central functionality for magics. |
|
212 | # Key base class that provides the central functionality for magics. | |
208 |
|
213 | |||
@@ -362,10 +367,12 b' class Magics(object):' | |||||
362 | error("%s is not a magic function" % fn) |
|
367 | error("%s is not a magic function" % fn) | |
363 | self.options_table[fn] = optstr |
|
368 | self.options_table[fn] = optstr | |
364 |
|
369 | |||
365 |
def new_magic(self |
|
370 | def new_magic(self, func, magic_type='line', magic_name=None): | |
366 | """TODO |
|
371 | """TODO | |
367 | """ |
|
372 | """ | |
|
373 | magic_name = func.func_name if magic_name is None else magic_name | |||
368 | validate_type(magic_type) |
|
374 | validate_type(magic_type) | |
369 | meth = types.MethodType(func, self) |
|
375 | meth = types.MethodType(func, self) | |
370 | setattr(self, magic_name, meth) |
|
376 | setattr(self, magic_name, meth) | |
371 |
self.magics |
|
377 | _record_magic(self.magics, magic_type, magic_name, meth) | |
|
378 | return meth, magic_name |
General Comments 0
You need to be logged in to leave comments.
Login now