##// END OF EJS Templates
Use explicit relative imports...
Use explicit relative imports python-modernize with lib2to3.fixes.fix_import fixer

File last commit:

r8586:ef172ee5
r13347:54891794
Show More
extension.py
92 lines | 3.4 KiB | text/x-python | PythonLexer
Fernando Perez
Create core.magics.extension according to new API.
r6967 """Implementation of magic functions for the extension machinery.
"""
#-----------------------------------------------------------------------------
# Copyright (c) 2012 The IPython Development Team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file COPYING.txt, distributed with this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
# Stdlib
import os
# Our own packages
Bradley M. Froehle
Better error messages for common magic commands....
r8278 from IPython.core.error import UsageError
Fernando Perez
Renamed @register_magics to @magics_class to avoid confusion....
r6973 from IPython.core.magic import Magics, magics_class, line_magic
Fernando Perez
Create core.magics.extension according to new API.
r6967
#-----------------------------------------------------------------------------
# Magic implementation classes
#-----------------------------------------------------------------------------
Fernando Perez
Renamed @register_magics to @magics_class to avoid confusion....
r6973 @magics_class
Fernando Perez
Create core.magics.extension according to new API.
r6967 class ExtensionMagics(Magics):
"""Magics to manage the IPython extensions system."""
@line_magic
def install_ext(self, parameter_s=''):
"""Download and install an extension from a URL, e.g.::
%install_ext https://bitbucket.org/birkenfeld/ipython-physics/raw/d1310a2ab15d/physics.py
The URL should point to an importable Python module - either a .py file
or a .zip file.
Parameters:
-n filename : Specify a name for the file, rather than taking it from
the URL.
"""
opts, args = self.parse_options(parameter_s, 'n:')
try:
filename = self.shell.extension_manager.install_extension(args,
opts.get('n'))
except ValueError as e:
print e
return
filename = os.path.basename(filename)
print "Installed %s. To use it, type:" % filename
print " %%load_ext %s" % os.path.splitext(filename)[0]
@line_magic
def load_ext(self, module_str):
"""Load an IPython extension by its module name."""
Bradley M. Froehle
Better error messages for common magic commands....
r8278 if not module_str:
raise UsageError('Missing module name.')
Thomas Kluyver
Add message when trying to %load_ext a module that is not an IPython extension.
r8586 res = self.shell.extension_manager.load_extension(module_str)
if res == 'already loaded':
Thomas Kluyver
Extension manager refuses to load extension more than once
r8549 print "The %s extension is already loaded. To reload it, use:" % module_str
print " %reload_ext", module_str
Thomas Kluyver
Add message when trying to %load_ext a module that is not an IPython extension.
r8586 elif res == 'no load function':
print "The %s module is not an IPython extension." % module_str
Fernando Perez
Create core.magics.extension according to new API.
r6967
@line_magic
def unload_ext(self, module_str):
Thomas Kluyver
Extension manager refuses to load extension more than once
r8549 """Unload an IPython extension by its module name.
Not all extensions can be unloaded, only those which define an
``unload_ipython_extension`` function.
"""
Bradley M. Froehle
Better error messages for common magic commands....
r8278 if not module_str:
raise UsageError('Missing module name.')
Thomas Kluyver
Extension manager refuses to load extension more than once
r8549
res = self.shell.extension_manager.unload_extension(module_str)
if res == 'no unload function':
print "The %s extension doesn't define how to unload it." % module_str
elif res == "not loaded":
print "The %s extension is not loaded." % module_str
Fernando Perez
Create core.magics.extension according to new API.
r6967
@line_magic
def reload_ext(self, module_str):
"""Reload an IPython extension by its module name."""
Bradley M. Froehle
Better error messages for common magic commands....
r8278 if not module_str:
raise UsageError('Missing module name.')
Fernando Perez
Create core.magics.extension according to new API.
r6967 self.shell.extension_manager.reload_extension(module_str)