What’s New in PyCharm 2017.3
Performance, Usability, and Data Science
When setting up an SSH interpreter, there are a couple of things PyCharm needs to transfer: first are some tools to run and debug the code remotely. These tools then generate skeletons which, with the remote standard library, need to be transferred back to the local machine. We have made several large improvements to the way we do this, and it is significantly faster now. Please keep in mind though, that the performance is dependent on certain factors, including your connection speed, and the number of packages you have configured on the remote interpreter.
PyCharm’s debugger is written mostly in Python and so we’ve been able to alleviate some of the performance bottlenecks by using Cython to compile our code. Windows users have been getting a precompiled version. Our macOS users now also get a speedup of up to 27x by default. On Linux, you should still click ‘Install’ when prompted about the debugger speedups.
If you store large amounts of data in your variables, e.g. large DataFrames, you might have had to wait a while during debugging as the values were loaded by PyCharm. In 2017.3 these values are loaded asynchronously, and you won’t have to wait for the huge DataFrame to load before you see your other variables.
Unless you’re doing a replication study, data analysis is an exploratory and interactive process. To make this easier, we’ve created a data science mode which shows you your data while you are working on it. As visualizing your data is a key step in finding new links, we’ve integrated a matplotlib viewer as well.
When developing an API you often have to send it a complex request to test your functionality. That’s why we’ve built an all-new REST client for PyCharm 2017.3. Try it yourself: create a scratch file (Ctrl+Alt+Shift+Insert, Cmd+Shift+N on macOS), and choose ‘HTTP Request’.
PyCharm 2017.3 is ready for the newest version of Python’s most popular web framework.
One of the few things in Python that confuse developers are virtualenvs. We’ve been working on making interpreter configuration easier, and you can see the first results in PyCharm 2017.3.
If you use jump hosts, or another complex SSH setup, you’ll be happy to learn that PyCharm 2017.3 will use the settings from your regular SSH config file.
Several Python frameworks should be run using a module, you can now use PyCharm to run this code exactly like you would from the command line.
An oft-requested feature is the ability to give function calls a different color; this is now available in PyCharm 2017.3. In addition, you can also change the color of type hints in your code.
Have you ever debugged code that takes a while to start up, and stepped just a couple lines too far? In PyCharm 2017.3 you can tell the Python interpreter where to go next, whether forwards or backwards. Just right-click on the code and choose ‘Jump to Cursor’
For those of you who work on large projects, you may have noticed that sometimes when you switch branches, it takes a little bit of time for the project to refresh. We’ve made optimizations to make this a lot faster.
A lot of developers work with feature branches. If you work on different tasks in different branches, you’ll appreciate PyCharm remembering the files you were working on in all your branches, and switching to them automatically.
Ever worked on a large data science project with many databases? Or had several environments for your web application? You’ll appreciate the ability to group data sources.
We’ve made a couple of small improvements to make your development experience smoother. Now if you’re writing a call to a function, but you realize you need an additional parameter, you can use the change signature quickfix. If you’re using str.format, PyCharm 2017.2 will check to make sure that you’re providing the right input. Finally, we’ve added autocompletion for type hints.
The PyCharm data view keeps getting better. In 2017.2 we added support for Pandas series in addition to the already-supported Numpy arrays and Pandas DataFrames.
Do you not like typing your keys’ passphrases over and over again? Maybe you’re using ssh-agent or Pageant (PuTTY’s implementation of ssh-agent) to manage your keys. Good news: PyCharm now supports this, so no more need to separately enter your passphrase in PyCharm.
By popular demand, we’ve expanded our support of Docker Compose to Windows. Whether you’re using native Docker for Windows, or Docker Machine, you can now run your code from PyCharm on Windows.
You can now select ‘Attach Console’ on any SQL fragment, whether it’s in your Python code or in a separate file. After letting PyCharm know on which server you’d like to execute the code, you can instantly see what is returned by right-clicking and choosing ‘Execute’ (or by pressing Ctrl+Enter)
If you’re using a PostgreSQL server with multiple databases configured, you now no longer need to configure each database as a separate connection in PyCharm’s database tools.
PyCharm now comes with support for Amazon Redshift and Microsoft Azure databases. Connect to them just like you’d connect to any other database using the database tools. To learn more about this feature, and further improvements to the database tools in PyCharm, check out what’s new in DataGrip. PyCharm Professional Edition comes with most of DataGrip’s features.
Have you ever committed something, and noticed a typo right after? We all have, and PyCharm now makes fixing it easier. Just right click your commit, and choose reword. Made a bigger mistake? Revert will create a new commit that undoes everything the selected commit introduced.
Do you like to keep your commit messages formatted nicely? PyCharm can now help you out by ensuring there’s a blank line between your subject and the commit message body, and keep track of the line length for you.
In React we now support completion and auto-imports for stateless components. For Angular, completion and navigation are now supported for Angular Material attributes.
We’re working on improving the basics: find in path now gets a gutter just like the regular editor. See at a glance which files have been changed, and navigate to related code straight from the results.
Do you have a 4K screen, and another lower resolution screen? We now support per monitor scaling on Windows.
Python 3.6 debugging is now up to 40x faster! We have been able to use some new features in Python 3.6 to radically improve the performance of the PyCharm debugger. Is your project not on 3.6 yet? Python 3.5 (and older) debugging got up to two times faster as well. If you’d like to know more: read the interview with our developer.
PyCharm has now adopted the TeamCity API for test runners. This means that test configurations will be consistent between the IDE and CI builds. This allows us to use the native test runners, and will make integration of new test runners in the future easier. Read about the technical details here.
If you’d like to upgrade to Python 3, but still need to support Python 2 for a while, you can use the six library. The six library enables you to write a single codebase that can run on both Python 2 and Python 3 interpreters. PyCharm now has accurate code completion and code insight for six.
PyCharm has been updated to support all current versions: Django 1.10, Flask 0.12, and Pyramid 1.8.2.
Unit tests are a great tool to check against regressions, but sometimes you want to change something which breaks your tests. Now you can see right in the editor which tests need an update, and if you’re using Mocha or Jest you can debug them right from there.
Bad things happen when you think you’re working on staging, but you accidentally opened an SQL prompt on your production server instead. To prevent this, now you can set your editors to different backgrounds.
Our log viewer has a couple of small useful improvements: you can now search commits using regex, and toggle case sensitivity.
We’ve improved our file history panel. For example, you can now easily toggle between seeing only the commits on the branch you’re currently on, or the commits on all branches.
If you’re security-conscious, you may have hardened your server’s SSH access with 2-factor authentication. PyCharm now supports connecting to SSH servers that are protected with Google Authenticator.
PyCharm 2017.1 supports Docker for Mac using native unix sockets. No more need to use SOCAT to connect your IDE to Docker.
When doing data science, seeing the data you’re working on makes the work a lot easier. That’s why we’ve taken our DataFrame and Numpy Array viewer, and evolved them into a dedicated Data View pane. Complete with tabs to easily watch multiple datasets.
Jupyter Notebooks are a great way to do research. If you do research in a team, you’ll want to share your notebooks with your team members. That’s why PyCharm 2017.1 supports connecting to Jupyter Notebooks on a shared server.
Lower latency typing means for a better typing experience. Pavel Fatin, one of our developers, worked hard to get the latency down as low as it can go.
When enabled, semantic highlighting will make it easy to see where a variable is used at a glance. Check out our blog for more information.
A small improvement to make your life easier: hold Ctrl and click any link in the terminal to open it in your browser.
We’ve reworked our Find in Path dialog: it’s cleaner, easier to use, and sleeker-looking! Try it yourself: right-click a folder in your project and select ‘Find in Path.’