metakernel


Namemetakernel JSON
Version 0.30.2 PyPI version JSON
download
home_pageNone
SummaryNone
upload_time2024-03-26 16:33:21
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseNone
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            A Jupyter kernel base class in Python which includes core magic functions (including help, command and file path completion, parallel and distributed processing, downloads, and much more).

.. image:: https://badge.fury.io/py/metakernel.png/
    :target: http://badge.fury.io/py/metakernel

.. image:: https://coveralls.io/repos/Calysto/metakernel/badge.png?branch=main
  :target: https://coveralls.io/r/Calysto/metakernel

.. image:: https://github.com/Calysto/metakernel/actions/workflows/tests.yml/badge.svg?query=branch%3Amain++
  :target: https://github.com/Calysto/metakernel/actions/workflows/tests.yml

.. image:: https://anaconda.org/conda-forge/metakernel/badges/version.svg
    :target: https://anaconda.org/conda-forge/metakernel

.. image:: https://anaconda.org/conda-forge/metakernel/badges/downloads.svg
    :target: https://anaconda.org/conda-forge/metakernel


See Jupyter's docs on `wrapper kernels
<http://jupyter-client.readthedocs.io/en/stable/wrapperkernels.html>`_.

Additional magics can be installed within the new kernel package under a `magics` subpackage.


Features
-------------
- Basic set of line and cell magics for all kernels.
    - Python magic for accessing python interpreter.
    - Run kernels in parallel.
    - Shell magics.
    - Classroom management magics.
- Tab completion for magics and file paths.
- Help for magics using ? or Shift+Tab.
- Plot magic for setting default plot behavior.

Kernels based on Metakernel
---------------------------

- matlab_kernel, https://github.com/Calysto/matlab_kernel
- octave_kernel, https://github.com/Calysto/octave_kernel
- calysto_scheme, https://github.com/Calysto/calysto_scheme
- calysto_processing, https://github.com/Calysto/calysto_processing
- java9_kernel, https://github.com/Bachmann1234/java9_kernel
- xonsh_kernel, https://github.com/Calysto/xonsh_kernel
- calysto_hy, https://github.com/Calysto/calysto_hy
- gnuplot_kernel, https://github.com/has2k1/gnuplot_kernel
- spylon_kernel, https://github.com/mariusvniekerk/spylon-kernel
- wolfram_kernel, https://github.com/mmatera/iwolfram
- sas_kernel, https://github.com/sassoftware/sas_kernel
- pysysh_kernel, https://github.com/Jaesin/psysh_kernel
- calysto_bash, https://github.com/Calysto/calysto_bash

... and many others.

Installation
----------------
You can install Metakernel through ``pip``:

.. code:: bash

 pip install metakernel --upgrade

Installing `metakernel` from the `conda-forge` channel can be achieved by adding `conda-forge` to your channels with:

.. code:: bash

 conda config --add channels conda-forge

Once the `conda-forge` channel has been enabled, `metakernel` can be installed with:

.. code:: bash

 conda install metakernel

It is possible to list all of the versions of `metakernel` available on your platform with:

.. code:: bash

 conda search metakernel --channel conda-forge


Use MetaKernel Magics in IPython
--------------------------------

Although MetaKernel is a system for building new kernels, you can use a subset of the magics in the IPython kernel.

.. code:: python

 from metakernel import register_ipython_magics
 register_ipython_magics()

Put the following in your (or a system-wide) ``ipython_config.py`` file:

.. code:: python

 # /etc/ipython/ipython_config.py
 c = get_config()
 startup = [
    'from metakernel import register_ipython_magics',
    'register_ipython_magics()',
 ]
 c.InteractiveShellApp.exec_lines = startup

Use MetaKernel Languages in Parallel

To use a MetaKernel language in parallel, do the following:

1. Make sure that the Python module `ipyparallel` is installed. In the shell, type:

.. code:: bash

  pip install ipyparallel


2. To enable the extension in the notebook, in the shell, type:

.. code:: bash

  ipcluster nbextension enable


3. To start up a cluster, with 10 nodes, on a local IP address, in the shell, type:

.. code:: bash

  ipcluster start --n=10 --ip=192.168.1.108


4. Initialize the code to use the 10 nodes, inside the notebook from a host kernel ``MODULE`` and ``CLASSNAME`` (can be any metakernel kernel):

.. code:: bash

  %parallel MODULE CLASSNAME


For example:

.. code:: bash

  %parallel calysto_scheme CalystoScheme


5. Run code in parallel, inside the notebook, type:

Execute a single line, in parallel:

.. code:: bash

  %px (+ 1 1)


Or execute the entire cell, in parallel:

.. code:: bash

  %%px
  (* cluster_rank cluster_rank)


Results come back in a Python list (Scheme vector), in ``cluster_rank`` order. (This will be a JSON representation in the future).

Therefore, the above would produce the result:

.. code:: bash

  #10(0 1 4 9 16 25 36 49 64 81)

You can get the results back in any of the parallel magics (``%px``, ``%%px``, or ``%pmap``) in the host kernel by accessing the variable ``_`` (single underscore), or by using the ``--set_variable VARIABLE`` flag, like so:

.. code:: bash

  %%px --set_variable results
  (* cluster_rank cluster_rank)


Then, in the next cell, you can access ``results``.

Notice that you can use the variable ``cluster_rank`` to partition parts of a problem so that each node is working on something different.

In the examples above, use ``-e`` to evaluate the code in the host kernel as well. Note that ``cluster_rank`` is not defined on the host machine, and that this assumes the host kernel is the same as the parallel machines.


Configuration
-------------
``Metakernel`` subclasses can be configured by the user.  The
configuration file name is determined by the ``app_name`` property of the subclass.
For example, in the ``Octave`` kernel, it is ``octave_kernel``.  The user of the kernel can add an ``octave_kernel_config.py`` file to their
``jupyter`` config path.  The base ``MetaKernel`` class offers ``plot_settings`` as a configurable trait.  Subclasses can define other traits that they wish to make
configurable.

As an example:

.. code:: bash

    cat ~/.jupyter/octave_kernel_config.py
    # use Qt as the default backend for plots
    c.OctaveKernel.plot_settings = dict(backend='qt')


Documentation
-----------------------

Example notebooks can be viewed here_.

Documentation is available online_. Magics have interactive help_ (and online).

For version information, see the Changelog_.


.. _here: http://nbviewer.jupyter.org/github/Calysto/metakernel/tree/main/examples/

.. _help: https://github.com/Calysto/metakernel/blob/main/metakernel/magics/README.md

.. _online: http://Calysto.github.io/metakernel/

.. _Changelog: https://github.com/Calysto/metakernel/blob/main/CHANGELOG.md

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "metakernel",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": null,
    "author": null,
    "author_email": "Metakernel Developers <steven.silvester@ieee.org>",
    "download_url": "https://files.pythonhosted.org/packages/34/d1/67e04a020a6903d0253d7f28285834d8a1066b2cd01711a9f4fa595e744d/metakernel-0.30.2.tar.gz",
    "platform": null,
    "description": "A Jupyter kernel base class in Python which includes core magic functions (including help, command and file path completion, parallel and distributed processing, downloads, and much more).\n\n.. image:: https://badge.fury.io/py/metakernel.png/\n    :target: http://badge.fury.io/py/metakernel\n\n.. image:: https://coveralls.io/repos/Calysto/metakernel/badge.png?branch=main\n  :target: https://coveralls.io/r/Calysto/metakernel\n\n.. image:: https://github.com/Calysto/metakernel/actions/workflows/tests.yml/badge.svg?query=branch%3Amain++\n  :target: https://github.com/Calysto/metakernel/actions/workflows/tests.yml\n\n.. image:: https://anaconda.org/conda-forge/metakernel/badges/version.svg\n    :target: https://anaconda.org/conda-forge/metakernel\n\n.. image:: https://anaconda.org/conda-forge/metakernel/badges/downloads.svg\n    :target: https://anaconda.org/conda-forge/metakernel\n\n\nSee Jupyter's docs on `wrapper kernels\n<http://jupyter-client.readthedocs.io/en/stable/wrapperkernels.html>`_.\n\nAdditional magics can be installed within the new kernel package under a `magics` subpackage.\n\n\nFeatures\n-------------\n- Basic set of line and cell magics for all kernels.\n    - Python magic for accessing python interpreter.\n    - Run kernels in parallel.\n    - Shell magics.\n    - Classroom management magics.\n- Tab completion for magics and file paths.\n- Help for magics using ? or Shift+Tab.\n- Plot magic for setting default plot behavior.\n\nKernels based on Metakernel\n---------------------------\n\n- matlab_kernel, https://github.com/Calysto/matlab_kernel\n- octave_kernel, https://github.com/Calysto/octave_kernel\n- calysto_scheme, https://github.com/Calysto/calysto_scheme\n- calysto_processing, https://github.com/Calysto/calysto_processing\n- java9_kernel, https://github.com/Bachmann1234/java9_kernel\n- xonsh_kernel, https://github.com/Calysto/xonsh_kernel\n- calysto_hy, https://github.com/Calysto/calysto_hy\n- gnuplot_kernel, https://github.com/has2k1/gnuplot_kernel\n- spylon_kernel, https://github.com/mariusvniekerk/spylon-kernel\n- wolfram_kernel, https://github.com/mmatera/iwolfram\n- sas_kernel, https://github.com/sassoftware/sas_kernel\n- pysysh_kernel, https://github.com/Jaesin/psysh_kernel\n- calysto_bash, https://github.com/Calysto/calysto_bash\n\n... and many others.\n\nInstallation\n----------------\nYou can install Metakernel through ``pip``:\n\n.. code:: bash\n\n pip install metakernel --upgrade\n\nInstalling `metakernel` from the `conda-forge` channel can be achieved by adding `conda-forge` to your channels with:\n\n.. code:: bash\n\n conda config --add channels conda-forge\n\nOnce the `conda-forge` channel has been enabled, `metakernel` can be installed with:\n\n.. code:: bash\n\n conda install metakernel\n\nIt is possible to list all of the versions of `metakernel` available on your platform with:\n\n.. code:: bash\n\n conda search metakernel --channel conda-forge\n\n\nUse MetaKernel Magics in IPython\n--------------------------------\n\nAlthough MetaKernel is a system for building new kernels, you can use a subset of the magics in the IPython kernel.\n\n.. code:: python\n\n from metakernel import register_ipython_magics\n register_ipython_magics()\n\nPut the following in your (or a system-wide) ``ipython_config.py`` file:\n\n.. code:: python\n\n # /etc/ipython/ipython_config.py\n c = get_config()\n startup = [\n    'from metakernel import register_ipython_magics',\n    'register_ipython_magics()',\n ]\n c.InteractiveShellApp.exec_lines = startup\n\nUse MetaKernel Languages in Parallel\n\nTo use a MetaKernel language in parallel, do the following:\n\n1. Make sure that the Python module `ipyparallel` is installed. In the shell, type:\n\n.. code:: bash\n\n  pip install ipyparallel\n\n\n2. To enable the extension in the notebook, in the shell, type:\n\n.. code:: bash\n\n  ipcluster nbextension enable\n\n\n3. To start up a cluster, with 10 nodes, on a local IP address, in the shell, type:\n\n.. code:: bash\n\n  ipcluster start --n=10 --ip=192.168.1.108\n\n\n4. Initialize the code to use the 10 nodes, inside the notebook from a host kernel ``MODULE`` and ``CLASSNAME`` (can be any metakernel kernel):\n\n.. code:: bash\n\n  %parallel MODULE CLASSNAME\n\n\nFor example:\n\n.. code:: bash\n\n  %parallel calysto_scheme CalystoScheme\n\n\n5. Run code in parallel, inside the notebook, type:\n\nExecute a single line, in parallel:\n\n.. code:: bash\n\n  %px (+ 1 1)\n\n\nOr execute the entire cell, in parallel:\n\n.. code:: bash\n\n  %%px\n  (* cluster_rank cluster_rank)\n\n\nResults come back in a Python list (Scheme vector), in ``cluster_rank`` order. (This will be a JSON representation in the future).\n\nTherefore, the above would produce the result:\n\n.. code:: bash\n\n  #10(0 1 4 9 16 25 36 49 64 81)\n\nYou can get the results back in any of the parallel magics (``%px``, ``%%px``, or ``%pmap``) in the host kernel by accessing the variable ``_`` (single underscore), or by using the ``--set_variable VARIABLE`` flag, like so:\n\n.. code:: bash\n\n  %%px --set_variable results\n  (* cluster_rank cluster_rank)\n\n\nThen, in the next cell, you can access ``results``.\n\nNotice that you can use the variable ``cluster_rank`` to partition parts of a problem so that each node is working on something different.\n\nIn the examples above, use ``-e`` to evaluate the code in the host kernel as well. Note that ``cluster_rank`` is not defined on the host machine, and that this assumes the host kernel is the same as the parallel machines.\n\n\nConfiguration\n-------------\n``Metakernel`` subclasses can be configured by the user.  The\nconfiguration file name is determined by the ``app_name`` property of the subclass.\nFor example, in the ``Octave`` kernel, it is ``octave_kernel``.  The user of the kernel can add an ``octave_kernel_config.py`` file to their\n``jupyter`` config path.  The base ``MetaKernel`` class offers ``plot_settings`` as a configurable trait.  Subclasses can define other traits that they wish to make\nconfigurable.\n\nAs an example:\n\n.. code:: bash\n\n    cat ~/.jupyter/octave_kernel_config.py\n    # use Qt as the default backend for plots\n    c.OctaveKernel.plot_settings = dict(backend='qt')\n\n\nDocumentation\n-----------------------\n\nExample notebooks can be viewed here_.\n\nDocumentation is available online_. Magics have interactive help_ (and online).\n\nFor version information, see the Changelog_.\n\n\n.. _here: http://nbviewer.jupyter.org/github/Calysto/metakernel/tree/main/examples/\n\n.. _help: https://github.com/Calysto/metakernel/blob/main/metakernel/magics/README.md\n\n.. _online: http://Calysto.github.io/metakernel/\n\n.. _Changelog: https://github.com/Calysto/metakernel/blob/main/CHANGELOG.md\n",
    "bugtrack_url": null,
    "license": null,
    "summary": null,
    "version": "0.30.2",
    "project_urls": {
        "Homepage": "https://github.com/Calysto/metakernel"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "07b2dabf31fd598a777f43e08b33de6540b16df1bd13c1b917ead58ac21bb245",
                "md5": "fcec6aa72063814737005dcad5a27c20",
                "sha256": "5424ac1a9cc5d8e18c439cce1a6f798196732955d64caff6633d3299cc2a1a83"
            },
            "downloads": -1,
            "filename": "metakernel-0.30.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "fcec6aa72063814737005dcad5a27c20",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 217788,
            "upload_time": "2024-03-26T16:33:16",
            "upload_time_iso_8601": "2024-03-26T16:33:16.957945Z",
            "url": "https://files.pythonhosted.org/packages/07/b2/dabf31fd598a777f43e08b33de6540b16df1bd13c1b917ead58ac21bb245/metakernel-0.30.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "34d167e04a020a6903d0253d7f28285834d8a1066b2cd01711a9f4fa595e744d",
                "md5": "eb8e881d4610ce279e09f60e82428f7f",
                "sha256": "4a27dfd853b849f0128242c55204ee597a5a8d864294f26084baf2fbc814d5a4"
            },
            "downloads": -1,
            "filename": "metakernel-0.30.2.tar.gz",
            "has_sig": false,
            "md5_digest": "eb8e881d4610ce279e09f60e82428f7f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 191708,
            "upload_time": "2024-03-26T16:33:21",
            "upload_time_iso_8601": "2024-03-26T16:33:21.554615Z",
            "url": "https://files.pythonhosted.org/packages/34/d1/67e04a020a6903d0253d7f28285834d8a1066b2cd01711a9f4fa595e744d/metakernel-0.30.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-26 16:33:21",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Calysto",
    "github_project": "metakernel",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "lcname": "metakernel"
}
        
Elapsed time: 0.28323s