<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Jupyter Blog - C.A.M. Gerlach</title><link href="https://jasongrout.github.io/medium-archive/pelican/" rel="alternate"/><link href="https://jasongrout.github.io/medium-archive/pelican/feeds/author-cam-gerlach.atom.xml" rel="self"/><id>https://jasongrout.github.io/medium-archive/pelican/</id><updated>2018-09-18T15:01:00+00:00</updated><subtitle>The Project Jupyter blog: news, releases, and community stories, archived from blog.jupyter.org.</subtitle><entry><title>Jupyter QtConsole 4.4</title><link href="https://jasongrout.github.io/medium-archive/pelican/posts/2018/jupyter-qtconsole-4-4/" rel="alternate"/><published>2018-09-18T15:01:00+00:00</published><updated>2018-09-18T15:01:00+00:00</updated><author><name>C.A.M. Gerlach</name></author><id>tag:jasongrout.github.io,2018-09-18:/medium-archive/pelican/posts/2018/jupyter-qtconsole-4-4/</id><summary type="html">&lt;p&gt;Now with editor integration (build your own IDE!), selectable color schemes, block indent, smart select and delete, and more!&lt;/p&gt;
</summary><content type="html">&lt;p&gt;We’re pleased to announce the release of QtConsole 4.4, along with a follow-on bugfix update, 4.4.1. QtConsole, which melds the feel of a lightweight terminal and the functionality of an advanced GUI editor, is a rich interface to Jupyter kernels that can be used standalone or built in to an IDE like &lt;a href="https://www.spyder-ide.org/"&gt;Spyder&lt;/a&gt; (with which QtConsole is a joint collaboration). From user-selectable syntax highlighting themes and expanded integration with external clients like your favorite editors and IDEs, to productivity boosts like block (un)indent, cell-specific Select-All, intelligent C&lt;em&gt;trl-Backspace&lt;/em&gt; and &lt;em&gt;Ctrl-Delete,&lt;/em&gt; and &lt;em&gt;Ctrl-D&lt;/em&gt; to send an &lt;code&gt;EOT&lt;/code&gt; byte, there’s plenty new for everyone to like.&lt;/p&gt;
&lt;p&gt;Read on for a visual summary of the key changes, and check out the &lt;a href="https://qtconsole.readthedocs.io/en/stable/changelog.html"&gt;Changelog&lt;/a&gt; and &lt;a href="https://github.com/jupyter/qtconsole/milestone/10?closed=1"&gt;GitHub Milestone&lt;/a&gt; for more details. The new version is available on &lt;a href="https://pypi.org/project/qtconsole/"&gt;PyPI&lt;/a&gt; and &lt;a href="https://anaconda.org/anaconda/qtconsole"&gt;Conda&lt;/a&gt;, if you want to get right to trying it out for yourself. If running under &lt;code&gt;conda&lt;/code&gt;, you can use Anaconda Navigator, or execute the following (from the Anaconda Prompt on Windows, or your terminal/command line otherwise, after first &lt;code&gt;activate&lt;/code&gt;-ing the environment with the QtConsole package you want to update):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;conda update qtconsole
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Or, if on a &lt;code&gt;pip&lt;/code&gt;-only install, after &lt;code&gt;activate&lt;/code&gt;-ing the appropriate &lt;code&gt;virtualenv&lt;/code&gt;/&lt;code&gt;venv&lt;/code&gt;, run:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;pip install --upgrade qtconsole
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Perhaps the most exciting improvements are the enhancements to QtConsole’s ability to integrate with external editors and IDEs. Thanks to the Jupyter client-server architecture, you can integrate QtConsole with any editor you want, allowing you to assemble your very own &lt;a href="https://www.spyder-ide.org/"&gt;Spyder&lt;/a&gt;/MATLAB-like IDE out of the components of your choosing. Marijn van Vliet, the author of the changes, demonstrates a few of the possibilities in a short video:&lt;/p&gt;
&lt;figure&gt;
&lt;iframe src="https://www.youtube-nocookie.com/embed/Fi_Xd6h4ncw" title="Demonstration of the Jupyter QtConsole + Vim integration" width="560" height="315" style="aspect-ratio: 560 / 315" loading="lazy" allow="accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen&gt;&lt;/iframe&gt;
&lt;figcaption&gt;
&lt;p&gt;Margin van Vliet demonstrates the new editor/IDE integration enhancements in QtConsole 4.4&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Thanks to the new changes, you can now print beautifully-formatted input and output from other clients, like your editor, with proper indentation, customizable syntax highlighting, configurable prompts with an incrementing prompt number, and more. If you’re interested in setting up your own custom environment, check out &lt;a href="https://blogs.aalto.fi/marijn/2017/11/13/integrating-vim-and-jupyter-qtconsole/"&gt;Marijn’s blog post on the subject&lt;/a&gt; for more details.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="QtConsole‘s syntax-highlighted output with a user-selected theme, now available with external editors" src="https://jasongrout.github.io/medium-archive/pelican/posts/2018/jupyter-qtconsole-4-4/images/001-1_gc7Ew6Ju263WJNow_4-uDQ.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;QtConsole‘s syntax-highlighted output with a user-selected theme, now available with external editors&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Complementary to the previous enhancements, QtConsole now allows you to change the syntax highlighting theme and its overall color scheme (light/dark), and includes a wide variety of options to choose from. From popular styles like Monokai, emacs, vim and VS to more esoteric choices, the list should cover a wide variety of tastes. You can easily switch between them under &lt;em&gt;View→Syntax Style&lt;/em&gt;.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Demonstration of how to select a syntax style in QtConsole" src="https://jasongrout.github.io/medium-archive/pelican/posts/2018/jupyter-qtconsole-4-4/images/002-1_Pg2WzVZ_SuwUtaQ3ekQ27w.mp4" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Demonstration of how to select a syntax style in QtConsole&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;When working with multi-line input, QtConsole now offers a block indent/unindent feature, allowing an entire selection to be indented or unindented at once — even across multiple levels of indents. Just highlight the lines you’d like to change, and press &lt;em&gt;TAB&lt;/em&gt; to indent or &lt;em&gt;Shift-TAB&lt;/em&gt; to unindent.&lt;/p&gt;
&lt;p&gt;The Select-All feature is now cell-aware; pressing &lt;em&gt;Ctrl-Shift-A&lt;/em&gt; once now only selects the text in the current &lt;code&gt;In [ ]:&lt;/code&gt; block (without the prompt), making it easy to just grab the current commands or code you’ve already typed. Pressing it again will trigger the old behavior, selecting all the input and output text since the start of the session, and tapping it a third time will cycle back to just selecting the current text.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://jasongrout.github.io/medium-archive/pelican/posts/2018/jupyter-qtconsole-4-4/images/003-1_xBW0gd5m9_yMbw7BCHrtPA.webp" alt="" loading="lazy" data-body-image=""&gt;&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="(Left) Old Select-All behavior, selecting all console text; (Right) New behavior, selecting only current input" src="https://jasongrout.github.io/medium-archive/pelican/posts/2018/jupyter-qtconsole-4-4/images/004-1_-igw-HIOCrpYtZ6Mux2pOQ.webp" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;(Left) Old Select-All behavior, selecting all console text; (Right) New behavior, selecting only current input&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;em&gt;Ctrl-Backspace&lt;/em&gt; and &lt;em&gt;Ctrl-Delete&lt;/em&gt; are also more intelligent, no longer behaving too greedily across line boundaries and first consuming all the whitespace up to the next non-whitespace character before removing the characters themselves. This lets you easily fix indents, trim leading or trailing whitespace, remove uneeded line breaks and more in one or a few taps, without unintentionally deleting anything important. Similarly, tapping the right arrow at the end of the line now goes to the beginning of the next line’s text, rather than jumping all the way to the end of the cell.&lt;/p&gt;
&lt;p&gt;You can now send an &lt;code&gt;EOT&lt;/code&gt; (“End of transmission”) character to a console awaiting input by pressing &lt;em&gt;Ctrl-D&lt;/em&gt; when the current input is empty; &lt;em&gt;Ctrl-D&lt;/em&gt; otherwise works as an alternate shortcut for &lt;em&gt;Delete&lt;/em&gt; and &lt;em&gt;Close Tab&lt;/em&gt; as before. This allows you to signal programs running in the console to terminate, like &lt;code&gt;ipdb&lt;/code&gt; and its interactive mode, that would otherwise require a restart to accomplish.&lt;/p&gt;
&lt;figure&gt;
&lt;img alt="Demonstration using the new EOT insertion to exit ipdb interactive mode in QtConsole" src="https://jasongrout.github.io/medium-archive/pelican/posts/2018/jupyter-qtconsole-4-4/images/005-1_cfTo2oa6tJU_UzNMPB_miw.mp4" loading="lazy" data-body-image=""&gt;
&lt;figcaption&gt;Demonstration using the new EOT insertion to exit ipdb interactive mode in QtConsole&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Finally, there are a number of smaller changes and bugfixes included, like allowing for copying input/output when the prompt is included, making completion not block the console, clarifying the documentation, and more. QtConsole 4.4.1 officially drops support for the ancient Python 3.3 and expands test coverage to Python 3.6, as well as fixing a couple more minor bugs.&lt;/p&gt;
&lt;p&gt;We hope everyone loves what the new release of QtConsole has to offer! Thanks to all the &lt;a href="https://github.com/jupyter/qtconsole/graphs/contributors?from=2017-08-10&amp;amp;to=2018-08-19&amp;amp;type=c"&gt;contributors&lt;/a&gt; to this release and to the &lt;a href="https://github.com/spyder-ide"&gt;Spyder team&lt;/a&gt;, who help maintain the project. If you want to know more about using QtConsole, check out our &lt;a href="https://qtconsole.readthedocs.io/en/stable/"&gt;documentation&lt;/a&gt;, and if you find any bugs or have specific feature requests, let us know on our &lt;a href="https://github.com/jupyter/qtconsole"&gt;GitHub site&lt;/a&gt;. Enjoy!&lt;/p&gt;
</content><category term="releases"/></entry></feed>