Ejemplo n.º 1
0
def get_kernel_location(kernel_name):
    if kernel_exists(kernel_name):
        manager = KernelSpecManager()
        return manager.get_kernel_spec(kernel_name).resource_dir
    else:
        from jupyter_client.kernelspec import NoSuchKernel
        raise NoSuchKernel(kernel_name)
Ejemplo n.º 2
0
 def get_kernelspec(self, name):
     """Get a kernel specification dictionary given a kernel name
     """
     ksm = KernelSpecManager()
     kernelspec = ksm.get_kernel_spec(name).to_dict()
     kernelspec['name'] = name
     kernelspec.pop('argv')
     return kernelspec
Ejemplo n.º 3
0
def _read_notebook(notebook_file):
    notebook_data = notebook_file.read()
    notebook = nbformat.reads(notebook_data, as_version=4)
    km = KernelSpecManager()
    print(km.get_kernel_spec("python3").to_dict())
    ep = ExecutePreprocessor(timeout=600, kernel_name='python3')
    ep.preprocess(notebook, {'metadata': {'path': tempfile.gettempdir()}})
    return notebook
Ejemplo n.º 4
0
    def test_kernelspec_installed(self):
        """Test that the jupyter kernelspec installations work, and that
        all the examples can be installed as expected."""
        manager = KernelSpecManager()

        # Remove all kernelspecs first.
        subprocess.check_call(["jupyter", "kernelspec", "remove", "-f",
                               "basic", "calculator", "stdin"])

        # Check that kernelspec installation works, the kernel exists after
        # it has been installed, and the executable file is found.
        subprocess.check_call(["kernel-basic", "install"])
        kernelspec = manager.get_kernel_spec("basic")
        self.assertTrue(os.path.isfile(kernelspec.argv[0]))

        subprocess.check_call(["kernel-calculator", "install"])
        kernelspec = manager.get_kernel_spec("calculator")
        self.assertTrue(os.path.isfile(kernelspec.argv[0]))

        subprocess.check_call(["kernel-stdin", "install"])
        kernelspec = manager.get_kernel_spec("stdin")
        self.assertTrue(os.path.isfile(kernelspec.argv[0]))
Ejemplo n.º 5
0
def install_my_kernel_spec(user=True, prefix=None):
    with TemporaryDirectory() as td:
        os.chmod(td, 0o755)  # Starts off as 700, not user readable
        with open(os.path.join(td, 'kernel.json'), 'w') as f:
            json.dump(kernel_json, f, sort_keys=True)

        print('Installing Jupyter kernel spec')
        ksm = KernelSpecManager()
        ksm.install_kernel_spec(td, 'elm', user=user, prefix=prefix)

        install_dir = ksm.get_kernel_spec(kernel_name="elm").resource_dir

        print("Installed to ", install_dir)
Ejemplo n.º 6
0
    def __init__(self, settings, document_language):
        """Initializes available kernel names"""
        self.__settings = settings
        self.__doc_lang = document_language

        spec_manager = KernelSpecManager()
        kernel_names = spec_manager.find_kernel_specs()

        self.__available_kernel_names_mappings = {}

        for name in kernel_names:
            spec = spec_manager.get_kernel_spec(name)
            self.__available_kernel_names_mappings[spec.display_name] = name

        self.__manager = MultiKernelManager()

        self.__client_managers = {}
Ejemplo n.º 7
0
    def __init__(self, settings, document_language):
        """Initializes available kernel names"""
        self.__settings = settings
        self.__doc_lang = document_language

        spec_manager = KernelSpecManager()
        kernel_names = spec_manager.find_kernel_specs()

        self.__available_kernel_names_mappings = {}

        for name in kernel_names:
            spec = spec_manager.get_kernel_spec(name)
            self.__available_kernel_names_mappings[spec.display_name] = name

        self.__manager = MultiKernelManager()

        self.__client_managers = {}
Ejemplo n.º 8
0
def install_my_kernel_spec(user=True, prefix=None):
    if "python2" in sys.executable:
        print("I think this needs python3")
    with TemporaryDirectory() as td:
        os.chmod(td, 0o755)  # Starts off as 700, not user readable
        with open(os.path.join(td, 'kernel.json'), 'w') as f:
            json.dump(kernel_json, f, sort_keys=True)
        # TODO: Copy resources once they're specified

        print('Installing IPython kernel spec of micropython')
        k = KernelSpecManager()
        k.install_kernel_spec(td,
                              'Micropython-upydevice',
                              user=user,
                              prefix=prefix)

        h = k.get_kernel_spec("micropython-upydevice")
        print("...into", h.resource_dir)
Ejemplo n.º 9
0
def get_notebook_kernel(kernel_name, kernel_spec_manager=None):
    """
    return a `KernelSpec <https://ipython.org/ipython-doc/dev/api/generated/IPython.kernel.kernelspec.html>`_

    @param      kernel_spec_manager     see `KernelSpecManager <http://jupyter-client.readthedocs.org/en/latest/api/kernelspec.html#jupyter_client.kernelspec.KernelSpecManager>`_
                                        A KernelSpecManager to use for installation.
                                        If none provided, a default instance will be created.
    @param      kernel_name             kernel name
    @return                             KernelSpec

    The function only works with Jupyter>=4.0.

    .. versionadded:: 1.3
    """
    if kernel_spec_manager is None:
        from jupyter_client.kernelspec import KernelSpecManager
        kernel_spec_manager = KernelSpecManager()
    return kernel_spec_manager.get_kernel_spec(kernel_name)
Ejemplo n.º 10
0
def get_notebook_kernel(kernel_name, kernel_spec_manager=None):
    """
    Returns a `KernelSpec <https://ipython.org/ipython-doc/dev/api/
    generated/IPython.kernel.kernelspec.html>`_.

    @param      kernel_spec_manager     see `KernelSpecManager <http://jupyter-client.readthedocs.org/en/
                                        latest/api/kernelspec.html#jupyter_client.kernelspec.KernelSpecManager>`_
                                        A KernelSpecManager to use for installation.
                                        If none provided, a default instance will be created.
    @param      kernel_name             kernel name
    @return                             KernelSpec

    The function only works with *Jupyter>=4.0*.
    """
    if kernel_spec_manager is None:
        from jupyter_client.kernelspec import KernelSpecManager
        kernel_spec_manager = KernelSpecManager()
    return kernel_spec_manager.get_kernel_spec(kernel_name)
Ejemplo n.º 11
0
def _jupyter_kernel(args):
    """Make xonsh available as a Jupyter kernel."""
    try:
        from jupyter_client.kernelspec import KernelSpecManager, NoSuchKernel
    except ImportError as e:
        raise ImportError(
            "Jupyter not found in current Python environment") from e

    ksm = KernelSpecManager()

    root = args.root
    prefix = args.prefix if args.prefix else sys.prefix
    user = args.user
    spec = {
        "argv": [
            sys.executable,
            "-m",
            "xonsh.jupyter_kernel",
            "-f",
            "{connection_file}",
        ],
        "display_name":
        "Xonsh",
        "language":
        "xonsh",
        "codemirror_mode":
        "shell",
    }

    if root and prefix:
        # os.path.join isn't used since prefix is probably absolute
        prefix = root + prefix

    try:
        old_jup_kernel = ksm.get_kernel_spec(XONSH_JUPYTER_KERNEL)
        if not old_jup_kernel.resource_dir.startswith(prefix):
            print("Removing existing Jupyter kernel found at {0}".format(
                old_jup_kernel.resource_dir))
        ksm.remove_kernel_spec(XONSH_JUPYTER_KERNEL)
    except NoSuchKernel:
        pass

    if sys.platform == "win32":
        # Ensure that conda-build detects the hard coded prefix
        spec["argv"][0] = spec["argv"][0].replace(os.sep, os.altsep)
        prefix = prefix.replace(os.sep, os.altsep)

    with tempfile.TemporaryDirectory() as d:
        os.chmod(d, 0o755)  # Starts off as 700, not user readable
        with open(os.path.join(d, "kernel.json"), "w") as f:
            json.dump(spec, f, sort_keys=True)

        print("Installing Jupyter kernel spec:")
        print("  root: {0!r}".format(root))
        if user:
            print("  as user: {0}".format(user))
        elif root and prefix:
            print("  combined prefix {0!r}".format(prefix))
        else:
            print("  prefix: {0!r}".format(prefix))
        ksm.install_kernel_spec(d,
                                XONSH_JUPYTER_KERNEL,
                                user=user,
                                prefix=(None if user else prefix))
        return 0
Ejemplo n.º 12
0
def get_kernelspec(name):
    ksm = KernelSpecManager()
    kernelspec = ksm.get_kernel_spec(name).to_dict()
    kernelspec['name'] = name
    kernelspec.pop('argv')
    return kernelspec
Ejemplo n.º 13
0
import unittest

import nbformat
import pytest
from jupyter_client.kernelspec import KernelSpecManager, NoSuchKernel
from nbconvert.preprocessors import ExecutePreprocessor
from nbconvert.preprocessors.execute import CellExecutionError

from popmon import resources

kernel_name = "python3"

# check if jupyter python3 kernel can be opened. if kernel not found, skip unit tests below.
try:
    km = KernelSpecManager()
    km.get_kernel_spec(kernel_name)
    kernel_found = True
except NoSuchKernel:
    kernel_found = False


class NotebookTest(unittest.TestCase):
    """Unit test notebook"""

    def run_notebook(self, notebook):
        """ Test notebook """

        # load notebook
        with open(notebook) as f:
            nb = nbformat.read(f, as_version=4)
Ejemplo n.º 14
0
def _jupyter_kernel(
    user=False,
    prefix=None,
    root=None,
):
    """Generate xonsh kernel for jupyter.

    Parameters
    ----------
    user : -u, --user
        Install kernel spec in user config directory.
    prefix : -p, --prefix
        Installation prefix for bin, lib, etc.
    root : -r, --root
        Install relative to this alternate root directory.
    """
    try:
        from jupyter_client.kernelspec import KernelSpecManager, NoSuchKernel
    except ImportError as e:
        raise ImportError("Jupyter not found in current Python environment") from e

    ksm = KernelSpecManager()

    prefix = prefix or sys.prefix
    spec = {
        "argv": [
            sys.executable,
            "-m",
            "xonsh.jupyter_kernel",
            "-f",
            "{connection_file}",
        ],
        "display_name": "Xonsh",
        "language": "xonsh",
        "codemirror_mode": "shell",
    }

    if root and prefix:
        # os.path.join isn't used since prefix is probably absolute
        prefix = root + prefix

    try:
        old_jup_kernel = ksm.get_kernel_spec(XONSH_JUPYTER_KERNEL)
        if not old_jup_kernel.resource_dir.startswith(prefix):
            print(
                "Removing existing Jupyter kernel found at {}".format(
                    old_jup_kernel.resource_dir
                )
            )
        ksm.remove_kernel_spec(XONSH_JUPYTER_KERNEL)
    except NoSuchKernel:
        pass

    if sys.platform == "win32":
        # Ensure that conda-build detects the hard coded prefix
        spec["argv"][0] = spec["argv"][0].replace(os.sep, os.altsep)
        prefix = prefix.replace(os.sep, os.altsep)

    with tempfile.TemporaryDirectory() as d:
        os.chmod(d, 0o755)  # Starts off as 700, not user readable
        with open(os.path.join(d, "kernel.json"), "w") as f:
            json.dump(spec, f, sort_keys=True)

        print("Installing Jupyter kernel spec:")
        print(f"  root: {root!r}")
        if user:
            print(f"  as user: {user}")
        elif root and prefix:
            print(f"  combined prefix {prefix!r}")
        else:
            print(f"  prefix: {prefix!r}")
        ksm.install_kernel_spec(
            d, XONSH_JUPYTER_KERNEL, user=user, prefix=(None if user else prefix)
        )
        return 0