



Jupyter Qt Console 5.4.3 documentation

 [Jupyter Qt Console](#) 

 stable

 

* [Installation](index.html#document-installation)

* [Configuration options](index.html#document-config_options)

* [Changes in Jupyter Qt console](index.html#document-changelog)

[Jupyter Qt Console](#)

* 

* Jupyter Qt Console 5.4.3 documentation

* [Edit on GitHub](https://github.com/jupyter/qtconsole/blob/cde9fe97496339bde77eeea44c4c7659392b2ff6/docs/source/index)

---

The Qt Console for Jupyter[](#the-qt-console-for-jupyter "Permalink to this heading")

======================================================================================

Release

5.4.3

Date

May 05, 2023

To start the Qt console:

```

$ jupyter qtconsole

```

Installation[](#installation "Permalink to this heading")

----------------------------------------------------------

The Qt console requires Qt, such as

[PyQt5](https://www.riverbankcomputing.com/software/pyqt/intro),

[PyQt4](https://www.riverbankcomputing.com/software/pyqt/download), or

[PySide](http://pyside.github.io/docs/pyside).

Although [pip](https://pypi.python.org/pypi/pip) and

[conda](http://conda.pydata.org/docs) may be used to install the Qt console,

conda is simpler to use since it automatically installs PyQt. Alternatively,

qtconsole installation with pip needs additional steps since pip cannot install

the Qt requirement.

### Install using conda[](#install-using-conda "Permalink to this heading")

To install:

```

conda install qtconsole

```

Note

If the Qt console is installed using conda, it will **automatically**

install the Qt requirement as well.

### Install using pip[](#install-using-pip "Permalink to this heading")

To install:

```

pip install qtconsole

```

Important

Make sure that Qt is installed. Unfortunately, Qt cannot be

installed using pip. The next section gives instructions on installing Qt.

### Installing Qt (if needed)[](#installing-qt-if-needed "Permalink to this heading")

We recommend installing PyQt with [conda](http://conda.pydata.org/docs):

```

conda install pyqt

```

or with a system package manager. For Windows, PyQt binary packages may be

used.

For example with Linux Debian’s system package manager, use:

```

sudo apt-get install python3-pyqt5 # PyQt5 on Python 3

sudo apt-get install python3-pyqt4 # PyQt4 on Python 3

sudo apt-get install python-qt4    # PyQt4 on Python 2

```

See also

[Installing Jupyter](https://jupyter.readthedocs.io/en/latest/install.html)

The Qt console is part of the Jupyter ecosystem.

Configuration options[](#configuration-options "Permalink to this heading")

----------------------------------------------------------------------------

These options can be set in the configuration file,

`~/.jupyter/jupyter\_qtconsole\_config.py`, or

at the command line when you start Qt console.

You may enter `jupyter qtconsole --help-all` to get information

about all available configuration options.

### Options[](#options "Permalink to this heading")

ConnectionFileMixin.connection\_fileUnicodeDefault: `''`

JSON file in which to store connection info [default: kernel-<pid>.json]

> 

> This file will contain the IP, ports, and authentication key needed to connect

> clients to this kernel. By default, this file will be created in the security dir

> of the current profile, but can be specified by absolute path.

> 

> 

> 

ConnectionFileMixin.control\_portIntDefault: `0`

set the control (ROUTER) port [default: random]

ConnectionFileMixin.hb\_portIntDefault: `0`

set the heartbeat port [default: random]

ConnectionFileMixin.iopub\_portIntDefault: `0`

set the iopub (PUB) port [default: random]

ConnectionFileMixin.ipUnicodeDefault: `''`

Set the kernel’s IP address [default localhost].If the IP address is something other than localhost, then

Consoles on other machines will be able to connect

to the Kernel, so be careful!

ConnectionFileMixin.shell\_portIntDefault: `0`

set the shell (ROUTER) port [default: random]

ConnectionFileMixin.stdin\_portIntDefault: `0`

set the stdin (ROUTER) port [default: random]

ConnectionFileMixin.transportany of `'tcp'``|`’ipc’`` (case-insensitive)Default: `'tcp'`

No description

JupyterConsoleApp.confirm\_exitCBoolDefault: `True`

Set to display confirmation dialog on exit. You can always use ‘exit’ or ‘quit’,

to force a direct exit without any confirmation.

JupyterConsoleApp.connection\_fileUnicodeDefault: `''`

JSON file in which to store connection info [default: kernel-<pid>.json]

> 

> This file will contain the IP, ports, and authentication key needed to connect

> clients to this kernel. By default, this file will be created in the security dir

> of the current profile, but can be specified by absolute path.

> 

> 

> 

JupyterConsoleApp.control\_portIntDefault: `0`

set the control (ROUTER) port [default: random]

JupyterConsoleApp.existingCUnicodeDefault: `''`

Connect to an already running kernel

JupyterConsoleApp.hb\_portIntDefault: `0`

set the heartbeat port [default: random]

JupyterConsoleApp.iopub\_portIntDefault: `0`

set the iopub (PUB) port [default: random]

JupyterConsoleApp.ipUnicodeDefault: `''`

Set the kernel’s IP address [default localhost].If the IP address is something other than localhost, then

Consoles on other machines will be able to connect

to the Kernel, so be careful!

JupyterConsoleApp.kernel\_manager\_classTypeDefault: `'jupyter\_client.manager.KernelManager'`

The kernel manager class to use.

JupyterConsoleApp.kernel\_nameUnicodeDefault: `'python'`

The name of the default kernel to start.

JupyterConsoleApp.shell\_portIntDefault: `0`

set the shell (ROUTER) port [default: random]

JupyterConsoleApp.sshkeyUnicodeDefault: `''`

Path to the ssh key to use for logging in to the ssh server.

JupyterConsoleApp.sshserverUnicodeDefault: `''`

The SSH server to use to connect to the kernel.

JupyterConsoleApp.stdin\_portIntDefault: `0`

set the stdin (ROUTER) port [default: random]

JupyterConsoleApp.transportany of `'tcp'``|`’ipc’`` (case-insensitive)Default: `'tcp'`

No description

Application.log\_datefmtUnicodeDefault: `'%Y-%m-%d %H:%M:%S'`

The date format used by logging formatters for %(asctime)s

Application.log\_formatUnicodeDefault: `'[%(name)s]%(highlevel)s %(message)s'`

The Logging format template

Application.log\_levelany of `0``|``10``|``20``|``30``|``40``|``50``|`’DEBUG’`|`’INFO’`|`’WARN’`|`’ERROR’`|`’CRITICAL’``Default: `30`

Set the log level by value or name.

Application.logging\_configDictDefault: `{}`

Configure additional log handlers.

The default stderr logs handler is configured by the

log\_level, log\_datefmt and log\_format settings.

This configuration can be used to configure additional handlers

(e.g. to output the log to a file) or for finer control over the

default handlers.

If provided this should be a logging configuration dictionary, for

more information see:

<https://docs.python.org/3/library/logging.config.html#logging-config-dictschema>

This dictionary is merged with the base logging configuration which

defines the following:

* A logging formatter intended for interactive use called

`console`.

* A logging handler that writes to stderr called

`console` which uses the formatter `console`.

* A logger with the name of this application set to `DEBUG`

level.

This example adds a new handler that writes to a file:

```

c.Application.logging\_config = {

    'handlers': {

        'file': {

            'class': 'logging.FileHandler',

            'level': 'DEBUG',

            'filename': '<path/to/file>',

        }

    },

    'loggers': {

        '<application-name>': {

            'level': 'DEBUG',

            # NOTE: if you don't list the default "console"

            # handler here then it will be disabled

            'handlers': ['console', 'file'],

        },

    }

}

```

Application.show\_configBoolDefault: `False`

Instead of starting the Application, dump configuration to stdout

Application.show\_config\_jsonBoolDefault: `False`

Instead of starting the Application, dump configuration to stdout (as JSON)

JupyterApp.answer\_yesBoolDefault: `False`

Answer yes to any prompts.

JupyterApp.config\_fileUnicodeDefault: `''`

Full path of a config file.

JupyterApp.config\_file\_nameUnicodeDefault: `''`

Specify a config file to load.

JupyterApp.generate\_configBoolDefault: `False`

Generate default config file.

JupyterApp.log\_datefmtUnicodeDefault: `'%Y-%m-%d %H:%M:%S'`

The date format used by logging formatters for %(asctime)s

JupyterApp.log\_formatUnicodeDefault: `'[%(name)s]%(highlevel)s %(message)s'`

The Logging format template

JupyterApp.log\_levelany of `0``|``10``|``20``|``30``|``40``|``50``|`’DEBUG’`|`’INFO’`|`’WARN’`|`’ERROR’`|`’CRITICAL’``Default: `30`

Set the log level by value or name.

JupyterApp.logging\_configDictDefault: `{}`

Configure additional log handlers.

The default stderr logs handler is configured by the

log\_level, log\_datefmt and log\_format settings.

This configuration can be used to configure additional handlers

(e.g. to output the log to a file) or for finer control over the

default handlers.

If provided this should be a logging configuration dictionary, for

more information see:

<https://docs.python.org/3/library/logging.config.html#logging-config-dictschema>

This dictionary is merged with the base logging configuration which

defines the following:

* A logging formatter intended for interactive use called

`console`.

* A logging handler that writes to stderr called

`console` which uses the formatter `console`.

* A logger with the name of this application set to `DEBUG`

level.

This example adds a new handler that writes to a file:

```

c.Application.logging\_config = {

    'handlers': {

        'file': {

            'class': 'logging.FileHandler',

            'level': 'DEBUG',

            'filename': '<path/to/file>',

        }

    },

    'loggers': {

        '<application-name>': {

            'level': 'DEBUG',

            # NOTE: if you don't list the default "console"

            # handler here then it will be disabled

            'handlers': ['console', 'file'],

        },

    }

}

```

JupyterApp.show\_configBoolDefault: `False`

Instead of starting the Application, dump configuration to stdout

JupyterApp.show\_config\_jsonBoolDefault: `False`

Instead of starting the Application, dump configuration to stdout (as JSON)

JupyterQtConsoleApp.answer\_yesBoolDefault: `False`

Answer yes to any prompts.

JupyterQtConsoleApp.config\_fileUnicodeDefault: `''`

Full path of a config file.

JupyterQtConsoleApp.config\_file\_nameUnicodeDefault: `''`

Specify a config file to load.

JupyterQtConsoleApp.confirm\_exitCBoolDefault: `True`

Set to display confirmation dialog on exit. You can always use ‘exit’ or ‘quit’,

to force a direct exit without any confirmation.

JupyterQtConsoleApp.connection\_fileUnicodeDefault: `''`

JSON file in which to store connection info [default: kernel-<pid>.json]

> 

> This file will contain the IP, ports, and authentication key needed to connect

> clients to this kernel. By default, this file will be created in the security dir

> of the current profile, but can be specified by absolute path.

> 

> 

> 

JupyterQtConsoleApp.control\_portIntDefault: `0`

set the control (ROUTER) port [default: random]

JupyterQtConsoleApp.display\_bannerCBoolDefault: `True`

Whether to display a banner upon starting the QtConsole.

JupyterQtConsoleApp.existingCUnicodeDefault: `''`

Connect to an already running kernel

JupyterQtConsoleApp.generate\_configBoolDefault: `False`

Generate default config file.

JupyterQtConsoleApp.hb\_portIntDefault: `0`

set the heartbeat port [default: random]

JupyterQtConsoleApp.hide\_menubarCBoolDefault: `False`

Start the console window with the menu bar hidden.

JupyterQtConsoleApp.iopub\_portIntDefault: `0`

set the iopub (PUB) port [default: random]

JupyterQtConsoleApp.ipUnicodeDefault: `''`

Set the kernel’s IP address [default localhost].If the IP address is something other than localhost, then

Consoles on other machines will be able to connect

to the Kernel, so be careful!

JupyterQtConsoleApp.kernel\_nameUnicodeDefault: `'python'`

The name of the default kernel to start.

JupyterQtConsoleApp.log\_datefmtUnicodeDefault: `'%Y-%m-%d %H:%M:%S'`

The date format used by logging formatters for %(asctime)s

JupyterQtConsoleApp.log\_formatUnicodeDefault: `'[%(name)s]%(highlevel)s %(message)s'`

The Logging format template

JupyterQtConsoleApp.log\_levelany of `0``|``10``|``20``|``30``|``40``|``50``|`’DEBUG’`|`’INFO’`|`’WARN’`|`’ERROR’`|`’CRITICAL’``Default: `30`

Set the log level by value or name.

JupyterQtConsoleApp.logging\_configDictDefault: `{}`

Configure additional log handlers.

The default stderr logs handler is configured by the

log\_level, log\_datefmt and log\_format settings.

This configuration can be used to configure additional handlers

(e.g. to output the log to a file) or for finer control over the

default handlers.

If provided this should be a logging configuration dictionary, for

more information see:

<https://docs.python.org/3/library/logging.config.html#logging-config-dictschema>

This dictionary is merged with the base logging configuration which

defines the following:

* A logging formatter intended for interactive use called

`console`.

* A logging handler that writes to stderr called

`console` which uses the formatter `console`.

* A logger with the name of this application set to `DEBUG`

level.

This example adds a new handler that writes to a file:

```

c.Application.logging\_config = {

    'handlers': {

        'file': {

            'class': 'logging.FileHandler',

            'level': 'DEBUG',

            'filename': '<path/to/file>',

        }

    },

    'loggers': {

        '<application-name>': {

            'level': 'DEBUG',

            # NOTE: if you don't list the default "console"

            # handler here then it will be disabled

            'handlers': ['console', 'file'],

        },

    }

}

```

JupyterQtConsoleApp.maximizeCBoolDefault: `False`

Start the console window maximized.

JupyterQtConsoleApp.plainCBoolDefault: `False`

Use a plaintext widget instead of rich text (plain can’t print/save).

JupyterQtConsoleApp.shell\_portIntDefault: `0`

set the shell (ROUTER) port [default: random]

JupyterQtConsoleApp.show\_configBoolDefault: `False`

Instead of starting the Application, dump configuration to stdout

JupyterQtConsoleApp.show\_config\_jsonBoolDefault: `False`

Instead of starting the Application, dump configuration to stdout (as JSON)

JupyterQtConsoleApp.sshkeyUnicodeDefault: `''`

Path to the ssh key to use for logging in to the ssh server.

JupyterQtConsoleApp.sshserverUnicodeDefault: `''`

The SSH server to use to connect to the kernel.

JupyterQtConsoleApp.stdin\_portIntDefault: `0`

set the stdin (ROUTER) port [default: random]

JupyterQtConsoleApp.stylesheetUnicodeDefault: `''`

path to a custom CSS stylesheet

JupyterQtConsoleApp.transportany of `'tcp'``|`’ipc’`` (case-insensitive)Default: `'tcp'`

No description

ConsoleWidget.ansi\_codesBoolDefault: `True`

Whether to process ANSI escape codes.

ConsoleWidget.buffer\_sizeIntDefault: `500`

The maximum number of lines of text before truncation. Specifying a

non-positive number disables text truncation (not recommended).

ConsoleWidget.console\_heightIntDefault: `25`

The height of the console at start time in numberof characters (will double with `vsplit` paging)

ConsoleWidget.console\_widthIntDefault: `81`

The width of the console at start time in numberof characters (will double with `hsplit` paging)

ConsoleWidget.execute\_on\_complete\_inputBoolDefault: `True`

Whether to automatically execute on syntactically complete input.

> 

> If False, Shift-Enter is required to submit each execution.

> Disabling this is mainly useful for non-Python kernels,

> where the completion check would be wrong.

> 

> 

> 

ConsoleWidget.font\_familyUnicodeDefault: `''`

The font family to use for the console.On OSX this defaults to Monaco, on Windows the default is

Consolas with fallback of Courier, and on other platforms

the default is Monospace.

ConsoleWidget.font\_sizeIntDefault: `0`

The font size. If unconfigured, Qt will be entrustedwith the size of the font.

ConsoleWidget.gui\_completionany of `'plain'``|`’droplist’`|`’ncurses’``Default: `'ncurses'`

The type of completer to use. Valid values are:

‘plain’Show the available completion as a text listBelow the editing area.

‘droplist’: Show the completion in a drop down list navigableby the arrow keys, and from which you can select

completion by pressing Return.

‘ncurses’Show the completion as a text list which is navigable by`tab` and arrow keys.

ConsoleWidget.gui\_completion\_heightIntDefault: `0`

Set Height for completion.

‘droplist’Height in pixels.

‘ncurses’Maximum number of rows.

ConsoleWidget.include\_other\_outputBoolDefault: `False`

Whether to include output from clientsother than this one sharing the same kernel.

Outputs are not displayed until enter is pressed.

ConsoleWidget.kindany of `'plain'``|`’rich’``Default: `'plain'`

The type of underlying text widget to use. Valid values are ‘plain’,

which specifies a QPlainTextEdit, and ‘rich’, which specifies a

QTextEdit.

ConsoleWidget.other\_output\_prefixUnicodeDefault: `'[remote] '`

Prefix to add to outputs coming from clients other than this one.

> 

> Only relevant if include\_other\_output is True.

> 

> 

> 

ConsoleWidget.pagingany of `'inside'``|`’hsplit’`|`’vsplit’`|`’custom’`|`’none’``Default: `'inside'`

The type of paging to use. Valid values are:

‘inside’The widget pages like a traditional terminal.

‘hsplit’When paging is requested, the widget is split horizontally. The top

pane contains the console, and the bottom pane contains the paged text.

‘vsplit’Similar to ‘hsplit’, except that a vertical splitter is used.

‘custom’No action is taken by the widget beyond emitting a

‘custom\_page\_requested(str)’ signal.

‘none’The text is written directly to the console.

ConsoleWidget.scrollbar\_visibilityBoolDefault: `True`

The visibility of the scrollar. If False then the scrollbar will beinvisible.

HistoryConsoleWidget.ansi\_codesBoolDefault: `True`

Whether to process ANSI escape codes.

HistoryConsoleWidget.buffer\_sizeIntDefault: `500`

The maximum number of lines of text before truncation. Specifying a

non-positive number disables text truncation (not recommended).

HistoryConsoleWidget.console\_heightIntDefault: `25`

The height of the console at start time in numberof characters (will double with `vsplit` paging)

HistoryConsoleWidget.console\_widthIntDefault: `81`

The width of the console at start time in numberof characters (will double with `hsplit` paging)

HistoryConsoleWidget.execute\_on\_complete\_inputBoolDefault: `True`

Whether to automatically execute on syntactically complete input.

> 

> If False, Shift-Enter is required to submit each execution.

> Disabling this is mainly useful for non-Python kernels,

> where the completion check would be wrong.

> 

> 

> 

HistoryConsoleWidget.font\_familyUnicodeDefault: `''`

The font family to use for the console.On OSX this defaults to Monaco, on Windows the default is

Consolas with fallback of Courier, and on other platforms

the default is Monospace.

HistoryConsoleWidget.font\_sizeIntDefault: `0`

The font size. If unconfigured, Qt will be entrustedwith the size of the font.

HistoryConsoleWidget.gui\_completionany of `'plain'``|`’droplist’`|`’ncurses’``Default: `'ncurses'`

The type of completer to use. Valid values are:

‘plain’Show the available completion as a text listBelow the editing area.

‘droplist’: Show the completion in a drop down list navigableby the arrow keys, and from which you can select

completion by pressing Return.

‘ncurses’Show the completion as a text list which is navigable by`tab` and arrow keys.

HistoryConsoleWidget.gui\_completion\_heightIntDefault: `0`

Set Height for completion.

‘droplist’Height in pixels.

‘ncurses’Maximum number of rows.

HistoryConsoleWidget.history\_lockBoolDefault: `False`

No description

HistoryConsoleWidget.include\_other\_outputBoolDefault: `False`

Whether to include output from clientsother than this one sharing the same kernel.

Outputs are not displayed until enter is pressed.

HistoryConsoleWidget.kindany of `'plain'``|`’rich’``Default: `'plain'`

The type of underlying text widget to use. Valid values are ‘plain’,

which specifies a QPlainTextEdit, and ‘rich’, which specifies a

QTextEdit.

HistoryConsoleWidget.other\_output\_prefixUnicodeDefault: `'[remote] '`

Prefix to add to outputs coming from clients other than this one.

> 

> Only relevant if include\_other\_output is True.

> 

> 

> 

HistoryConsoleWidget.pagingany of `'inside'``|`’hsplit’`|`’vsplit’`|`’custom’`|`’none’``Default: `'inside'`

The type of paging to use. Valid values are:

‘inside’The widget pages like a traditional terminal.

‘hsplit’When paging is requested, the widget is split horizontally. The top

pane contains the console, and the bottom pane contains the paged text.

‘vsplit’Similar to ‘hsplit’, except that a vertical splitter is used.

‘custom’No action is taken by the widget beyond emitting a

‘custom\_page\_requested(str)’ signal.

‘none’The text is written directly to the console.

HistoryConsoleWidget.scrollbar\_visibilityBoolDefault: `True`

The visibility of the scrollar. If False then the scrollbar will beinvisible.

FrontendWidget.ansi\_codesBoolDefault: `True`

Whether to process ANSI escape codes.

FrontendWidget.bannerUnicodeDefault: `''`

No description

FrontendWidget.buffer\_sizeIntDefault: `500`

The maximum number of lines of text before truncation. Specifying a

non-positive number disables text truncation (not recommended).

FrontendWidget.clear\_on\_kernel\_restartBoolDefault: `True`

Whether to clear the console when the kernel is restarted

FrontendWidget.confirm\_restartBoolDefault: `True`

Whether to ask for user confirmation when restarting kernel

FrontendWidget.console\_heightIntDefault: `25`

The height of the console at start time in numberof characters (will double with `vsplit` paging)

FrontendWidget.console\_widthIntDefault: `81`

The width of the console at start time in numberof characters (will double with `hsplit` paging)

FrontendWidget.enable\_calltipsBoolDefault: `True`

Whether to draw information calltips on open-parentheses.

FrontendWidget.execute\_on\_complete\_inputBoolDefault: `True`

Whether to automatically execute on syntactically complete input.

> 

> If False, Shift-Enter is required to submit each execution.

> Disabling this is mainly useful for non-Python kernels,

> where the completion check would be wrong.

> 

> 

> 

FrontendWidget.font\_familyUnicodeDefault: `''`

The font family to use for the console.On OSX this defaults to Monaco, on Windows the default is

Consolas with fallback of Courier, and on other platforms

the default is Monospace.

FrontendWidget.font\_sizeIntDefault: `0`

The font size. If unconfigured, Qt will be entrustedwith the size of the font.

FrontendWidget.gui\_completionany of `'plain'``|`’droplist’`|`’ncurses’``Default: `'ncurses'`

The type of completer to use. Valid values are:

‘plain’Show the available completion as a text listBelow the editing area.

‘droplist’: Show the completion in a drop down list navigableby the arrow keys, and from which you can select

completion by pressing Return.

‘ncurses’Show the completion as a text list which is navigable by`tab` and arrow keys.

FrontendWidget.gui\_completion\_heightIntDefault: `0`

Set Height for completion.

‘droplist’Height in pixels.

‘ncurses’Maximum number of rows.

FrontendWidget.history\_lockBoolDefault: `False`

No description

FrontendWidget.include\_other\_outputBoolDefault: `False`

Whether to include output from clientsother than this one sharing the same kernel.

Outputs are not displayed until enter is pressed.

FrontendWidget.kindany of `'plain'``|`’rich’``Default: `'plain'`

The type of underlying text widget to use. Valid values are ‘plain’,

which specifies a QPlainTextEdit, and ‘rich’, which specifies a

QTextEdit.

FrontendWidget.lexer\_classDottedObjectNameDefault: `traitlets.Undefined`

The pygments lexer class to use.

FrontendWidget.other\_output\_prefixUnicodeDefault: `'[remote] '`

Prefix to add to outputs coming from clients other than this one.

> 

> Only relevant if include\_other\_output is True.

> 

> 

> 

FrontendWidget.pagingany of `'inside'``|`’hsplit’`|`’vsplit’`|`’custom’`|`’none’``Default: `'inside'`

The type of paging to use. Valid values are:

‘inside’The widget pages like a traditional terminal.

‘hsplit’When paging is requested, the widget is split horizontally. The top

pane contains the console, and the bottom pane contains the paged text.

‘vsplit’Similar to ‘hsplit’, except that a vertical splitter is used.

‘custom’No action is taken by the widget beyond emitting a

‘custom\_page\_requested(str)’ signal.

‘none’The text is written directly to the console.

FrontendWidget.scrollbar\_visibilityBoolDefault: `True`

The visibility of the scrollar. If False then the scrollbar will beinvisible.

IPythonWidget.ansi\_codesBoolDefault: `True`

Whether to process ANSI escape codes.

IPythonWidget.bannerUnicodeDefault: `''`

No description

IPythonWidget.buffer\_sizeIntDefault: `500`

The maximum number of lines of text before truncation. Specifying a

non-positive number disables text truncation (not recommended).

IPythonWidget.clear\_on\_kernel\_restartBoolDefault: `True`

Whether to clear the console when the kernel is restarted

IPythonWidget.confirm\_restartBoolDefault: `True`

Whether to ask for user confirmation when restarting kernel

IPythonWidget.console\_heightIntDefault: `25`

The height of the console at start time in numberof characters (will double with `vsplit` paging)

IPythonWidget.console\_widthIntDefault: `81`

The width of the console at start time in numberof characters (will double with `hsplit` paging)

IPythonWidget.enable\_calltipsBoolDefault: `True`

Whether to draw information calltips on open-parentheses.

IPythonWidget.execute\_on\_complete\_inputBoolDefault: `True`

Whether to automatically execute on syntactically complete input.

> 

> If False, Shift-Enter is required to submit each execution.

> Disabling this is mainly useful for non-Python kernels,

> where the completion check would be wrong.

> 

> 

> 

IPythonWidget.font\_familyUnicodeDefault: `''`

The font family to use for the console.On OSX this defaults to Monaco, on Windows the default is

Consolas with fallback of Courier, and on other platforms

the default is Monospace.

IPythonWidget.font\_sizeIntDefault: `0`

The font size. If unconfigured, Qt will be entrustedwith the size of the font.

IPythonWidget.gui\_completionany of `'plain'``|`’droplist’`|`’ncurses’``Default: `'ncurses'`

The type of completer to use. Valid values are:

‘plain’Show the available completion as a text listBelow the editing area.

‘droplist’: Show the completion in a drop down list navigableby the arrow keys, and from which you can select

completion by pressing Return.

‘ncurses’Show the completion as a text list which is navigable by`tab` and arrow keys.

IPythonWidget.gui\_completion\_heightIntDefault: `0`

Set Height for completion.

‘droplist’Height in pixels.

‘ncurses’Maximum number of rows.

IPythonWidget.history\_lockBoolDefault: `False`

No description

IPythonWidget.include\_other\_outputBoolDefault: `False`

Whether to include output from clientsother than this one sharing the same kernel.

Outputs are not displayed until enter is pressed.

IPythonWidget.kindany of `'plain'``|`’rich’``Default: `'plain'`

The type of underlying text widget to use. Valid values are ‘plain’,

which specifies a QPlainTextEdit, and ‘rich’, which specifies a

QTextEdit.

IPythonWidget.lexer\_classDottedObjectNameDefault: `traitlets.Undefined`

The pygments lexer class to use.

IPythonWidget.other\_output\_prefixUnicodeDefault: `'[remote] '`

Prefix to add to outputs coming from clients other than this one.

> 

> Only relevant if include\_other\_output is True.

> 

> 

> 

IPythonWidget.pagingany of `'inside'``|`’hsplit’`|`’vsplit’`|`’custom’`|`’none’``Default: `'inside'`

The type of paging to use. Valid values are:

‘inside’The widget pages like a traditional terminal.

‘hsplit’When paging is requested, the widget is split horizontally. The top

pane contains the console, and the bottom pane contains the paged text.

‘vsplit’Similar to ‘hsplit’, except that a vertical splitter is used.

‘custom’No action is taken by the widget beyond emitting a

‘custom\_page\_requested(str)’ signal.

‘none’The text is written directly to the console.

IPythonWidget.scrollbar\_visibilityBoolDefault: `True`

The visibility of the scrollar. If False then the scrollbar will beinvisible.

JupyterWidget.ansi\_codesBoolDefault: `True`

Whether to process ANSI escape codes.

JupyterWidget.bannerUnicodeDefault: `''`

No description

JupyterWidget.buffer\_sizeIntDefault: `500`

The maximum number of lines of text before truncation. Specifying a

non-positive number disables text truncation (not recommended).

JupyterWidget.clear\_on\_kernel\_restartBoolDefault: `True`

Whether to clear the console when the kernel is restarted

JupyterWidget.confirm\_restartBoolDefault: `True`

Whether to ask for user confirmation when restarting kernel

JupyterWidget.console\_heightIntDefault: `25`

The height of the console at start time in numberof characters (will double with `vsplit` paging)

JupyterWidget.console\_widthIntDefault: `81`

The width of the console at start time in numberof characters (will double with `hsplit` paging)

JupyterWidget.editorUnicodeDefault: `''`

A command for invoking a GUI text editor. If the string contains a

{filename} format specifier, it will be used. Otherwise, the filename

will be appended to the end the command. To use a terminal text editor,

the command should launch a new terminal, e.g.

`"gnome-terminal -- vim"`.

JupyterWidget.editor\_lineUnicodeDefault: `''`

The editor command to use when a specific line number is requested. The

string should contain two format specifiers: {line} and {filename}. If

this parameter is not specified, the line number option to the %edit

magic will be ignored.

JupyterWidget.enable\_calltipsBoolDefault: `True`

Whether to draw information calltips on open-parentheses.

JupyterWidget.execute\_on\_complete\_inputBoolDefault: `True`

Whether to automatically execute on syntactically complete input.

> 

> If False, Shift-Enter is required to submit each execution.

> Disabling this is mainly useful for non-Python kernels,

> where the completion check would be wrong.

> 

> 

> 

JupyterWidget.font\_familyUnicodeDefault: `''`

The font family to use for the console.On OSX this defaults to Monaco, on Windows the default is

Consolas with fallback of Courier, and on other platforms

the default is Monospace.

JupyterWidget.font\_sizeIntDefault: `0`

The font size. If unconfigured, Qt will be entrustedwith the size of the font.

JupyterWidget.gui\_completionany of `'plain'``|`’droplist’`|`’ncurses’``Default: `'ncurses'`

The type of completer to use. Valid values are:

‘plain’Show the available completion as a text listBelow the editing area.

‘droplist’: Show the completion in a drop down list navigableby the arrow keys, and from which you can select

completion by pressing Return.

‘ncurses’Show the completion as a text list which is navigable by`tab` and arrow keys.

JupyterWidget.gui\_completion\_heightIntDefault: `0`

Set Height for completion.

‘droplist’Height in pixels.

‘ncurses’Maximum number of rows.

JupyterWidget.history\_lockBoolDefault: `False`

No description

JupyterWidget.in\_promptUnicodeDefault: `'In [<span class="in-prompt-number">%i</span>]: '`

No description

JupyterWidget.include\_other\_outputBoolDefault: `False`

Whether to include output from clientsother than this one sharing the same kernel.

Outputs are not displayed until enter is pressed.

JupyterWidget.input\_sepUnicodeDefault: `'\\n'`

No description

JupyterWidget.kindany of `'plain'``|`’rich’``Default: `'plain'`

The type of underlying text widget to use. Valid values are ‘plain’,

which specifies a QPlainTextEdit, and ‘rich’, which specifies a

QTextEdit.

JupyterWidget.lexer\_classDottedObjectNameDefault: `traitlets.Undefined`

The pygments lexer class to use.

JupyterWidget.other\_output\_prefixUnicodeDefault: `'[remote] '`

Prefix to add to outputs coming from clients other than this one.

> 

> Only relevant if include\_other\_output is True.

> 

> 

> 

JupyterWidget.out\_promptUnicodeDefault: `'Out[<span class="out-prompt-number">%i</span>]: '`

No description

JupyterWidget.output\_sepUnicodeDefault: `''`

No description

JupyterWidget.output\_sep2UnicodeDefault: `''`

No description

JupyterWidget.pagingany of `'inside'``|`’hsplit’`|`’vsplit’`|`’custom’`|`’none’``Default: `'inside'`

The type of paging to use. Valid values are:

‘inside’The widget pages like a traditional terminal.

‘hsplit’When paging is requested, the widget is split horizontally. The top

pane contains the console, and the bottom pane contains the paged text.

‘vsplit’Similar to ‘hsplit’, except that a vertical splitter is used.

‘custom’No action is taken by the widget beyond emitting a

‘custom\_page\_requested(str)’ signal.

‘none’The text is written directly to the console.

JupyterWidget.scrollbar\_visibilityBoolDefault: `True`

The visibility of the scrollar. If False then the scrollbar will beinvisible.

JupyterWidget.style\_sheetUnicodeDefault: `''`

A CSS stylesheet. The stylesheet can contain classes for:1. Qt: QPlainTextEdit, QFrame, QWidget, etc

2. Pygments: .c, .k, .o, etc. (see PygmentsHighlighter)

3. QtConsole: .error, .in-prompt, .out-prompt, etc

JupyterWidget.syntax\_styleUnicodeDefault: `''`

If not empty, use this Pygments style for syntax highlighting.

Otherwise, the style sheet is queried for Pygments style

information.

KernelManager.autorestartBoolDefault: `True`

Should we autorestart the kernel if it dies.

KernelManager.connection\_fileUnicodeDefault: `''`

JSON file in which to store connection info [default: kernel-<pid>.json]

> 

> This file will contain the IP, ports, and authentication key needed to connect

> clients to this kernel. By default, this file will be created in the security dir

> of the current profile, but can be specified by absolute path.

> 

> 

> 

KernelManager.control\_portIntDefault: `0`

set the control (ROUTER) port [default: random]

KernelManager.hb\_portIntDefault: `0`

set the heartbeat port [default: random]

KernelManager.iopub\_portIntDefault: `0`

set the iopub (PUB) port [default: random]

KernelManager.ipUnicodeDefault: `''`

Set the kernel’s IP address [default localhost].If the IP address is something other than localhost, then

Consoles on other machines will be able to connect

to the Kernel, so be careful!

KernelManager.shell\_portIntDefault: `0`

set the shell (ROUTER) port [default: random]

KernelManager.shutdown\_wait\_timeFloatDefault: `5.0`

Time to wait for a kernel to terminate before killing it, in seconds. When a shutdown request is initiated, the kernel will be immediately sent an interrupt (SIGINT), followedby a shutdown\_request message, after 1/2 of `shutdown\_wait\_time`it will be sent a terminate (SIGTERM) request, and finally at the end of `shutdown\_wait\_time` will be killed (SIGKILL). terminate and kill may be equivalent on windows. Note that this value can beoverridden by the in-use kernel provisioner since shutdown times mayvary by provisioned environment.

KernelManager.stdin\_portIntDefault: `0`

set the stdin (ROUTER) port [default: random]

KernelManager.transportany of `'tcp'``|`’ipc’`` (case-insensitive)Default: `'tcp'`

No description

KernelRestarter.debugBoolDefault: `False`

Whether to include every poll event in debugging output.

> 

> Has to be set explicitly, because there will be *a lot* of output.

> 

> 

> 

KernelRestarter.random\_ports\_until\_aliveBoolDefault: `True`

Whether to choose new random ports when restarting before the kernel is alive.

KernelRestarter.restart\_limitIntDefault: `5`

The number of consecutive autorestarts before the kernel is presumed dead.

KernelRestarter.stable\_start\_timeFloatDefault: `10.0`

The time in seconds to consider the kernel to have completed a stable start up.

KernelRestarter.time\_to\_deadFloatDefault: `3.0`

Kernel heartbeat interval in seconds.

Session.buffer\_thresholdIntDefault: `1024`

Threshold (in bytes) beyond which an object’s buffer should be extracted to avoid pickling.

Session.check\_pidBoolDefault: `True`

Whether to check PID to protect against calls after fork.

> 

> This check can be disabled if fork-safety is handled elsewhere.

> 

> 

> 

Session.copy\_thresholdIntDefault: `65536`

Threshold (in bytes) beyond which a buffer should be sent without copying.

Session.debugBoolDefault: `False`

Debug output in the Session

Session.digest\_history\_sizeIntDefault: `65536`

The maximum number of digests to remember.

> 

> The digest history will be culled when it exceeds this value.

> 

> 

> 

Session.item\_thresholdIntDefault: `64`

The maximum number of items for a container to be introspected for custom serialization.Containers larger than this are pickled outright.

Session.keyCBytesDefault: `b''`

execution key, for signing messages.

Session.keyfileUnicodeDefault: `''`

path to file containing execution key.

Session.metadataDictDefault: `{}`

Metadata dictionary, which serves as the default top-level metadata dict for each message.

Session.packerDottedObjectNameDefault: `'json'`

The name of the packer for serializing messages.Should be one of ‘json’, ‘pickle’, or an import name

for a custom callable serializer.

Session.sessionCUnicodeDefault: `''`

The UUID identifying this session.

Session.signature\_schemeUnicodeDefault: `'hmac-sha256'`

The digest scheme used to construct the message signatures.Must have the form ‘hmac-HASH’.

Session.unpackerDottedObjectNameDefault: `'json'`

The name of the unpacker for unserializing messages.Only used with custom functions for `packer`.

Session.usernameUnicodeDefault: `'username'`

Username for the Session. Default is your system username.

Changes in Jupyter Qt console[](#changes-in-jupyter-qt-console "Permalink to this heading")

--------------------------------------------------------------------------------------------

### 5.4[](#id1 "Permalink to this heading")

#### 5.4.3[](#id3 "Permalink to this heading")

[5.4.3 on GitHub](https://github.com/jupyter/qtconsole/milestones/5.4.3)

* Add missing closed method to QtInProcessChannel.

#### 5.4.2[](#id4 "Permalink to this heading")

[5.4.2 on GitHub](https://github.com/jupyter/qtconsole/milestones/5.4.2)

* Check if the iopub channel is not closed before flushing it.

* Fix kernel autorestart after it’s killed for Jupyter-client 8+.

#### 5.4.1[](#id5 "Permalink to this heading")

[5.4.1 on GitHub](https://github.com/jupyter/qtconsole/milestones/5.4.1)

* Fix crash at startup with PySide6.

* Cast images width and height to int when trying to insert them.

#### 5.4.0[](#id6 "Permalink to this heading")

[5.4.0 on GitHub](https://github.com/jupyter/qtconsole/milestones/5.4.0)

##### Additions[](#additions "Permalink to this heading")

* Add ConsoleWidget.gui\_completion\_height option to configure the maximum

number of rows or height in pixels of completions when the

ConsoleWidget.gui\_completion option has values ‘ncurses’ or ‘droplist’,

respectively.

##### Changes[](#changes "Permalink to this heading")

* Fix some errors with PySide6 6.4.0.

* Fix mixed input and print statements on macOS.

* Drop usage of disutils.

### 5.3[](#id7 "Permalink to this heading")

#### 5.3.2[](#id9 "Permalink to this heading")

[5.3.2 on GitHub](https://github.com/jupyter/qtconsole/milestones/5.3.2)

* Fix syntax highlighting with multiline inputs.

* Don’t call processEvents when showing input prompts on Mac because it’s not

necessary.

#### 5.3.1[](#id10 "Permalink to this heading")

[5.3.1 on GitHub](https://github.com/jupyter/qtconsole/milestones/5.3.1)

* Fix segfault when performing code completion on Qt6.

* Fix mixed input and print statements.

* Fix switching syntax highlighting styles on PySide2 and PySide6.

#### 5.3.0[](#id11 "Permalink to this heading")

[5.3.0 on GitHub](https://github.com/jupyter/qtconsole/milestones/5.3.0)

##### Additions[](#id12 "Permalink to this heading")

* Add support for PyQt6.

##### Changes[](#id13 "Permalink to this heading")

* Don’t show spurious blank lines when running input statements.

* Fix showing Latex images with dark background colors.

* Drop support for Python 3.6

### 5.2[](#id14 "Permalink to this heading")

#### 5.2.2[](#id16 "Permalink to this heading")

[5.2.2 on GitHub](https://github.com/jupyter/qtconsole/milestones/5.2.2)

* Fix implicit int to float conversion for Python 3.10 compatibility.

* Fix building documentation in ReadTheDocs.

#### 5.2.1[](#id17 "Permalink to this heading")

[5.2.1 on GitHub](https://github.com/jupyter/qtconsole/milestones/5.2.1)

* Fix error when deleting CallTipWidget.

* Another fix for the ‘Erase in Line’ ANSI code.

#### 5.2.0[](#id18 "Permalink to this heading")

[5.2.0 on GitHub](https://github.com/jupyter/qtconsole/milestones/5.2.0)

##### Changes[](#id19 "Permalink to this heading")

* Fix hidden execution requests.

* Fix ANSI code for erase line.

### 5.1[](#id20 "Permalink to this heading")

#### 5.1.1[](#id22 "Permalink to this heading")

[5.1.1 on GitHub](https://github.com/jupyter/qtconsole/milestones/5.1.1)

* Improve handling of different keyboard combinations.

* Move cursor to the beginning of buffer if on the same line.

#### 5.1.0[](#id23 "Permalink to this heading")

[5.1.0 on GitHub](https://github.com/jupyter/qtconsole/milestones/5.1.0)

##### Additions[](#id24 "Permalink to this heading")

* Two new keyboard shortcuts: Ctrl + Up/Down to go to the beginning/end

of the buffer.

##### Changes[](#id25 "Permalink to this heading")

* Monkeypatch RegexLexer only while in use by qtconsole.

* Import Empty from queue module.

### 5.0[](#id26 "Permalink to this heading")

#### 5.0.3[](#id28 "Permalink to this heading")

[5.0.3 on GitHub](https://github.com/jupyter/qtconsole/milestones/5.0.3)

* Emit kernel\_restarted signal only after a kernel crash.

#### 5.0.2[](#id29 "Permalink to this heading")

[5.0.2 on GitHub](https://github.com/jupyter/qtconsole/milestones/5.0.2)

* Fix launching issue with Big Sur

* Remove partial prompt on copy

#### 5.0.1[](#id30 "Permalink to this heading")

[5.0.1 on GitHub](https://github.com/jupyter/qtconsole/milestones/5.0.1)

* Add python\_requires to setup.py for Python 3.6+ compatibility

#### 5.0.0[](#id31 "Permalink to this heading")

[5.0.0 on GitHub](https://github.com/jupyter/qtconsole/milestones/5.0)

##### Additions[](#id32 "Permalink to this heading")

* Add option to set completion type while running.

##### Changes[](#id33 "Permalink to this heading")

* Emit kernel\_restarted after restarting kernel.

* Drop support for Python 2.7 and 3.5.

### 4.7[](#id34 "Permalink to this heading")

#### 4.7.7[](#id36 "Permalink to this heading")

[4.7.7 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.7.7)

* Change font width calculation to use horizontalAdvance

#### 4.7.6[](#id38 "Permalink to this heading")

[4.7.6 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.7.6)

* Replace qApp with QApplication.instance().

* Fix QFontMetrics.width deprecation.

#### 4.7.5[](#id40 "Permalink to this heading")

[4.7.5 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.7.5)

* Print input if there is no prompt.

#### 4.7.4[](#id42 "Permalink to this heading")

[4.7.4 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.7.4)

* Fix completion widget text for paths and files.

* Make Qtconsole work on Python 3.8 and Windows.

#### 4.7.3[](#id44 "Permalink to this heading")

[4.7.3 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.7.3)

* Fix all misuses of QtGui.

#### 4.7.2[](#id46 "Permalink to this heading")

[4.7.2 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.7.2)

* Set updated prompt as previous prompt object in JupyterWidget.

* Fix some Qt incorrect imports.

#### 4.7.1[](#id48 "Permalink to this heading")

[4.7.1 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.7.1)

* Remove common prefix from path completions.

* Use QtWidgets instead of QtGui to create QMenu instances.

#### 4.7.0[](#id50 "Permalink to this heading")

[4.7.0 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.7.0)

##### Additions[](#id51 "Permalink to this heading")

* Use qtpy as the shim layer for Python Qt bindings and remove our own

shim.

##### Changes[](#id52 "Permalink to this heading")

* Remove code to expand tabs to spaces.

* Skip history if it is the same as the input buffer.

### 4.6[](#id53 "Permalink to this heading")

#### 4.6.0[](#id55 "Permalink to this heading")

[4.6.0 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.6)

##### Additions[](#id56 "Permalink to this heading")

* Add an option to configure scrollbar visibility.

##### Changes[](#id57 "Permalink to this heading")

* Avoid introducing a new line when executing code.

### 4.5[](#id58 "Permalink to this heading")

#### 4.5.5[](#id60 "Permalink to this heading")

[4.5.5 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.5.5)

* Set console to read only after input.

* Allow text to be added before the prompt while autocompleting.

* Scroll when adding text even when not executing.

#### 4.5.4[](#id62 "Permalink to this heading")

[4.5.4 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.5.4)

* Fix emoji highlighting.

#### 4.5.3[](#id64 "Permalink to this heading")

[4.5.3 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.5.3)

* Fix error when closing comms.

* Fix prompt automatically scrolling down on execution.

#### 4.5.2[](#id66 "Permalink to this heading")

[4.5.2 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.5.2)

* Remove deprecation warnings in Python 3.8

* Improve positioning and content of completion widget.

* Scroll down for output from remote commands.

#### 4.5.1[](#id68 "Permalink to this heading")

[4.5.1 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.5.1)

* Only use setuptools in setup.py to fix uploading tarballs to PyPI.

#### 4.5.0[](#id70 "Permalink to this heading")

[4.5.0 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.5)

##### Additions[](#id71 "Permalink to this heading")

* Add Comms to qtconsole.

* Add kernel language name as an attribute of JupyterWidget.

##### Changes[](#id72 "Permalink to this heading")

* Use new traitlets API with decorators.

### 4.4[](#id73 "Permalink to this heading")

#### 4.4.4[](#id75 "Permalink to this heading")

[4.4.4 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.4.4)

* Prevent cursor from moving to the end of the line while debugging.

#### 4.4.3[](#id77 "Permalink to this heading")

[4.4.3 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.4.3)

* Fix complete statements check inside indented block for Python after

the IPython 7 release.

* Improve auto-scrolling during execution.

#### 4.4.2[](#id79 "Permalink to this heading")

[4.4.2 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.4.2)

* Fix incompatibility with PyQt5 5.11.

#### 4.4.1[](#id81 "Permalink to this heading")

[4.4.1 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.4.1)

* Fix setting width and height when displaying images with IPython’s Image.

* Avoid displaying errors when using Matplotlib to generate pngs from Latex.

#### 4.4.0[](#id83 "Permalink to this heading")

[4.4.0 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.4)

##### Additions[](#id85 "Permalink to this heading")

* ``Control`-`D`` enters an EOT character if kernel is executing and input is

empty.

* Implement block indent on multiline selection with `Tab`.

* Change the syntax highlighting style used in the console at any time. It can

be done in the menu `View > Syntax Style`.

##### Changes[](#id86 "Permalink to this heading")

* Change ``Control`-`Shift`-`A`` to select cell contents first.

* Change default tab width to 4 spaces.

* Enhance handling of input from other clients.

* Don’t block the console when the kernel is asked for completions.

##### Fixes[](#fixes "Permalink to this heading")

* Fix bug that make PySide2 a forbidden binding.

* Fix IndexError when copying prompts.

* Fix behavior of right arrow key.

* Fix behavior of ``Control`-`Backspace`` and ``Control`-`Del``

### 4.3[](#id87 "Permalink to this heading")

#### 4.3.1[](#id89 "Permalink to this heading")

[4.3.1 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.3.1)

* Make %clear to delete previous output on Windows.

* Fix SVG rendering.

#### 4.3.0[](#id91 "Permalink to this heading")

[4.3 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.3)

##### Additions[](#id93 "Permalink to this heading")

* Add ``Shift`-`Tab`` shortcut to unindent text

* Add ``Control`-`R`` shortcut to rename the current tab

* Add ``Alt`-`R`` shortcut to set the main window title

* Add ``Command`-`Alt`-`Left`` and ``Command`-`Alt`-`Right`` shortcut to switch

tabs on macOS

* Add support for PySide2

* Add support for Python 3.5

* Add support for 24 bit ANSI color codes

* Add option to create new tab connected to the existing kernel

##### Changes[](#id94 "Permalink to this heading")

* Rename `ConsoleWidget.width/height` traits to `console\_width/console\_height`

to avoid a name clash with the `QWidget` properties. Note: the name change

could be, in rare cases if a name collision exists, a code-breaking

change.

* Change `Tab` key behavior to always indent to the next increment of 4 spaces

* Change `Home` key behavior to alternate cursor between the beginning of text

(ignoring leading spaces) and beginning of the line

* Improve documentation of various options and clarified the docs in some places

* Move documentation to ReadTheDocs

##### Fixes[](#id95 "Permalink to this heading")

* Fix automatic indentation of new lines that are inserted in the middle of a

cell

* Fix regression where prompt would never be shown for `--existing` consoles

* Fix `python.exe -m qtconsole` on Windows

* Fix showing error messages when running a script using `%run`

* Fix `invalid cursor position` error and subsequent freezing of user input

* Fix syntax coloring when attaching to non-IPython kernels

* Fix printing when using QT5

* Fix ``Control`-`K`` shortcut (delete until end of line) on macOS

* Fix history browsing (`Up`/`Down` keys) when lines are longer than

the terminal width

* Fix saving HTML with inline PNG for Python 3

* Various internal bugfixes

### 4.2[](#id96 "Permalink to this heading")

[4.2 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.2)

* various latex display fixes

* improvements for embedding in Qt applications (use existing Qt API if one is already loaded)

### 4.1[](#id98 "Permalink to this heading")

#### 4.1.1[](#id100 "Permalink to this heading")

[4.1.1 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.1.1)

* Set AppUserModelID for taskbar icon on Windows 7 and later

#### 4.1.0[](#id102 "Permalink to this heading")

[4.1 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.1)

* fix regressions in copy/paste, completion

* fix issues with inprocess IPython kernel

* fix `jupyter qtconsole --generate-config`

### 4.0[](#id104 "Permalink to this heading")

#### 4.0.1[](#id106 "Permalink to this heading")

* fix installation issues, including setuptools entrypoints for Windows

* Qt5 fixes

#### 4.0.0[](#id108 "Permalink to this heading")

[4.0 on GitHub](https://github.com/jupyter/qtconsole/milestones/4.0)

First release of the Qt console as a standalone package.

Overview[](#overview "Permalink to this heading")

--------------------------------------------------

The Qt console is a very lightweight application that largely feels like a

terminal, but provides a number of enhancements only possible in a GUI, such as

inline figures, proper multi-line editing with syntax highlighting, graphical

calltips, and much more. The Qt console can use any Jupyter kernel.

[![Qt console with embedded plots](_images/qtconsole.png)](_images/qtconsole.png)

The Qt console with IPython, using inline matplotlib plots.[](#id3 "Permalink to this image")

The Qt console frontend has hand-coded emacs-style bindings for text

navigation. This is not yet configurable.

Tip

Since the Qt console tries hard to behave like a terminal, by default it

immediately executes single lines of input that are complete. If you want

to force multi-line input, hit ``Ctrl`-`Enter`` at the end of the first line

instead of `Enter`, and it will open a new line for input. At any

point in a multi-line block, you can force its execution (without having to

go to the bottom) with ``Shift`-`Enter``.

Inline graphics[](#inline-graphics "Permalink to this heading")

----------------------------------------------------------------

One of the most exciting features of the Qt Console is embedded figures.

You can plot with matplotlib in IPython, or the plotting library of choice

in your kernel.

[![_images/besselj.png](_images/besselj.png)](_images/besselj.png)

Saving and Printing[](#saving-and-printing "Permalink to this heading")

------------------------------------------------------------------------

The Qt Console has the ability to save your current session, as either HTML or

XHTML. Your inline figures will be PNG in HTML, or inlined as SVG in XHTML.

PNG images have the option to be either in an external folder, as in many

browsers’ “Webpage, Complete” option, or inlined as well, for a larger, but

more portable file.

Note

Export to SVG+XHTML requires that you are using SVG figures, which is *not*

the default. To switch the inline figure format in IPython to use SVG, do:

```

In [10]: %config InlineBackend.figure_format = 'svg'

```

Or, you can add the same line (c.Inline… instead of %config Inline…) to

your config files.

This will only affect figures plotted after making this call

The widget also exposes the ability to print directly, via the default print

shortcut or context menu.

See these examples of [`png/html`](_downloads/592781c2112953e93c88f384ade8023b/jn.html) and

[`svg/xhtml`](_downloads/ed788cef5a252797f5769bfe6ac4c16c/jn.xhtml) output. Note that syntax highlighting

does not survive export. This is a known issue, and is being investigated.

Colors and Highlighting[](#colors-and-highlighting "Permalink to this heading")

--------------------------------------------------------------------------------

Terminal IPython has always had some coloring, but never syntax

highlighting. There are a few simple color choices, specified by the `colors`

flag or `%colors` magic:

* LightBG for light backgrounds

* Linux for dark backgrounds

* NoColor for a simple colorless terminal

The Qt widget, however, has full syntax highlighting as you type, handled by

the [pygments](http://pygments.org/) library. The `style` argument exposes access to any style by

name that can be found by pygments, and there are several already

installed.

Screenshot of `jupyter qtconsole --style monokai`, which uses the ‘monokai’

theme:

[![_images/colors_dark.png](_images/colors_dark.png)](_images/colors_dark.png)

Note

Calling `jupyter qtconsole -h` will show all the style names that

pygments can find on your system.

You can also pass the filename of a custom CSS stylesheet, if you want to do

your own coloring, via the `stylesheet` argument. The default LightBG

stylesheet:

```

QPlainTextEdit, QTextEdit { background-color: white;

 color: black ;

 selection-background-color: #ccc}

.error { color: red; }

.in-prompt { color: navy; }

.in-prompt-number { font-weight: bold; }

.out-prompt { color: darkred; }

.out-prompt-number { font-weight: bold; }

/\* .inverted is used to highlight selected completion \*/

.inverted { background-color: black ; color: white; }

```

Fonts[](#fonts "Permalink to this heading")

--------------------------------------------

The Qt console is configurable via the ConsoleWidget. To change these, set the

`font\_family` or `font\_size` traits of the ConsoleWidget. For instance, to

use 9pt Anonymous Pro:

```

$> jupyter qtconsole --ConsoleWidget.font_family="Anonymous Pro" --ConsoleWidget.font_size=9

```

Process Management[](#process-management "Permalink to this heading")

----------------------------------------------------------------------

With the two-process ZMQ model, the frontend does not block input during

execution. This means that actions can be taken by the frontend while the

Kernel is executing, or even after it crashes. The most basic such command is

via ‘Ctrl-.’, which restarts the kernel. This can be done in the middle of a

blocking execution. The frontend can also know, via a heartbeat mechanism, that

the kernel has died. This means that the frontend can safely restart the

kernel.

### Multiple Consoles[](#multiple-consoles "Permalink to this heading")

Since the Kernel listens on the network, multiple frontends can connect to it.

These do not have to all be qt frontends - any Jupyter frontend can connect and

run code.

Other frontends can connect to your kernel, and share in the execution. This is

great for collaboration. The `--existing` flag means connect to a kernel

that already exists. Starting other consoles

with that flag will not try to start their own kernel, but rather connect to

yours. `kernel-12345.json` is a small JSON file with the ip, port, and

authentication information necessary to connect to your kernel. By default, this file

will be in your Jupyter runtime directory. If it is somewhere else,

you will need to use the full path of the connection file, rather than

just its filename.

If you need to find the connection info to send, and don’t know where your connection file

lives, there are a couple of ways to get it. If you are already running a console

connected to an IPython kernel, you can use the `%connect\_info` magic to display the information

necessary to connect another frontend to the kernel.

```

In [2]: %connect\_info

{

 "stdin\_port":50255,

 "ip":"127.0.0.1",

 "hb\_port":50256,

 "key":"70be6f0f-1564-4218-8cda-31be40a4d6aa",

 "shell\_port":50253,

 "iopub\_port":50254

}

Paste the above JSON into a file, and connect with:

 $> ipython <app> --existing <file>

or, if you are local, you can connect with just:

 $> ipython <app> --existing kernel-12345.json

or even just:

 $> ipython <app> --existing

if this is the most recent kernel you have started.

```

Otherwise, you can find a connection file by name (and optionally profile) with

`jupyter\_client.find\_connection\_file()`:

```

$> python -c "from jupyter\_client import find\_connection\_file;\

print(find\_connection\_file('kernel-12345.json'))"

/home/you/Library/Jupyter/runtime/kernel-12345.json

```

### Security[](#security "Permalink to this heading")

Warning

Since the ZMQ code currently has no encryption, listening on an

external-facing IP is dangerous. You are giving any computer that can see

you on the network the ability to connect to your kernel, and view your traffic.

Read the rest of this section before listening on external ports

or running a kernel on a shared machine.

By default (for security reasons), the kernel only listens on localhost, so you

can only connect multiple frontends to the kernel from your local machine. You

can specify to listen on an external interface by specifying the `ip`

argument:

```

$> jupyter qtconsole --ip=192.168.1.123

```

If you specify the ip as 0.0.0.0 or ‘\*’, that means all interfaces, so any

computer that can see yours on the network can connect to the kernel.

Messages are not encrypted, so users with access to the ports your kernel is using will be

able to see any output of the kernel. They will **NOT** be able to issue shell commands as

you due to message signatures.

Warning

If you disable message signatures, then any user with access to the ports your

kernel is listening on can issue arbitrary code as you. **DO NOT** disable message

signatures unless you have a lot of trust in your environment.

The one security feature Jupyter does provide is protection from unauthorized execution.

Jupyter’s messaging system will sign messages with HMAC digests using a shared-key. The key

is never sent over the network, it is only used to generate a unique hash for each message,

based on its content. When the kernel receives a message, it will check that the digest

matches, and discard the message. You can use any file that only you have access to to

generate this key, but the default is just to generate a new UUID.

### SSH Tunnels[](#ssh-tunnels "Permalink to this heading")

Sometimes you want to connect to machines across the internet, or just across

a LAN that either doesn’t permit open ports or you don’t trust the other

machines on the network. To do this, you can use SSH tunnels. SSH tunnels

are a way to securely forward ports on your local machine to ports on another

machine, to which you have SSH access.

In simple cases, Jupyter’s tools can forward ports over ssh by simply adding the

`--ssh=remote` argument to the usual `--existing...` set of flags for connecting

to a running kernel, after copying the JSON connection file (or its contents) to

the second computer.

Warning

Using SSH tunnels does *not* increase localhost security. In fact, when

tunneling from one machine to another *both* machines have open

ports on localhost available for connections to the kernel.

There are two primary models for using SSH tunnels with Jupyter. The first

is to have the Kernel listen only on localhost, and connect to it from

another machine on the same LAN.

First, let’s start a kernel on machine **worker**, listening only

on loopback:

```

user@worker $> ipython kernel

[IPKernelApp] To connect another client to this kernel, use:

[IPKernelApp] --existing kernel-12345.json

```

In this case, the IP that you would connect

to would still be 127.0.0.1, but you want to specify the additional `--ssh` argument

with the hostname of the kernel (in this example, it’s ‘worker’):

```

user@client $> jupyter qtconsole  --ssh=worker --existing /path/to/kernel-12345.json

```

Which will write a new connection file with the forwarded ports, so you can reuse them:

```

[JupyterQtConsoleApp] To connect another client via this tunnel, use:

[JupyterQtConsoleApp] --existing kernel-12345-ssh.json

```

Note again that this opens ports on the *client* machine that point to your kernel.

Note

the ssh argument is simply passed to openssh, so it can be fully specified `user@host:port`

but it will also respect your aliases, etc. in `.ssh/config` if you have any.

The second pattern is for connecting to a machine behind a firewall across the internet

(or otherwise wide network). This time, we have a machine **login** that you have ssh access

to, which can see **kernel**, but **client** is on another network. The important difference

now is that **client** can see **login**, but *not* **worker**. So we need to forward ports from

client to worker *via* login. This means that the kernel must be started listening

on external interfaces, so that its ports are visible to `login`:

```

user@worker $> ipython kernel --ip=0.0.0.0

[IPKernelApp] To connect another client to this kernel, use:

[IPKernelApp] --existing kernel-12345.json

```

Which we can connect to from the client with:

```

user@client $> jupyter qtconsole --ssh=login --ip=192.168.1.123 --existing /path/to/kernel-12345.json

```

Note

The IP here is the address of worker as seen from *login*, and need only be specified if

the kernel used the ambiguous 0.0.0.0 (all interfaces) address. If it had used

192.168.1.123 to start with, it would not be needed.

### Manual SSH tunnels[](#manual-ssh-tunnels "Permalink to this heading")

It’s possible that Jupyter’s ssh helper functions won’t work for you, for various

reasons. You can still connect to remote machines, as long as you set up the tunnels

yourself. The basic format of forwarding a local port to a remote one is:

```

[client] $> ssh <server> <localport>:<remoteip>:<remoteport> -f -N

```

This will forward local connections to **localport** on client to **remoteip:remoteport**

*via* **server**. Note that remoteip is interpreted relative to *server*, not the client.

So if you have direct ssh access to the machine to which you want to forward connections,

then the server *is* the remote machine, and remoteip should be server’s IP as seen from the

server itself, i.e. 127.0.0.1. Thus, to forward local port 12345 to remote port 54321 on

a machine you can see, do:

```

[client] $> ssh machine 12345:127.0.0.1:54321 -f -N

```

But if your target is actually on a LAN at 192.168.1.123, behind another machine called **login**,

then you would do:

```

[client] $> ssh login 12345:192.168.1.16:54321 -f -N

```

The `-f -N` on the end are flags that tell ssh to run in the background,

and don’t actually run any commands beyond creating the tunnel.

See also

A short discussion of ssh tunnels: <http://www.revsys.com/writings/quicktips/ssh-tunnel.html>

### Stopping Kernels and Consoles[](#stopping-kernels-and-consoles "Permalink to this heading")

Since there can be many consoles per kernel, the shutdown mechanism and dialog

are probably more complicated than you are used to. Since you don’t always want

to shutdown a kernel when you close a window, you are given the option to just

close the console window or also close the Kernel and *all other windows*. Note

that this only refers to all other *local* windows, as remote Consoles are not

allowed to shutdown the kernel, and shutdowns do not close Remote consoles (to

allow for saving, etc.).

Rules:

> 

> * Restarting the kernel automatically clears all *local* Consoles, and prompts remote

> Consoles about the reset.

> * Shutdown closes all *local* Consoles, and notifies remotes that

> the Kernel has been shutdown.

> * Remote Consoles may not restart or shutdown the kernel.

> 

> 

> 

Qt and the REPL[](#qt-and-the-repl "Permalink to this heading")

----------------------------------------------------------------

Note

This section is relevant regardless of the frontend you use to write Qt

Code. This section is mostly there as it is easy to get confused and assume

that writing Qt code in the QtConsole should change from usual Qt code. It

should not. If you get confused, take a step back, and try writing your

code using the pure terminal based `jupyter console` that does not

involve Qt.

An important part of working with the REPL – QtConsole, Jupyter notebook,

IPython terminal – when you are writing your own Qt code is to remember that

user code (in the kernel) is *not* in the same process as the frontend. This

means that there is not necessarily any Qt code running in the kernel, and

under most normal circumstances there isn’t. This is true even if you are

running the QtConsole.

Warning

When executing code from the qtconsole prompt, it is **not possible** to

access the QtApplication instance of the QtConsole itself.

A common problem listed in the PyQt4 [Gotchas](http://pyqt.sourceforge.net/Docs/PyQt4/gotchas.html#garbage-collection) is the fact that Python’s garbage

collection will destroy Qt objects (Windows, etc.) once there is no longer a

Python reference to them, so you have to hold on to them. For instance, in:

```

from PyQt4 import QtGui

def make\_window():

    win = QtGui.QMainWindow()

def make\_and\_return\_window():

    win = QtGui.QMainWindow()

    return win

```

`make\_window()` will never draw a window, because garbage collection will

destroy it before it is drawn, whereas `make\_and\_return\_window()` lets the

caller decide when the window object should be destroyed. If, as a developer,

you know that you always want your objects to last as long as the process, you

can attach them to the `QApplication` instance itself:

```

from PyQt4 import QtGui, QtCore

# do this just once:

app = QtCore.QCoreApplication.instance()

if not app:

    # we are in the kernel in most of the case there is NO qt code running.

    # we need to create a Gui APP.

    app = QtGui.QApplication([])

app.references = set()

# then when you create Windows, add them to the set

def make\_window():

    win = QtGui.QMainWindow()

    app.references.add(win)

```

Now the `QApplication` itself holds a reference to `win`, so it will never be

garbage collected until the application itself is destroyed.

### Embedding the QtConsole in a Qt application[](#embedding-the-qtconsole-in-a-qt-application "Permalink to this heading")

There are a few options to integrate the Jupyter Qt console with your own

application:

* Use `qtconsole.rich\_jupyter\_widget.RichJupyterWidget` in your

Qt application. This will embed the console widget in your GUI and start the

kernel in a separate process, so code typed into the console cannot access

objects in your application. See `examples/embed\_qtconsole.py` for an

example.

* Start an IPython kernel inside a PyQt application (

[ipkernel\_qtapp.py](https://github.com/ipython/ipykernel/blob/master/examples/embedding/ipkernel_qtapp.py)

in the `ipykernel` repository shows how to do this). Then launch the Qt

console in a separate process to connect to it. This means that the console

will be in a separate window from your application’s UI, but the code entered

by the user runs in your application.

* Start a special IPython kernel, the

`ipykernel.inprocess.ipkernel.InProcessKernel`, which allows a

QtConsole in the same process. See `examples/inprocess\_qtconsole.py`

for an example. This allows both the kernel and the console interface to be

part of your application, but it is not well supported. We encourage you to

use one of the above options instead if you can.

Regressions[](#regressions "Permalink to this heading")

--------------------------------------------------------

There are some features, where the qt console lags behind the Terminal

frontend:

* !cmd input: Due to our use of pexpect, we cannot pass input to subprocesses

launched using the ‘!’ escape, so you should never call a command that

requires interactive input. For such cases, use the terminal IPython. This

will not be fixed, as abandoning pexpect would significantly degrade the

console experience.





p, li { white-space: pre-wrap; }

In [34]: from scipy.special import jn

In [35]: x = linspace(0,4\*pi)

In [36]: for i in range(6):

    ...: plot(x,jn(i,x))

![](data:image/png;base64,

iVBORw0KGgoAAAANSUhEUgAAAbAAAAEgCAYAAADVKCZpAAAACXBIWXMAAAsT

AAALEwEAmpwYAAAgAElEQVR4nOzdd3hT1RsH8G+6oVBo6S6F0gItZbTsLaiA

KEMQEBSQKcuBiKA/ERkqIggORARBBGUqoExBNm1p6S7de++92yT3/f1xpTI6

kjQhrbyf5+GBJvee86a0ee89Oec9EiIiMMYYY82MjrYDYIwxxlTBCYwxxliz

xAmMMcZYs8QJjDHGWLPECYwxxlizxAmMMcZYs8QJjDHGWLPECYwxxlizxAmM

McZYs8QJjDHGWLPECYwxxlizxAmMMcZYs8QJjDHGWLPECYwxxlizxAmMMcZY

s8QJjDHGWLPECYwxxlizxAmMMcZYs8QJjDHGWLPECYwxxlizxAmMMcZYs8QJ

jDHGWLPECYwxxlizxAmMMcZYs8QJjDHGWLPECYwxxlizxAmMMcZYs6Sn7QA0

YcmSJfD29oa9vb22Q1FJdXU19PX1IZFItB2KSrKysmBlZaXtMFTG8WsPEUEq

lcLAwEDboahEJpNBIpFAV1dX26GoJCIiAmvWrMG8efO0HYpC/pMJLCcnBxYW

FliyZIm2Q1HJ2bNnMWLECLRu3VrboajkyJEjeOWVV7Qdhso4fu3Jy8uDv78/

xowZo+1QVBIQEABjY2M4OztrOxSVLFu2DESk7TAU9p9MYCYmJjAxMcG4ceO0

HYpKEhMTMXr0aLRr107boajE39+/2X7vAY5fm9LS0iCVSptt/Hp6emjbti0G

Dhyo7VBU0qpVK7Rp00bbYSiMPwNjjDHWLP0n78AMDQ21HUKjWFpaQk+v+f7X

TJw4UdshNArHrz36+vowNzfXdhgqMzExgbGxsbbDUJmhoSF0dJrPfU3zfZes

h42NjbZDaJRp06ZpO4RGcXd313YIjcLxa4+lpSVefPFFbYehssGDB2s7hEax

s7NrVhNomk+qZYwxxu7DCYwxxlizxAmMMcZYs8QJjDHGWLPECYwxxlizxAmM

McZYs8QJjDHGWLPECYwxxlizxAmMMcZYs8QJjDHGWLPECYwxxlizxAmMMcZY

s8QJjDHGWLPECYwxxlizxAmMMcZYs9SsE1hRURESExMhCIK2Q2GMMfaYNZkE

tmPHDvTt2xdGRkZYtGhRg8dv2LABjo6OeP7559G1a1dERkY+higZY4w1FU0m

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

3m0oIrKsjMw9PCi0tLRR7chkRJMmif+ltX2bBblAoS+FUtTSqEb1UxdBIFqz

hqhfv3y6fbsnJSZ+VvNcubSc3rv0Hll/aU3Hw4436q6rPkWVRfTyby9Tr129

KCq3gddZUkL0zTdEHTsSjRhBdPbso1lfGVevionM1ZXoxIna/xPqUSWX04/p

6TQtNJRsvbzI0tOTJt+9S1uTk+lsbi4FlJTQlfx8OpaVRTtTU2l9QgLNi4gg

Zx8f6uLtTZ8lJlJKZaXq8deiOreacs/kqrVNVXECawKUSWA77+yk6b9N11ww

u3eLQyBKjOUPHkx04YLiXZTKZPRMI5MXEVFJVQmZbzGn6LzoWp+X5kspaFQQ

BT8XTNICqcr9PGDePKJVqx7sR1pI4eEzycfHmYqL/dXTDxHtS0+nnnfuULmK

b6CCIN51Pfts/RcYsmIZ+Tj7UMYB9d793G/1aqIxY9LIy6sTpafvoZKqEhqx

fwRNODxBcxdj9xFIoF2+u8h8izkduXuk9oP8/IgcHIjGjyfy9lZj54KYCN3d

xWHGS5caPEUmCPRzRgY53L5NzwYF0cHMTIorL1c4xQtEdLuoiBZFRZHprVs0

JjiYjmRlqfSzJK+QU/7lfIp7P478+vrRzdY3KeSFEJJXaPAjDAVxAmsCFE1g

AgnUa1cvuhJ/RTOBBASIn3tFRip12tatRAsXKnZsiUxGIwIDaXZ4OMkakbzu

WXt1LS06s+iRx8vCy8i7izfFvBNDglSNV/bp6UTt2hHFxBARUWGhB92+7UBR

UYtIJmvc3dLDBCKaGhpK7/zTl7K2bhWvReq4YXxAaVgpeVh4UElgiUp9NUQQ

xNz/6qsxdMvDmhYd7UYLTy/U7Oe4tQjICKDO33amJWeXUIW04t/g9uwhMjcn

Oqb8Z5YKk8uJfvuNyM6OaOVKcZjyIQIRncjOpm4+PvRUYCB5KPKf14ByuZwO

Z2XRyMBAsvfyogt5ig2j5/+dT0Gjg+hmq5vkP8if4tfGU8GNApJXaT9x3cMJ

rAlQNIH5pPpobvJGYSGRk5M4WUFJcXFi3mtomL9YJqPhAQE0NyJCLcmLiCi7

LJtMN5s+8NlJ7plc8rDwoIz9Grqj2LSJhJcmUnz8WvL0tKScnEbMYmlAdnU1

WXl6kldRkVLnHTlCZG9PlJKi+DlZR7PI29GbpPlqult9iFRK9MLkIhqwqRdd

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

exIdtjsg/1E+Ug+llnzg0iX2tUu5fWdv69yZVeiYOhWQSjXh6OiFnJy77CTn

UhTKZBgfEYHFtrboW8l5r7KMajUK01ymYdzJcZDI3qxSfnHjBeK/i0e7P9tB

q75yxYaEQmDECGDVKnY4e4U6d0ba4clISfoZzmb7oaUlX5UVrnJ4AqsjevcG

xGLA11fdkbADL93d3LHVd2u1trtmDTB7NmDtasV+8yxYUO0Z3aNJE2RKJBh1

5wC++uAr2JnYVXmbGvoaaHOiDeKWxuFV5D8LSTIz2YKNw4cBBctdlWXpUjaF

tmIFoKVljHbt/oeEhLV48eLmO9d+FRuLRjo6+EYF817lWdt3LYx1jTH7f7NB

ILx68gqRH0eizYk20HfQV+o1i4rYWZb9+rFvIXlkZ19BnOlJOGd+DZ0RnwA5

OUq1zSmGJ7A6QkOD/bDt3q3uSJivun2Fo6FHkZ6fXi3tRUayUZylS/+5Y9Ei

IDeXlZWoRjoaGpipm4wIw64Y6jyv2to1aGMA+832eDT2EYqEEuCzz1h3SYUr

WTQ1gZMngRMn2HC1vr7DP5U6pkAkiim+7lh6Oq5mZ+Nw69ZVXg9HU6CJ4+OO

IzwzHOv/tx5hw8Ngt9EOJr2V7/V98QX7c+dO+a7PzX2AyMjpcHI6h3rzNrDM

N2oUUEotV061eAKrQ2bMYKulUlMrvraqNTRsiKnOU7HxXvWsSFy2jCWv4pJR

mpps5d3SpWwHajV5WfgSG68vwFdWRpgeFYOCaqzzZe1uDdN+pojsfQ0U95Qt

nVcxS0v2QWHRIiA4GDA17Y+mTVchLGwkiopyEJ6fj89jYnCmbVvU16qeWuGG

Oob4c9yfsPzKEqndUmHtbq30a+3eDdy8yZK0POGLRDEICxuFVq0OwNi4G+ui

st3frFQ9T2JViiewOqR+fWDSJPZ7uyZY3nM5joYeRdyLStTuk4OPDysU/s5w

j5sby+pfflml7b/tm+vfYFDzQdjk1Bst9fXhEVe1//Z/c/iPBqQRCYjvsrfK

SpC4ugJ79gCjR7PPBjY2C2Bi0gchj8ZiUngwtjs4wNlQBRXz5UWAcKkQLg4u

mO80H5djLiv1MleuAN9/D1y4AMgzbScWpyE0dDDs7NbAwmLkmwc0NdnQrZUV

74lVMZ7A6pgFC4C9e9l8mLpZGVhhcbfF8LhRdXthiIBvvmGdjX+dyMOsXs0m

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

AAAAAElFTkSuQmCC

)

In [37]: 1/0

---------------------------------------------------------------------------

ZeroDivisionError Traceback (most recent call last)

/Users/minrk/<ipython-input-37-05c9758a9c21> in <module>()

----> 1 1/0

ZeroDivisionError: integer division or modulo by zero

In [38]: 

