What's New in Wing Version 6

Woman in Park

Wing 6 introduces many powerful new Python IDE features:

Improved Multiple Selection Support

Wing Pro and Personal 6 make working with multiple selections on the editor much easier. The Edit > Multiple Selections menu and selections toolbar item can be used to select matching occurrences of text one at a time, or within the current block, function, method, class, or file. Once multiple selections are made, edits are applied to all of them.

For details, see the Multiple Selections.

Easy Remote Development

Wing Pro 6 adds the ability to connect to a remote host (including VMs and Vagrant containers) through a secure SSH tunnel in order to work with files stored remotely in the same way that Wing supports working with files on your local system.

This is done by setting up SSH access to a remote host outside of Wing Pro and then configuring the remote host from Wing's Project > Remote Hosts menu item and using that host for the Python Executable in Project Properties. Files and directories added to the project can be on any configured remote host, and the project file can be stored either remotely or locally. Editing, debugging, testing, searching, version control, Python Shell, OS Commands, and other features work with remote files as if they were stored locally.

For detailed instructions see Remote Hosts.

Debugging in the Python Shell

Wing 6 makes it possible to turn on debugging for code that is executed in the Python Shell. This is done by pressing the bug icon in the top right of the Python Shell tool. Once enabled, a breakpoint margin will appear and Wing's debugger will stop on any breakpoints and exceptions reached in code, either within the Python Shell tool or in source files.

For details see Debugging Code in the Python Shell. If you are debugging multi-threaded code from the shells, you will want to read and understand how threads are managed in this style of debugging.

Recursive Debugging

In Wing Pro it is possible to debug code invoked from the Debug Probe, allowing for one level of recursive debugging.

The Python Shell and Debug Probe can also debug recursively to any depth by checking Enable Recursive Prompt in their Options menus. When enabled, Wing displays a new prompt whenever the debugged code reaches a breakpoint or exception, so that you can continue to interact with the paused debug process from the command line, optionally debugging other code in context of the currently selected debug stack frame. Continuing or stopping debug will exit one level of recursion rather than exiting the debug process entirely.

PEP 484 and PEP 526 Type Hints

Wing 6 can understand type hints in the style standardized by PEP 484 (Python 3.5+) and PEP 526 (Python 3.6+). For example, the following indicates to Wing the argument and return types of the function myFunction:

from typing import Dict, List

def myFunction(arg1: str, arg2: Dict) -> List:
  return arg2.get(arg1, [])

The type of variables can be indicated by a comment that follows it:

x = Something() # type: int

In Python 3.6+, the type of variables can instead be specified in the following syntax:

x:int = Something()

The types that Wing can recognize include basic types like str and int and also the following from the typing module: List, Tuple, Dict, Set, FrozenSet, Optional, and Union.

Other ways to accomplish type hinting are documented in Helping Wing Analyze Code.

PEP 8 Reformatting

Wing 6 allows you to reformat a selection or an entire file for compliance with the PEP 8 Style Guide for Python Code. Optionally set up automatic reformatting of any edited line, when the caret leaves that line, or entire files when they are saved to disk.

See PEP 8 Reformatting for details.

Support for Vagrant

Wing Pro 6 makes it easy to set up projects that work with Python code running on Vagrant containers. Just use New Project from the Project menu and select Connect to Vagrant.

For details, see Using Wing with Vagrant.

Support for Windows Subsystem for Linux

Wing Pro 6 also makes it easy to set up projects that work with Python code running on Windows Subsystem for Linux (WSL). Just use New Project from the Project menu and select Connect to WSL.

For details, see Using Wing with Windows Subsystem for Linux.

Improved Raspberry Pi Support

Wing Pro 6 makes it much easier to work with code on the Raspberry Pi. Using the new remote development support, setting up remote access to a Raspberry Pi is as simple as configuring SSH access and then configuring a remote host from Wing Pro's Project menu. Wing will automatically install its remote agent on the Raspberry Pi, making it possible to edit, debug, test, search, and manage files, and to open a remote Python Shell from Wing Pro running on Windows, OS X, or Linux.

For details, see Using Wing Python IDE with Raspberry Pi.

Annual License Option and Pricing Changes

Wing Pro 6 adds the option of purchasing a lower-cost expiring annual license. An annual license includes access to all available Wing Pro versions while it is valid, and then ceases to function if it is allowed to expire. Pricing for annual licenses is US$ 179/user for Commercial Use and US$ 69/user for Non-Commercial Use.

The cost of extending Support+Upgrades subscriptions on Non-Commercial Use perpetual licenses for Wing Pro has been dropped from US$ 89 to US$ 39 per user.

For details, see the Wingware store.

Wing Personal is Now Free

Wing Personal is now a free product and no longer requires a license to run. It now also includes the Source Browser, PyLint, and OS Commands tools, and supports the scripting API and Perspectives.

However, Wing Personal does not include Wing Pro's advanced editing, debugging, testing and code management features, such as remote host access, refactoring, find uses, version control, unit testing, interactive debug probe, multi-process and child process debugging, move program counter, conditional breakpoints, debug watch, framework-specific support (for matplotlib, Django, Jupyter, Vagrant and others), find symbol in project, and other features.

Other Improvements

Wing 6 adds many other new features and improvements, including the following:

  • Support for Python 3.6 and 3.7 and Stackless 3.4
  • Auto-completion in strings and comments
  • Syntax highlighting and error indicators in f-strings
  • Optimized debugger, particularly for multi-threaded and multi-process code
  • Support OS X full screen mode
  • Restore editor selection after undo and redo
  • Added One Dark color palette
  • Support Move Program Counter in recent Python versions
  • Refactoring operations to convert easily between lowerCamelCase, UpperCamelCase, under_scored_name, and UNDER_SCORE_NAME symbol name formatting
  • Holding modifier keys and clicking in the Key field for the Custom Key Bindings preference produces a binding (for example, Ctrl-Right-button-click) that can be bound to a command
  • Better support for portable installs, by allowing auto-activation of a stored license and using --settings and --cache command line arguments to specify location of the settings and cache directories
  • Always move breakpoints and Debug To Here positions to valid lines that will actually be reached by the Python interpreter
  • Support for custom python builds on Windows
  • Drop down with found Python installations in Python Executable properties
  • Automatically find Python installations that follow PEP 514 on Windows
  • Concurrent update of recent menus from multiple instances of Wing
  • How-To for Jupyter notebooks
  • Support for Django 1.10, 1.11, and 2.0
  • Syntax highlighting for Markdown files
  • New Russian localization (thanks to Alexandr Dragunkin)
  • Updated French localization (thanks to Jean Sanchez and Laurent Fasnacht)
  • Updated German localization (thanks to Christoph Heitkamp)
  • Improved display of PEP 287 docstrings
  • Stops Wing's debugger on the new breakpoint() builtin
  • Improved display of names for threads started with the threading module
  • Debugger support for cygwin Python 3.6
  • Improved matplotlib mainloop support, including also the Qt5Agg backend
  • Support for evaluating generator expressions in the Debug Probe
  • Improved pytest support
  • Improved VI/VIM mode
  • Create new virtualenvs from the New Project dialog
  • Improved support for py.exe on Windows

Not all of these features are available in Wing Personal and Wing 101. See product comparison for details.

The change log on the downloads page contains detailed list of all changes up to that release.

Wing 6 installs side by side with earlier versions of Wing, so there is no need to remove old versions in order to try Wing 6. Wing 6 will read and convert Wing 5 preferences, settings, and projects. Projects should be saved to a new name since earlier versions of Wing cannot read Wing 6 projects.

See Upgrading for details and a list of compatibility notes.