PyCharm Plugin API deprecated without backup support nor migration instructions

Background and origin of the refactor

Our PyCharm plugin has, since 2019, provided two workflows for creating projects:

  • New Digi project – creates a Python/MicroPython project with the correct facets, templates and Digi‑specific configuration.

  • Import Digi sample – clones one of our sample projects and applies the same Digi configuration.

Prior to 2025.2 both workflows were implemented using the old “New Project” API based on AbstractNewProjectStep.AbstractCallback. We presented the user with a Swing DialogWrapper containing our own pages (project type, category, device/platform, sample selection, library import) and ultimately called AbstractNewProjectStep.doGenerateProject() via callbacks. This allowed us to reuse a single control to handle both workflows.

All of this was shown in 3 different actions, 2 of them in the File Menu to allow the user to choose the project creation workflow (New project or import sample) and an extra action in the welcome page with an initial extra step to allow to select whether the user wanted to create a new project or import a sample.

It is important to note that we did not use the default project creation because of the usability we wanted customers to experience. When using PyCharm to create a project for our platforms, all actions were separated from any PyCharm existing process.

With the release of PyCharm 2025.2:

  1. The callback API and PyNewProjectSettings class that we used were deprecated and removed. This means that the old dialog no longer works.
  2. JetBrains’ New Project Wizard API states that for non-Java IDEs (PyCharm) we must implement DirectoryProjectGenerator and register it via the com.intellij.directoryProjectGenerator extension point
  3. The new wizard is supposed to show all steps on a single screen; there is no concept of “Next/Back”, so we must hide/show sections of our existing Swing form dynamically.

Because of these changes we undertook a refactor to keep the plugin functional in 2025.2 while preserving our existing UI and business logic. The main changes we made were:

  • Implemented DirectoryProjectGenerator in Java (so we could reuse our existing code) which returns a peer embedding our Swing Control.

  • Registered it in plugin.xml as a ; kept our existing actions in the welcome screen and File menu to preserve the workflow.

  • Added a DigiWizardState class and a DigiWizardHints utility to allow our actions to pre-select “new project” vs. “import sample” and hide the first panel when launching from the File menu.

  • Updated actions to call IdeActions.ACTION_NEW_PROJECT so that the new wizard would open.

Current problem

The plugin loads and the actions (“New Digi Project”, “Import Digi Sample”) appear in the File menu, but clicking them does nothing:

  • The IDE does not open the New Project wizard.

  • No specific page appears even if the wizard is opened via the built-in “New Project” button.

  • The IDE log contains no references to our generator class (no “createPeer()” messages).

We added a minimal test generator (SanityGenerator) that simply displays a “Hello” JPanel and registered it as a second . Even this test generator never appears.

What we suspect

PyCharm filters out DirectoryProjectGenerator implementations. In the Python 2025.2 wizard JetBrains uses a new internal PyV3ProjectSpecificStep to list Python-specific generators and only displays items implementing that interface or marked generator.isPython == true ( PyCharm Plugin API Breaking Change: DirectoryProjectGenerator No Longer Working in 2025.2 )
. Because our class doesn’t implement that internal interface (it’s not public) the wizard simply hides our generator. This would explain why neither our real generator nor the sanity generator ever appears.

Why we need help

The official New Project Wizard documentation tells us to implement DirectoryProjectGenerator for non-Java IDEs and register it, but following that guidance leaves us with a generator that never shows up. The refactor has already cost significant development time—porting the UI to a single-screen wizard, adding state objects, hints, etc. We cannot migrate to Kotlin UI because our team maintains the plugin in Java. Moreover, the internal PyV3ProjectSpecificStep mentioned in the EAP sources is not a public API, so we cannot rely on it.

In summary, we need clarification and/or a fix from JetBrains on:

  • Whether DirectoryProjectGenerator is still supported in PyCharm 2025.2. If it is, why does the New Project wizard ignore registered generators?

  • If not, what is the official public API for creating a Python-specific project generator? Is there a Java API or only a Kotlin DSL?

  • How should plugins migrate away from the deprecated callback API when targeting PyCharm?

  • Until this is resolved, our users cannot create new projects on PyCharm 2025.2, so any guidance or a fix would be greatly appreciated.

Hello Hector!

Thank you for the detailed description of the issue and the time you’ve invested in refactoring your plugin for the new API.

First of all, I sincerely apologize for the difficulties you’ve encountered while migrating to PyCharm 2025.2. I understand how frustrating it can be when following the official documentation doesn’t lead to the expected results.

The good news is that we’ve decided to revert such breaking changes. Have you checked that with PyCharm 2025.2.1? I’ve checked the latest version (2.1.12) of your plugin with PyCharm 2025.2.1 and actions “new Digi project…” and “import Digi sample project…” show UI and create a new project correctly. Could you, please, check that on your side?

By the way, I’m curious to learn more about your Digi plugin. Are you developing it for internal use within your company, or is this a product you provide to your customers?

Best regards,

Vladimir Koshelev

1 Like