What’s New in PyCharm 2019.2

Improved Jupyter Notebook experience, syntax highlighting for many more languages out of the box, initial Python 3.8 support, and more

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

Jupyter Notebook

Run All, Run All Above, Run All Below

One of the most requested features in our Jupyter support has been to run all cells with a single button click. This turned out not to be as easy as it sounds, because we had to reimplement some of Jupyter’s execution logic on the PyCharm side. We’re happy to announce that this feature is now available in PyCharm.

Improved server configuration

With multiple projects open, PyCharm would implicitly use the first project you’ve opened to start a managed Jupyter server. This is now configurable. You can also now choose a specific port for the Jupyter server to listen on.

Spacing with virtual lines

When you view a Jupyter Notebook in the browser, the layout naturally spaces out the cells a little bit. The PyCharm approach of displaying the code as a Python file therefore looks a little more dense. To make the code look better, we now insert virtual empty lines in your notebook that are not persisted to the file.

Inline display of variable values

The PyCharm debugger helps you keep track of your variables, and shows you their current state as you’re working with your notebook.

Further improvements

  • Another oft-requested feature was the ability to restart the kernel, and this is now possible.
  • You can now directly publish notebooks from PyCharm to JetBrains Datalore

IDE Improvements

Code highlighting for many popular languages

Do you work on projects where code in a different language sneaks into your project? PyCharm will now highlight the syntax of Windows .bat files, C#, C++, Groovy, Lua, Makefiles, and more.

Basic bash support

Most projects, at some stage in their life, get some bash files checked in to their repo. PyCharm will now highlight bash syntax, provide basic completion, and integrate with Shellcheck to check your bash files.

Improved look on Windows

PyCharm now looks better than ever on Windows: we’ve tweaked the look of the UI to be more modern.

cURL support for the REST client

cURL format is now supported out of the box. Just copy your cURL formatted request and paste it directly to your HTTP Request file to convert it into the proper format. To use this new functionality, just create a new .http file or a HTTP-request scratch file, and then paste a cURL string. It will be automatically converted to a full request.

Preserve cookies between requests

Imagine you made an authentication request on a service to later call endpoints that will ask for permission. In the past this authentication response was lost, forcing you to ask for it every time it was needed. Now this is not an issue! All the cookies will be kept for your future usage and will be transferred in the next requests you perform.

Improved EditorConfig support

EditorConfig files allow you to embed code style settings directly in your repo. We’ve now improved this functionality to be more flexible; for example, it’s now possible to use multiple EditorConfig files to set different settings for different parts of your project. Learn more in the documentation.


Python 3.8: Positional-only parameters

Designate positional-only parameters to your function definitions to restrict the usage of your functions. This new syntax will allow you to define strictly those arguments that are purely intended to be called according to a specific sequence.

Python 3.8: Assignment Expressions

Assign a value within an expression to enhance your code compactness and readability. You can now, for example, use one line of code to create conditional expressions and at the same time assign variable values.

More Python 3.8

Final annotation for variables

Design classes and subclasses with restricted usage of methods, classes, and variables by using the ‘Final’ qualifier to avoid unwanted inheritance or overriding.

Use equals sign in f-strings

f-Strings can now use ‘=’ to show expressions and their values at the same time. Use f'{expr=}' to generate a string that will show both your expression and its output.

Inline Python functions

One of the key features in PyCharm is its ability to automatically refactor your code. This way you know for sure that after you’ve completed the operation, the behavior of your code didn’t change. We’ve now added the ability to automatically inline a Python function. Learn more about Python refactoring.

Find duplicate code quickly

Duplicate code is smelly code, so PyCharm lets you know if there’s something you might want to refactor into a single function.


Improved variable renaming

Refactoring code is now more customizable, with an option to rename or not rename dynamic references. If selected, you can decide which occurrences you want to actually rename and which ones to leave as they are, by using a preview interface.

Updated Smart step into while debugging

The ‘Smart step into’ (Shift-F7) feature received a boost. Targets are now more visible, and you can easily switch between them with the arrow keys or Tab, and then press Enter to step into the selected target.

Improved visibility of libraries in the debugger

The filter icon on the debugger call stack allows you to hide all the calls from third-party code. Now everything that you mark as a library can be hidden with this new feature.


Full-Text Search

Did you know that PyCharm Professional Edition bundles all database features from JetBrains DataGrip, our professional database IDE? One of the new features in our database tooling is full-text search across multiple data sources: now you can find your data, no matter where it is hiding.

Learn about PyCharm 2019.1

Jupyter Notebooks pro only

Work with notebooks

We’ve made it easier to edit the code in your Notebook: as you’re editing the notebook, the source looks like a regular Python file. This makes light work out of navigating around your code. Of course, round trip editing is supported, and all changes made in either PyCharm or the browser will be reflected immediately.

Run and debug cells

Jupyter Notebooks are great at helping you explore and interact with your data. With PyCharm, Jupyter Notebooks are now even easier to use, as you can quickly run and debug cells from your notebook in the IDE. Of course, many of the hotkeys from in-browser notebooks also work in PyCharm. For example, use Shift+Enter to run the highlighted cell, and select the one below.

Server and kernel management

Get started with your notebooks quicker. With PyCharm you don’t need to start your server or kernel manually: just open a notebook and run a cell. PyCharm automatically starts the server and appropriate kernel for the notebook you’ve opened.

Variable viewer

If you’ve lost track of the current value of a variable, you can use PyCharm’s variable viewer to make sure everything looks right.

IDE Improvements

Recent Locations

You may often find yourself needing to move back and forth between different locations in the code when you are developing. PyCharm has long had the Recent Files popup (Ctrl+E, or Cmd+E on macOS) to help you navigate between these files quickly. However, you don’t just want to get to a file, you want to be taken to a specific location, so we’ve introduced the new and improved Recent Locations popup (Ctrl+Shift+E, or Cmd+Shift+E on macOS) to get you to your destination quicker.

UI theme plugins

Don’t like our default styling? We’ve improved our support for UI theme plugins. Find one in the plugins marketplace by looking for 'tag: UI', or learn how to make your own.

Sublime Text keymap

One of the hardest parts of switching to a new tool is having to learn all the new hotkeys. We've added a Sublime Text keymap to make it easier for anyone switching from Sublime Text to PyCharm.

Further improvements

  • Native SSH for Git: in previous versions, SSH for Git could be configured to use either built-in or native SSH. Built-in SSH was necessary in case interactive prompts would be required for authentication. In the new version, these prompts can be handled with native SSH. Native SSH supports more features, including better security protocols, so the built-in option has been removed.

Python improvements

Debugger performance for big collections

The PyCharm debugger can now handle infinitely large collections without slowing down while initially loading the collection.

Data class inheritance

Python 3.7 Data Classes were already supported in PyCharm, but now we’ve extended this support to make sure that subclasses of Data Classes also get accurate code completion.

Interpreter in status bar

When you’re developing an application for multiple environments, for example when migrating between Python or framework versions, it makes life easier when you are able to quickly switch between them and see at a glance which version you’re now using.

Type checking for variable assignments

Python’s optional typing helps you to document your code and prevent mistakes down the line. We’ve now furthered our support for it by checking types on variable assignment.

Remote interpreters pro only

Vagrantfile syntax

PyCharm supports Python interpreters inside Vagrant boxes, and now also makes your Vagrantfile look good.

SSH with sudo

You need root access to control the GPIO pins on your Raspberry Pi, so to make GPIO development easier we’ve made it possible to run code with root privileges over SSH in PyCharm 2019.1. Of course, you could use root privileges for other uses, but we wouldn’t want to encourage those publically, would we now?

Web Development pro only

Improved HTML and CSS quick documentation

CSS has gotten a lot more powerful over the years, which has brought more complexity. To help you find your way around this more complex modern CSS, we’ve improved the quick documentation support – just press Ctrl+Q (or Ctrl+J on macOS) to learn more. Don’t worry, we won’t tell anyone if you look up the docs for the ‘p’ tag.

All new JavaScript debug console

PyCharm Professional Edition comes with the excellent JavaScript support from JetBrains WebStorm. They’ve just created a new and improved JavaScript debug console that works for both Node.JS code and in-browser JavaScript.

Unit testing

Multiprocess test runner for pytest

Large test suites are good, but they can take a while to run. To make them complete a little faster, we’ve now upgraded our pytest integration to support multiprocess test running.

Databases pro only

New database connection flow

PyCharm Professional Edition bundles all the SQL support from JetBrains DataGrip. They’ve just improved the process for configuring a new database connection. If you haven’t tried this yet, you are in for a treat. After configuring your database, in addition to being able to explore your tables, you’ll also get schema-aware SQL completion when writing queries in your Python code.

Learn about PyCharm 2018.3


WSL Interpreters pro only

Are you using Windows, but developing an application for Linux? You now have yet another option for running your code in a Linux environment from PyCharm. Run your code in Windows Subsystem for Linux.

F-string performance: faster and more accurate

When Python 3.6 came out, F-strings were one of the most popular features, and of course PyCharm has supported them since the beginning. As they are growing even more popular, we’ve made some changes to make them a lot faster in PyCharm, and fixed a lot of bugs as well.

Multiline TODOs

One of the most voted-for features in YouTrack was a request for supporting multiline TODOs. It’s here now: multiline TODOs are supported in Python (and other languages) in PyCharm 2018.3.

Code style: additional options for optimizing imports

Did you know that PyCharm can automatically format the imports in your code? This lets you easily format your code according to PEP 8 and/or your project’s code style guide. PyCharm 2018.3 expands the various configuration options for import sorting.

Further Improvements

  • Do you maintain a project where you have to update the copyright statement in all of your files every year? Check out our copyright tool which helps you comply with your project’s license. You can configure it in Settings | Editor | Copyright.
  • Type hints make it harder to make mistakes. To facilitate sharing type hints for third-party packages, PEP 561 introduced an official way to publish separate stubs packages on PyPI. These are now supported in PyCharm.
  • Python 3.7 introduced a new 'breakpoint' statement. In previous versions of PyCharm this would start pdb, even if you were debugging with the PyCharm debugger. From now on, the 'breakpoint' statement will start the PyCharm debugger.
  • When you’re using Docker Compose interpreters, you can now configure exactly which command PyCharm will use to launch Docker Compose. This makes it possible to use 'docker-compose up --build' for your entire web application, and 'docker-compose exec' for running TDD tests. pro only

IDE improvements

Search everywhere helps you search anywhere. The search everywhere popup now shows which options you have to narrow down your search and find what you’re looking for faster.

Plugins repository

PyCharm is a great tool for developing Python. But did you know you can also use PyCharm to write TerraForm files, or Ansible playbooks? It’s all possible with third-party plugins. We’ve refreshed our Plugins repository, so check it out and customize your PyCharm.

Indentation in status bar

Various world wars have been fought over which type of indentation is superior. We won’t pick a side, but we will enable you to see which side the author of your file picked. The status bar also functions as a weapon to convert these files to your preferred type of indentation.

Persistent Terminal Tabs

Is your first move when you start up your IDE to set up a couple terminal tabs for various purposes? You’ll need to reshuffle your morning routine, because we’ve made terminal tabs persistent: PyCharm now remembers them for you. To make things even sweeter, you can label them.

Time tracking pro only

PyCharm connects to your issue tracker: with tasks and contexts, you can quickly pick a ticket from the tracker, create a new branch, and get started. Since PyCharm 2018.3, the IDE can measure how long you work on a ticket, and automatically update your issue tracking system.

Version Control

GitHub Pull Requests

To smooth out the process of reviewing code on GitHub a little, checking out the code proposed in a pull request is now only a click away: go to the new Pull Request tool window, explore pull requests, right-click the PR, and choose ‘Create New Local Branch’ to check it out.

Further Improvements

  • Does your project use submodules? PyCharm will now check out submodules for you, and update them with the rest of your project.
  • Navigating the VCS log got a little easier: you can now use Ctrl-[ and Ctrl-] (or Cmd-[ and Cmd-] on macOS) to go back and forward between commits you’ve looked at, and a couple more new navigation options are available.
  • Connect with your inner Sherlock and find out who wrote that code. PyCharm’s improved annotate ('git blame') allows you to drill down deeper into history to make sure you get the actual culprit. Ignoring whitespace and code movement are indispensable tools for any code detective.

Database pro only

Pycharm Professional Edition bundles all database features from JetBrains DataGrip. You can access these features from the Database tool window, and by writing SQL code. Learn more

Cassandra support

PyCharm Professional Edition already has solid support for nearly all commonly used SQL databases. We’ve now set our first steps toward supporting unstructured NoSQL databases. Try Cassandra support now!

Further Improvements

  • PyCharm automatically completes 'JOIN' statements if you have foreign keys configured. As it does so, it’ll add aliases for your tables to keep the query readable. You can now configure which aliases PyCharm will use for your tables.
  • When you write a query that uses 'GROUP BY', you need to explicitly select the columns that you need. PyCharm will now help you easily transform a 'SELECT *' query when you’d like to group it by a column.
  • Have you ever run an 'UPDATE' or a 'DELETE' query without adding 'WHERE'? PyCharm will now ask you to confirm if this is actually what you’d like to do, because chances are pretty good it isn’t.

Front-end Development pro only

PyCharm Professional Edition bundles all web language features from JetBrains WebStorm. Anytime you edit JavaScript, HTML, or CSS, all features from WebStorm are available right in your IDE. Learn more

Live edit without plugin in Chrome

PyCharm Professional Edition has supported live editing HTML for a while, but it has always required a plugin to be installed. Now, you can live-edit HTML and CSS without using a plugin, making quick work out of getting your page styled just how you like it.

Angular rewrite

We’ve updated our support for Angular, and coding Angular should now be faster and more accurate.

Learn about PyCharm 2018.2


Support for pipenv

Pipenv simplifies your application's dependency management. PyCharm 2018.2 will automatically create a pipenv when you open a project with a Pipfile, and makes it easy to create new projects with pipenvs.

Quick documentation is new and improved

Want to try an exciting new library, but not spend all day reading documentation? PyCharm’s quick documentation is now better looking and easier to read. Press Ctrl+Q (Ctrl+J on macOS) to see exactly the documentation you need, right in the editor.

pytest Fixtures
and pytest-bdd pro only

Pytest makes testing your code a breeze. In PyCharm 2018.2 we’ve upgraded our Pytest support with BDD and code intelligence for fixtures. Fixtures are available in both the community edition and the professional edition of PyCharm 2018.2, get PyCharm Professional Edition for BDD support.

reST Preview

You may have already seen how PyCharm (with a plugin) can show you what your Markdown document will look like. This functionality, and more, is now available for reStructuredText.

Attrs support

Have you been reading about those exciting new Dataclasses in Python 3.7, but you can’t upgrade your project yet? The attrs library brings these features (and more) to any Python version.

Code insight improvements

PyCharm aims to help you write better Python code, faster. That’s why we’ve improved the code insight even further: it now checks more type hints, and checks if you’re correctly awaiting function calls in asynchronous code, and offers quick fixes.

Further improvements in Python support

  • You can now specify a file in a run configuration that will be redirected to the stdin of your script
  • Did you know the PyCharm debugger can attach to any running Python process on your computer? If you’re running a lot of different Python processes simultaneously this might get unwieldy. Specify a filter for your program’s name in Settings | Build, Execution, Deployment | Python debugger and get to your target quicker
  • When working with large variables it can take some time for your variables to load, which may slow you down when you’re stepping through your code. You can now set the debugger to only show variables on demand, and speed up your debugging experience.
  • Upgrading your dependencies is important, and that’s why PyCharm tells you when updates are available on the package management screen. You can now choose to only upgrade to stable versions, or to stay with the latest pre-release versions.

Version Control

Multiple GitHub account support

Do you use multiple GitHub accounts on a regular basis? PyCharm 2018.2 makes switching between them more convenient.

Logs tab: multiple tabs and diff preview

He who doesn’t know history is doomed to repeat it. By being able to slice and dice it in multiple tabs, we’ve made it easier to learn from your project’s history.

Browse the entire repository at a specific revision

They said it couldn’t be done, they said it violates the second law of thermodynamics. Time travel: it’s available in PyCharm now.


Create query plan diagrams pro only

SQL is a powerful language and allows you to view your data in many complex ways. To keep your application performant, check your query plans. In PyCharm 2018.2 you can visually inspect where you need to tweak your query or add an index.

IDE Improvements

New icons

PyCharm 2018.2 looks sleeker than ever before. The new design philosophy reduces the usage of color to where it is semantically important, making it easier to find what you need at a glance.

MacBook Pro Touch Bar is now supported

Do you have a MacBook Pro with a Touch Bar? PyCharm now provides context-sensitive touch bar contexts for running your code, debugging, VCS, and more.


Code coverage for code running in the browser: find unused code pro only

Code maintenance usually isn’t a developer’s favorite task. Deleting unused code makes the job quicker and lets you finish the task quicker. PyCharm now helps you find unused client-side JS code.

Faster indexing for Angular pro only

Performance is an important topic, and we’re happy to announce that indexing new Angular projects is now twice as fast.

Many new intentions and refactorings, such as Extract React Component pro only

Refactor JavaScript with confidence in PyCharm 2018.2: extract React component, implement interface, generate cases for a TypeScript switch statement over an enum, and more.

Code completion for Vue events and event modifiers pro only

Most Vue templates will have event code attached to them. PyCharm now makes it easier to hook up your handlers to the correct event.

Learn about PyCharm 2018.1


Python 3.7 support

Use the newest Python features with PyCharm: dataclasses, from __future__ import annotations, and more.

Enhanced code intelligence

PyCharm 2018.1 makes it even easier to use type hints to annotate your code. Type hints are now inherited from superclasses, and you can use typing.NewType to define custom types. If you prefer to leave things implicit, we’ve also improved the type inference for collections.

Gutter icons for unit tests

You may have already seen gutter icons to run tests in your JavaScript tests.These are now also available for Python tests, so it’s easier than ever to quickly run a single test.

Data Science

Code cellspro only

When writing scientific code, it doesn’t always make sense to run the whole file. Run only the part of the file you are working on – and never wait to reload your data. Just turn on the scientific mode (View | Scientific Mode) and try them now!

Scientific projectpro only

Get started with your analysis quickly by creating a scientific project. The scientific project will create a folder structure for your data and a Conda environment for you right away. Using a custom Conda installation? You can now tell PyCharm which Conda executable to use.

Web Development

Flask CLIpro only

Flask has introduced the 'flask' commands in its newer versions. You can now create run configurations that use the 'flask' commands in PyCharm.

TypeScript 2.7 fully supportedpro only

PyCharm Professional Edition comes with all of the features of WebStorm, JetBrains’ JavaScript IDE. New in this release is full support for all new features in TypeScript 2.7.

Version Control

Partially commit files

Do you like granular commits? PyCharm 2018.1 lets you choose exactly which changes to include in your commit.

Improved rebase support

Rebasing is a task that few developers look forward to. Ease the pain with PyCharm’s new rebase integration.

Remote Development

Easier configuration of SSH Python interpreterspro only

Do you like to run code on remote machines? Whether it's an EC2 box or your Raspberry Pi, PyCharm makes it easy to connect.

Improved Docker Compose supportpro only

We’ve added support for Docker Compose 3.3 and later, improved the performance of Docker Compose-based interpreters, and changed the output to make the logs look more like they do when using command-line Docker.

Database Support

Find tables using the 'Find class' windowpro only

PyCharm Professional Edition bundles all of the features of JetBrains DataGrip, our database IDE. To take advantage of this easy-to-use integration, you can now find tables of connected databases using the 'Find class' window.

Further Improvements

  • More HiDPI configurations are now supported on Windows, including multiple monitors using different and/or fractional scaling values.

  • You can now right-click a folder in your project view, and choose ‘Open in terminal’ to open the built-in PyCharm terminal with its working directory set to the selected folder.