What’s New in PyCharm 2024.1

Documentation previews for Hugging Face models and datasets, local ML-based full line code completion for JavaScript and TypeScript, sticky lines in the editor, and in-editor code review

Hugging Face: Quick documentation preview for models and datasets

Get all the information about any Hugging Face models or datasets you’re working with right inside PyCharm. Hover over a dataset or model name to view its description in a popup, or press F1 to open the Documentation tool window next to the editor. To navigate to the documentation on the Hugging Face website, use ⌘Click (Ctrl+Click on Windows and Linux).

Full line code completion for JavaScript and TypeScript PyCharm Professional

PyCharm 2023.3 brought local ML-powered full line code completion for Python code, and in 2024.1, we've expanded the range of languages supported by these single-line suggestions. You’ll now also receive full line completion suggestions for JavaScript, TypeScript, and frontend frameworks. These suggestions are powered by specialized language models that use the context of the current file and run locally without sending any code over the internet.

Sticky lines in the editor

We’ve introduced sticky lines in the editor to simplify working with large files and exploring new codebases. This feature keeps key structural elements, like the beginnings of classes or methods, pinned to the top of the editor as you scroll. This way, scopes always remain in view, and you can promptly navigate through the code by clicking on a pinned line.

In-editor code review

PyCharm 2024.1 introduces an enhanced code review experience for both GitHub and GitLab users. Integrated within the editor, the new review mode facilitates direct interaction between authors and reviewers. When you check a pull/merge request branch, review mode activates automatically and purple markers appear in the gutter, indicating that code changes are available for review. Clicking on these markers reveals a popup displaying the original code so you can quickly identify what has been changed. Gutter icons help you swiftly initiate new discussions, as well as view and hide existing ones. They also provide access to comments, making it easy to review, reply, and react to them. Learn more about this new feature in our blog post.

New terminal Beta

PyCharm 2024.1 unveils a reworked terminal with visual and functional improvements to simplify command-line tasks. The new terminal offers advanced functionality like easy command navigation, the ability to switch between prompts and outputs via keyboard shortcuts, command completion, and quick access to the command history. Your feedback is crucial at this stage, and we encourage you to try it out and share your thoughts on the experience. Learn more in this blog post.

New AI Assistant functionality PyCharm Professional

Create a file with generated code in one click

This new AI Assistant feature allows you to move faster from experimenting with queries to implementing real code. A new Create a file button now appears at the top of every code snippet generated by JetBrains AI Assistant. When you click the button, PyCharm automatically creates a file with the right extension and fills it with the code.

Generate schema-aware SQL queries

With AI Assistant, not only can you get schema-aware explanations of your query responses, but you can also quickly generate queries with context provided from your database context and perform smart searches within databases.

User experience

Option to scale down the entire IDE

You can now scale the IDE down to 90%, 80%, or 70%, giving you the flexibility to adjust the size of IDE elements both upward and downward.

Frameworks and technologies PyCharm Professional

Register model admin classes in the Django Structure tool window

In PyCharm 2024.1 you can quickly check for unregistered admin classes and register them in one click in the Django Structure tool window.

Support for bigger Flask and FastAPI applications in the Endpoints tool window

When you are working on a bigger Flask or FastAPI application in PyCharm 2024.1, you can check the Endpoints tool window to get a clear overview of the existing endpoints and their hierarchy, as well as to navigate quickly from an endpoint to its declaration in the project. Bigger applications built with Flask, and especially those built with FastAPI, normally have complex hierarchical structures built around smaller granular modules (blueprints in Flask and routers in FastAPI). To give you a clear overview of such structures and help you understand their inheritance faster, PyCharm now groups endpoints by app. Additionally, PyCharm is now able to detect the endpoints declared in libraries, as well as several endpoints per path and endpoints for different HTTP methods.

Enhanced support for GitHub Actions

PyCharm 2024.1 brings enhanced GitHub Actions support that is designed to help optimize your CI/CD workflows. Code completion now covers various relevant contexts, including github.*, env.*, steps.*, and inputs.*, making script creation easier and reducing time spent on context-specific syntax searches. Autocompletion for YAML structures ensures error-free workflows, while a new branding feature lets you give your action a distinct appearance on GitHub Marketplace. Docker image completion simplifies container integration, and JavaScript file path completion makes it easy to configure JavaScript actions, streamlining your workflow. You can find more details in this blog post.

HTTP Client improvements

The HTTP Client in PyCharm 2024.1 offers more authentication options, including the PKCE (Proof of Key Code Exchange) Authorization Code and OAuth 2.0 Device Authorization Grant flows. It also supports extra parameters for token and authentication requests, in addition to now automatically handling the generation of code_challenge and the passing of code_verifier for token retrieval during PKCE requests. The HTTP Client’s upgrade to Netty as its low-level networking library enables SSL, proxies, and HTTP/2 support, facilitating the implementation of HTTP/2.

Optimized JSON schema processing

We’ve optimized the code behind JSON schema validation and completion. As a result, PyCharm now processes JSON schemas faster and with reduced memory consumption. In real-life files with Azure Pipelines, schema inspections are now 10x as fast.

WireMock server support

We’ve implemented WireMock support via a plugin that you can install from inside the IDE or get from JetBrains Marketplace. This integration includes schema completion for JSON configurations, the ability to generate WireMock stub files from the Endpoints tool window, and a built-in run configuration that allows you to spin up your servers directly from the editor. This addition lets you swiftly create test data servers or stubs, simplifying the development of web UIs and microservices.

Frontend development PyCharm Professional

Component usages for Vue, Svelte, and Astro

PyCharm now lists component usages in the in-editor hints for Vue, Svelte, and Astro files. This will help you quickly locate usages of a specific component anywhere in the project.

Improvements for GraphQL

In our GraphQL plugin, we’ve optimized indexing performance and expanded support to handle schemas in node_modules and external libraries.

Quick documentation improvements for TypeScript

The quick documentation popup now displays interface members, enum constants, and type alias bodies. Click the Show more link to see the full list and navigate to the referenced types. You can use the paging control at the top of the dialog to navigate between multiple declarations of interfaces, type aliases, enums, functions, and other entities.

New quick-fixes for React

PyCharm 2024.1 introduces several new quick-fixes for React that let you create props and states on the fly. You can apply these quick-fixes using the shortcut ⌥Enter (Alt+Enter for Windows/Linux).

Enhanced Terraform support PyCharm Professional

PyCharm 2024.1 brings improved Terraform support that simplifies the process of creating, managing, and scaling your infrastructure. The IDE now streamlines initialization via an explicit suggestion to run terraform init, and it offers extended code completion capabilities for more than 3,900 third-party Terraform providers. Additionally, the IDE introduces support for Terraform's template language (tftpl), enabling dynamic templating with the option to seamlessly integrate it with your preferred programming language. You can find more details in our blog post.

Version control systems

Statuses of CI checks in the Git tool window

We’ve introduced a new column in the Log tab of the Git tool window, allowing you to easily review the results of GitHub commit checks performed by your CI system.

Create pull/merge requests from push notifications

After successfully pushing your changes to the version control system, PyCharm will now alert you with a notification informing you about the successful push and suggesting an action to create a pull/merge request.

Branch filter for Git tool window’s History tab

We’ve revamped the user experience for the file history in the Git tool window. First, the Show all branches button has been replaced with a branch filter, allowing you to review changes made to a file within a designated branch. We’ve also adjusted the orientation of the toolbar, positioning it horizontally for improved usability.

Further improvements

  • For GitHub and GitLab, you can now choose to view a given branch’s changes in a separate Log tab within the Git tool window.
  • You can now add reactions to your code review comments by selecting from a set of emojis.
  • To help you avoid version control rejections due to oversized files, the IDE now includes a pre-commit check that prevents you from committing such files and notifies you of the restriction.
  • The Merge into dialog now has an Allow unrelated histories option to merge two branches even if they have no common history.
  • You can now see your stashed changes in a dedicated Stash tab in the Commit tool window. If you use both stashes and shelves, you can enable a combined Stashes and Shelves tab.
  • To help you focus solely on relevant changes, the diff viewer now has the option to exclude folders and files from comparison. Simply right-click on the desired file or folder and select Exclude from results.
  • In the Branches popup you can now filter search results by action and repository.
  • The Rebase dialog now features the --update-refs option, which ensures that the Git repository’s history reflects the modifications made during rebasing.
  • Search Everywhere no longer shows the Git tab by default. You can add it in Settings/Preferences | Advanced Settings | Version Control. Git.

Database tools PyCharm Professional

Simplified approach to sessions

We've reimagined how sessions work to streamline your experience of managing data source connections and executing queries. Now, for tasks like attaching files or running functions, you just select the necessary data source or execution context, bypassing the need to pick the right session. Additionally, a dedicated action in the Services tool window makes it easy to switch sessions within the same data source. These changes are designed to make your workflow smoother and more intuitive.

Local filtering in the data editor

You can now swiftly filter rows by column values directly on the current page without waiting for your query to be run. This local approach only applies to the visible page, but you can always change the page size or fetch all the data if you need to extend the scope. To disable all local filters in the current data editor, just toggle the Enable Local Filter icon .

Single record view

You can now focus on a single record in the data editor. To open a record view, use the ⌘⇧Enter for macOS (Ctrl+Shift+Enter for Windows/Linux) shortcut or the Show Record View button on the toolbar. The record view will open in the side panel, where the value editor and aggregate view are located. The cells in the record view will be editable if they are editable in the main grid.

Ability to move columns in CSV files

Starting from 2024.1, you can move columns in the data editor for a CSV file and these changes will be applied to the file itself.