Source code for music21.ipython21

# ------------------------------------------------------------------------------
# Name:         ipython21/__init__.py
# Purpose:      music21 Jupyter Notebook support
#
# Authors:      Michael Scott Asato Cuthbert
#
# Copyright:    Copyright © 2013-23 Michael Scott Asato Cuthbert
# License:      BSD, see license.txt
# ------------------------------------------------------------------------------
'''
IPython/Jupyter extension to music21.  In Jupyter Notebook call:

   %load_ext music21.ipython21

and show will take place inside the browser.

Since at least music21 v5, however, when music21 is imported we set a timer
for two seconds to everything to settle and then load our extension (which
now just calls matplotlib inline)
'''
from __future__ import annotations

__all__ = [
    'converters',
    'ipExtension',
    'objects',
    'load_ipython_extension',
    'loadNoMagic',
]

from music21 import common

from music21.ipython21 import converters
from music21.ipython21 import ipExtension
from music21.ipython21 import objects
from music21.ipython21.ipExtension import load_ipython_extension

[docs] def loadNoMagic() -> None: ''' Load the magic functions of load_ipython_extension when running Jupyter (was IPython) without needing to call a %magic function Safest is always ot call %load_ext music21.ipython21 anyhow. ''' if common.runningInNotebook(): # noinspection PyPackageRequirements from IPython.core.interactiveshell import InteractiveShell # type: ignore if InteractiveShell.initialized(): localIP = InteractiveShell.instance() load_ipython_extension(localIP)
# if we are imported in a Jupyter environment, then load magic after a second # so that everything can settle. if common.runningInNotebook(): from threading import Timer t = Timer(1, loadNoMagic) t.start()