Files
openide/python
evgeny.bovykin 94def4a222 PY-80143 Move BALLOON_NOTIFICATIONS from a PyStubPackagesAdvertiser static field to a Visitor getter to avoid NPE when calling getNotificationGroup("Python Stub Packages Advertiser")
It might be the case that the NotificationGroupManagerImpl.registeredGroups is not initialized when PyStubPackagesAdvertiser is first initialized. For that reason, BALLOON_NOTIFICATIONS calls `getNotificationGroup` each time it's accessed. The call is a hashmap lookup and so is very cheap.

As a bonus, `NotificationGroupManager` initialization is moved from the companion object, so it's not initialized when the PyStubPackagesAdvertiser class is. So no `forceNonCancellableSectionInClassInitializer` is required

GitOrigin-RevId: 4e7f54f1930e38471218828abb4af9a0ee679bb0
2025-04-02 18:42:22 +00:00
..

official JetBrains project

PyCharm Community Edition

The "python" directory in the source repository contains the source code of PyCharm Community Edition and the Python plugin for IntelliJ IDEA Community Edition.

Building and Running

The code is part of the main IntelliJ IDEA Community Edition project and is compiled together with the rest of the codebase. To run PyCharm Community Edition, please use the provided run configuration "PyCharm Community Edition". To run IntelliJ IDEA with the Python plugin, please use the "IDEA with Python plugin" run configuration.

To run the test suite, use the built-in JUnit test runner and run all tests in the "python-community-tests" module.

Building from the Command Line

To build the distribution archive of PyCharm Community Edition, execute build.xml Ant build script in this directory. The results of the build execution can be found at out/artifacts.

Building the Python Plugin

To build the Python plugin for IntelliJ IDEA Community Edition:

  • Download the .tar.gz distribution of the most recent EAP or release build of IntelliJ IDEA Community Edition;

  • Run the following command:

    ant -Didea.path= -Didea.build.number=<build number of the build you're using> plugin

The .zip file of the built plugin will be placed at distCE/python-community-.SNAPSHOT.zip