Files
openide/python
Mikhail Golubev 10808546fc PY-63393 Handle keywords terminating lexing of f-strings fragments in the lowermost JFlex lexer
Previously, we acknowledged them in PythonIndentingProcessor.adjustBraceLevel, inserting
synthetic STATEMENT_BREAK in front of them to stop recovery in the parser, similarly
to how we handle other kinds of incomplete brackets, but the state inside PyLexerFStringHelper
was not reset, so it kept trying to find matching closing brackets, quotes and interpreting
colons as PyTokenTypes.FSTRING_FRAGMENT_FORMAT_START instead of just PyTokenTypes.COLON.
The state in PyLexerFStringHelper and PythonIndentingProcessor became out of sync, which
led to assertion violations.

It's not an optimal solution, since now these tokens are listed both in
PythonTokenSetContributor.getUnbalancedBracesRecoveryTokens and in Python.flex lexer
specification, and we need to keep them in sync. Also, PythonTokenSetContributor
can provide additional tokens from other languages, such as Cython. But it's simple
and seems "good enough" to patch the problem in the release.

GitOrigin-RevId: 4e156314cc02aba0634d5d9e3008177f49105051
2023-10-05 22:02:27 +00:00
..
2023-09-20 15:08:29 +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