What’s New in PyCharm 2016.3

PyCharm 2016.3 is the third update in the 2016 series of releases. It brings an outstanding lineup of new features for professional Python, Web and scientific development that work together smoothly to offer you a unique coding experience

Please note that features marked pro only are supported only in PyCharm Professional Edition.

Full-fledged Professional
or Free Community
Take a short video tour

Python Tools

Create Django projects with remote interpreters pro only

PyCharm now supports creating Django projects with a remote interpreter straight from the new project screen. If you develop in VMs, Docker containers, or on remote machines, your workflow just got easier.

Django forms in class-based views pro only

PyCharm now understands the forms context in class-based views. It shows forms-specific autocompletion and suggestions in the same way it does for function-based views.

Python console copy-paste made easier, and more

Have you ever written some code in the Python console to test it, before including it in your project? In PyCharm 2016.3 you can now quickly copy-paste code from the built-in console to your project files. Your code will automatically be formatted. Further: If you're launching the console as a part of your run configuration, you can now use the variable viewer to inspect all your variables. We've also fixed some issues with multi-line commands, added tab completion for IPython, and many more things.

Variable explorer

When debugging, your own variables are usually most relevant. That's why we've hidden the special variables until you need them. And if you do want to explore them, simply expand them.

Open the Numpy Array and DataFrame viewer straight from the debugger

You can also explore pandas dataframes, and numpy arrays, straight from the debugger in PyCharm 2016.3.

Python 3.6

The new version of Python will be released soon, and PyCharm 2016.3 is well prepared. It already supports type annotations, f-strings, underscores in numeric literals, asynchronous generators, and asynchronous comprehensions.

Terminal with Virtualenv pre-activated

Is activating your virtualenv the first thing you do when opening a terminal session? We just took care of that for you. When you open the terminal in Pycharm 2016.3, it will automatically activate the virtual environment associated with the project you're working on. Auto virtualenv is supported for bash, zsh, fish, and Windows cmd. You can customize your shell preference in Settings (Preferences) | Tools | Terminal.

Per-branch coverage pro only

If you enable the option, PyCharm can now show you whether you've covered all code branches, right next to the point where the code branches. Enable the option in PyCharm 2016.3 by going to Settings (Preferences) | Build, Execution, Deployment | Coverage | Python coverage.

Per-line vmprof profiling pro only

If you use vmprof, PyCharm will now show performance information right next to your code. You can see at a single glance which lines need closer attention. To start using vmprof, simply install the vmprof package from PyPI into your project. You can use the PyCharm built-in package manager (Settings | Project | Project Interpreter) to install the package. After running your code with profiling enabled, the performance information will be displayed in your editor.

Docker-compose support improved: multiple compose files & environment variables pro only

More and more developers use environment variables to configure their applications, PyCharm now makes it easier to set environment variables for Docker compose run configurations. If you want to further tailor your environment with a compose file extension, this has also been made easy.

Web Tools

Angular 2 CLI support and more web development improvements pro only

PyCharm 2016.3 comes with many of the new features from WebStorm 2016.3. For example, if you have Angular CLI installed, you can use it to generate new components, directives, services, and other blueprints straight from the ‘New…' popup. Other new features include Flow type checking support and Stylelint CSS linting. Check the WebStorm 2016.3 page for more.

Version Control System Improvements

Faster log search

The version control integration in PyCharm 2016.3 is faster than ever. The improved log screen (View | Tool Windows | Version Control, Log tab) shows the previous commits, and allows you to quickly search for commits. You can also filter your log search by branch, commit author, and filesystem path.

Resolve merges

Resolving merge conflicts is everybody's favorite part of the job. Unfortunately we can't make it more fun, but we can make it easier for you. The new merge resolve interface has code highlighting and other code navigation features built-in. In some cases it will even let you automatically resolve conflicts with a single click.

Undo commit

Have you ever checked in some code, only to quickly realize you forgot something? You can now undo your last commit (if it hasn't been pushed yet) straight from the log. For example, for git repositories this executes git reset --soft HEAD~1. Hint: you can always see what PyCharm did by checking the console tab of the version control window.

Git remote management

We've added a graphical interface for managing git remotes. You can manage your remotes by navigating to VCS | Git | Remotes, or by adding them straight from the ‘Push commit' screen.

IDE Improvements

Database Improvement: Edit many cells at once pro only

Sometimes you want to change a lot of cells simultaneously, you can now select them all and change them in one go! Of course for this to work, the fields need to have the same type, and they shouldn't be set to have unique values in your database. To see more new database improvements, check out what's new in DataGrip, our new database IDE. PyCharm 2016.3 bundles many DataGrip features.

Editor improvements: Fira Code bundled, and style changes

Did you want to check out the new support for ligatures, but haven't had a chance to get a font with them yet? We now include Fira Code with PyCharm. If you want to see what it looks like, select Fira Code in Editor | Colors & Fonts | Font. Be sure to turn on the font ligatures feature on the same settings page. We've also introduced new flat file icons.

PyCharm 2016.3 Professional Edition incorporates most of the new functionality of the latest WebStorm 2016.3.

Get PyCharm 2016.3 Now
Full-fledged Professional or Free Community
Learn about PyCharm 2016.2

Python Tools

vmprof Profiler Support pro only

For those who care about performance, PyCharm provides profiling support. Additionally to the previously supported cProfile and Yappi profilers, PyCharm 2016.2 brings support for vmprof, the sampling (statistical) Python profiler written in C and developed by members of the PyPy team. It works for Python versions 2.7 through 3.5, CPython as well as PyPy, and supports Linux, macOS and Windows.

Pandas Dataframes Viewer

PyCharm has had a special array viewer for NumPy arrays for a couple of years. PyCharm 2016.2 brings Pandas Dataframes support – a must-have feature for scientific developers and data scientists. Thanks to our user Yuli Fiterman for contributing this feature!

Thread Suspend Option

Previously, when the PyCharm debugger reached a breakpoint during execution, only the corresponding thread was suspended while others kept running. Now there is a Suspend option with two values: All and Thread. ‘All' makes all threads stop at once whenever a breakpoint is hit. With the ‘Thread' option, only the corresponding thread stops.

Function Return Values
in the Debugger

The new option has appeared in Debug tool window: Show Return Values. Function return values are now shown in the PyCharm's debugger after stepping out from a function.

Package Installation from

PyCharm 2016.2 understands the syntax of extra options in requirements.txt files, automatically installing all the specified extras. For example, now you can use the following code in your requirements.txt files:

ipython [notebook]

Configuration for
Optimize Imports

Optimize Imports has been a neat feature for many years. In PyCharm 2016.2 the new dedicated setting for Optimize Imports action appeared. It allows you to configure how imports in the current file are sorted and arranged in groups.

Postfix Code Completion

Postfix code completion helps reduce backward caret jumps as you write code. It lets you transform an already typed expression to another one based on the postfix you've added and the context of the expression. It has been improved with the “main” and “print” postfix templates extracting your [expression].main and [expression].print code snippets respecting Python 2 and Python 3 versions.

Lettuce Scenario Outlines

In PyCharm 2016.2 BDD support got an important improvement. PyCharm now recognizes Scenario Outlines sections in Lettuce feature files. Scenario Outlines are supported for Lettuce version 0.2.22 and higher.

IDE Improvements

Support for Ligatures

The editor in PyCharm now supports fonts with programming ligatures, like Fira Code, Monoid, Hasklig and  PragmataPro. Enable this in Preferences | Editor | Colors and Fonts | Font.

The Inspection Tool

The Inspection tool window has been redesigned for better ergonomics: now code location for each of the problems is displayed along with controls to either apply a quick-fix or suppress an inspection.

Editor Background Image

Customize your IDE's look by choose a background image for the editor and the IDE frame. Search for ‘Set Background Image' with the Search Everywhere action double Shift.

Regex Support

Coding assistance for Regex has been extended with better error reporting, and code completion is now available for named group references.

Unversioned Files Handling

The Commit dialog now shows unversioned files (so you don't forget to commit something important).

Improvements in
Working with Patches

Working with VCS patches has never been easier. With PyCharm 2016.2 a patch can be applied from the clipboard (when the IDE obtains focus), or by dragging a file into the IDE. In case a file has been changed since a patch was created for it, but PyCharm cannot find its original revision, you'll be prompted to apply the patch using a Merge-like dialog. Also, the Apply Patch dialog provides the Show Diff action to compare the patch to your local version.

The VCS Log Viewer

The Log viewer for Git and Mercurial continues to get better:

  • It loads in the background on every change (a commit, fetch, rebase, etc.), so it's always ready when you open it.
  • We've reworked the way the Log shows the loading progress. Now, when refreshing, a thin stripe appears under the toolbar.
  • When you select several commits, you see all commit details.
  • Ctrl+L can be used for navigating to the Filter field.

Database Tools
Improvements pro only

  • Code completion for database names in Data Sources and Drivers.
  • Import of CSV, TSV (DSV) files to a database.
  • Language injections to SQL code.
  • Table Editor provides completion for column values.
  • PostgreSQL support has been extended to Schema Search Path, Rangetypes and types with TimeZone.
Learn about PyCharm 2016.1

Python Tools

Python 2 and Python 3 Compatible Type Hinting

PyCharm 2016.1 brings support for the recent addition to PEP 484: Suggested syntax for Python 2.7 and straddling code. Use the Python 2/3 compatible syntax to provide type hint information in your code. PyCharm uses this information to provide autocompletion or flag certain issues as you code.

Optional Type Hinting Using Run-time Collected Types

PyCharm is now able to generate type annotations based on the information on types it has collected during a debug session. This type information will be inserted in a format compatible with your project interpreter’s Python version.

Python Code Compatibility Inspection Improvements

PyCharm helps ensure your code is compatible with particular Python versions. Whenever your code makes use of the __future__ or six modules, PyCharm now suggests enabling the “Code compatibility inspection” for latest Python 2.7 and Python 3.5 by default.

Docker Compose
Support pro only

With PyCharm 2016.1 we introduce initial support for Docker Compose. Specify the Docker Compose configuration file (docker-compose.yml) and the service representing your project, and PyCharm will take care of the rest for you.

Docker Container
Settings pro only

In addition to Docker Compose support, we've improved Docker support with custom parameters for running Docker containers. Once you've set up a remote Docker interpreter, you may notice this new option in the run configuration (Run | Edit Configurations).

Tox Support

PyCharm now supports Tox, the virtualenv management and testing tool. Simply right-click the tox.ini file in the project view and choose Run “Tox” (or press Ctrl + Shift + F10). See the tests running and results nicely represented in the graphical test runner.

Improved Support
for Django Forms pro only

In PyCharm 2016.1 we implemented advanced support for Django forms. PyCharm now understands the forms' context and shows forms-specific autocompletion and suggestions in Django templates and views. You can also refactor a form or form members with Rename and other refactorings, navigate to form definitions from templates and views, and much more.

Debugger Performance Improvements

PyCharm's debugger receives a number of performance improvements that we hope you'll enjoy. The debugger is reported to be now overall 40% faster without optional Cython modules, and 138% faster with Cython in the benchmarks created.

Stepping Over yield from and await

A small but neat improvement for developers who use Python 3, PyCharm's debugger is now able to step over yield from and await expressions. Put a breakpoint before a yield from or an await expression and click the Step over button (or press F8). The debugger will step to the next line after the expression.

Stepping Filters in Debugger

Additionally to stepping over yield from and await expressions, PyCharm 2016.1 introduces another debugger feature: stepping filters. By using stepping filters for Python code, you can exclude library and custom modules from being stepped into during a debugging session.

Improved Attach to Process

The debugger's 'attach to process' feature gets a small but useful improvement. We've slightly changed its UI and added a “Recent” section for recently attached processes. To attach the PyCharm's debugger to an already-running python process, select Run | Attach to Local Process.

Improved IPython Notebook support

Thanks to the new rendering mechanism for IPython Notebook cells, PyCharm 2016.1 displays cells with Markdown, LaTeX and HTML content far better than before. Additionally, you can run all cells in a Notebook file simply by pressing Shift+F10.

Devpi and Optional PyPI Repositories

Take full control over package repositories and PyPI mirroring solutions with support for optional repositories in PyCharm.

Postfix Code Completion

Postfix code completion helps reduce backward caret jumps as you write code. It lets you transform an already typed expression to another one based on the postfix you've added and the context of the expression.

Additional Folding
for Python Code

In addition to the existing code folding functionality in PyCharm's code editor, we've implemented code folding for other code structure elements: multi-line dictionaries, lists and comments, and if-else, for/while and try-except-finally code blocks in case a code block contains more than one statement.

IDE Improvements

Git Rebase and Rename

Two new actions will help you work with Git branches, available via the Branches popup (VCS | Git | Branches): Checkout with Rebase onto and Rename. If you do an Interactive Rebase, PyCharm now automatically stashes and unstashes local changes and assists with resolving conflicts.

Git Worktree Support

Git 2.5 introduced managing multiple worktrees to simplify working with clones of a single repository: instead of making a repository clone you can create a lightweight worktree. Now PyCharm lets you work with those worktrees just like you do with regular repositories.

By-word changes highlighting

Merging and comparing revisions with Git and other VCS just got easier with the added by-word difference highlighting. Now you can also disable inspections in the Diff Viewer to minimize distraction.

Enhanced Database
Tools pro only

PyCharm 2016.1 brings support for table truncation, table and column comments, PostgreSQL 9.5 support and support for сustom types in SQL Server (alias types and table types).

Local Terminal Improvements

Embedded local terminal now supports "Find in text". Press Ctrl+F in the terminal and start searching in the terminal output. Additionally the terminal is now capable of performing Alt+Backspace for deleting symbols to the left of a caret position and Ctrl+Left/Right to move caret to the left or right of the current word.

Show usages

We have improved speed search in the Show usages popup. Now, when you use it, the matches are highlighted for easier navigation (Ctrl+Alt+7).


  • Support for RTL languages (Arabic and Hebrew).
  • Improved support for React, Angular 1.5 and 2
  • Improved JavaScript debugger supporting JS async code
  • Better coding assistance for JavaScript, ECMAScript and TypeScript
  • Unused imports warning and сode folding for ES6 imports
  • Remote run and debug for Node.js apps
  • Css custom properties
  • Inline rename for TypeScript
  • npm support improvements and Webpack support
  • And more