Show More
@@ -1999,9 +1999,10 b' class InteractiveShell(SingletonConfigurable):' | |||
|
1999 | 1999 | user_magics=mf.UserMagics(self)) |
|
2000 | 2000 | self.configurables.append(self.magics_manager) |
|
2001 | 2001 | |
|
2002 |
# Expose as public API |
|
|
2003 | self.new_magic = self.magics_manager.new_magic | |
|
2002 | # Expose as public API from the magics manager | |
|
2004 | 2003 | self.register_magics = self.magics_manager.register |
|
2004 | self.function_as_magic = self.magics_manager.function_as_magic | |
|
2005 | self.define_magic = self.magics_manager._define_magic | |
|
2005 | 2006 | |
|
2006 | 2007 | self.register_magics(mf.BasicMagics, mf.CodeMagics, |
|
2007 | 2008 | mf.ConfigMagics, mf.NamespaceMagics, mf.ExecutionMagics, |
@@ -2055,16 +2056,6 b' class InteractiveShell(SingletonConfigurable):' | |||
|
2055 | 2056 | result = fn(*args) |
|
2056 | 2057 | return result |
|
2057 | 2058 | |
|
2058 | def define_magic(self, magic_name, func): | |
|
2059 | """Expose own function as magic function for ipython | |
|
2060 | ||
|
2061 | Note: this API is now deprecated. Instead, you should use | |
|
2062 | `get_ipython().new_magic`. | |
|
2063 | """ | |
|
2064 | warn('Deprecated API, use get_ipython().new_magic: %s\n' % | |
|
2065 | magic_name) | |
|
2066 | return self.new_magic(func, magic_name) | |
|
2067 | ||
|
2068 | 2059 | def find_line_magic(self, magic_name): |
|
2069 | 2060 | """Find and return a line magic by name.""" |
|
2070 | 2061 | return self.magics_manager.magics['line'].get(magic_name) |
@@ -30,7 +30,7 b' from IPython.external.decorator import decorator' | |||
|
30 | 30 | from IPython.utils.ipstruct import Struct |
|
31 | 31 | from IPython.utils.process import arg_split |
|
32 | 32 | from IPython.utils.traitlets import Bool, Dict, Instance |
|
33 | from IPython.utils.warn import error | |
|
33 | from IPython.utils.warn import error, warn | |
|
34 | 34 | |
|
35 | 35 | #----------------------------------------------------------------------------- |
|
36 | 36 | # Globals |
@@ -190,16 +190,31 b' class MagicsManager(Configurable):' | |||
|
190 | 190 | for mtype in magic_types: |
|
191 | 191 | self.magics[mtype].update(m.magics[mtype]) |
|
192 | 192 | |
|
193 |
def |
|
|
193 | def function_as_magic(self, func, magic_type='line', magic_name=None): | |
|
194 | 194 | """Expose a standalone function as magic function for ipython. |
|
195 | ||
|
196 | 195 | """ |
|
197 | 196 | |
|
198 | 197 | # Create the new method in the user_magics and register it in the |
|
199 | 198 | # global table |
|
199 | validate_type(magic_type) | |
|
200 | magic_name = func.func_name if magic_name is None else magic_name | |
|
201 | setattr(self.user_magics, magic_name, func) | |
|
200 | 202 | newm, name = self.user_magics.new_magic(func, magic_type, magic_name) |
|
201 | 203 | _record_magic(self.magics, magic_type, name, newm) |
|
202 | 204 | |
|
205 | ||
|
206 | def _define_magic(self, name, func): | |
|
207 | """Support for deprecated API. | |
|
208 | ||
|
209 | This method exists only to support the old-style definition of magics. | |
|
210 | It will eventually be removed. Deliberately not documented further. | |
|
211 | """ | |
|
212 | warn('Deprecated API, use function_as_magic or register_magics: %s\n' % | |
|
213 | name) | |
|
214 | meth = types.MethodType(func, self.user_magics) | |
|
215 | setattr(self.user_magics, name, meth) | |
|
216 | _record_magic(self.magics, 'line', name, meth) | |
|
217 | ||
|
203 | 218 | # Key base class that provides the central functionality for magics. |
|
204 | 219 | |
|
205 | 220 | class Magics(object): |
@@ -357,13 +372,3 b' class Magics(object):' | |||
|
357 | 372 | if fn not in self.lsmagic(): |
|
358 | 373 | error("%s is not a magic function" % fn) |
|
359 | 374 | self.options_table[fn] = optstr |
|
360 | ||
|
361 | def new_magic(self, func, magic_type='line', magic_name=None): | |
|
362 | """TODO | |
|
363 | """ | |
|
364 | magic_name = func.func_name if magic_name is None else magic_name | |
|
365 | validate_type(magic_type) | |
|
366 | meth = types.MethodType(func, self) | |
|
367 | setattr(self, magic_name, meth) | |
|
368 | _record_magic(self.magics, magic_type, magic_name, meth) | |
|
369 | return meth, magic_name |
General Comments 0
You need to be logged in to leave comments.
Login now