From 0871355d84caa940cb4fd6a27b25b88aca4ee4f0 Mon Sep 17 00:00:00 2001 From: Massimo Paladin Date: Fri, 26 Jul 2019 10:05:51 +0200 Subject: [PATCH 1/6] wip --- Jenkinsfile | 1 + .../checks/AbstractCallExpressionBase.java | 62 ++ .../checks/hotspots/CommandLineArgsCheck.java | 46 +- .../checks/hotspots/commandLineArgs.py | 2 +- python-frontend/pom.xml | 15 + .../sonar/python/frontend/PythonParser.java | 414 +++++++- .../python/mySdk/typeshed/2and3/argparse.pyi | 402 +++++++ .../python/mySdk/typeshed/2and3/optparse.pyi | 228 ++++ .../sonar/python/mySdk/typeshed/2and3/sys.pyi | 1 + sonar-python-plugin/pom.xml | 985 ++++++++++++++++-- .../minimization/ClassLoaderLogAnalyzer.java | 4 +- tools/download-pycharm.sh | 1 + 12 files changed, 2033 insertions(+), 128 deletions(-) create mode 100644 python-checks/src/main/java/org/sonar/python/checks/AbstractCallExpressionBase.java create mode 100644 python-frontend/src/main/resources/org/sonar/python/mySdk/typeshed/2and3/argparse.pyi create mode 100644 python-frontend/src/main/resources/org/sonar/python/mySdk/typeshed/2and3/optparse.pyi create mode 100644 python-frontend/src/main/resources/org/sonar/python/mySdk/typeshed/2and3/sys.pyi diff --git a/Jenkinsfile b/Jenkinsfile index bf0204dc7f..5d9ed4dd6b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -67,6 +67,7 @@ pipeline { runMaven(JDK_VERSION,"install:install-file -Dfile=pycharm-pydev.jar -DgroupId=com.jetbrains.pycharm -DartifactId=pycharm-pydev -Dversion=${PYCHARM_VERSION} -Dpackaging=jar") runMaven(JDK_VERSION,"install:install-file -Dfile=resources_en.jar -DgroupId=com.jetbrains.pycharm -DartifactId=resources_en -Dversion=${PYCHARM_VERSION} -Dpackaging=jar") runMaven(JDK_VERSION,"install:install-file -Dfile=util.jar -DgroupId=com.jetbrains.pycharm -DartifactId=util -Dversion=${PYCHARM_VERSION} -Dpackaging=jar") + runMaven(JDK_VERSION,"install:install-file -Dfile=jps-model.jar -DgroupId=com.jetbrains.pycharm -DartifactId=jps-model -Dversion=${PYCHARM_VERSION} -Dpackaging=jar") } runMaven(JDK_VERSION,"clean install -Dskip.its=true") } diff --git a/python-checks/src/main/java/org/sonar/python/checks/AbstractCallExpressionBase.java b/python-checks/src/main/java/org/sonar/python/checks/AbstractCallExpressionBase.java new file mode 100644 index 0000000000..5f188de890 --- /dev/null +++ b/python-checks/src/main/java/org/sonar/python/checks/AbstractCallExpressionBase.java @@ -0,0 +1,62 @@ +/* + * SonarQube Python Plugin + * Copyright (C) 2011-2019 SonarSource SA + * mailto:info AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +package org.sonar.python.checks; + +import com.intellij.psi.PsiElement; +import com.jetbrains.python.PyElementTypes; +import com.jetbrains.python.psi.PyCallExpression; +import com.jetbrains.python.psi.PyClass; +import com.jetbrains.python.psi.PyExpression; +import com.jetbrains.python.psi.PyFunction; +import com.jetbrains.python.psi.PyReferenceExpression; +import java.util.Set; +import org.sonar.python.PythonCheck; + +public abstract class AbstractCallExpressionBase extends PythonCheck { + + protected abstract Set functionsToCheck(); + + protected abstract String message(); + + protected boolean isException(PsiElement node) { + return false; + } + + @Override + public void initialize(Context context) { + context.registerSyntaxNodeConsumer(PyElementTypes.CALL_EXPRESSION, ctx -> { + PyCallExpression node = (PyCallExpression) ctx.syntaxNode(); + PyExpression callee = node.getCallee(); + if (callee instanceof PyReferenceExpression) { + PsiElement resolve = ((PyReferenceExpression) callee).getReference().resolve(); + if (resolve instanceof PyFunction) { + PyFunction pyFunction = (PyFunction) resolve; + PyClass containingClass = pyFunction.getContainingClass(); + if (containingClass != null) { + String qualifiedName = containingClass.getQualifiedName(); + if (!isException(node) && functionsToCheck().contains(qualifiedName + "." + pyFunction.getName())) { + ctx.addIssue(node, message()); + } + } + } + } + }); + } +} diff --git a/python-checks/src/main/java/org/sonar/python/checks/hotspots/CommandLineArgsCheck.java b/python-checks/src/main/java/org/sonar/python/checks/hotspots/CommandLineArgsCheck.java index e4cb68b98d..d267bcd2ca 100644 --- a/python-checks/src/main/java/org/sonar/python/checks/hotspots/CommandLineArgsCheck.java +++ b/python-checks/src/main/java/org/sonar/python/checks/hotspots/CommandLineArgsCheck.java @@ -19,39 +19,33 @@ */ package org.sonar.python.checks.hotspots; -import com.sonar.sslr.api.AstNode; -import com.sonar.sslr.api.AstNodeType; +import com.intellij.psi.PsiElement; +import com.jetbrains.python.PyElementTypes; +import com.jetbrains.python.psi.PyImportElement; +import com.jetbrains.python.psi.PyReferenceExpression; +import com.jetbrains.python.psi.PyTargetExpression; import java.util.Set; import org.sonar.check.Rule; -import org.sonar.python.api.PythonGrammar; -import org.sonar.python.checks.AbstractCallExpressionCheck; -import org.sonar.python.semantic.Symbol; +import org.sonar.python.checks.AbstractCallExpressionBase; -@Rule(key = CommandLineArgsCheck.CHECK_KEY) -public class CommandLineArgsCheck extends AbstractCallExpressionCheck { - public static final String CHECK_KEY = "S4823"; +@Rule(key = "S4823") +public class CommandLineArgsCheck extends AbstractCallExpressionBase { private static final String MESSAGE = "Make sure that command line arguments are used safely here."; - private static final Set questionableFunctions = immutableSet("argparse.ArgumentParser", "optparse.OptionParser"); + private static final Set questionableFunctions = immutableSet("argparse.ArgumentParser.__init__", "optparse.OptionParser.__init__"); @Override - public Set subscribedKinds() { - return immutableSet(PythonGrammar.CALL_EXPR, PythonGrammar.ATTRIBUTE_REF, PythonGrammar.ATOM); - } - - @Override - public void visitNode(AstNode node) { - if (node.is(PythonGrammar.ATTRIBUTE_REF, PythonGrammar.ATOM)) { - if (isSysArgvNode(node)) { - addIssue(node, MESSAGE); + public void initialize(Context context) { + super.initialize(context); + context.registerSyntaxNodeConsumer(PyElementTypes.REFERENCE_EXPRESSION, ctx -> { + PyReferenceExpression node = (PyReferenceExpression) ctx.syntaxNode(); + if (node.getParent() instanceof PyImportElement) { + return; } - } else { - super.visitNode(node); - } - } - - private boolean isSysArgvNode(AstNode attributeRef) { - Symbol symbol = getContext().symbolTable().getSymbol(attributeRef); - return symbol != null && symbol.qualifiedName().equals("sys.argv"); + PsiElement resolve = node.getReference().resolve(); + if (resolve instanceof PyTargetExpression && "sys.argv".equals(((PyTargetExpression) resolve).getQualifiedName())) { + ctx.addIssue(node, message()); + } + }); } @Override diff --git a/python-checks/src/test/resources/checks/hotspots/commandLineArgs.py b/python-checks/src/test/resources/checks/hotspots/commandLineArgs.py index 17920cc9e5..716e21a59d 100644 --- a/python-checks/src/test/resources/checks/hotspots/commandLineArgs.py +++ b/python-checks/src/test/resources/checks/hotspots/commandLineArgs.py @@ -22,4 +22,4 @@ def builtins(): def optparse_test(): OptionParser() # Noncompliant - optparse.OptionParser() # Noncompliant \ No newline at end of file + optparse.OptionParser() # Noncompliant diff --git a/python-frontend/pom.xml b/python-frontend/pom.xml index e97c8311f8..77445456e3 100644 --- a/python-frontend/pom.xml +++ b/python-frontend/pom.xml @@ -52,6 +52,11 @@ util ${pycharm.version} + + com.jetbrains.pycharm + jps-model + ${pycharm.version} + @@ -80,6 +85,16 @@ trove4j 1.0.20190514 + + org.jdom + jdom + 1.1.3 + + + one.util + streamex + 0.6.8 + junit diff --git a/python-frontend/src/main/java/org/sonar/python/frontend/PythonParser.java b/python-frontend/src/main/java/org/sonar/python/frontend/PythonParser.java index e21974ea54..33d24550c6 100644 --- a/python-frontend/src/main/java/org/sonar/python/frontend/PythonParser.java +++ b/python-frontend/src/main/java/org/sonar/python/frontend/PythonParser.java @@ -19,8 +19,17 @@ */ package org.sonar.python.frontend; +import com.intellij.configurationStore.StreamProvider; import com.intellij.core.CoreASTFactory; +import com.intellij.core.CoreEncodingProjectManager; import com.intellij.core.CoreFileTypeRegistry; +import com.intellij.core.CoreModuleManager; +import com.intellij.core.CoreProjectJdkTable; +import com.intellij.core.CoreProjectScopeBuilder; +import com.intellij.execution.configurations.ConfigurationType; +import com.intellij.ide.util.AppPropertiesComponentImpl; +import com.intellij.ide.util.PropertiesComponent; +import com.intellij.ide.util.PropertiesComponentImpl; import com.intellij.lang.Language; import com.intellij.lang.LanguageASTFactory; import com.intellij.lang.LanguageParserDefinitions; @@ -28,50 +37,169 @@ import com.intellij.lang.PsiBuilderFactory; import com.intellij.lang.impl.PsiBuilderFactoryImpl; import com.intellij.mock.MockApplication; +import com.intellij.mock.MockApplicationEx; import com.intellij.mock.MockFileDocumentManagerImpl; +import com.intellij.mock.MockFileIndexFacade; import com.intellij.mock.MockProject; import com.intellij.openapi.Disposable; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.ex.ApplicationEx; +import com.intellij.openapi.components.RoamingType; import com.intellij.openapi.editor.impl.DocumentImpl; +import com.intellij.openapi.editor.impl.EditorFactoryImpl; import com.intellij.openapi.extensions.ExtensionPoint; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.extensions.ExtensionsArea; import com.intellij.openapi.fileEditor.FileDocumentManager; +import com.intellij.openapi.fileTypes.FileTypeConsumer; +import com.intellij.openapi.fileTypes.FileTypeFactory; +import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.fileTypes.FileTypeRegistry; +import com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl; +import com.intellij.openapi.module.ModuleManager; +import com.intellij.openapi.options.EmptySchemesManager; +import com.intellij.openapi.options.SchemeManager; +import com.intellij.openapi.options.SchemeManagerFactory; +import com.intellij.openapi.options.SchemeProcessor; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.progress.impl.ProgressManagerImpl; +import com.intellij.openapi.projectRoots.ProjectJdkTable; +import com.intellij.openapi.projectRoots.Sdk; +import com.intellij.openapi.projectRoots.SdkType; +import com.intellij.openapi.projectRoots.impl.MockSdk; +import com.intellij.openapi.roots.AdditionalLibraryRootsProvider; +import com.intellij.openapi.roots.FileIndexFacade; +import com.intellij.openapi.roots.OrderRootType; +import com.intellij.openapi.roots.ProjectExtension; +import com.intellij.openapi.roots.ProjectFileIndex; +import com.intellij.openapi.roots.ProjectRootManager; +import com.intellij.openapi.roots.impl.DirectoryIndex; +import com.intellij.openapi.roots.impl.DirectoryIndexExcludePolicy; +import com.intellij.openapi.roots.impl.DirectoryIndexImpl; +import com.intellij.openapi.roots.impl.ProjectFileIndexImpl; +import com.intellij.openapi.roots.impl.ProjectRootManagerImpl; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.StaticGetter; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.vfs.VirtualFileManager; +import com.intellij.openapi.vfs.VirtualFileSystem; +import com.intellij.openapi.vfs.encoding.EncodingManager; +import com.intellij.openapi.vfs.impl.VirtualFileManagerImpl; +import com.intellij.openapi.vfs.local.CoreLocalFileSystem; +import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiErrorElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFileFactory; import com.intellij.psi.PsiManager; import com.intellij.psi.SyntaxTraverser; +import com.intellij.psi.impl.DocumentCommitProcessor; +import com.intellij.psi.impl.DocumentCommitThread; +import com.intellij.psi.impl.PsiCachedValuesFactory; +import com.intellij.psi.impl.PsiDocumentManagerImpl; import com.intellij.psi.impl.PsiFileFactoryImpl; import com.intellij.psi.impl.PsiManagerImpl; +import com.intellij.psi.impl.PsiModificationTrackerImpl; +import com.intellij.psi.impl.file.PsiDirectoryFactory; +import com.intellij.psi.impl.file.PsiDirectoryFactoryImpl; +import com.intellij.psi.impl.source.resolve.ResolveCache; +import com.intellij.psi.search.ProjectScopeBuilder; +import com.intellij.psi.stubs.StubIndex; +import com.intellij.psi.stubs.StubIndexExtension; +import com.intellij.psi.stubs.StubIndexImpl; +import com.intellij.psi.util.CachedValuesManager; +import com.intellij.psi.util.PsiModificationTracker; +import com.intellij.util.CachedValuesManagerImpl; +import com.intellij.util.Function; +import com.intellij.util.QueryExecutor; import com.intellij.util.containers.JBIterable; +import com.intellij.util.containers.MultiMap; +import com.intellij.util.indexing.FileBasedIndex; +import com.intellij.util.indexing.FileBasedIndexImpl; +import com.intellij.util.indexing.FileBasedIndexScanRunnableCollector; +import com.intellij.util.indexing.FileBasedIndexScanRunnableCollectorImpl; +import com.intellij.util.indexing.IndexableSetContributor; +import com.intellij.util.messages.MessageBus; +import com.jetbrains.numpy.codeInsight.NumpyDocStringTypeProvider; +import com.jetbrains.numpy.codeInsight.NumpyResolveRater; +import com.jetbrains.pyqt.PyQtTypeProvider; +import com.jetbrains.python.PyDirectoryIndexExcludePolicy; import com.jetbrains.python.PythonDialectsTokenSetContributor; import com.jetbrains.python.PythonFileType; +import com.jetbrains.python.PythonFileTypeFactory; import com.jetbrains.python.PythonLanguage; import com.jetbrains.python.PythonParserDefinition; import com.jetbrains.python.PythonTokenSetContributor; +import com.jetbrains.python.codeInsight.stdlib.PyDataclassTypeProvider; +import com.jetbrains.python.codeInsight.stdlib.PyNamedTupleOverridingTypeProvider; +import com.jetbrains.python.codeInsight.stdlib.PyNamedTupleTypeProvider; +import com.jetbrains.python.codeInsight.stdlib.PyStdlibCanonicalPathProvider; +import com.jetbrains.python.codeInsight.stdlib.PyStdlibTypeProvider; +import com.jetbrains.python.codeInsight.typing.PyAncestorTypeProvider; +import com.jetbrains.python.codeInsight.typing.PyTypingTypeProvider; +import com.jetbrains.python.codeInsight.userSkeletons.PyUserSkeletonsTypeProvider; +import com.jetbrains.python.debugger.PyCallSignatureTypeProvider; +import com.jetbrains.python.debugger.PySignatureCacheManager; +import com.jetbrains.python.debugger.PySignatureCacheManagerImpl; +import com.jetbrains.python.documentation.docstrings.PyDocStringTypeProvider; import com.jetbrains.python.psi.LanguageLevel; +import com.jetbrains.python.psi.PyCustomPackageIdentifier; +import com.jetbrains.python.psi.PyElementGenerator; import com.jetbrains.python.psi.PyFile; +import com.jetbrains.python.psi.PyKnownDecoratorProvider; +import com.jetbrains.python.psi.PyPsiFacade; +import com.jetbrains.python.psi.impl.PyElementGeneratorImpl; +import com.jetbrains.python.psi.impl.PyImportResolver; +import com.jetbrains.python.psi.impl.PyPsiFacadeImpl; +import com.jetbrains.python.psi.impl.PyResolveResultRater; +import com.jetbrains.python.psi.impl.PyTypeProvider; +import com.jetbrains.python.psi.impl.references.PyReferenceCustomTargetChecker; +import com.jetbrains.python.psi.resolve.PyCanonicalPathProvider; +import com.jetbrains.python.psi.resolve.PyForwardReferenceResolveProvider; +import com.jetbrains.python.psi.resolve.PyReferenceResolveProvider; +import com.jetbrains.python.psi.resolve.PythonBuiltinReferenceResolveProvider; +import com.jetbrains.python.psi.resolve.PythonOverridingBuiltinReferenceResolveProvider; +import com.jetbrains.python.psi.search.PySuperMethodsSearchExecutor; +import com.jetbrains.python.psi.types.PyClassMembersProvider; +import com.jetbrains.python.psi.types.PyCollectionTypeByModificationsProvider; +import com.jetbrains.python.psi.types.PyModuleMembersProvider; +import com.jetbrains.python.psi.types.TypeEvalContext; +import com.jetbrains.python.psi.types.TypeEvalContextBasedCache; +import com.jetbrains.python.psi.types.TypeEvalContextCache; +import com.jetbrains.python.pyi.PyiFileTypeFactory; +import com.jetbrains.python.pyi.PyiLanguageDialect; +import com.jetbrains.python.pyi.PyiParserDefinition; +import com.jetbrains.python.pyi.PyiTypeProvider; +import com.jetbrains.python.sdk.PythonSdkType; +import com.jetbrains.python.sdk.flavors.PythonFlavorProvider; +import com.jetbrains.python.testing.PythonTestConfigurationType; +import com.jetbrains.python.testing.pyTestFixtures.PyTestFixtureTargetChecker; +import com.jetbrains.python.testing.pyTestParametrized.PyTestParametrizedTypeProvider; import com.sonar.sslr.api.RecognitionException; import java.io.File; import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Modifier; import java.nio.charset.StandardCharsets; import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import javax.annotation.Nullable; +import kotlin.jvm.functions.Function1; +import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; public class PythonParser { private static final Disposable TEST_DISPOSABLE = new TestDisposable(); + private static final String SDK_DIR = "mySdk"; private static final PsiFileFactory psiFileFactory = psiFileFactory(); + private static CoreLocalFileSystem fileSystem; public PyFile parse(String content) { PyFile file = parseAs(content, LanguageLevel.PYTHON38); @@ -93,7 +221,7 @@ private static JBIterable errorElements(PsiElement root) { @NotNull private static PyFile parseAs(String content, LanguageLevel languageLevel) { - PsiFile file = psiFileFactory.createFileFromText("test.py", PythonFileType.INSTANCE, normalizeEol(content), System.currentTimeMillis(), false, false); + PsiFile file = psiFileFactory.createFileFromText("test.py", PythonFileType.INSTANCE, normalizeEol(content), System.currentTimeMillis(), true, false); file.getViewProvider().getVirtualFile().putUserData(LanguageLevel.KEY, languageLevel); return (PyFile) file; } @@ -115,6 +243,15 @@ public static PyFile parse(File file) { } private static PsiFileFactory psiFileFactory() { + File tmpDir; + try { + tmpDir = Files.createTempDirectory("sonar-python").toFile(); + } catch (IOException e) { + throw new IllegalStateException(e); + } + File sdkDir = initSdk(tmpDir); + + System.setProperty("idea.home.path", tmpDir.getAbsolutePath()); CoreFileTypeRegistry fileTypeRegistry = new CoreFileTypeRegistry(); fileTypeRegistry.registerFileType(PythonFileType.INSTANCE, "py"); FileTypeRegistry.ourInstanceGetter = new StaticGetter<>(fileTypeRegistry); @@ -127,24 +264,204 @@ private static PsiFileFactory psiFileFactory() { PsiBuilderFactoryImpl psiBuilderFactory = new PsiBuilderFactoryImpl(); application.registerService(PsiBuilderFactory.class, psiBuilderFactory); application.registerService(ProgressManager.class, ProgressManagerImpl.class); + application.registerService(PropertiesComponent.class, PropertiesComponentImpl.class); + application.registerService(EncodingManager.class, CoreEncodingProjectManager.class); + + SchemeManagerFactory schemeManagerFactory = new SchemeManagerFactory() { + @NotNull + @Override + public SchemeManager create(@NotNull String fileSpec, @NotNull SchemeProcessor schemeProcessor, @Nullable String presentableName, @NotNull RoamingType roamingType, @NotNull Function1 schemeNameToFileName, @Nullable StreamProvider streamProvider, @Nullable Path ioDirectory, boolean b) { + return (SchemeManager) new EmptySchemesManager(); + } + }; + application.registerService(SchemeManagerFactory.class, schemeManagerFactory); + application.registerService(FileBasedIndex.class, FileBasedIndexImpl.class); + CoreProjectJdkTable coreProjectJdkTable = new CoreProjectJdkTable(); + application.registerService(ProjectJdkTable.class, coreProjectJdkTable); + ApplicationManager.setApplication(application, FileTypeRegistry.ourInstanceGetter, disposable); - Extensions.getArea(null).registerExtensionPoint(MetaLanguage.EP_NAME.getName(), MetaLanguage.class.getName(), ExtensionPoint.Kind.INTERFACE); Extensions.registerAreaClass("IDEA_PROJECT", null); + registerExtensionPoint(MetaLanguage.EP_NAME, MetaLanguage.class); registerExtensionPoint(PythonDialectsTokenSetContributor.EP_NAME, PythonDialectsTokenSetContributor.class); registerExtension(PythonDialectsTokenSetContributor.EP_NAME, new PythonTokenSetContributor()); + registerExtensionPoint(ConfigurationType.CONFIGURATION_TYPE_EP, ConfigurationType.class); + registerExtension(ConfigurationType.CONFIGURATION_TYPE_EP, new PythonTestConfigurationType()); + + registerExtensionPoint(IndexableSetContributor.EP_NAME, IndexableSetContributor.class); + registerExtensionPoint(AdditionalLibraryRootsProvider.EP_NAME, AdditionalLibraryRootsProvider.class); + + registerExtensionPoint(PyTypeProvider.EP_NAME, PyTypeProvider.class); + registerExtension(PyTypeProvider.EP_NAME, new PyStdlibTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyDataclassTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyNamedTupleTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyNamedTupleOverridingTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyCollectionTypeByModificationsProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyTypingTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyiTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyTestParametrizedTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyUserSkeletonsTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyCallSignatureTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new NumpyDocStringTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyDocStringTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyQtTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyAncestorTypeProvider()); + + registerExtensionPoint(FileTypeFactory.FILE_TYPE_FACTORY_EP, FileTypeFactory.class); + registerExtension(PythonFileTypeFactory.FILE_TYPE_FACTORY_EP, new MyPythonFileTypeFactory()); + registerExtension(PythonFileTypeFactory.FILE_TYPE_FACTORY_EP, new PyiFileTypeFactory()); + + registerExtensionPoint(PyReferenceCustomTargetChecker.Companion.getEP_NAME(), PyReferenceCustomTargetChecker.class); + registerExtension(PyReferenceCustomTargetChecker.Companion.getEP_NAME(), new PyTestFixtureTargetChecker()); + + registerExtensionPoint(PyReferenceResolveProvider.EP_NAME, PyReferenceResolveProvider.class); + registerExtension(PyReferenceResolveProvider.EP_NAME, new PyForwardReferenceResolveProvider()); + registerExtension(PyReferenceResolveProvider.EP_NAME, new PythonBuiltinReferenceResolveProvider()); + registerExtension(PyReferenceResolveProvider.EP_NAME, new PythonOverridingBuiltinReferenceResolveProvider()); + + registerExtensionPoint(PyImportResolver.EP_NAME, PyImportResolver.class); + + ExtensionPointName superMethodSearch = ExtensionPointName.create("Pythonid.pySuperMethodsSearch"); + registerExtensionPoint(superMethodSearch, QueryExecutor.class); + registerExtension(superMethodSearch, new PySuperMethodsSearchExecutor()); + + // skipping extensions registration, limiting to extension point which is required + registerExtensionPoint(PyClassMembersProvider.EP_NAME, PyClassMembersProvider.class); + + registerExtensionPoint(PyCustomPackageIdentifier.EP_NAME, PyCustomPackageIdentifier.class); + registerExtensionPoint(PythonFlavorProvider.EP_NAME, PythonFlavorProvider.class); + registerExtensionPoint(PyKnownDecoratorProvider.EP_NAME, PyKnownDecoratorProvider.class); + + registerExtensionPoint(PyCanonicalPathProvider.EP_NAME, PyCanonicalPathProvider.class); + registerExtension(PyCanonicalPathProvider.EP_NAME, new PyStdlibCanonicalPathProvider()); + + registerExtensionPoint(PyResolveResultRater.EP_NAME, PyResolveResultRater.class); + registerExtension(PyResolveResultRater.EP_NAME, new NumpyResolveRater()); + + // skipping extensions registration, limiting to extension point which is required + // WARNING about PyStdlibModuleMembersProvider: it triggers loading of icon and start of UI + registerExtensionPoint(PyModuleMembersProvider.EP_NAME, PyModuleMembersProvider.class); + + registerExtensionPoint(SdkType.EP_NAME, SdkType.class); + registerExtension(SdkType.EP_NAME, getPythonSdkType()); + MockProject project = new MockProject(null, disposable); + registerExtensionPoint(Extensions.getArea(project), ProjectExtension.EP_NAME, ProjectExtension.class); + registerExtensionPoint(Extensions.getArea(project), PyDirectoryIndexExcludePolicy.EP_NAME, DirectoryIndexExcludePolicy.class); + + application.registerService(MessageBus.class, project.getMessageBus()); + FileTypeManagerImpl fileTypeManager = new FileTypeManagerImpl(project.getMessageBus(), schemeManagerFactory, new AppPropertiesComponentImpl()); + application.registerService(FileTypeManager.class, fileTypeManager); + + FileBasedIndexImpl fileBasedIndex = new FileBasedIndexImpl(null, fileDocMgr, fileTypeManager, project.getMessageBus()); + StubIndexImpl stubIndex = new StubIndexImpl(fileBasedIndex); + application.registerService(StubIndex.class, stubIndex); + + // skipping extensions registration, limiting to extension point which is required + Extensions.getRootArea().registerExtensionPoint(StubIndexExtension.EP_NAME, StubIndexExtension.class.getName(), ExtensionPoint.Kind.INTERFACE, TEST_DISPOSABLE); + + PsiModificationTrackerImpl modificationTracker = new PsiModificationTrackerImpl(project); + project.registerService(PsiModificationTracker.class, modificationTracker); + + MockFileIndexFacade fileIndexFacade = new MockFileIndexFacade(project); + project.registerService(FileIndexFacade.class, fileIndexFacade); + + project.registerService(DirectoryIndex.class, DirectoryIndexImpl.class); + project.registerService(FileTypeRegistry.class, CoreFileTypeRegistry.class); + project.registerService(ProjectFileIndex.class, ProjectFileIndexImpl.class); + project.registerService(ResolveCache.class, new ResolveCache(project.getMessageBus())); + + ProjectRootManagerImpl projectRootManager = new ProjectRootManagerImpl(project); + project.registerService(ProjectRootManager.class, projectRootManager); + + project.registerService(ProjectScopeBuilder.class, new CoreProjectScopeBuilder(project, fileIndexFacade)); + project.registerService(PySignatureCacheManager.class, PySignatureCacheManagerImpl.class); + + CoreModuleManager coreModuleManager = new CoreModuleManager(project, disposable); + project.registerService(ModuleManager.class, coreModuleManager); + + project.registerService(FileTypeManager.class, fileTypeManager); + project.registerService(FileBasedIndexScanRunnableCollector.class, FileBasedIndexScanRunnableCollectorImpl.class); + project.registerService(SchemeManagerFactory.class, schemeManagerFactory); + project.registerService(PyPsiFacade.class, new PyPsiFacadeImpl(project)); + project.registerService(PyElementGenerator.class, new PyElementGeneratorImpl(project)); + + fileSystem = new CoreLocalFileSystem(); + VirtualFileSystem[] fs = new VirtualFileSystem[]{fileSystem}; + VirtualFileManagerImpl virtualFileManager = new VirtualFileManagerImpl(fs, project.getMessageBus()); + application.registerService(VirtualFileManager.class, virtualFileManager); + + // https://github.com/JetBrains/intellij-community/blob/93b632941e406178dd5c78fe4d8fdf7d8c357355/platform/testFramework/src/com/intellij/testFramework/ParsingTestCase.java + //new MockPsiManager() + PsiManagerImpl psiManager = new PsiManagerImpl(project, fileDocMgr, psiBuilderFactory, fileIndexFacade, project.getMessageBus(), modificationTracker); + + DocumentCommitProcessor documentCommitThread = getDocumentCommitThread(disposable); + project.registerService(PsiDocumentManager.class, new PsiDocumentManagerImpl(project, psiManager, new EditorFactoryImpl(), project.getMessageBus(), documentCommitThread)); + + project.registerService(PsiManager.class, psiManager); + + project.registerService(PsiDirectoryFactory.class, new PsiDirectoryFactoryImpl(psiManager)); + + CachedValuesManagerImpl cachedValuesManager = new CachedValuesManagerImpl(project, new PsiCachedValuesFactory(psiManager)); + project.registerService(CachedValuesManager.class, cachedValuesManager); + project.registerService(TypeEvalContextCache.class, new TypeEvalContextCacheImpl(cachedValuesManager)); + LanguageParserDefinitions.INSTANCE.addExplicitExtension(PythonLanguage.getInstance(), new PythonParserDefinition()); + LanguageParserDefinitions.INSTANCE.addExplicitExtension(PyiLanguageDialect.getInstance(), new PyiParserDefinition()); CoreASTFactory astFactory = new CoreASTFactory(); LanguageASTFactory.INSTANCE.addExplicitExtension(PythonLanguage.getInstance(), astFactory); LanguageASTFactory.INSTANCE.addExplicitExtension(Language.ANY, astFactory); - // https://github.com/JetBrains/intellij-community/blob/93b632941e406178dd5c78fe4d8fdf7d8c357355/platform/testFramework/src/com/intellij/testFramework/ParsingTestCase.java - //new MockPsiManager() - PsiManager psiManager = new PsiManagerImpl(project, fileDocMgr, psiBuilderFactory, null, null, null); - return new PsiFileFactoryImpl(psiManager); + PsiFileFactoryImpl psiFileFactory = new PsiFileFactoryImpl(psiManager); + project.registerService(PsiFileFactory.class, psiFileFactory); + + Sdk sdk = createSDK(sdkDir.getAbsolutePath(), LanguageLevel.PYTHON38); + coreProjectJdkTable.addJdk(sdk); + projectRootManager.setProjectSdk(sdk); + + stubIndex.initComponent(); + + return psiFileFactory; + } + + @NotNull + private static DocumentCommitProcessor getDocumentCommitThread(Disposable disposable) { + Constructor constructor2; + DocumentCommitProcessor documentCommitThread; + try { + constructor2 = DocumentCommitThread.class.getDeclaredConstructor(ApplicationEx.class); + constructor2.setAccessible(true); + documentCommitThread = constructor2.newInstance(new MockApplicationEx(disposable)); + } catch (NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e) { + throw new IllegalStateException(e); + } + return documentCommitThread; + } + + @NotNull + private static PythonSdkType getPythonSdkType() { + Constructor constructor; + PythonSdkType pythonSdkType; + try { + constructor = PythonSdkType.class.getDeclaredConstructor(); + constructor.setAccessible(true); + pythonSdkType = constructor.newInstance(); + } catch (NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e) { + throw new IllegalStateException(e); + } + return pythonSdkType; + } + + /** + * Create our own PythonFileTypeFactory to skip loading of QtUIFileType and XmlFileType + */ + private static class MyPythonFileTypeFactory extends FileTypeFactory { + + public void createFileTypes(@NonNls @NotNull FileTypeConsumer consumer) { + consumer.consume(PythonFileType.INSTANCE, "py;pyw;"); + } } protected static void registerExtension(@NotNull ExtensionPointName extensionPointName, @NotNull T t) { @@ -152,7 +469,7 @@ protected static void registerExtension(@NotNull ExtensionPointName exten } public static void registerExtension(@NotNull ExtensionsArea area, @NotNull ExtensionPointName name, @NotNull T t) { - registerExtensionPoint(area, name, (Class)t.getClass()); + registerExtensionPoint(area, name, (Class) t.getClass()); area.getExtensionPoint(name.getName()).registerExtension(t, TEST_DISPOSABLE); } @@ -178,4 +495,87 @@ public void dispose() { } } + static final class TypeEvalContextCacheImpl implements TypeEvalContextCache { + + @NotNull + private static final Function VALUE_PROVIDER = new MyValueProvider(); + @NotNull + private final TypeEvalContextBasedCache myCache; + + TypeEvalContextCacheImpl(@NotNull final CachedValuesManager manager) { + myCache = new TypeEvalContextBasedCache<>(manager, VALUE_PROVIDER); + } + + + @NotNull + @Override + public TypeEvalContext getContext(@NotNull final TypeEvalContext standard) { + return myCache.getValue(standard); + } + + private static class MyValueProvider implements Function { + + @Override + public TypeEvalContext fun(final TypeEvalContext param) { + // key and value are both context here. If no context stored, then key is stored. Old one is returned otherwise to cache. + return param; + } + } + } + + private static Sdk createSDK(String sdkDir, LanguageLevel level) { + File pythonBin = new File(sdkDir, "bin/python" + level); + createFile(pythonBin); + + MultiMap roots = MultiMap.create(); + + VirtualFile typeShedDir = fileSystem.findFileByPath(sdkDir + "/typeshed"); + roots.putValue(OrderRootType.CLASSES, typeShedDir.findFileByRelativePath("2and3")); + + MockSdk sdk = new MockSdk("Mock Python SDK", pythonBin.getPath(), "Python " + level + " Mock SDK", roots, PythonSdkType.getInstance()); + + // com.jetbrains.python.psi.resolve.PythonSdkPathCache.getInstance() corrupts SDK, so have to clone + return sdk.clone(); + } + + private static File initSdk(File workDir) { + File sdkDir = new File(workDir + "/" + SDK_DIR); + createDir(sdkDir); + createDir(new File(sdkDir, "/bin")); + + File typeshed = new File(sdkDir, "typeshed"); + createDir(typeshed); + + File python2and3 = new File(typeshed, "2and3"); + createDir(python2and3); + copyResource("/org/sonar/python/mySdk/typeshed/2and3/argparse.pyi", new File(python2and3, "argparse.pyi").getAbsolutePath()); + copyResource("/org/sonar/python/mySdk/typeshed/2and3/optparse.pyi", new File(python2and3, "optparse.pyi").getAbsolutePath()); + copyResource("/org/sonar/python/mySdk/typeshed/2and3/sys.pyi", new File(python2and3, "sys.pyi").getAbsolutePath()); + return sdkDir; + } + + private static void copyResource(String res, String dest) { + InputStream src = PythonParser.class.getResourceAsStream(res); + try { + Files.copy(src, Paths.get(dest), StandardCopyOption.REPLACE_EXISTING); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + private static void createFile(File file) { + try { + if (!file.createNewFile()) { + throw new IllegalStateException("Unable to create file: " + file); + } + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + private static void createDir(File file) { + if (!file.mkdir()) { + throw new IllegalStateException("Unable to create dir: " + file); + } + } } diff --git a/python-frontend/src/main/resources/org/sonar/python/mySdk/typeshed/2and3/argparse.pyi b/python-frontend/src/main/resources/org/sonar/python/mySdk/typeshed/2and3/argparse.pyi new file mode 100644 index 0000000000..03b9620d32 --- /dev/null +++ b/python-frontend/src/main/resources/org/sonar/python/mySdk/typeshed/2and3/argparse.pyi @@ -0,0 +1,402 @@ +from typing import ( + Any, Callable, Dict, Generator, Iterable, List, IO, NoReturn, Optional, + Pattern, Sequence, Text, Tuple, Type, Union, TypeVar, overload +) +import sys + +_T = TypeVar('_T') +_ActionT = TypeVar('_ActionT', bound='Action') +_N = TypeVar('_N') + +if sys.version_info >= (3,): + _Text = str +else: + _Text = Union[str, unicode] + +ONE_OR_MORE: str +OPTIONAL: str +PARSER: str +REMAINDER: str +SUPPRESS: str +ZERO_OR_MORE: str +_UNRECOGNIZED_ARGS_ATTR: str # undocumented + +class ArgumentError(Exception): ... + +# undocumented +class _AttributeHolder: + def _get_kwargs(self) -> List[Tuple[str, Any]]: ... + def _get_args(self) -> List[Any]: ... + +# undocumented +class _ActionsContainer: + description: Optional[_Text] + prefix_chars: _Text + argument_default: Optional[_Text] + conflict_handler: _Text + + _registries: Dict[_Text, Dict[Any, Any]] + _actions: List[Action] + _option_string_actions: Dict[_Text, Action] + _action_groups: List[_ArgumentGroup] + _mutually_exclusive_groups: List[_MutuallyExclusiveGroup] + _defaults: Dict[str, Any] + _negative_number_matcher: Pattern[str] + _has_negative_number_optionals: List[bool] + + def __init__(self, description: Optional[Text], prefix_chars: Text, + argument_default: Optional[Text], conflict_handler: Text) -> None: ... + def register(self, registry_name: Text, value: Any, object: Any) -> None: ... + def _registry_get(self, registry_name: Text, value: Any, default: Any = ...) -> Any: ... + def set_defaults(self, **kwargs: Any) -> None: ... + def get_default(self, dest: Text) -> Any: ... + def add_argument(self, + *name_or_flags: Text, + action: Union[Text, Type[Action]] = ..., + nargs: Union[int, Text] = ..., + const: Any = ..., + default: Any = ..., + type: Union[Callable[[Text], _T], Callable[[str], _T], FileType] = ..., + choices: Iterable[_T] = ..., + required: bool = ..., + help: Optional[Text] = ..., + metavar: Optional[Union[Text, Tuple[Text, ...]]] = ..., + dest: Optional[Text] = ..., + version: Text = ..., + **kwargs: Any) -> Action: ... + def add_argument_group(self, *args: Any, **kwargs: Any) -> _ArgumentGroup: ... + def add_mutually_exclusive_group(self, **kwargs: Any) -> _MutuallyExclusiveGroup: ... + def _add_action(self, action: _ActionT) -> _ActionT: ... + def _remove_action(self, action: Action) -> None: ... + def _add_container_actions(self, container: _ActionsContainer) -> None: ... + def _get_positional_kwargs(self, dest: Text, **kwargs: Any) -> Dict[str, Any]: ... + def _get_optional_kwargs(self, *args: Any, **kwargs: Any) -> Dict[str, Any]: ... + def _pop_action_class(self, kwargs: Any, default: Optional[Type[Action]] = ...) -> Type[Action]: ... + def _get_handler(self) -> Callable[[Action, Iterable[Tuple[Text, Action]]], Any]: ... + def _check_conflict(self, action: Action) -> None: ... + def _handle_conflict_error(self, action: Action, conflicting_actions: Iterable[Tuple[Text, Action]]) -> NoReturn: ... + def _handle_conflict_resolve(self, action: Action, conflicting_actions: Iterable[Tuple[Text, Action]]) -> None: ... + +class ArgumentParser(_AttributeHolder, _ActionsContainer): + prog: _Text + usage: Optional[_Text] + epilog: Optional[_Text] + formatter_class: Type[HelpFormatter] + fromfile_prefix_chars: Optional[_Text] + add_help: bool + + if sys.version_info >= (3, 5): + allow_abbrev: bool + + # undocumented + _positionals: _ArgumentGroup + _optionals: _ArgumentGroup + _subparsers: Optional[_ArgumentGroup] + + if sys.version_info >= (3, 5): + def __init__(self, + prog: Optional[str] = ..., + usage: Optional[str] = ..., + description: Optional[str] = ..., + epilog: Optional[str] = ..., + parents: Sequence[ArgumentParser] = ..., + formatter_class: Type[HelpFormatter] = ..., + prefix_chars: str = ..., + fromfile_prefix_chars: Optional[str] = ..., + argument_default: Optional[str] = ..., + conflict_handler: str = ..., + add_help: bool = ..., + allow_abbrev: bool = ...) -> None: ... + else: + def __init__(self, + prog: Optional[Text] = ..., + usage: Optional[Text] = ..., + description: Optional[Text] = ..., + epilog: Optional[Text] = ..., + parents: Sequence[ArgumentParser] = ..., + formatter_class: Type[HelpFormatter] = ..., + prefix_chars: Text = ..., + fromfile_prefix_chars: Optional[Text] = ..., + argument_default: Optional[Text] = ..., + conflict_handler: Text = ..., + add_help: bool = ...) -> None: ... + + # The type-ignores in these overloads should be temporary. See: + # https://github.com/python/typeshed/pull/2643#issuecomment-442280277 + @overload + def parse_args(self, args: Optional[Sequence[Text]] = ...) -> Namespace: ... + @overload + def parse_args(self, args: Optional[Sequence[Text]], namespace: None) -> Namespace: ... # type: ignore + @overload + def parse_args(self, args: Optional[Sequence[Text]], namespace: _N) -> _N: ... + @overload + def parse_args(self, *, namespace: None) -> Namespace: ... # type: ignore + @overload + def parse_args(self, *, namespace: _N) -> _N: ... + + if sys.version_info >= (3, 7): + def add_subparsers(self, title: str = ..., + description: Optional[str] = ..., + prog: str = ..., + parser_class: Type[ArgumentParser] = ..., + action: Type[Action] = ..., + option_string: str = ..., + dest: Optional[str] = ..., + required: bool = ..., + help: Optional[str] = ..., + metavar: Optional[str] = ...) -> _SubParsersAction: ... + else: + def add_subparsers(self, title: Text = ..., + description: Optional[Text] = ..., + prog: Text = ..., + parser_class: Type[ArgumentParser] = ..., + action: Type[Action] = ..., + option_string: Text = ..., + dest: Optional[Text] = ..., + help: Optional[Text] = ..., + metavar: Optional[Text] = ...) -> _SubParsersAction: ... + + def print_usage(self, file: Optional[IO[str]] = ...) -> None: ... + def print_help(self, file: Optional[IO[str]] = ...) -> None: ... + def format_usage(self) -> str: ... + def format_help(self) -> str: ... + def parse_known_args(self, args: Optional[Sequence[Text]] = ..., + namespace: Optional[Namespace] = ...) -> Tuple[Namespace, List[str]]: ... + def convert_arg_line_to_args(self, arg_line: Text) -> List[str]: ... + def exit(self, status: int = ..., message: Optional[Text] = ...) -> NoReturn: ... + def error(self, message: Text) -> NoReturn: ... + if sys.version_info >= (3, 7): + def parse_intermixed_args(self, args: Optional[Sequence[str]] = ..., + namespace: Optional[Namespace] = ...) -> Namespace: ... + def parse_known_intermixed_args(self, + args: Optional[Sequence[str]] = ..., + namespace: Optional[Namespace] = ...) -> Tuple[Namespace, List[str]]: ... + # undocumented + def _get_optional_actions(self) -> List[Action]: ... + def _get_positional_actions(self) -> List[Action]: ... + def _parse_known_args(self, arg_strings: List[Text], namespace: Namespace) -> Tuple[Namespace, List[str]]: ... + def _read_args_from_files(self, arg_strings: List[Text]) -> List[Text]: ... + def _match_argument(self, action: Action, arg_strings_pattern: Text) -> int: ... + def _match_arguments_partial(self, actions: Sequence[Action], arg_strings_pattern: Text) -> List[int]: ... + def _parse_optional(self, arg_string: Text) -> Optional[Tuple[Optional[Action], Text, Optional[Text]]]: ... + def _get_option_tuples(self, option_string: Text) -> List[Tuple[Action, Text, Optional[Text]]]: ... + def _get_nargs_pattern(self, action: Action) -> _Text: ... + def _get_values(self, action: Action, arg_strings: List[Text]) -> Any: ... + def _get_value(self, action: Action, arg_string: Text) -> Any: ... + def _check_value(self, action: Action, value: Any) -> None: ... + def _get_formatter(self) -> HelpFormatter: ... + def _print_message(self, message: str, file: Optional[IO[str]] = ...) -> None: ... + +class HelpFormatter: + # undocumented + _prog: _Text + _indent_increment: int + _max_help_position: int + _width: int + _current_indent: int + _level: int + _action_max_length: int + _root_section: Any + _current_section: Any + _whitespace_matcher: Pattern[str] + _long_break_matcher: Pattern[str] + _Section: Type[Any] # Nested class + def __init__(self, prog: Text, indent_increment: int = ..., + max_help_position: int = ..., + width: Optional[int] = ...) -> None: ... + def _indent(self) -> None: ... + def _dedent(self) -> None: ... + def _add_item(self, func: Callable[..., _Text], args: Iterable[Any]) -> None: ... + def start_section(self, heading: Optional[Text]) -> None: ... + def end_section(self) -> None: ... + def add_text(self, text: Optional[Text]) -> None: ... + def add_usage(self, usage: Text, actions: Iterable[Action], groups: Iterable[_ArgumentGroup], prefix: Optional[Text] = ...) -> None: ... + def add_argument(self, action: Action) -> None: ... + def add_arguments(self, actions: Iterable[Action]) -> None: ... + def format_help(self) -> _Text: ... + def _join_parts(self, part_strings: Iterable[Text]) -> _Text: ... + def _format_usage(self, usage: Text, actions: Iterable[Action], groups: Iterable[_ArgumentGroup], prefix: Optional[Text]) -> _Text: ... + def _format_actions_usage(self, actions: Iterable[Action], groups: Iterable[_ArgumentGroup]) -> _Text: ... + def _format_text(self, text: Text) -> _Text: ... + def _format_action(self, action: Action) -> _Text: ... + def _format_action_invocation(self, action: Action) -> _Text: ... + def _metavar_formatter(self, action: Action, default_metavar: Text) -> Callable[[int], Tuple[_Text, ...]]: ... + def _format_args(self, action: Action, default_metavar: Text) -> _Text: ... + def _expand_help(self, action: Action) -> _Text: ... + def _iter_indented_subactions(self, action: Action) -> Generator[Action, None, None]: ... + def _split_lines(self, text: Text, width: int) -> List[_Text]: ... + def _fill_text(self, text: Text, width: int, indent: int) -> _Text: ... + def _get_help_string(self, action: Action) -> Optional[_Text]: ... + def _get_default_metavar_for_optional(self, action: Action) -> _Text: ... + def _get_default_metavar_for_positional(self, action: Action) -> _Text: ... + +class RawDescriptionHelpFormatter(HelpFormatter): ... +class RawTextHelpFormatter(HelpFormatter): ... +class ArgumentDefaultsHelpFormatter(HelpFormatter): ... +if sys.version_info >= (3,): + class MetavarTypeHelpFormatter(HelpFormatter): ... + +class Action(_AttributeHolder): + option_strings: Sequence[_Text] + dest: _Text + nargs: Optional[Union[int, _Text]] + const: Any + default: Any + type: Union[Callable[[str], Any], FileType, None] + choices: Optional[Iterable[Any]] + required: bool + help: Optional[_Text] + metavar: Optional[Union[_Text, Tuple[_Text, ...]]] + + def __init__(self, + option_strings: Sequence[Text], + dest: Text, + nargs: Optional[Union[int, Text]] = ..., + const: Any = ..., + default: Any = ..., + type: Optional[Union[Callable[[Text], _T], Callable[[str], _T], FileType]] = ..., + choices: Optional[Iterable[_T]] = ..., + required: bool = ..., + help: Optional[Text] = ..., + metavar: Optional[Union[Text, Tuple[Text, ...]]] = ...) -> None: ... + def __call__(self, parser: ArgumentParser, namespace: Namespace, + values: Union[Text, Sequence[Any], None], + option_string: Optional[Text] = ...) -> None: ... + +class Namespace(_AttributeHolder): + def __init__(self, **kwargs: Any) -> None: ... + def __getattr__(self, name: Text) -> Any: ... + def __setattr__(self, name: Text, value: Any) -> None: ... + def __contains__(self, key: str) -> bool: ... + +class FileType: + # undocumented + _mode: _Text + _bufsize: int + if sys.version_info >= (3,): + _encoding: Optional[str] + _errors: Optional[str] + def __init__(self, mode: str = ..., bufsize: int = ..., + encoding: Optional[str] = ..., + errors: Optional[str] = ...) -> None: ... + else: + def __init__(self, + mode: Text = ..., bufsize: Optional[int] = ...) -> None: ... + def __call__(self, string: Text) -> IO[Any]: ... + +# undocumented +class _ArgumentGroup(_ActionsContainer): + title: Optional[_Text] + _group_actions: List[Action] + def __init__(self, container: _ActionsContainer, + title: Optional[Text] = ..., + description: Optional[Text] = ..., **kwargs: Any) -> None: ... + +# undocumented +class _MutuallyExclusiveGroup(_ArgumentGroup): + required: bool + _container: _ActionsContainer + def __init__(self, container: _ActionsContainer, required: bool = ...) -> None: ... + +# undocumented +class _StoreAction(Action): ... + +# undocumented +class _StoreConstAction(Action): + def __init__(self, + option_strings: Sequence[Text], + dest: Text, + const: Any, + default: Any = ..., + required: bool = ..., + help: Optional[Text] = ..., + metavar: Optional[Union[Text, Tuple[Text, ...]]] = ...) -> None: ... + +# undocumented +class _StoreTrueAction(_StoreConstAction): + def __init__(self, + option_strings: Sequence[Text], + dest: Text, + default: bool = ..., + required: bool = ..., + help: Optional[Text] = ...) -> None: ... + +# undocumented +class _StoreFalseAction(_StoreConstAction): + def __init__(self, + option_strings: Sequence[Text], + dest: Text, + default: bool = ..., + required: bool = ..., + help: Optional[Text] = ...) -> None: ... + +# undocumented +class _AppendAction(Action): ... + +# undocumented +class _AppendConstAction(Action): + def __init__(self, + option_strings: Sequence[Text], + dest: Text, + const: Any, + default: Any = ..., + required: bool = ..., + help: Optional[Text] = ..., + metavar: Optional[Union[Text, Tuple[Text, ...]]] = ...) -> None: ... + +# undocumented +class _CountAction(Action): + def __init__(self, + option_strings: Sequence[Text], + dest: Text, + default: Any = ..., + required: bool = ..., + help: Optional[Text] = ...) -> None: ... + +# undocumented +class _HelpAction(Action): + def __init__(self, + option_strings: Sequence[Text], + dest: Text = ..., + default: Text = ..., + help: Optional[Text] = ...) -> None: ... + +# undocumented +class _VersionAction(Action): + version: Optional[_Text] + def __init__(self, + option_strings: Sequence[Text], + version: Optional[Text] = ..., + dest: Text = ..., + default: Text = ..., + help: Text = ...) -> None: ... + +# undocumented +class _SubParsersAction(Action): + _ChoicesPseudoAction: Type[Any] # nested class + _prog_prefix: _Text + _parser_class: Type[ArgumentParser] + _name_parser_map: Dict[_Text, ArgumentParser] + choices: Dict[_Text, ArgumentParser] + _choices_actions: List[Action] + def __init__(self, + option_strings: Sequence[Text], + prog: Text, + parser_class: Type[ArgumentParser], + dest: Text = ..., + required: bool = ..., + help: Optional[Text] = ..., + metavar: Optional[Union[Text, Tuple[Text, ...]]] = ...) -> None: ... + # TODO: Type keyword args properly. + def add_parser(self, name: Text, **kwargs: Any) -> ArgumentParser: ... + def _get_subactions(self) -> List[Action]: ... + +# undocumented +class ArgumentTypeError(Exception): ... + +if sys.version_info < (3, 7): + # undocumented + def _ensure_value(namespace: Namespace, name: Text, value: Any) -> Any: ... + +# undocumented +def _get_action_name(argument: Optional[Action]) -> Optional[str]: ... diff --git a/python-frontend/src/main/resources/org/sonar/python/mySdk/typeshed/2and3/optparse.pyi b/python-frontend/src/main/resources/org/sonar/python/mySdk/typeshed/2and3/optparse.pyi new file mode 100644 index 0000000000..9b8b8eac56 --- /dev/null +++ b/python-frontend/src/main/resources/org/sonar/python/mySdk/typeshed/2and3/optparse.pyi @@ -0,0 +1,228 @@ +# Generated by pytype, with only minor tweaks. Might be incomplete. +import sys +from typing import Any, AnyStr, Callable, Dict, IO, Iterable, List, Mapping, Optional, Sequence, Tuple, Union + +# See https://groups.google.com/forum/#!topic/python-ideas/gA1gdj3RZ5g +if sys.version_info >= (3,): + _Text = str +else: + _Text = Union[str, unicode] + +NO_DEFAULT: Tuple[_Text, ...] +SUPPRESS_HELP: _Text +SUPPRESS_USAGE: _Text + +def check_builtin(option: Option, opt: Any, value: _Text) -> Any: ... +def check_choice(option: Option, opt: Any, value: _Text) -> Any: ... +if sys.version_info < (3,): + def isbasestring(x: Any) -> bool: ... + +class OptParseError(Exception): + msg: _Text + def __init__(self, msg: _Text) -> None: ... + +class BadOptionError(OptParseError): + opt_str: _Text + def __init__(self, opt_str: _Text) -> None: ... + +class AmbiguousOptionError(BadOptionError): + possibilities: Iterable[_Text] + def __init__(self, opt_str: _Text, possibilities: Sequence[_Text]) -> None: ... + +class OptionError(OptParseError): + msg: _Text + option_id: _Text + def __init__(self, msg: _Text, option: Option) -> None: ... + +class OptionConflictError(OptionError): ... + +class OptionValueError(OptParseError): ... + + +class HelpFormatter: + NO_DEFAULT_VALUE: _Text + _long_opt_fmt: _Text + _short_opt_fmt: _Text + current_indent: int + default_tag: _Text + help_position: Any + help_width: Any + indent_increment: int + level: int + max_help_position: int + option_strings: Dict[Option, _Text] + parser: OptionParser + short_first: Any + width: int + def __init__(self, indent_increment: int, max_help_position: int, width: Optional[int], short_first: int) -> None: ... + def _format__Text(self, _Text: _Text) -> _Text: ... + def dedent(self) -> None: ... + def expand_default(self, option: Option) -> _Text: ... + def format_description(self, description: _Text) -> _Text: ... + def format_epilog(self, epilog) -> _Text: ... + def format_heading(self, heading: Any) -> _Text: ... + def format_option(self, option: OptionParser) -> _Text: ... + def format_option_strings(self, option: OptionParser) -> Any: ... + def format_usage(self, usage: Any) -> _Text: ... + def indent(self) -> None: ... + def set_long_opt_delimiter(self, delim: _Text) -> None: ... + def set_parser(self, parser: OptionParser) -> None: ... + def set_short_opt_delimiter(self, delim: _Text) -> None: ... + def store_option_strings(self, parser: OptionParser) -> None: ... + +class IndentedHelpFormatter(HelpFormatter): + def __init__(self, + indent_increment: int = ..., + max_help_position: int = ..., + width: Optional[int] = ..., + short_first: int = ...) -> None: ... + def format_heading(self, heading: _Text) -> _Text: ... + def format_usage(self, usage: _Text) -> _Text: ... + +class TitledHelpFormatter(HelpFormatter): + def __init__(self, + indent_increment: int = ..., + max_help_position: int = ..., + width: Optional[int] = ..., + short_first: int = ...) -> None: ... + def format_heading(self, heading: _Text) -> _Text: ... + def format_usage(self, usage: _Text) -> _Text: ... + +class Option: + ACTIONS: Tuple[_Text, ...] + ALWAYS_TYPED_ACTIONS: Tuple[_Text, ...] + ATTRS: List[_Text] + CHECK_METHODS: Optional[List[Callable]] + CONST_ACTIONS: Tuple[_Text, ...] + STORE_ACTIONS: Tuple[_Text, ...] + TYPED_ACTIONS: Tuple[_Text, ...] + TYPES: Tuple[_Text, ...] + TYPE_CHECKER: Dict[_Text, Callable] + _long_opts: List[_Text] + _short_opts: List[_Text] + action: _Text + dest: Optional[_Text] + nargs: int + type: Any + def __init__(self, *opts, **attrs) -> None: ... + def _check_action(self) -> None: ... + def _check_callback(self) -> None: ... + def _check_choice(self) -> None: ... + def _check_const(self) -> None: ... + def _check_dest(self) -> None: ... + def _check_nargs(self) -> None: ... + def _check_opt_strings(self, opts: Optional[_Text]) -> Any: ... + def _check_type(self) -> None: ... + def _set_attrs(self, attrs: Dict[_Text, Any]) -> None: ... + def _set_opt_strings(self, opts: _Text) -> None: ... + def check_value(self, opt: Any, value: Any) -> Any: ... + def convert_value(self, opt: Any, value: Any) -> Any: ... + def get_opt_string(self) -> _Text: ... + def process(self, opt: Any, value: Any, values: Any, parser: OptionParser) -> int: ... + def take_action(self, action: _Text, dest: _Text, opt: Any, value: Any, values: Any, parser: OptionParser) -> int: ... + def takes_value(self) -> bool: ... + +make_option = Option + +class OptionContainer: + _long_opt: Dict[_Text, Option] + _short_opt: Dict[_Text, Option] + conflict_handler: _Text + defaults: Dict[_Text, Any] + description: Any + option_class: Any + def __init__(self, option_class: Option, conflict_handler: Any, description: Any) -> None: ... + def _check_conflict(self, option: Any) -> None: ... + def _create_option_mappings(self) -> None: ... + def _share_option_mappings(self, parser: OptionParser) -> None: ... + def add_option(self, *args, **kwargs) -> Any: ... + def add_options(self, option_list: Iterable[Option]) -> None: ... + def destroy(self) -> None: ... + def format_description(self, formatter: Optional[HelpFormatter]) -> Any: ... + def format_help(self, formatter: Optional[HelpFormatter]) -> _Text: ... + def format_option_help(self, formatter: Optional[HelpFormatter]) -> _Text: ... + def get_description(self) -> Any: ... + def get_option(self, opt_str: _Text) -> Optional[Option]: ... + def has_option(self, opt_str: _Text) -> bool: ... + def remove_option(self, opt_str: _Text) -> None: ... + def set_conflict_handler(self, handler: Any) -> None: ... + def set_description(self, description: Any) -> None: ... + +class OptionGroup(OptionContainer): + option_list: List[Option] + parser: OptionParser + title: _Text + def __init__(self, parser: OptionParser, title: _Text, description: Optional[_Text] = ...) -> None: ... + def _create_option_list(self) -> None: ... + def set_title(self, title: _Text) -> None: ... + +class Values: + def __init__(self, defaults: Optional[Mapping[str, Any]] = ...) -> None: ... + def _update(self, dict: Mapping[_Text, Any], mode: Any) -> None: ... + def _update_careful(self, dict: Mapping[_Text, Any]) -> None: ... + def _update_loose(self, dict: Mapping[_Text, Any]) -> None: ... + def ensure_value(self, attr: _Text, value: Any) -> Any: ... + def read_file(self, filename: _Text, mode: _Text) -> None: ... + def read_module(self, modname: _Text, mode: _Text) -> None: ... + def __getattr__(self, name: str) -> Any: ... + def __setattr__(self, name: str, value: Any) -> None: ... + +class OptionParser(OptionContainer): + allow_interspersed_args: bool + epilog: Optional[_Text] + formatter: HelpFormatter + largs: Optional[List[_Text]] + option_groups: List[OptionParser] + option_list: List[Option] + process_default_values: Any + prog: Optional[_Text] + rargs: Optional[List[Any]] + standard_option_list: List[Option] + usage: Optional[_Text] + values: Optional[Values] + version: _Text + def __init__(self, + usage: Optional[_Text] = ..., + option_list: Iterable[Option] = ..., + option_class: Option = ..., + version: Optional[_Text] = ..., + conflict_handler: _Text = ..., + description: Optional[_Text] = ..., + formatter: Optional[HelpFormatter] = ..., + add_help_option: bool = ..., + prog: Optional[_Text] = ..., + epilog: Optional[_Text] = ...) -> None: ... + def _add_help_option(self) -> None: ... + def _add_version_option(self) -> None: ... + def _create_option_list(self) -> None: ... + def _get_all_options(self) -> List[Option]: ... + def _get_args(self, args: Iterable) -> List[Any]: ... + def _init_parsing_state(self) -> None: ... + def _match_long_opt(self, opt: _Text) -> _Text: ... + def _populate_option_list(self, option_list: Iterable[Option], add_help: bool = ...) -> None: ... + def _process_args(self, largs: List, rargs: List, values: Values) -> None: ... + def _process_long_opt(self, rargs: List, values: Any) -> None: ... + def _process_short_opts(self, rargs: List, values: Any) -> None: ... + def add_option_group(self, *args, **kwargs) -> OptionParser: ... + def check_values(self, values: Values, args: List[_Text]) -> Tuple[Values, List[_Text]]: ... + def disable_interspersed_args(self) -> None: ... + def enable_interspersed_args(self) -> None: ... + def error(self, msg: _Text) -> None: ... + def exit(self, status: int = ..., msg: Optional[str] = ...) -> None: ... + def expand_prog_name(self, s: Optional[_Text]) -> Any: ... + def format_epilog(self, formatter: HelpFormatter) -> Any: ... + def format_help(self, formatter: Optional[HelpFormatter] = ...) -> _Text: ... + def format_option_help(self, formatter: Optional[HelpFormatter] = ...) -> _Text: ... + def get_default_values(self) -> Values: ... + def get_option_group(self, opt_str: _Text) -> Any: ... + def get_prog_name(self) -> _Text: ... + def get_usage(self) -> _Text: ... + def get_version(self) -> _Text: ... + def parse_args(self, args: Optional[Sequence[AnyStr]] = ..., values: Optional[Values] = ...) -> Tuple[Values, List[AnyStr]]: ... + def print_usage(self, file: Optional[IO[str]] = ...) -> None: ... + def print_help(self, file: Optional[IO[str]] = ...) -> None: ... + def print_version(self, file: Optional[IO[str]] = ...) -> None: ... + def set_default(self, dest: Any, value: Any) -> None: ... + def set_defaults(self, **kwargs) -> None: ... + def set_process_default_values(self, process: Any) -> None: ... + def set_usage(self, usage: _Text) -> None: ... diff --git a/python-frontend/src/main/resources/org/sonar/python/mySdk/typeshed/2and3/sys.pyi b/python-frontend/src/main/resources/org/sonar/python/mySdk/typeshed/2and3/sys.pyi new file mode 100644 index 0000000000..3020bb8712 --- /dev/null +++ b/python-frontend/src/main/resources/org/sonar/python/mySdk/typeshed/2and3/sys.pyi @@ -0,0 +1 @@ +argv: List[str] diff --git a/sonar-python-plugin/pom.xml b/sonar-python-plugin/pom.xml index 3fadbd6279..335b93d2a1 100644 --- a/sonar-python-plugin/pom.xml +++ b/sonar-python-plugin/pom.xml @@ -151,6 +151,9 @@ com/intellij/openapi/extensions/LoadingOrder.class com/intellij/openapi/extensions/PluginAware.class com/intellij/openapi/extensions/PluginDescriptor.class + com/intellij/openapi/extensions/SimpleSmartExtensionPoint.class + com/intellij/openapi/extensions/SmartExtensionPoint$1.class + com/intellij/openapi/extensions/SmartExtensionPoint.class com/intellij/openapi/extensions/SortingException.class com/intellij/openapi/extensions/impl/BeanExtensionPoint.class com/intellij/openapi/extensions/impl/ExtensionComponentAdapter.class @@ -158,6 +161,7 @@ com/intellij/openapi/extensions/impl/ExtensionPointImpl$ObjectComponentAdapter.class com/intellij/openapi/extensions/impl/ExtensionPointImpl.class com/intellij/openapi/extensions/impl/ExtensionsAreaImpl$1.class + com/intellij/openapi/extensions/impl/ExtensionsAreaImpl$2.class com/intellij/openapi/extensions/impl/ExtensionsAreaImpl$3.class com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.class com/intellij/openapi/extensions/impl/InterfaceExtensionPoint.class @@ -181,6 +185,12 @@ gnu/trove/TByteArrayList.class gnu/trove/TByteProcedure.class gnu/trove/THash.class + gnu/trove/THashIterator.class + gnu/trove/THashMap$Entry.class + gnu/trove/THashMap$EntryView$EntryIterator.class + gnu/trove/THashMap$EntryView.class + gnu/trove/THashMap$KeyView.class + gnu/trove/THashMap$MapBackedView.class gnu/trove/THashMap.class gnu/trove/THashSet.class gnu/trove/TIntArrayList.class @@ -191,11 +201,17 @@ gnu/trove/TIntObjectProcedure.class gnu/trove/TIntProcedure.class gnu/trove/TIntStack.class + gnu/trove/TIterator.class + gnu/trove/TLongArrayList.class + gnu/trove/TLongProcedure.class gnu/trove/TObjectCanonicalHashingStrategy.class gnu/trove/TObjectHash$NULL.class gnu/trove/TObjectHash.class + gnu/trove/TObjectHashIterator.class gnu/trove/TObjectHashingStrategy.class gnu/trove/TObjectIdentityHashingStrategy.class + gnu/trove/TObjectIntHashMap.class + gnu/trove/TObjectIntProcedure.class gnu/trove/TObjectObjectProcedure.class gnu/trove/TObjectProcedure.class gnu/trove/TPrimitiveHash.class @@ -204,11 +220,105 @@ org.jetbrains.kotlin:kotlin-stdlib + kotlin/Function.class kotlin/KotlinNullPointerException.class + kotlin/Lazy.class + kotlin/LazyKt.class + kotlin/LazyKt__LazyJVMKt.class + kotlin/LazyKt__LazyKt.class + kotlin/NoWhenBranchMatchedException.class kotlin/Pair.class + kotlin/SynchronizedLazyImpl.class + kotlin/Triple.class kotlin/TypeCastException.class + kotlin/UNINITIALIZED_VALUE.class kotlin/UninitializedPropertyAccessException.class + kotlin/collections/ArraysKt.class + kotlin/collections/ArraysKt__ArraysJVMKt.class + kotlin/collections/ArraysKt__ArraysKt.class + kotlin/collections/ArraysKt___ArraysJvmKt.class + kotlin/collections/ArraysKt___ArraysKt.class + kotlin/collections/ArraysUtilJVM.class + kotlin/collections/CollectionsKt.class + kotlin/collections/CollectionsKt__CollectionsJVMKt.class + kotlin/collections/CollectionsKt__CollectionsKt.class + kotlin/collections/CollectionsKt__IterablesKt.class + kotlin/collections/CollectionsKt__IteratorsJVMKt.class + kotlin/collections/CollectionsKt__IteratorsKt.class + kotlin/collections/CollectionsKt__MutableCollectionsJVMKt.class + kotlin/collections/CollectionsKt__MutableCollectionsKt.class + kotlin/collections/CollectionsKt__ReversedViewsKt.class + kotlin/collections/CollectionsKt___CollectionsJvmKt.class + kotlin/collections/CollectionsKt___CollectionsKt$asSequence$$inlined$Sequence$1.class + kotlin/collections/CollectionsKt___CollectionsKt.class + kotlin/collections/EmptyIterator.class + kotlin/collections/EmptyList.class + kotlin/collections/MapsKt.class + kotlin/collections/MapsKt__MapWithDefaultKt.class + kotlin/collections/MapsKt__MapsJVMKt.class + kotlin/collections/MapsKt__MapsKt.class + kotlin/collections/MapsKt___MapsKt.class + kotlin/collections/SetsKt.class + kotlin/collections/SetsKt__SetsJVMKt.class + kotlin/collections/SetsKt__SetsKt.class + kotlin/collections/SetsKt___SetsKt.class + kotlin/internal/ProgressionUtilKt.class + kotlin/jvm/KotlinReflectionNotSupportedError.class + kotlin/jvm/functions/Function0.class + kotlin/jvm/functions/Function1.class + kotlin/jvm/functions/Function2.class + kotlin/jvm/internal/CallableReference$NoReceiver.class + kotlin/jvm/internal/CallableReference.class + kotlin/jvm/internal/ClassBasedDeclarationContainer.class + kotlin/jvm/internal/ClassReference.class + kotlin/jvm/internal/CollectionToArray.class + kotlin/jvm/internal/DefaultConstructorMarker.class + kotlin/jvm/internal/FunctionBase.class + kotlin/jvm/internal/FunctionReference.class kotlin/jvm/internal/Intrinsics.class + kotlin/jvm/internal/Lambda.class + kotlin/jvm/internal/PropertyReference.class + kotlin/jvm/internal/PropertyReference1.class + kotlin/jvm/internal/PropertyReference1Impl.class + kotlin/jvm/internal/Reflection.class + kotlin/jvm/internal/ReflectionFactory.class + kotlin/jvm/internal/markers/KMappedMarker.class + kotlin/ranges/ClosedRange.class + kotlin/ranges/IntProgression$Companion.class + kotlin/ranges/IntProgression.class + kotlin/ranges/IntRange$Companion.class + kotlin/ranges/IntRange.class + kotlin/reflect/KAnnotatedElement.class + kotlin/reflect/KCallable.class + kotlin/reflect/KClass.class + kotlin/reflect/KClassifier.class + kotlin/reflect/KDeclarationContainer.class + kotlin/reflect/KFunction.class + kotlin/reflect/KMutableProperty.class + kotlin/reflect/KMutableProperty0.class + kotlin/reflect/KMutableProperty1.class + kotlin/reflect/KMutableProperty2.class + kotlin/reflect/KProperty$Accessor.class + kotlin/reflect/KProperty$Getter.class + kotlin/reflect/KProperty.class + kotlin/reflect/KProperty0.class + kotlin/reflect/KProperty1.class + kotlin/reflect/KProperty2.class + kotlin/sequences/FilteringSequence$iterator$1.class + kotlin/sequences/FilteringSequence.class + kotlin/sequences/FlatteningSequence$iterator$1.class + kotlin/sequences/FlatteningSequence.class + kotlin/sequences/Sequence.class + kotlin/sequences/SequencesKt.class + kotlin/sequences/SequencesKt__SequencesJVMKt.class + kotlin/sequences/SequencesKt__SequencesKt.class + kotlin/sequences/SequencesKt___SequencesJvmKt$filterIsInstance$1.class + kotlin/sequences/SequencesKt___SequencesJvmKt.class + kotlin/sequences/SequencesKt___SequencesKt$filterNotNull$1.class + kotlin/sequences/SequencesKt___SequencesKt$flatMap$1.class + kotlin/sequences/SequencesKt___SequencesKt.class + kotlin/sequences/TransformingSequence$iterator$1.class + kotlin/sequences/TransformingSequence.class kotlin/text/StringsKt.class kotlin/text/StringsKt__IndentKt.class kotlin/text/StringsKt__RegexExtensionsJVMKt.class @@ -226,14 +336,62 @@ com.jetbrains.pycharm:platform-impl + com/intellij/codeInsight/completion/CompletionData$1.class + com/intellij/codeInsight/completion/CompletionData.class + com/intellij/codeInsight/completion/CompletionUtil$1.class + com/intellij/codeInsight/completion/CompletionUtil.class + com/intellij/codeInsight/completion/CompletionUtilCoreImpl.class + com/intellij/codeInsight/completion/CompletionVariant$CompletionVariantItem.class + com/intellij/codeInsight/completion/CompletionVariant$Scope.class + com/intellij/codeInsight/completion/CompletionVariant.class + com/intellij/codeInsight/controlflow/ControlFlowBuilder$PendingProcessor.class + com/intellij/codeInsight/controlflow/ControlFlowBuilder.class + com/intellij/codeInsight/controlflow/ControlFlowUtil$Operation.class + com/intellij/codeInsight/controlflow/ControlFlowUtil.class + com/intellij/codeInsight/controlflow/impl/ConditionalInstructionImpl.class + com/intellij/codeInsight/controlflow/impl/ControlFlowImpl.class + com/intellij/codeInsight/controlflow/impl/InstructionBaseImpl.class + com/intellij/codeInsight/controlflow/impl/InstructionImpl.class + com/intellij/codeInsight/dataflow/DfaInstance.class + com/intellij/codeInsight/dataflow/Semilattice.class + com/intellij/codeInsight/dataflow/map/DfaMapInstance.class + com/intellij/codeInsight/dataflow/map/MapSemilattice.class + com/intellij/codeInsight/lookup/LookupItem.class + com/intellij/configurationStore/Scheme_implKt$CURRENT_NAME_CONVERTER$1.class + com/intellij/configurationStore/Scheme_implKt$MODERN_NAME_CONVERTER$1.class + com/intellij/configurationStore/Scheme_implKt$OLD_NAME_CONVERTER$1.class + com/intellij/configurationStore/Scheme_implKt$sha1MessageDigestThreadLocal$1.class + com/intellij/configurationStore/Scheme_implKt.class com/intellij/core/CoreASTFactory.class + com/intellij/core/CoreEncodingProjectManager.class com/intellij/core/CoreFileTypeRegistry.class + com/intellij/core/CoreModuleManager.class + com/intellij/core/CoreProjectJdkTable.class + com/intellij/core/CoreProjectScopeBuilder$ContentSearchScope.class + com/intellij/core/CoreProjectScopeBuilder$CoreLibrariesScope.class + com/intellij/core/CoreProjectScopeBuilder.class com/intellij/execution/KillableProcess.class com/intellij/execution/console/BaseConsoleExecuteActionHandler.class com/intellij/execution/console/ConsoleExecuteAction$ConsoleExecuteActionHandler.class com/intellij/execution/console/ConsoleRootType.class + com/intellij/execution/console/LanguageConsoleImpl.class com/intellij/execution/console/LanguageConsoleView.class com/intellij/execution/console/ProcessBackedConsoleExecuteActionHandler.class + com/intellij/execution/impl/ConsoleState$NotStartedStated.class + com/intellij/execution/impl/ConsoleState.class + com/intellij/execution/impl/ConsoleViewImpl$1.class + com/intellij/execution/impl/ConsoleViewImpl$1ScrollRunnable.class + com/intellij/execution/impl/ConsoleViewImpl$3.class + com/intellij/execution/impl/ConsoleViewImpl$6.class + com/intellij/execution/impl/ConsoleViewImpl$BackSpaceHandler.class + com/intellij/execution/impl/ConsoleViewImpl$ClearRunnable.class + com/intellij/execution/impl/ConsoleViewImpl$ConsoleAction.class + com/intellij/execution/impl/ConsoleViewImpl$DeleteHandler.class + com/intellij/execution/impl/ConsoleViewImpl$FlushRunnable.class + com/intellij/execution/impl/ConsoleViewImpl$PasteHandler.class + com/intellij/execution/impl/ConsoleViewImpl$TabHandler.class + com/intellij/execution/impl/ConsoleViewImpl.class + com/intellij/execution/impl/MyDiffContainer.class com/intellij/execution/process/ColoredProcessHandler.class com/intellij/execution/process/KillableColoredProcessHandler.class com/intellij/execution/process/KillableProcessHandler.class @@ -242,6 +400,9 @@ com/intellij/extapi/psi/StubBasedPsiElementBase$1.class com/intellij/extapi/psi/StubBasedPsiElementBase.class com/intellij/ide/errorTreeView/NewErrorTreeViewPanel.class + com/intellij/ide/startup/ServiceNotReadyException.class + com/intellij/ide/util/AppPropertiesComponentImpl.class + com/intellij/ide/util/PropertiesComponentImpl.class com/intellij/lang/ASTFactory$DefaultFactoryHolder.class com/intellij/lang/ASTFactory.class com/intellij/lang/DefaultASTFactory.class @@ -254,6 +415,7 @@ com/intellij/lang/impl/MarkerPool.class com/intellij/lang/impl/MarkerProduction.class com/intellij/lang/impl/PsiBuilderFactoryImpl.class + com/intellij/lang/impl/PsiBuilderImpl$1.class com/intellij/lang/impl/PsiBuilderImpl$ErrorItem.class com/intellij/lang/impl/PsiBuilderImpl$LazyParseableToken.class com/intellij/lang/impl/PsiBuilderImpl$Node.class @@ -266,14 +428,30 @@ com/intellij/lang/impl/TokenSequence$Builder.class com/intellij/lang/impl/TokenSequence.class com/intellij/mock/MockApplication.class + com/intellij/mock/MockApplicationEx.class com/intellij/mock/MockComponentManager$1.class com/intellij/mock/MockComponentManager.class com/intellij/mock/MockFileDocumentManagerImpl.class + com/intellij/mock/MockFileIndexFacade.class com/intellij/mock/MockProject$1.class com/intellij/mock/MockProject.class com/intellij/notebook/editor/BackedVirtualFile.class + com/intellij/openapi/application/ex/ApplicationEx.class + com/intellij/openapi/application/ex/ApplicationInfoEx$UpdateUrls.class + com/intellij/openapi/application/ex/ApplicationInfoEx.class com/intellij/openapi/application/impl/AnyModalityState.class + com/intellij/openapi/application/impl/ApplicationInfoImpl.class + com/intellij/openapi/editor/actions/ScrollToTheEndToolbarAction.class + com/intellij/openapi/editor/ex/DocumentBulkUpdateListener$Adapter.class + com/intellij/openapi/editor/ex/DocumentBulkUpdateListener.class com/intellij/openapi/editor/ex/DocumentEx.class + com/intellij/openapi/editor/ex/EditReadOnlyListener.class + com/intellij/openapi/editor/ex/EditorEventMulticasterEx.class + com/intellij/openapi/editor/ex/EditorEx.class + com/intellij/openapi/editor/ex/EditorPopupHandler.class + com/intellij/openapi/editor/ex/ErrorStripeListener.class + com/intellij/openapi/editor/ex/FocusChangeListener.class + com/intellij/openapi/editor/ex/FoldingListener.class com/intellij/openapi/editor/ex/LineIterator.class com/intellij/openapi/editor/ex/MarkupIterator.class com/intellij/openapi/editor/ex/PrioritizedDocumentListener$1.class @@ -283,6 +461,9 @@ com/intellij/openapi/editor/impl/DocumentImpl$1.class com/intellij/openapi/editor/impl/DocumentImpl$UnexpectedBulkUpdateStateException.class com/intellij/openapi/editor/impl/DocumentImpl.class + com/intellij/openapi/editor/impl/EditorFactoryImpl$1.class + com/intellij/openapi/editor/impl/EditorFactoryImpl.class + com/intellij/openapi/editor/impl/FrozenDocument.class com/intellij/openapi/editor/impl/Interval.class com/intellij/openapi/editor/impl/IntervalTree.class com/intellij/openapi/editor/impl/IntervalTreeImpl$IntervalNode.class @@ -298,9 +479,30 @@ com/intellij/openapi/editor/impl/RedBlackTree$Node.class com/intellij/openapi/editor/impl/RedBlackTree.class com/intellij/openapi/editor/impl/event/DocumentEventImpl.class + com/intellij/openapi/editor/impl/event/EditorEventMulticasterImpl.class + com/intellij/openapi/fileEditor/impl/LoadTextUtil$ConvertResult.class + com/intellij/openapi/fileEditor/impl/LoadTextUtil$DetectResult.class com/intellij/openapi/fileEditor/impl/LoadTextUtil$SevenBitCharset.class com/intellij/openapi/fileEditor/impl/LoadTextUtil.class com/intellij/openapi/fileTypes/PlainTextLanguage.class + com/intellij/openapi/fileTypes/ex/FileTypeManagerEx.class + com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl$1.class + com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl$2.class + com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl$3.class + com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl$StandardFileType.class + com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl.class + com/intellij/openapi/fileTypes/impl/IgnoredFileCache$1.class + com/intellij/openapi/fileTypes/impl/IgnoredFileCache.class + com/intellij/openapi/module/impl/ModuleEx.class + com/intellij/openapi/module/impl/ModuleManagerImpl$ModuleModelImpl.class + com/intellij/openapi/module/impl/ModuleManagerImpl.class + com/intellij/openapi/options/EmptySchemesManager.class + com/intellij/openapi/options/NonLazySchemeProcessor.class + com/intellij/openapi/options/SchemeManager$Companion.class + com/intellij/openapi/options/SchemeManager.class + com/intellij/openapi/options/SchemeManagerFactory$Companion.class + com/intellij/openapi/options/SchemeManagerFactory.class + com/intellij/openapi/options/SchemeProcessor.class com/intellij/openapi/progress/impl/CoreProgressManager$1.class com/intellij/openapi/progress/impl/CoreProgressManager$2.class com/intellij/openapi/progress/impl/CoreProgressManager$3.class @@ -311,29 +513,94 @@ com/intellij/openapi/progress/impl/ProgressManagerImpl$1.class com/intellij/openapi/progress/impl/ProgressManagerImpl.class com/intellij/openapi/progress/util/PingProgress.class + com/intellij/openapi/projectRoots/impl/MockSdk$1.class + com/intellij/openapi/projectRoots/impl/MockSdk$2.class + com/intellij/openapi/projectRoots/impl/MockSdk.class + com/intellij/openapi/roots/AdditionalLibraryRootsProvider.class + com/intellij/openapi/roots/ProjectExtension.class + com/intellij/openapi/roots/impl/DirectoryIndex.class + com/intellij/openapi/roots/impl/DirectoryIndexExcludePolicy.class + com/intellij/openapi/roots/impl/DirectoryIndexImpl$1.class + com/intellij/openapi/roots/impl/DirectoryIndexImpl$2.class + com/intellij/openapi/roots/impl/DirectoryIndexImpl$3.class + com/intellij/openapi/roots/impl/DirectoryIndexImpl.class + com/intellij/openapi/roots/impl/DirectoryInfo.class + com/intellij/openapi/roots/impl/DirectoryInfoImpl.class + com/intellij/openapi/roots/impl/DirectoryInfoWithExcludePatterns.class + com/intellij/openapi/roots/impl/FileIndexBase.class + com/intellij/openapi/roots/impl/ModulesOrderEnumerator.class + com/intellij/openapi/roots/impl/NonProjectDirectoryInfo$1.class + com/intellij/openapi/roots/impl/NonProjectDirectoryInfo$2.class + com/intellij/openapi/roots/impl/NonProjectDirectoryInfo.class + com/intellij/openapi/roots/impl/OrderEnumeratorBase.class + com/intellij/openapi/roots/impl/OrderRootsCache.class + com/intellij/openapi/roots/impl/PackageDirectoryCache.class + com/intellij/openapi/roots/impl/ProjectFileIndexImpl.class + com/intellij/openapi/roots/impl/ProjectOrderEnumerator.class + com/intellij/openapi/roots/impl/ProjectRootManagerImpl$1.class + com/intellij/openapi/roots/impl/ProjectRootManagerImpl$BatchSession.class + com/intellij/openapi/roots/impl/ProjectRootManagerImpl$JdkTableMultiListener.class + com/intellij/openapi/roots/impl/ProjectRootManagerImpl$ListenerContainer.class + com/intellij/openapi/roots/impl/ProjectRootManagerImpl$RootProviderChangeListener.class + com/intellij/openapi/roots/impl/ProjectRootManagerImpl.class + com/intellij/openapi/roots/impl/RootIndex$1.class + com/intellij/openapi/roots/impl/RootIndex$RootInfo.class + com/intellij/openapi/roots/impl/RootIndex.class + com/intellij/openapi/vfs/ex/VirtualFileManagerEx.class + com/intellij/openapi/vfs/impl/VirtualFileManagerImpl$1.class + com/intellij/openapi/vfs/impl/VirtualFileManagerImpl.class + com/intellij/openapi/vfs/local/CoreLocalFileSystem.class + com/intellij/openapi/vfs/local/CoreLocalVirtualFile.class com/intellij/openapi/wm/ex/ProgressIndicatorEx.class com/intellij/psi/AbstractFileViewProvider$Content.class com/intellij/psi/AbstractFileViewProvider$VirtualFileContent.class com/intellij/psi/AbstractFileViewProvider.class com/intellij/psi/SingleRootFileViewProvider.class + com/intellij/psi/filters/TrueFilter.class + com/intellij/psi/impl/AnyPsiChangeListener$Adapter.class com/intellij/psi/impl/AnyPsiChangeListener.class com/intellij/psi/impl/DebugUtil$1.class com/intellij/psi/impl/DebugUtil$IncorrectTreeStructureException.class com/intellij/psi/impl/DebugUtil$TreeToBuffer.class com/intellij/psi/impl/DebugUtil.class + com/intellij/psi/impl/DocumentCommitProcessor.class + com/intellij/psi/impl/DocumentCommitThread.class com/intellij/psi/impl/GeneratedMarkerVisitor.class + com/intellij/psi/impl/PsiCachedValue.class + com/intellij/psi/impl/PsiCachedValueImpl.class + com/intellij/psi/impl/PsiCachedValuesFactory$1.class + com/intellij/psi/impl/PsiCachedValuesFactory$2.class + com/intellij/psi/impl/PsiCachedValuesFactory$3.class + com/intellij/psi/impl/PsiCachedValuesFactory.class + com/intellij/psi/impl/PsiDocumentManagerBase$2.class + com/intellij/psi/impl/PsiDocumentManagerBase$PriorityEventCollector.class + com/intellij/psi/impl/PsiDocumentManagerBase.class + com/intellij/psi/impl/PsiDocumentManagerImpl$1.class + com/intellij/psi/impl/PsiDocumentManagerImpl$2.class + com/intellij/psi/impl/PsiDocumentManagerImpl.class + com/intellij/psi/impl/PsiDocumentTransactionListener.class com/intellij/psi/impl/PsiElementBase.class com/intellij/psi/impl/PsiFileEx.class com/intellij/psi/impl/PsiFileFactoryImpl.class com/intellij/psi/impl/PsiManagerEx.class com/intellij/psi/impl/PsiManagerImpl.class + com/intellij/psi/impl/PsiModificationTrackerImpl$1.class + com/intellij/psi/impl/PsiModificationTrackerImpl$2.class + com/intellij/psi/impl/PsiModificationTrackerImpl.class + com/intellij/psi/impl/PsiParameterizedCachedValue.class + com/intellij/psi/impl/PsiToDocumentSynchronizer.class com/intellij/psi/impl/PsiTreeChangeEventImpl.class + com/intellij/psi/impl/PsiTreeChangePreprocessor.class com/intellij/psi/impl/file/PsiBinaryFileImpl.class + com/intellij/psi/impl/file/PsiDirectoryFactory.class + com/intellij/psi/impl/file/PsiDirectoryFactoryImpl.class + com/intellij/psi/impl/file/PsiDirectoryImpl.class com/intellij/psi/impl/file/PsiLargeBinaryFileImpl.class com/intellij/psi/impl/file/impl/FileManager.class com/intellij/psi/impl/file/impl/FileManagerImpl$1.class com/intellij/psi/impl/file/impl/FileManagerImpl$2.class com/intellij/psi/impl/file/impl/FileManagerImpl.class + com/intellij/psi/impl/light/LightElement.class com/intellij/psi/impl/source/CharTableImpl$1.class com/intellij/psi/impl/source/CharTableImpl$StringHashToCharSequencesMap.class com/intellij/psi/impl/source/CharTableImpl.class @@ -349,6 +616,14 @@ com/intellij/psi/impl/source/SubstrateRef$2.class com/intellij/psi/impl/source/SubstrateRef$StubRef.class com/intellij/psi/impl/source/SubstrateRef.class + com/intellij/psi/impl/source/codeStyle/CodeEditUtil.class + com/intellij/psi/impl/source/resolve/FileContextUtil.class + com/intellij/psi/impl/source/resolve/ResolveCache$1.class + com/intellij/psi/impl/source/resolve/ResolveCache$2.class + com/intellij/psi/impl/source/resolve/ResolveCache$AbstractResolver.class + com/intellij/psi/impl/source/resolve/ResolveCache$PolyVariantResolver.class + com/intellij/psi/impl/source/resolve/ResolveCache$StrongValueReference.class + com/intellij/psi/impl/source/resolve/ResolveCache.class com/intellij/psi/impl/source/tree/AstBufferUtil$BufferVisitor.class com/intellij/psi/impl/source/tree/AstBufferUtil.class com/intellij/psi/impl/source/tree/CompositeElement$1.class @@ -379,16 +654,71 @@ com/intellij/psi/impl/source/tree/TreeUtil$3.class com/intellij/psi/impl/source/tree/TreeUtil$4.class com/intellij/psi/impl/source/tree/TreeUtil.class + com/intellij/psi/search/ProjectScopeBuilderImpl$1.class + com/intellij/psi/search/ProjectScopeBuilderImpl$2.class + com/intellij/psi/search/ProjectScopeBuilderImpl$3.class + com/intellij/psi/search/ProjectScopeBuilderImpl$4.class + com/intellij/psi/search/ProjectScopeBuilderImpl.class + com/intellij/psi/search/ProjectScopeImpl.class com/intellij/psi/stubs/ObjectStubTree.class + com/intellij/psi/stubs/StubIndexImpl$1.class + com/intellij/psi/stubs/StubIndexImpl$2.class + com/intellij/psi/stubs/StubIndexImpl$3.class + com/intellij/psi/stubs/StubIndexImpl$AsyncState.class + com/intellij/psi/stubs/StubIndexImpl$StubIdListContainerAction.class + com/intellij/psi/stubs/StubIndexImpl$StubIndexInitialization.class + com/intellij/psi/stubs/StubIndexImpl.class + com/intellij/psi/stubs/StubProcessingHelper.class + com/intellij/psi/stubs/StubProcessingHelperBase.class com/intellij/psi/stubs/StubTree.class + com/intellij/psi/stubs/StubUpdatingIndex$1.class + com/intellij/psi/stubs/StubUpdatingIndex.class com/intellij/psi/text/BlockSupport$ReparsedSuccessfullyException.class com/intellij/psi/text/BlockSupport.class com/intellij/psi/tree/IStubFileElementType.class + com/intellij/util/CachedValueBase$Data.class + com/intellij/util/CachedValueBase$ProfilingData.class + com/intellij/util/CachedValueBase.class + com/intellij/util/CachedValueLeakChecker.class + com/intellij/util/CachedValuesFactory.class + com/intellij/util/CachedValuesManagerImpl.class com/intellij/util/PatchedWeakReference.class + com/intellij/util/indexing/CustomImplementationFileBasedIndexExtension.class + com/intellij/util/indexing/CustomInputsIndexFileBasedIndexExtension.class + com/intellij/util/indexing/DeletedVirtualFileStub.class + com/intellij/util/indexing/FileBasedIndexImpl$1.class + com/intellij/util/indexing/FileBasedIndexImpl$2.class + com/intellij/util/indexing/FileBasedIndexImpl$3.class + com/intellij/util/indexing/FileBasedIndexImpl$4.class + com/intellij/util/indexing/FileBasedIndexImpl$ChangedFilesCollector$1.class + com/intellij/util/indexing/FileBasedIndexImpl$ChangedFilesCollector.class + com/intellij/util/indexing/FileBasedIndexImpl$DocumentContent.class + com/intellij/util/indexing/FileBasedIndexImpl$ProjectIndexableFilesFilter.class + com/intellij/util/indexing/FileBasedIndexImpl$VirtualFileUpdateTask.class + com/intellij/util/indexing/FileBasedIndexImpl.class + com/intellij/util/indexing/FileBasedIndexScanRunnableCollector.class + com/intellij/util/indexing/FileBasedIndexScanRunnableCollectorImpl.class + com/intellij/util/indexing/IndexAccessValidator.class + com/intellij/util/indexing/IndexInfrastructure$DataInitialization.class + com/intellij/util/indexing/IndexInfrastructure.class + com/intellij/util/indexing/IndexedFilesListener$1.class + com/intellij/util/indexing/IndexedFilesListener.class com/intellij/util/indexing/IndexingDataKeys.class + com/intellij/util/indexing/MemoryIndexStorage$BufferingStateListener.class + com/intellij/util/indexing/PerIndexDocumentVersionMap.class + com/intellij/util/indexing/SilentProgressIndicator.class + com/intellij/util/indexing/StorageGuard$1.class + com/intellij/util/indexing/StorageGuard$2.class + com/intellij/util/indexing/StorageGuard$StorageModeExitHandler.class + com/intellij/util/indexing/StorageGuard.class + com/intellij/util/indexing/UnindexedFilesUpdater.class + com/intellij/util/indexing/UpdatableIndex.class + com/intellij/util/indexing/UpdateTask.class + com/intellij/util/indexing/VfsEventsMerger.class org/intellij/lang/regexp/DefaultRegExpPropertiesProvider.class org/intellij/lang/regexp/RegExpLanguageHost.class org/intellij/lang/regexp/psi/RegExpGroup$Type.class + org/jetbrains/ide/PooledThreadExecutor.class @@ -398,6 +728,7 @@ com/jetbrains/python/console/pydev/ConsoleCommunication.class com/jetbrains/python/console/pydev/ConsoleCommunicationListener.class com/jetbrains/python/debugger/PyFrameAccessor.class + com/jetbrains/python/debugger/PySignature.class @@ -413,6 +744,7 @@ com/intellij/execution/process/ProcessListener.class com/intellij/openapi/Disposable.class com/intellij/openapi/application/AccessToken.class + com/intellij/openapi/application/PathManager.class com/intellij/openapi/diagnostic/Attachment.class com/intellij/openapi/diagnostic/ControlFlowException.class com/intellij/openapi/diagnostic/DefaultLogger.class @@ -422,48 +754,12 @@ com/intellij/openapi/diagnostic/Logger.class com/intellij/openapi/diagnostic/RuntimeExceptionWithAttachments.class com/intellij/openapi/progress/ProcessCanceledException.class - com/intellij/openapi/util/AtomicNotNullLazyValue$1.class - com/intellij/openapi/util/AtomicNotNullLazyValue.class - com/intellij/openapi/util/Comparing.class - com/intellij/openapi/util/Condition$1.class - com/intellij/openapi/util/Condition$2.class - com/intellij/openapi/util/Condition$3.class - com/intellij/openapi/util/Condition.class - com/intellij/openapi/util/Conditions$1.class - com/intellij/openapi/util/Conditions$8.class - com/intellij/openapi/util/Conditions.class - com/intellij/openapi/util/Disposer$1.class - com/intellij/openapi/util/Disposer$2.class - com/intellij/openapi/util/Disposer.class - com/intellij/openapi/util/EmptyRunnable.class - com/intellij/openapi/util/Getter.class - com/intellij/openapi/util/Key.class - com/intellij/openapi/util/KeyWithDefaultValue.class - com/intellij/openapi/util/LowMemoryWatcher$1.class - com/intellij/openapi/util/LowMemoryWatcher$LowMemoryWatcherType.class - com/intellij/openapi/util/LowMemoryWatcher.class - com/intellij/openapi/util/NotNullLazyKey.class - com/intellij/openapi/util/NotNullLazyValue$1.class - com/intellij/openapi/util/NotNullLazyValue$2.class - com/intellij/openapi/util/NotNullLazyValue.class - com/intellij/openapi/util/Pair.class - com/intellij/openapi/util/RecursionGuard$StackStamp.class - com/intellij/openapi/util/RecursionGuard.class - com/intellij/openapi/util/RecursionManager$1.class - com/intellij/openapi/util/RecursionManager$2.class - com/intellij/openapi/util/RecursionManager$CalculationStack.class - com/intellij/openapi/util/RecursionManager.class - com/intellij/openapi/util/Segment.class - com/intellij/openapi/util/StackOverflowPreventedException.class - com/intellij/openapi/util/StaticGetter.class - com/intellij/openapi/util/SystemInfo.class - com/intellij/openapi/util/SystemInfoRt.class - com/intellij/openapi/util/TextRange.class - com/intellij/openapi/util/UnprotectedUserDataHolder.class - com/intellij/openapi/util/UserDataHolder.class - com/intellij/openapi/util/UserDataHolderBase.class - com/intellij/openapi/util/UserDataHolderEx.class - com/intellij/openapi/util/UserDataHolderUnprotected.class + com/intellij/openapi/ui/Splittable.class + com/intellij/openapi/ui/Splitter.class + com/intellij/openapi/util/*.class + com/intellij/openapi/util/io/BufferExposingByteArrayInputStream.class + com/intellij/openapi/util/io/BufferExposingByteArrayOutputStream.class + com/intellij/openapi/util/io/ByteSequence.class com/intellij/openapi/util/io/FileTooBigException.class com/intellij/openapi/util/io/FileUtil$1.class com/intellij/openapi/util/io/FileUtil$2.class @@ -474,6 +770,7 @@ com/intellij/openapi/util/io/FileUtilRt$RepeatableIOOperation.class com/intellij/openapi/util/io/FileUtilRt$SymlinkResolver.class com/intellij/openapi/util/io/FileUtilRt.class + com/intellij/openapi/util/io/NullAppendable.class com/intellij/openapi/util/io/PathExecLazyValue.class com/intellij/openapi/util/objectTree/ObjectNode.class com/intellij/openapi/util/objectTree/ObjectTree.class @@ -482,16 +779,24 @@ com/intellij/openapi/util/registry/RegistryValue.class com/intellij/openapi/util/text/CharSequenceWithStringHash.class com/intellij/openapi/util/text/LineTokenizer.class + com/intellij/openapi/util/text/StringUtil$1$1.class + com/intellij/openapi/util/text/StringUtil$1.class com/intellij/openapi/util/text/StringUtil$MyHtml2Text.class com/intellij/openapi/util/text/StringUtil.class com/intellij/openapi/util/text/StringUtilRt.class + com/intellij/openapi/vfs/CharsetToolkit$GuessedEncoding.class com/intellij/openapi/vfs/CharsetToolkit.class com/intellij/reference/SoftReference.class + com/intellij/ui/JBColor.class com/intellij/util/ArrayFactory.class com/intellij/util/ArrayUtil.class com/intellij/util/ArrayUtilRt.class com/intellij/util/BitUtil.class + com/intellij/util/CommonProcessors$CollectProcessor.class + com/intellij/util/CommonProcessors$FindFirstProcessor.class + com/intellij/util/CommonProcessors$FindProcessor.class com/intellij/util/ConcurrencyUtil.class + com/intellij/util/Consumer.class com/intellij/util/EventDispatcher$1.class com/intellij/util/EventDispatcher$2.class com/intellij/util/EventDispatcher.class @@ -512,22 +817,84 @@ com/intellij/util/NotNullizer.class com/intellij/util/NullableFunction$1.class com/intellij/util/NullableFunction.class + com/intellij/util/ObjectUtils$1.class com/intellij/util/ObjectUtils$Sentinel.class com/intellij/util/ObjectUtils.class + com/intellij/util/PairProcessor.class com/intellij/util/Processor.class com/intellij/util/ReflectionUtil.class com/intellij/util/SmartFMap.class com/intellij/util/SmartList$SingletonIterator.class com/intellij/util/SmartList.class + com/intellij/util/SystemProperties.class + com/intellij/util/ThreeState.class com/intellij/util/ThrowableRunnable.class com/intellij/util/WalkingState$TreeGuide.class com/intellij/util/WalkingState.class + com/intellij/util/concurrency/AppDelayQueue.class + com/intellij/util/concurrency/AppExecutorUtil.class + com/intellij/util/concurrency/AppScheduledExecutorService$BackendThreadPoolExecutor.class + com/intellij/util/concurrency/AppScheduledExecutorService$Holder.class + com/intellij/util/concurrency/AppScheduledExecutorService$MyThreadFactory.class + com/intellij/util/concurrency/AppScheduledExecutorService.class com/intellij/util/concurrency/AtomicFieldUpdater.class + com/intellij/util/concurrency/BoundedTaskExecutor$1.class + com/intellij/util/concurrency/BoundedTaskExecutor$2.class + com/intellij/util/concurrency/BoundedTaskExecutor.class + com/intellij/util/concurrency/CountingThreadFactory.class + com/intellij/util/concurrency/SchedulingWrapper.class + com/intellij/util/concurrency/Semaphore$Sync.class + com/intellij/util/concurrency/Semaphore.class + com/intellij/util/concurrency/SequentialTaskExecutor.class com/intellij/util/containers/*.class + com/intellij/util/containers/hash/EqualityPolicy$1.class + com/intellij/util/containers/hash/EqualityPolicy$2.class + com/intellij/util/containers/hash/EqualityPolicy.class + com/intellij/util/containers/hash/HashUtil.class + com/intellij/util/containers/hash/LinkedHashMap$Entry.class + com/intellij/util/containers/hash/LinkedHashMap$EntrySet$1.class + com/intellij/util/containers/hash/LinkedHashMap$EntrySet.class + com/intellij/util/containers/hash/LinkedHashMap$KeySet$1.class + com/intellij/util/containers/hash/LinkedHashMap$KeySet.class + com/intellij/util/containers/hash/LinkedHashMap$LinkedHashIterator.class + com/intellij/util/containers/hash/LinkedHashMap$Values$1.class + com/intellij/util/containers/hash/LinkedHashMap$Values.class + com/intellij/util/containers/hash/LinkedHashMap.class com/intellij/util/diff/DiffTreeChangeBuilder.class com/intellij/util/diff/FlyweightCapableTreeStructure.class com/intellij/util/diff/ShallowNodeComparator.class + com/intellij/util/graph/Graph.class com/intellij/util/graph/InboundSemiGraph.class + com/intellij/util/graph/OutboundSemiGraph.class + com/intellij/util/indexing/DataIndexer.class + com/intellij/util/indexing/IndexExtension.class + com/intellij/util/indexing/IndexId.class + com/intellij/util/indexing/InvertedIndex.class + com/intellij/util/indexing/StorageException.class + com/intellij/util/indexing/ValueContainer$ContainerAction.class + com/intellij/util/indexing/impl/IndexStorage.class + com/intellij/util/indexing/impl/InputDataDiffBuilder.class + com/intellij/util/indexing/impl/MapInputDataDiffBuilder.class + com/intellij/util/io/CompressedAppendableFile.class + com/intellij/util/io/DataExternalizer.class + com/intellij/util/io/DataOutputStream.class + com/intellij/util/io/FileAccessorCache$1.class + com/intellij/util/io/FileAccessorCache.class + com/intellij/util/io/InlineKeyDescriptor.class + com/intellij/util/io/IntInlineKeyDescriptor.class + com/intellij/util/io/KeyDescriptor.class + com/intellij/util/io/PersistentEnumeratorBase$CorruptedException.class + com/intellij/util/io/PersistentHashMapValueStorage$1.class + com/intellij/util/io/PersistentHashMapValueStorage$2.class + com/intellij/util/io/PersistentHashMapValueStorage$3.class + com/intellij/util/io/PersistentHashMapValueStorage$MyCompressedAppendableFile.class + com/intellij/util/io/PersistentHashMapValueStorage$OutputStreamOverRandomAccessFileCache.class + com/intellij/util/io/PersistentHashMapValueStorage$RAReader.class + com/intellij/util/io/PersistentHashMapValueStorage.class + com/intellij/util/io/URLUtil$1.class + com/intellij/util/io/URLUtil.class + com/intellij/util/io/UnsyncByteArrayInputStream.class + com/intellij/util/io/UnsyncByteArrayOutputStream.class com/intellij/util/io/storage/HeavyProcessLatch$1.class com/intellij/util/io/storage/HeavyProcessLatch$HeavyProcessListener.class com/intellij/util/io/storage/HeavyProcessLatch.class @@ -545,6 +912,7 @@ com/intellij/util/messages/Topic$BroadcastDirection.class com/intellij/util/messages/Topic.class com/intellij/util/messages/impl/MessageBusConnectionImpl.class + com/intellij/util/messages/impl/MessageBusImpl$1.class com/intellij/util/messages/impl/MessageBusImpl$RootBus.class com/intellij/util/messages/impl/MessageBusImpl.class com/intellij/util/text/ByteArrayCharSequence.class @@ -553,6 +921,7 @@ com/intellij/util/text/CharArrayExternalizable.class com/intellij/util/text/CharArrayUtil.class com/intellij/util/text/CharSequenceBackedByArray.class + com/intellij/util/text/CharSequenceHashingStrategy.class com/intellij/util/text/CharSequenceReader.class com/intellij/util/text/CharSequenceSubSequence.class com/intellij/util/text/FilePathHashingStrategy.class @@ -565,7 +934,11 @@ com/intellij/util/text/ImmutableText$WideLeafNode.class com/intellij/util/text/ImmutableText.class com/intellij/util/text/StringFactory.class + com/intellij/util/text/StringTokenizer.class com/intellij/util/text/UnsyncCharArrayReader.class + com/intellij/util/ui/EditableModel.class + com/intellij/util/ui/ItemRemovable.class + com/intellij/util/ui/JBDimension.class misc/registry.properties @@ -583,22 +956,53 @@ com.jetbrains.pycharm:platform-api + com/intellij/AppTopics.class + com/intellij/ProjectTopics.class + com/intellij/codeInsight/CharTailType.class + com/intellij/codeInsight/TailType$1.class + com/intellij/codeInsight/TailType$2.class + com/intellij/codeInsight/TailType$3.class + com/intellij/codeInsight/TailType$4.class + com/intellij/codeInsight/TailType$5.class + com/intellij/codeInsight/TailType$TailTypeEQ.class + com/intellij/codeInsight/TailType.class com/intellij/codeInsight/completion/InsertHandler.class + com/intellij/codeInsight/controlflow/ConditionalInstruction.class + com/intellij/codeInsight/controlflow/ControlFlow.class + com/intellij/codeInsight/controlflow/Instruction.class + com/intellij/codeInsight/controlflow/TransparentInstruction.class com/intellij/codeInsight/lookup/LookupElement.class com/intellij/codeInsight/lookup/LookupElementBuilder.class + com/intellij/codeInsight/lookup/MutableLookupElement.class com/intellij/diagnostic/ImplementationConflictException.class com/intellij/diagnostic/PluginException.class com/intellij/execution/ExecutionException.class + com/intellij/execution/configurations/ConfigurationFactory.class + com/intellij/execution/configurations/ConfigurationType.class + com/intellij/execution/configurations/ConfigurationTypeBase$Companion.class + com/intellij/execution/configurations/ConfigurationTypeBase.class + com/intellij/execution/configurations/ConfigurationTypeUtil.class + com/intellij/execution/configurations/RunConfiguration.class + com/intellij/execution/configurations/RunConfigurationTypeKt.class + com/intellij/execution/configurations/RunProfile.class com/intellij/execution/filters/Filter.class + com/intellij/execution/filters/HyperlinkInfo.class + com/intellij/execution/filters/InputFilter.class com/intellij/execution/process/AnsiEscapeDecoder$ColoredTextAcceptor.class com/intellij/execution/process/OSProcessHandler.class com/intellij/execution/ui/ConsoleView.class com/intellij/execution/ui/ExecutionConsole.class + com/intellij/execution/ui/ObservableConsoleView.class com/intellij/ide/CopyProvider.class com/intellij/ide/OccurenceNavigator.class com/intellij/ide/scratch/RootType.class + com/intellij/ide/scratch/ScratchFileService.class + com/intellij/ide/util/DelegatingProgressIndicator.class + com/intellij/ide/util/PropertiesComponent.class + com/intellij/injected/editor/DocumentWindow.class com/intellij/injected/editor/VirtualFileWindow.class com/intellij/lang/ASTNode.class + com/intellij/lang/DependentLanguage.class com/intellij/lang/FCTSBackedLighterAST.class com/intellij/lang/FileASTNode.class com/intellij/lang/ITokenTypeRemapper.class @@ -627,41 +1031,90 @@ com/intellij/lexer/LexerBase.class com/intellij/lexer/LexerPosition.class com/intellij/lexer/MergeFunction.class + com/intellij/lexer/MergingLexerAdapter$1.class com/intellij/lexer/MergingLexerAdapter$MyMergeFunction.class com/intellij/lexer/MergingLexerAdapter.class com/intellij/lexer/MergingLexerAdapterBase.class com/intellij/model/SymbolReference.class + com/intellij/model/SymbolResolveResult.class com/intellij/navigation/ColoredItemPresentation.class com/intellij/navigation/ItemPresentation.class com/intellij/navigation/NavigationItem.class + com/intellij/notification/NotificationDisplayType.class + com/intellij/notification/NotificationGroup.class com/intellij/openapi/actionSystem/ActionGroup.class com/intellij/openapi/actionSystem/AnAction.class + com/intellij/openapi/actionSystem/DataContext.class com/intellij/openapi/actionSystem/DataProvider.class com/intellij/openapi/actionSystem/DefaultActionGroup.class + com/intellij/openapi/actionSystem/ShortcutSet.class com/intellij/openapi/actionSystem/ToggleAction.class com/intellij/openapi/actionSystem/Toggleable.class com/intellij/openapi/actionSystem/UpdateInBackground.class com/intellij/openapi/application/Application.class + com/intellij/openapi/application/ApplicationInfo.class + com/intellij/openapi/application/ApplicationListener.class com/intellij/openapi/application/ApplicationManager$2.class com/intellij/openapi/application/ApplicationManager.class + com/intellij/openapi/application/BaseActionRunnable.class com/intellij/openapi/application/CachedSingletonsRegistry.class com/intellij/openapi/application/ModalityState.class + com/intellij/openapi/application/ReadAction.class + com/intellij/openapi/components/BaseComponent.class com/intellij/openapi/components/ComponentManager.class + com/intellij/openapi/components/NamedComponent.class + com/intellij/openapi/components/PersistentStateComponent.class + com/intellij/openapi/components/ProjectComponent.class + com/intellij/openapi/components/RoamingType.class com/intellij/openapi/components/ServiceManager.class com/intellij/openapi/editor/Document.class + com/intellij/openapi/editor/Editor.class + com/intellij/openapi/editor/EditorFactory.class + com/intellij/openapi/editor/FoldingModel.class com/intellij/openapi/editor/RangeMarker.class com/intellij/openapi/editor/ReadOnlyFragmentModificationException.class com/intellij/openapi/editor/ReadOnlyModificationException.class + com/intellij/openapi/editor/TextAnnotationGutterProvider.class com/intellij/openapi/editor/actionSystem/EditorAction.class + com/intellij/openapi/editor/actionSystem/TypedActionHandler.class + com/intellij/openapi/editor/colors/EditorColorsListener.class + com/intellij/openapi/editor/colors/EditorColorsManager.class + com/intellij/openapi/editor/colors/EditorColorsScheme.class + com/intellij/openapi/editor/colors/TextAttributesScheme.class + com/intellij/openapi/editor/event/CaretListener.class com/intellij/openapi/editor/event/DocumentEvent.class com/intellij/openapi/editor/event/DocumentListener.class + com/intellij/openapi/editor/event/EditorEventMulticaster.class + com/intellij/openapi/editor/event/EditorFactoryListener.class + com/intellij/openapi/editor/event/EditorMouseListener.class + com/intellij/openapi/editor/event/EditorMouseMotionListener.class + com/intellij/openapi/editor/event/SelectionListener.class + com/intellij/openapi/editor/event/VisibleAreaListener.class + com/intellij/openapi/fileChooser/FileChooserDescriptor.class com/intellij/openapi/fileEditor/FileDocumentManager.class + com/intellij/openapi/fileEditor/FileDocumentManagerListener.class com/intellij/openapi/fileTypes/CharsetUtil.class + com/intellij/openapi/fileTypes/ExactFileNameMatcher.class + com/intellij/openapi/fileTypes/ExtensionFileNameMatcher.class + com/intellij/openapi/fileTypes/FileNameMatcher.class + com/intellij/openapi/fileTypes/FileNameMatcherEx.class com/intellij/openapi/fileTypes/FileType.class + com/intellij/openapi/fileTypes/FileTypeConsumer.class + com/intellij/openapi/fileTypes/FileTypeFactory.class + com/intellij/openapi/fileTypes/FileTypeListener.class + com/intellij/openapi/fileTypes/FileTypeManager.class com/intellij/openapi/fileTypes/FileTypeRegistry.class com/intellij/openapi/fileTypes/LanguageFileType.class + com/intellij/openapi/fileTypes/MockFileTypeManager.class com/intellij/openapi/fileTypes/UnknownFileType.class + com/intellij/openapi/fileTypes/ex/FileTypeIdentifiableByVirtualFile.class + com/intellij/openapi/module/ModifiableModuleModel.class + com/intellij/openapi/module/Module.class + com/intellij/openapi/module/ModuleManager.class + com/intellij/openapi/module/ModuleUtilCore.class + com/intellij/openapi/module/ModuleWithNameAlreadyExists.class com/intellij/openapi/options/Scheme.class + com/intellij/openapi/options/SchemeMetaInfo.class com/intellij/openapi/progress/NonCancelableSection.class com/intellij/openapi/progress/PerformInBackgroundOption.class com/intellij/openapi/progress/ProgressIndicator.class @@ -677,11 +1130,47 @@ com/intellij/openapi/progress/WrappedProgressIndicator.class com/intellij/openapi/project/DumbAware.class com/intellij/openapi/project/DumbAwareAction.class + com/intellij/openapi/project/DumbModeTask.class com/intellij/openapi/project/DumbService$DumbModeListener.class com/intellij/openapi/project/DumbService.class com/intellij/openapi/project/IndexNotReadyException.class + com/intellij/openapi/project/ModuleListener.class com/intellij/openapi/project/PossiblyDumbAware.class com/intellij/openapi/project/Project.class + com/intellij/openapi/project/ProjectCoreUtil.class + com/intellij/openapi/project/impl/ProjectLifecycleListener.class + com/intellij/openapi/projectRoots/ProjectJdkTable$Adapter.class + com/intellij/openapi/projectRoots/ProjectJdkTable$Listener.class + com/intellij/openapi/projectRoots/ProjectJdkTable.class + com/intellij/openapi/projectRoots/Sdk.class + com/intellij/openapi/projectRoots/SdkAdditionalData.class + com/intellij/openapi/projectRoots/SdkModificator.class + com/intellij/openapi/projectRoots/SdkType$1.class + com/intellij/openapi/projectRoots/SdkType.class + com/intellij/openapi/projectRoots/SdkTypeId$1.class + com/intellij/openapi/projectRoots/SdkTypeId.class + com/intellij/openapi/roots/CollectingContentIterator.class + com/intellij/openapi/roots/ContentIterator.class + com/intellij/openapi/roots/FileIndex.class + com/intellij/openapi/roots/FileIndexFacade.class + com/intellij/openapi/roots/ModuleRootListener.class + com/intellij/openapi/roots/OrderEntry.class + com/intellij/openapi/roots/OrderEnumerator.class + com/intellij/openapi/roots/OrderEnumeratorSettings.class + com/intellij/openapi/roots/OrderRootType$DocumentationRootType.class + com/intellij/openapi/roots/OrderRootType.class + com/intellij/openapi/roots/PersistentOrderRootType.class + com/intellij/openapi/roots/ProjectFileIndex$SERVICE.class + com/intellij/openapi/roots/ProjectFileIndex.class + com/intellij/openapi/roots/ProjectRootManager.class + com/intellij/openapi/roots/ProjectRootModificationTracker.class + com/intellij/openapi/roots/RootProvider$RootSetChangedListener.class + com/intellij/openapi/roots/RootProvider.class + com/intellij/openapi/roots/Synthetic.class + com/intellij/openapi/roots/ex/ProjectRootManagerEx$ProjectJdkListener.class + com/intellij/openapi/roots/ex/ProjectRootManagerEx.class + com/intellij/openapi/roots/impl/FilePropertyPusher.class + com/intellij/openapi/roots/libraries/LibraryTable$Listener.class com/intellij/openapi/ui/ComponentContainer.class com/intellij/openapi/ui/Queryable.class com/intellij/openapi/util/Iconable.class @@ -695,7 +1184,13 @@ com/intellij/openapi/vfs/NonPhysicalFileSystem.class com/intellij/openapi/vfs/PersistentFSConstants.class com/intellij/openapi/vfs/SavingRequestor.class + com/intellij/openapi/vfs/StandardFileSystems$1.class + com/intellij/openapi/vfs/StandardFileSystems$2.class + com/intellij/openapi/vfs/StandardFileSystems.class com/intellij/openapi/vfs/VFileProperty.class + com/intellij/openapi/vfs/VfsUtilCore$1.class + com/intellij/openapi/vfs/VfsUtilCore$2.class + com/intellij/openapi/vfs/VfsUtilCore.class com/intellij/openapi/vfs/VirtualFile.class com/intellij/openapi/vfs/VirtualFileCopyEvent.class com/intellij/openapi/vfs/VirtualFileEvent.class @@ -707,77 +1202,100 @@ com/intellij/openapi/vfs/VirtualFileMoveEvent.class com/intellij/openapi/vfs/VirtualFilePropertyEvent.class com/intellij/openapi/vfs/VirtualFileSystem.class + com/intellij/openapi/vfs/VirtualFileVisitor$VisitorException.class com/intellij/openapi/vfs/VirtualFileVisitor.class + com/intellij/openapi/vfs/VirtualFileWithId.class + com/intellij/openapi/vfs/encoding/EncodingManager.class + com/intellij/openapi/vfs/encoding/EncodingProjectManager.class + com/intellij/openapi/vfs/encoding/EncodingRegistry.class com/intellij/openapi/vfs/impl/BulkVirtualFileListenerAdapter.class com/intellij/openapi/vfs/newvfs/BulkFileListener.class + com/intellij/openapi/vfs/newvfs/CachingVirtualFileSystem.class + com/intellij/openapi/vfs/newvfs/FileAttribute.class + com/intellij/openapi/vfs/newvfs/FileSystemInterface.class + com/intellij/openapi/vfs/newvfs/ManagingFS$ManagingFSHolder.class + com/intellij/openapi/vfs/newvfs/ManagingFS.class + com/intellij/openapi/vfs/newvfs/NewVirtualFile.class + com/intellij/openapi/vfs/pointers/VirtualFilePointer.class + com/intellij/openapi/vfs/pointers/VirtualFilePointerContainer.class + com/intellij/openapi/vfs/pointers/VirtualFilePointerListener.class + com/intellij/openapi/wm/IdeGlassPane$TopComponent.class + com/intellij/patterns/CharPattern$1.class + com/intellij/patterns/CharPattern$2.class + com/intellij/patterns/CharPattern$3.class + com/intellij/patterns/CharPattern$4.class + com/intellij/patterns/CharPattern.class + com/intellij/patterns/ElementPattern.class + com/intellij/patterns/ElementPatternCondition.class + com/intellij/patterns/InitialPatternCondition.class + com/intellij/patterns/InitialPatternConditionPlus.class + com/intellij/patterns/ObjectPattern$1.class + com/intellij/patterns/ObjectPattern$10.class + com/intellij/patterns/ObjectPattern$2.class + com/intellij/patterns/ObjectPattern$3.class + com/intellij/patterns/ObjectPattern$4.class + com/intellij/patterns/ObjectPattern$5.class + com/intellij/patterns/ObjectPattern$6.class + com/intellij/patterns/ObjectPattern$7.class + com/intellij/patterns/ObjectPattern$8.class + com/intellij/patterns/ObjectPattern$9.class + com/intellij/patterns/ObjectPattern$Capture.class + com/intellij/patterns/ObjectPattern.class + com/intellij/patterns/PatternCondition.class + com/intellij/patterns/PatternConditionPlus.class + com/intellij/patterns/StandardPatterns$1.class + com/intellij/patterns/StandardPatterns$2.class + com/intellij/patterns/StandardPatterns$3.class + com/intellij/patterns/StandardPatterns$4.class + com/intellij/patterns/StandardPatterns$5.class + com/intellij/patterns/StandardPatterns$6.class + com/intellij/patterns/StandardPatterns$FalsePattern$1.class + com/intellij/patterns/StandardPatterns$FalsePattern.class + com/intellij/patterns/StandardPatterns.class + com/intellij/patterns/ValuePatternCondition.class com/intellij/pom/Navigatable.class - com/intellij/psi/CommonClassNames.class - com/intellij/psi/FileViewProvider.class - com/intellij/psi/LanguageFileViewProviders.class - com/intellij/psi/LanguageSubstitutors.class - com/intellij/psi/LiteralTextEscaper.class - com/intellij/psi/NavigatablePsiElement.class - com/intellij/psi/PsiBinaryFile.class - com/intellij/psi/PsiCheckedRenameElement.class - com/intellij/psi/PsiComment.class - com/intellij/psi/PsiCompiledElement.class - com/intellij/psi/PsiDirectory.class - com/intellij/psi/PsiElement.class - com/intellij/psi/PsiElementVisitor$1.class - com/intellij/psi/PsiElementVisitor.class - com/intellij/psi/PsiErrorElement.class - com/intellij/psi/PsiFile.class - com/intellij/psi/PsiFileFactory.class - com/intellij/psi/PsiFileSystemItem.class - com/intellij/psi/PsiInvalidElementAccessException.class - com/intellij/psi/PsiLanguageInjectionHost.class - com/intellij/psi/PsiLargeBinaryFile.class - com/intellij/psi/PsiLargeFile.class - com/intellij/psi/PsiLiteralValue.class - com/intellij/psi/PsiLock.class - com/intellij/psi/PsiManager.class - com/intellij/psi/PsiNameIdentifierOwner.class - com/intellij/psi/PsiNamedElement.class - com/intellij/psi/PsiPolyVariantReference.class - com/intellij/psi/PsiRecursiveElementWalkingVisitor.class - com/intellij/psi/PsiRecursiveVisitor.class - com/intellij/psi/PsiReference.class - com/intellij/psi/PsiTreeChangeEvent.class - com/intellij/psi/PsiWhiteSpace.class - com/intellij/psi/StubBasedPsiElement.class - com/intellij/psi/StubBuilder.class - com/intellij/psi/SyntaxTraverser$ASTApi.class - com/intellij/psi/SyntaxTraverser$Api$1.class - com/intellij/psi/SyntaxTraverser$Api$2.class - com/intellij/psi/SyntaxTraverser$Api$3.class - com/intellij/psi/SyntaxTraverser$Api.class - com/intellij/psi/SyntaxTraverser$ApiEx$1.class - com/intellij/psi/SyntaxTraverser$ApiEx.class - com/intellij/psi/SyntaxTraverser$FlyweightApi.class - com/intellij/psi/SyntaxTraverser$LighterASTApi.class - com/intellij/psi/SyntaxTraverser$PsiApi$1.class - com/intellij/psi/SyntaxTraverser$PsiApi.class - com/intellij/psi/SyntaxTraverser.class - com/intellij/psi/TokenType$1.class - com/intellij/psi/TokenType.class + com/intellij/psi/*.class + com/intellij/psi/filters/ElementFilter.class com/intellij/psi/impl/ElementBase$1.class com/intellij/psi/impl/ElementBase$2.class com/intellij/psi/impl/ElementBase$ElementIconRequest.class com/intellij/psi/impl/ElementBase.class com/intellij/psi/scope/PsiScopeProcessor.class + com/intellij/psi/search/DelegatingGlobalSearchScope.class + com/intellij/psi/search/EverythingGlobalScope.class + com/intellij/psi/search/GlobalSearchScope$1.class + com/intellij/psi/search/GlobalSearchScope$2.class + com/intellij/psi/search/GlobalSearchScope$EmptyScope.class + com/intellij/psi/search/GlobalSearchScope$FileScope.class + com/intellij/psi/search/GlobalSearchScope$FileTypeRestrictionScope.class + com/intellij/psi/search/GlobalSearchScope$FilesScope.class + com/intellij/psi/search/GlobalSearchScope$IntersectionScope.class + com/intellij/psi/search/GlobalSearchScope$NotScope.class com/intellij/psi/search/GlobalSearchScope.class com/intellij/psi/search/LocalSearchScope.class + com/intellij/psi/search/ProjectAndLibrariesScope.class com/intellij/psi/search/ProjectAwareFileFilter.class + com/intellij/psi/search/ProjectScope.class + com/intellij/psi/search/ProjectScopeBuilder.class com/intellij/psi/search/PsiElementProcessor$CollectElements.class com/intellij/psi/search/PsiElementProcessor$FindElement.class com/intellij/psi/search/PsiElementProcessor.class com/intellij/psi/search/SearchScope.class + com/intellij/psi/search/searches/ExtensibleQueryFactory$1.class + com/intellij/psi/search/searches/ExtensibleQueryFactory.class + com/intellij/psi/stubs/AbstractStubIndex.class com/intellij/psi/stubs/IStubElementType.class com/intellij/psi/stubs/NamedStub.class com/intellij/psi/stubs/ObjectStubSerializer.class com/intellij/psi/stubs/PsiFileStub.class + com/intellij/psi/stubs/SerializerNotFoundException.class + com/intellij/psi/stubs/StringStubIndexExtension.class com/intellij/psi/stubs/Stub.class com/intellij/psi/stubs/StubElement.class + com/intellij/psi/stubs/StubIndex$StubIndexHolder.class + com/intellij/psi/stubs/StubIndex.class + com/intellij/psi/stubs/StubIndexExtension.class + com/intellij/psi/stubs/StubIndexKey.class com/intellij/psi/stubs/StubSerializer.class com/intellij/psi/tree/ICompositeElementType.class com/intellij/psi/tree/ICustomParsingType.class @@ -789,7 +1307,14 @@ com/intellij/psi/tree/ILeafElementType.class com/intellij/psi/tree/StubFileElementType.class com/intellij/psi/tree/TokenSet.class + com/intellij/psi/util/CachedValue.class + com/intellij/psi/util/CachedValueProfiler.class + com/intellij/psi/util/CachedValueProvider$Result.class com/intellij/psi/util/CachedValueProvider.class + com/intellij/psi/util/CachedValuesManager.class + com/intellij/psi/util/ParameterizedCachedValue.class + com/intellij/psi/util/ParameterizedCachedValueProvider.class + com/intellij/psi/util/PsiModificationTracker$Listener.class com/intellij/psi/util/PsiModificationTracker$SERVICE.class com/intellij/psi/util/PsiModificationTracker.class com/intellij/psi/util/PsiTreeUtil$1.class @@ -800,24 +1325,69 @@ com/intellij/psi/util/PsiUtilCore$NullPsiElement.class com/intellij/psi/util/PsiUtilCore$NullPsiFile.class com/intellij/psi/util/PsiUtilCore.class + com/intellij/psi/util/QualifiedName.class com/intellij/testFramework/LightVirtualFile$1.class com/intellij/testFramework/LightVirtualFile.class com/intellij/testFramework/LightVirtualFileBase$MyVirtualFileSystem.class com/intellij/testFramework/LightVirtualFileBase.class com/intellij/testFramework/ReadOnlyLightVirtualFile.class + com/intellij/ui/CollectionComboBoxModel.class + com/intellij/ui/CollectionListModel.class + com/intellij/ui/JBSplitter.class + com/intellij/ui/components/Interpolable.class + com/intellij/ui/components/JBLayeredPane.class + com/intellij/ui/components/JBScrollBar.class + com/intellij/util/AbstractQuery.class + com/intellij/util/AstLoadingException.class + com/intellij/util/AstLoadingFilter.class com/intellij/util/CharTable.class + com/intellij/util/ExecutorsQuery.class com/intellij/util/KeyedLazyInstance.class + com/intellij/util/PathUtil.class + com/intellij/util/Processors$1.class + com/intellij/util/Processors.class + com/intellij/util/Query.class + com/intellij/util/QueryExecutor.class + com/intellij/util/QueryFactory.class + com/intellij/util/UniqueResultsQuery.class + com/intellij/util/containers/UtilKt.class + com/intellij/util/indexing/FileBasedIndex$1.class + com/intellij/util/indexing/FileBasedIndex$InputFilter.class + com/intellij/util/indexing/FileBasedIndex.class + com/intellij/util/indexing/FileBasedIndexExtension.class + com/intellij/util/indexing/FileContent.class + com/intellij/util/indexing/ID.class + com/intellij/util/indexing/IdFilter$1.class + com/intellij/util/indexing/IdFilter.class + com/intellij/util/indexing/IdIterator.class + com/intellij/util/indexing/IndexableSetContributor.class + com/intellij/util/indexing/PsiDependentIndex.class com/intellij/util/ui/ErrorTreeView.class com/intellij/util/ui/MutableErrorTreeView.class com/intellij/xdebugger/XDebugProcessStarter.class + com/intellij/xdebugger/evaluation/XDebuggerEditorsProvider.class + com/intellij/xdebugger/frame/XStackFrame.class + com/intellij/xdebugger/frame/XValueContainer.class + org/jetbrains/jps/model/fileTypes/FileNameMatcherFactory.class + org/jetbrains/jps/service/JpsServiceManager$InstanceHolder.class + org/jetbrains/jps/service/JpsServiceManager.class com.jetbrains.pycharm:pycharm com/jetbrains/NotNullPredicate.class + com/jetbrains/extensions/python/PyClassExtKt.class + com/jetbrains/numpy/codeInsight/NumpyDocStringTypeProvider.class + com/jetbrains/numpy/codeInsight/NumpyResolveRater.class + com/jetbrains/numpy/codeInsight/NumpyUfuncs.class + com/jetbrains/pyqt/PyQtTypeProvider.class com/jetbrains/python/PyBundle.class + com/jetbrains/python/PyCustomType.class + com/jetbrains/python/PyDirectoryIndexExcludePolicy.class com/jetbrains/python/PyElementTypes.class + com/jetbrains/python/PyNames$BuiltinDescription.class + com/jetbrains/python/PyNames.class com/jetbrains/python/PyStubElementTypes.class com/jetbrains/python/PyTokenTypes.class com/jetbrains/python/PyTypeDeclarationStatementImpl.class @@ -825,12 +1395,61 @@ com/jetbrains/python/PythonDialectsTokenSetContributorBase.class com/jetbrains/python/PythonDialectsTokenSetProvider.class com/jetbrains/python/PythonFileType.class + com/jetbrains/python/PythonFileTypeFactory.class + com/jetbrains/python/PythonHelpersLocator.class com/jetbrains/python/PythonLanguage.class com/jetbrains/python/PythonParserDefinition.class com/jetbrains/python/PythonTokenSetContributor.class + com/jetbrains/python/codeInsight/controlflow/ControlFlowCache.class + com/jetbrains/python/codeInsight/controlflow/InstructionBuilder.class + com/jetbrains/python/codeInsight/controlflow/InstructionTypeCallback.class + com/jetbrains/python/codeInsight/controlflow/PyControlFlowBuilder$1.class + com/jetbrains/python/codeInsight/controlflow/PyControlFlowBuilder.class + com/jetbrains/python/codeInsight/controlflow/PyTypeAssertionEvaluator$1.class + com/jetbrains/python/codeInsight/controlflow/PyTypeAssertionEvaluator$Assertion.class + com/jetbrains/python/codeInsight/controlflow/PyTypeAssertionEvaluator.class + com/jetbrains/python/codeInsight/controlflow/ReadWriteInstruction$1.class + com/jetbrains/python/codeInsight/controlflow/ReadWriteInstruction$ACCESS.class + com/jetbrains/python/codeInsight/controlflow/ReadWriteInstruction.class com/jetbrains/python/codeInsight/controlflow/ScopeOwner.class + com/jetbrains/python/codeInsight/dataflow/scope/Scope.class + com/jetbrains/python/codeInsight/dataflow/scope/ScopeUtil.class + com/jetbrains/python/codeInsight/dataflow/scope/impl/ScopeImpl$1.class + com/jetbrains/python/codeInsight/dataflow/scope/impl/ScopeImpl.class + com/jetbrains/python/codeInsight/functionTypeComments/psi/PyFunctionTypeAnnotation.class + com/jetbrains/python/codeInsight/stdlib/PyDataclassParameters$Type.class + com/jetbrains/python/codeInsight/stdlib/PyDataclassTypeProvider$getDataclassTypeForCallee$1.class + com/jetbrains/python/codeInsight/stdlib/PyDataclassTypeProvider.class + com/jetbrains/python/codeInsight/stdlib/PyDataclassesKt$parseDataclassParameters$1.class + com/jetbrains/python/codeInsight/stdlib/PyDataclassesKt.class + com/jetbrains/python/codeInsight/stdlib/PyNamedTupleOverridingTypeProvider.class + com/jetbrains/python/codeInsight/stdlib/PyNamedTupleType$DefinitionLevel.class + com/jetbrains/python/codeInsight/stdlib/PyNamedTupleType.class + com/jetbrains/python/codeInsight/stdlib/PyNamedTupleTypeProvider$Companion$getNamedTupleTypeForCallee$$inlined$filterIsInstance$1.class + com/jetbrains/python/codeInsight/stdlib/PyNamedTupleTypeProvider$Companion$isTypingNamedTupleDirectInheritor$isTypingNT$1.class + com/jetbrains/python/codeInsight/stdlib/PyNamedTupleTypeProvider$Companion.class + com/jetbrains/python/codeInsight/stdlib/PyNamedTupleTypeProvider.class + com/jetbrains/python/codeInsight/stdlib/PyStdlibCanonicalPathProvider.class + com/jetbrains/python/codeInsight/stdlib/PyStdlibTypeProvider.class + com/jetbrains/python/codeInsight/typing/Priority.class + com/jetbrains/python/codeInsight/typing/PyAncestorTypeProvider.class + com/jetbrains/python/codeInsight/typing/PyAncestorTypeProviderKt.class + com/jetbrains/python/codeInsight/typing/PyProtocolsKt.class + com/jetbrains/python/codeInsight/typing/PyStubPackages.class + com/jetbrains/python/codeInsight/typing/PyTypeShed$directory$2.class + com/jetbrains/python/codeInsight/typing/PyTypeShed$directoryPath$1.class + com/jetbrains/python/codeInsight/typing/PyTypeShed.class + com/jetbrains/python/codeInsight/typing/PyTypingTypeProvider$Context.class + com/jetbrains/python/codeInsight/typing/PyTypingTypeProvider.class + com/jetbrains/python/codeInsight/userSkeletons/PyUserSkeletonsTypeProvider.class + com/jetbrains/python/codeInsight/userSkeletons/PyUserSkeletonsUtil.class + com/jetbrains/python/console/PyCodeExecutor.class com/jetbrains/python/console/PyConsoleProcessHandler.class com/jetbrains/python/console/PyConsoleRootType.class + com/jetbrains/python/console/PyConsoleUtil$1.class + com/jetbrains/python/console/PyConsoleUtil$2.class + com/jetbrains/python/console/PyConsoleUtil$3.class + com/jetbrains/python/console/PyConsoleUtil.class com/jetbrains/python/console/PydevConsoleCommunication.class com/jetbrains/python/console/PydevConsoleCommunicationServer.class com/jetbrains/python/console/PydevConsoleExecuteActionHandler.class @@ -847,20 +1466,45 @@ com/jetbrains/python/console/PydevConsoleRunnerImpl.class com/jetbrains/python/console/PythonConsoleExecuteActionHandler.class com/jetbrains/python/console/PythonConsoleRunnerFactory.class + com/jetbrains/python/console/PythonConsoleView$1.class + com/jetbrains/python/console/PythonConsoleView.class + com/jetbrains/python/console/completion/PydevConsoleElement.class com/jetbrains/python/console/parsing/PyConsoleParser.class + com/jetbrains/python/console/parsing/PythonConsoleData.class com/jetbrains/python/console/parsing/PythonConsoleLexer.class + com/jetbrains/python/debugger/PyCallSignatureTypeProvider.class + com/jetbrains/python/debugger/PyDebuggerEditorsProvider.class + com/jetbrains/python/debugger/PySignatureCacheManager.class + com/jetbrains/python/debugger/PySignatureCacheManagerImpl$1.class + com/jetbrains/python/debugger/PySignatureCacheManagerImpl.class + com/jetbrains/python/debugger/PyStackFrame.class com/jetbrains/python/debugger/PyVariableViewSettings$SimplifiedView.class com/jetbrains/python/debugger/PyVariableViewSettings$VariablesPolicyGroup.class + com/jetbrains/python/documentation/docstrings/DocStringFormat.class + com/jetbrains/python/documentation/docstrings/DocStringLineParser.class + com/jetbrains/python/documentation/docstrings/DocStringUtil$1.class + com/jetbrains/python/documentation/docstrings/DocStringUtil.class + com/jetbrains/python/documentation/docstrings/GoogleCodeStyleDocString.class + com/jetbrains/python/documentation/docstrings/NumpyDocString.class + com/jetbrains/python/documentation/docstrings/PlainDocString.class + com/jetbrains/python/documentation/docstrings/PyDocStringTypeProvider.class + com/jetbrains/python/documentation/docstrings/SectionBasedDocString$FieldType.class + com/jetbrains/python/documentation/docstrings/SectionBasedDocString$Section.class + com/jetbrains/python/documentation/docstrings/SectionBasedDocString.class com/jetbrains/python/inspections/PythonVisitorFilter.class com/jetbrains/python/lexer/FlexLexerEx.class com/jetbrains/python/lexer/PyLexerFStringHelper$FStringState.class com/jetbrains/python/lexer/PyLexerFStringHelper$FragmentState.class com/jetbrains/python/lexer/PyLexerFStringHelper.class + com/jetbrains/python/lexer/PythonHighlightingLexer.class com/jetbrains/python/lexer/PythonIndentingLexer.class com/jetbrains/python/lexer/PythonIndentingProcessor$PendingCommentToken.class com/jetbrains/python/lexer/PythonIndentingProcessor$PendingToken.class com/jetbrains/python/lexer/PythonIndentingProcessor.class + com/jetbrains/python/lexer/PythonLexer.class com/jetbrains/python/lexer/_PythonLexer.class + com/jetbrains/python/packaging/PyPackageManager$Listener.class + com/jetbrains/python/packaging/PyPackageManager.class com/jetbrains/python/parsing/ExpressionParsing.class com/jetbrains/python/parsing/FollowingCommentBinder.class com/jetbrains/python/parsing/FunctionParsing.class @@ -875,9 +1519,23 @@ com/jetbrains/python/parsing/StatementParsing.class com/jetbrains/python/psi/*.class com/jetbrains/python/psi/impl/*.class + com/jetbrains/python/psi/impl/references/PyFromImportNameReference.class + com/jetbrains/python/psi/impl/references/PyFromImportSourceReference.class + com/jetbrains/python/psi/impl/references/PyImportReference.class + com/jetbrains/python/psi/impl/references/PyOperatorReference.class + com/jetbrains/python/psi/impl/references/PyQualifiedReference$1.class + com/jetbrains/python/psi/impl/references/PyQualifiedReference.class + com/jetbrains/python/psi/impl/references/PyReferenceCustomTargetChecker$Companion.class + com/jetbrains/python/psi/impl/references/PyReferenceCustomTargetChecker.class + com/jetbrains/python/psi/impl/references/PyReferenceImpl$CachingResolver.class + com/jetbrains/python/psi/impl/references/PyReferenceImpl.class + com/jetbrains/python/psi/impl/references/PyTargetReference.class + com/jetbrains/python/psi/impl/stubs/CustomTargetExpressionStub.class + com/jetbrains/python/psi/impl/stubs/CustomTargetExpressionStubType.class com/jetbrains/python/psi/impl/stubs/PyAnnotationElementType.class com/jetbrains/python/psi/impl/stubs/PyClassElementType.class com/jetbrains/python/psi/impl/stubs/PyCustomStub.class + com/jetbrains/python/psi/impl/stubs/PyCustomStubType.class com/jetbrains/python/psi/impl/stubs/PyCustomizableStubElementType.class com/jetbrains/python/psi/impl/stubs/PyDecoratorCallElementType.class com/jetbrains/python/psi/impl/stubs/PyDecoratorListElementType.class @@ -887,39 +1545,180 @@ com/jetbrains/python/psi/impl/stubs/PyImportElementElementType.class com/jetbrains/python/psi/impl/stubs/PyImportStatementElementType.class com/jetbrains/python/psi/impl/stubs/PyNamedParameterElementType.class + com/jetbrains/python/psi/impl/stubs/PyNamedTupleStubImpl$1.class + com/jetbrains/python/psi/impl/stubs/PyNamedTupleStubImpl$NamedTupleModule$1.class + com/jetbrains/python/psi/impl/stubs/PyNamedTupleStubImpl$NamedTupleModule$2.class + com/jetbrains/python/psi/impl/stubs/PyNamedTupleStubImpl$NamedTupleModule.class + com/jetbrains/python/psi/impl/stubs/PyNamedTupleStubImpl.class com/jetbrains/python/psi/impl/stubs/PyParameterListElementType.class com/jetbrains/python/psi/impl/stubs/PySingleStarParameterElementType.class com/jetbrains/python/psi/impl/stubs/PyStarImportElementElementType.class com/jetbrains/python/psi/impl/stubs/PyTargetExpressionElementType.class com/jetbrains/python/psi/impl/stubs/PyTupleParameterElementType.class + com/jetbrains/python/psi/impl/stubs/PyTypingAliasStubType.class + com/jetbrains/python/psi/resolve/ImplicitResolveResult.class + com/jetbrains/python/psi/resolve/ImportedResolveResult.class + com/jetbrains/python/psi/resolve/PyCanonicalPathProvider.class + com/jetbrains/python/psi/resolve/PyForwardReferenceResolveProvider.class + com/jetbrains/python/psi/resolve/PyOverridingReferenceResolveProvider.class + com/jetbrains/python/psi/resolve/PyQualifiedNameResolveContext.class + com/jetbrains/python/psi/resolve/PyQualifiedNameResolveContextImpl.class + com/jetbrains/python/psi/resolve/PyReferenceResolveProvider.class + com/jetbrains/python/psi/resolve/PyResolveContext.class + com/jetbrains/python/psi/resolve/PyResolveImportUtil$foreignResults$1.class + com/jetbrains/python/psi/resolve/PyResolveImportUtil$resolveQualifiedName$1.class + com/jetbrains/python/psi/resolve/PyResolveImportUtil$resolveTopLevelMember$1.class + com/jetbrains/python/psi/resolve/PyResolveImportUtil$resolveTopLevelMember$2.class + com/jetbrains/python/psi/resolve/PyResolveImportUtil$resultsFromRoots$visitor$1.class + com/jetbrains/python/psi/resolve/PyResolveImportUtil.class + com/jetbrains/python/psi/resolve/PyResolveProcessor.class + com/jetbrains/python/psi/resolve/PyResolveUtil.class + com/jetbrains/python/psi/resolve/PythonBuiltinReferenceResolveProvider.class + com/jetbrains/python/psi/resolve/PythonOverridingBuiltinReferenceResolveProvider.class + com/jetbrains/python/psi/resolve/PythonPathCache$MyVirtualFileListener.class + com/jetbrains/python/psi/resolve/PythonPathCache.class + com/jetbrains/python/psi/resolve/PythonSdkPathCache$1.class + com/jetbrains/python/psi/resolve/PythonSdkPathCache.class + com/jetbrains/python/psi/resolve/QualifiedNameFinder$PathChoosingVisitor.class + com/jetbrains/python/psi/resolve/QualifiedNameFinder.class + com/jetbrains/python/psi/resolve/QualifiedRatedResolveResult.class + com/jetbrains/python/psi/resolve/QualifiedResolveResult$1.class + com/jetbrains/python/psi/resolve/QualifiedResolveResult.class + com/jetbrains/python/psi/resolve/RatedResolveResult.class + com/jetbrains/python/psi/resolve/ResolveImportUtil$ResolveModuleParams.class + com/jetbrains/python/psi/resolve/ResolveImportUtil.class + com/jetbrains/python/psi/resolve/RootVisitor.class + com/jetbrains/python/psi/resolve/RootVisitorHost.class com/jetbrains/python/psi/resolve/VariantsProcessor.class + com/jetbrains/python/psi/search/PyProjectScopeBuilder$1.class + com/jetbrains/python/psi/search/PyProjectScopeBuilder$2.class + com/jetbrains/python/psi/search/PyProjectScopeBuilder.class + com/jetbrains/python/psi/search/PySuperMethodsSearch$SearchParameters.class + com/jetbrains/python/psi/search/PySuperMethodsSearch.class + com/jetbrains/python/psi/search/PySuperMethodsSearchExecutor.class com/jetbrains/python/psi/stubs/PyAnnotationOwnerStub.class com/jetbrains/python/psi/stubs/PyAnnotationStub.class + com/jetbrains/python/psi/stubs/PyClassAttributesIndex.class + com/jetbrains/python/psi/stubs/PyClassNameIndex.class com/jetbrains/python/psi/stubs/PyClassStub.class com/jetbrains/python/psi/stubs/PyDecoratorListStub.class com/jetbrains/python/psi/stubs/PyDecoratorStub.class com/jetbrains/python/psi/stubs/PyExceptPartStub.class com/jetbrains/python/psi/stubs/PyFileStub.class com/jetbrains/python/psi/stubs/PyFromImportStatementStub.class + com/jetbrains/python/psi/stubs/PyFunctionNameIndex.class com/jetbrains/python/psi/stubs/PyFunctionStub.class com/jetbrains/python/psi/stubs/PyImportElementStub.class com/jetbrains/python/psi/stubs/PyImportStatementStub.class com/jetbrains/python/psi/stubs/PyNamedParameterStub.class + com/jetbrains/python/psi/stubs/PyNamedTupleStub.class com/jetbrains/python/psi/stubs/PyParameterListStub.class com/jetbrains/python/psi/stubs/PySingleStarParameterStub.class com/jetbrains/python/psi/stubs/PyStarImportElementStub.class com/jetbrains/python/psi/stubs/PyTargetExpressionStub.class com/jetbrains/python/psi/stubs/PyTupleParameterStub.class com/jetbrains/python/psi/stubs/PyTypeCommentOwnerStub.class + com/jetbrains/python/psi/stubs/PyTypingAliasStub.class + com/jetbrains/python/psi/types/PyABCUtil.class + com/jetbrains/python/psi/types/PyCallableParameter.class + com/jetbrains/python/psi/types/PyCallableParameterImpl.class com/jetbrains/python/psi/types/PyCallableType.class com/jetbrains/python/psi/types/PyClassLikeType.class + com/jetbrains/python/psi/types/PyClassMembersProvider.class + com/jetbrains/python/psi/types/PyClassType.class + com/jetbrains/python/psi/types/PyClassTypeImpl.class + com/jetbrains/python/psi/types/PyCollectionType.class + com/jetbrains/python/psi/types/PyCollectionTypeByModificationsProvider.class + com/jetbrains/python/psi/types/PyCollectionTypeImpl.class + com/jetbrains/python/psi/types/PyCollectionTypeUtil.class + com/jetbrains/python/psi/types/PyDynamicallyEvaluatedType.class + com/jetbrains/python/psi/types/PyFunctionType.class + com/jetbrains/python/psi/types/PyFunctionTypeImpl.class + com/jetbrains/python/psi/types/PyGenericType.class + com/jetbrains/python/psi/types/PyImportedModuleType.class com/jetbrains/python/psi/types/PyInstantiableType.class + com/jetbrains/python/psi/types/PyModuleMembersProvider.class + com/jetbrains/python/psi/types/PyModuleType.class + com/jetbrains/python/psi/types/PyNoneType.class + com/jetbrains/python/psi/types/PyStructuralType.class + com/jetbrains/python/psi/types/PyTupleType.class com/jetbrains/python/psi/types/PyType.class + com/jetbrains/python/psi/types/PyTypeChecker$MatchContext.class + com/jetbrains/python/psi/types/PyTypeChecker.class + com/jetbrains/python/psi/types/PyTypeProviderBase$1.class + com/jetbrains/python/psi/types/PyTypeProviderBase$ReturnTypeCallback.class + com/jetbrains/python/psi/types/PyTypeProviderBase$ReturnTypeDescriptor.class + com/jetbrains/python/psi/types/PyTypeProviderBase.class + com/jetbrains/python/psi/types/PyTypeUtil.class + com/jetbrains/python/psi/types/PyTypingNewType$Companion.class + com/jetbrains/python/psi/types/PyTypingNewType.class + com/jetbrains/python/psi/types/PyUnionType.class + com/jetbrains/python/psi/types/TypeEvalConstraints.class + com/jetbrains/python/psi/types/TypeEvalContext$Key.class + com/jetbrains/python/psi/types/TypeEvalContext.class + com/jetbrains/python/psi/types/TypeEvalContextBasedCache$MapCreator.class + com/jetbrains/python/psi/types/TypeEvalContextBasedCache.class + com/jetbrains/python/psi/types/TypeEvalContextCache.class + com/jetbrains/python/pyi/PyiFile.class + com/jetbrains/python/pyi/PyiFileElementType.class + com/jetbrains/python/pyi/PyiFileType.class + com/jetbrains/python/pyi/PyiFileTypeFactory.class + com/jetbrains/python/pyi/PyiLanguageDialect.class + com/jetbrains/python/pyi/PyiParserDefinition.class + com/jetbrains/python/pyi/PyiTypeProvider.class + com/jetbrains/python/pyi/PyiUtil.class com/jetbrains/python/refactoring/PyDefUseUtil$InstructionNotFoundException.class + com/jetbrains/python/refactoring/PyDefUseUtil.class com/jetbrains/python/remote/PythonRemoteInterpreterManager$PyRemoteInterpreterExecutionException.class + com/jetbrains/python/run/PythonConfigurationFactoryBase.class com/jetbrains/python/run/PythonProcessHandler.class com/jetbrains/python/run/PythonRunParams.class + com/jetbrains/python/sdk/InvalidSdkException.class + com/jetbrains/python/sdk/PythonSdkType.class + com/jetbrains/python/sdk/flavors/CPythonSdkFlavor.class + com/jetbrains/python/sdk/flavors/CondaEnvSdkFlavor.class + com/jetbrains/python/sdk/flavors/IronPythonSdkFlavor.class + com/jetbrains/python/sdk/flavors/JythonSdkFlavor.class + com/jetbrains/python/sdk/flavors/MacPythonSdkFlavor.class + com/jetbrains/python/sdk/flavors/PyPySdkFlavor.class + com/jetbrains/python/sdk/flavors/PyRemoteSdkFlavor.class + com/jetbrains/python/sdk/flavors/PythonFlavorProvider.class + com/jetbrains/python/sdk/flavors/PythonSdkFlavor.class + com/jetbrains/python/sdk/flavors/VirtualEnvSdkFlavor.class + com/jetbrains/python/testing/PyAbstractTestFactory.class + com/jetbrains/python/testing/PyNoseTestFactory.class + com/jetbrains/python/testing/PyTestFactory.class + com/jetbrains/python/testing/PyTestFrameworkService.class + com/jetbrains/python/testing/PyTestsSharedKt.class + com/jetbrains/python/testing/PyTrialTestFactory.class + com/jetbrains/python/testing/PyUnitTestFactory.class + com/jetbrains/python/testing/PythonTestConfigurationType$PythonDocTestConfigurationFactory.class + com/jetbrains/python/testing/PythonTestConfigurationType$PythonLegacyNoseTestConfigurationFactory.class + com/jetbrains/python/testing/PythonTestConfigurationType$PythonLegacyPyTestConfigurationFactory.class + com/jetbrains/python/testing/PythonTestConfigurationType$PythonLegacyUnitTestConfigurationFactory.class + com/jetbrains/python/testing/PythonTestConfigurationType.class + com/jetbrains/python/testing/PythonTestConfigurationsModel.class + com/jetbrains/python/testing/PythonUnitTestUtil.class + com/jetbrains/python/testing/pyTestFixtures/PyTestFixtureTargetChecker.class + com/jetbrains/python/testing/pyTestParametrized/PyTestParameter.class + com/jetbrains/python/testing/pyTestParametrized/PyTestParametrizedTypeProvider.class + com/jetbrains/python/testing/pyTestParametrized/PyTestParamterizedKt.class com/jetbrains/python/toolbox/Maybe.class + com/jetbrains/python/toolbox/Substring.class + + + + com.jetbrains.pycharm:jps-model + + com/intellij/openapi/fileTypes/WildcardFileNameMatcher$MaskMatcher.class + com/intellij/openapi/fileTypes/WildcardFileNameMatcher$SuffixMatcher.class + com/intellij/openapi/fileTypes/WildcardFileNameMatcher.class + com/intellij/openapi/fileTypes/impl/FileTypeAssocTable.class + com/intellij/openapi/fileTypes/impl/IgnoredPatternSet.class + org/jetbrains/jps/model/fileTypes/impl/FileNameMatcherFactoryImpl.class + org/jetbrains/jps/plugin/JpsPluginManager.class + org/jetbrains/jps/service/impl/JpsServiceManagerImpl$SingleClassLoaderPluginManager.class + org/jetbrains/jps/service/impl/JpsServiceManagerImpl.class @@ -941,8 +1740,8 @@ - 8000000 - 7000000 + 10500000 + 9500000 ${project.build.directory}/${project.build.finalName}.jar diff --git a/sonar-python-plugin/src/test/java/org/sonar/plugins/python/minimization/ClassLoaderLogAnalyzer.java b/sonar-python-plugin/src/test/java/org/sonar/plugins/python/minimization/ClassLoaderLogAnalyzer.java index 0c54e8d6cf..7011feb3d6 100644 --- a/sonar-python-plugin/src/test/java/org/sonar/plugins/python/minimization/ClassLoaderLogAnalyzer.java +++ b/sonar-python-plugin/src/test/java/org/sonar/plugins/python/minimization/ClassLoaderLogAnalyzer.java @@ -46,7 +46,9 @@ public class ClassLoaderLogAnalyzer { new Jar("com.jetbrains.pycharm", "resources_en").resource("com/jetbrains/python/PyBundle.properties"), new Jar("com.jetbrains.pycharm", "openapi"), new Jar("com.jetbrains.pycharm", "platform-api"), - new Jar("com.jetbrains.pycharm", "pycharm"))); + new Jar("com.jetbrains.pycharm", "pycharm"), + new Jar("com.jetbrains.pycharm", "jps-model") + )); public static void main(String[] args) throws IOException { File file = new File("sonar-python-plugin/target/class-logs.txt"); diff --git a/tools/download-pycharm.sh b/tools/download-pycharm.sh index 78c874dde5..7e6db7d701 100755 --- a/tools/download-pycharm.sh +++ b/tools/download-pycharm.sh @@ -17,3 +17,4 @@ mvn install:install-file -Dfile=pycharm.jar -DgroupId=com.jetbrains.pycharm -Dar mvn install:install-file -Dfile=pycharm-pydev.jar -DgroupId=com.jetbrains.pycharm -DartifactId=pycharm-pydev -Dversion=${PYCHARM_VERSION} -Dpackaging=jar mvn install:install-file -Dfile=resources_en.jar -DgroupId=com.jetbrains.pycharm -DartifactId=resources_en -Dversion=${PYCHARM_VERSION} -Dpackaging=jar mvn install:install-file -Dfile=util.jar -DgroupId=com.jetbrains.pycharm -DartifactId=util -Dversion=${PYCHARM_VERSION} -Dpackaging=jar +mvn install:install-file -Dfile=jps-model.jar -DgroupId=com.jetbrains.pycharm -DartifactId=jps-model -Dversion=${PYCHARM_VERSION} -Dpackaging=jar From 4dd6211ef56284c37da41df0a0ae6d4abe3f724a Mon Sep 17 00:00:00 2001 From: Massimo Paladin Date: Fri, 26 Jul 2019 16:16:15 +0200 Subject: [PATCH 2/6] wip2 --- .../org/sonar/python/frontend/PythonParser.java | 1 + sonar-python-plugin/pom.xml | 15 ++++----------- .../minimization/ClassLoaderLogAnalyzer.java | 2 +- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/python-frontend/src/main/java/org/sonar/python/frontend/PythonParser.java b/python-frontend/src/main/java/org/sonar/python/frontend/PythonParser.java index 33d24550c6..c17685ee16 100644 --- a/python-frontend/src/main/java/org/sonar/python/frontend/PythonParser.java +++ b/python-frontend/src/main/java/org/sonar/python/frontend/PythonParser.java @@ -252,6 +252,7 @@ private static PsiFileFactory psiFileFactory() { File sdkDir = initSdk(tmpDir); System.setProperty("idea.home.path", tmpDir.getAbsolutePath()); + System.setProperty("apple.awt.UIElement", "true"); CoreFileTypeRegistry fileTypeRegistry = new CoreFileTypeRegistry(); fileTypeRegistry.registerFileType(PythonFileType.INSTANCE, "py"); FileTypeRegistry.ourInstanceGetter = new StaticGetter<>(fileTypeRegistry); diff --git a/sonar-python-plugin/pom.xml b/sonar-python-plugin/pom.xml index 335b93d2a1..3082c96171 100644 --- a/sonar-python-plugin/pom.xml +++ b/sonar-python-plugin/pom.xml @@ -249,7 +249,7 @@ kotlin/collections/CollectionsKt__MutableCollectionsKt.class kotlin/collections/CollectionsKt__ReversedViewsKt.class kotlin/collections/CollectionsKt___CollectionsJvmKt.class - kotlin/collections/CollectionsKt___CollectionsKt$asSequence$$inlined$Sequence$1.class + kotlin/collections/CollectionsKt___CollectionsKt$asSequence??inlined$Sequence$1.class kotlin/collections/CollectionsKt___CollectionsKt.class kotlin/collections/EmptyIterator.class kotlin/collections/EmptyList.class @@ -418,6 +418,7 @@ com/intellij/lang/impl/PsiBuilderImpl$1.class com/intellij/lang/impl/PsiBuilderImpl$ErrorItem.class com/intellij/lang/impl/PsiBuilderImpl$LazyParseableToken.class + com/intellij/lang/impl/PsiBuilderImpl$MyTreeStructure.class com/intellij/lang/impl/PsiBuilderImpl$Node.class com/intellij/lang/impl/PsiBuilderImpl$ProductionMarker.class com/intellij/lang/impl/PsiBuilderImpl$RelativeTokenTextView.class @@ -1425,7 +1426,7 @@ com/jetbrains/python/codeInsight/stdlib/PyNamedTupleOverridingTypeProvider.class com/jetbrains/python/codeInsight/stdlib/PyNamedTupleType$DefinitionLevel.class com/jetbrains/python/codeInsight/stdlib/PyNamedTupleType.class - com/jetbrains/python/codeInsight/stdlib/PyNamedTupleTypeProvider$Companion$getNamedTupleTypeForCallee$$inlined$filterIsInstance$1.class + com/jetbrains/python/codeInsight/stdlib/PyNamedTupleTypeProvider$Companion$getNamedTupleTypeForCallee??inlined$filterIsInstance$1.class com/jetbrains/python/codeInsight/stdlib/PyNamedTupleTypeProvider$Companion$isTypingNamedTupleDirectInheritor$isTypingNT$1.class com/jetbrains/python/codeInsight/stdlib/PyNamedTupleTypeProvider$Companion.class com/jetbrains/python/codeInsight/stdlib/PyNamedTupleTypeProvider.class @@ -1710,15 +1711,7 @@ com.jetbrains.pycharm:jps-model - com/intellij/openapi/fileTypes/WildcardFileNameMatcher$MaskMatcher.class - com/intellij/openapi/fileTypes/WildcardFileNameMatcher$SuffixMatcher.class - com/intellij/openapi/fileTypes/WildcardFileNameMatcher.class - com/intellij/openapi/fileTypes/impl/FileTypeAssocTable.class - com/intellij/openapi/fileTypes/impl/IgnoredPatternSet.class - org/jetbrains/jps/model/fileTypes/impl/FileNameMatcherFactoryImpl.class - org/jetbrains/jps/plugin/JpsPluginManager.class - org/jetbrains/jps/service/impl/JpsServiceManagerImpl$SingleClassLoaderPluginManager.class - org/jetbrains/jps/service/impl/JpsServiceManagerImpl.class + **/* diff --git a/sonar-python-plugin/src/test/java/org/sonar/plugins/python/minimization/ClassLoaderLogAnalyzer.java b/sonar-python-plugin/src/test/java/org/sonar/plugins/python/minimization/ClassLoaderLogAnalyzer.java index 7011feb3d6..e6ed1c034d 100644 --- a/sonar-python-plugin/src/test/java/org/sonar/plugins/python/minimization/ClassLoaderLogAnalyzer.java +++ b/sonar-python-plugin/src/test/java/org/sonar/plugins/python/minimization/ClassLoaderLogAnalyzer.java @@ -82,7 +82,7 @@ public static void main(String[] args) throws IOException { packageLines.stream() .map(Line::classFileName) .sorted() - .map(l -> " " + l + "") + .map(l -> " " + l.replaceAll("\\$\\$", "??") + "") .forEach(System.out::println); } } From 9225425af58f9151a2d00b69ad9dbd5b997e7d20 Mon Sep 17 00:00:00 2001 From: Massimo Paladin Date: Fri, 26 Jul 2019 16:59:51 +0200 Subject: [PATCH 3/6] Test --- Jenkinsfile | 2 +- sonar-python-plugin/pom.xml | 11 +---------- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 5d9ed4dd6b..7bc86ae771 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -69,7 +69,7 @@ pipeline { runMaven(JDK_VERSION,"install:install-file -Dfile=util.jar -DgroupId=com.jetbrains.pycharm -DartifactId=util -Dversion=${PYCHARM_VERSION} -Dpackaging=jar") runMaven(JDK_VERSION,"install:install-file -Dfile=jps-model.jar -DgroupId=com.jetbrains.pycharm -DartifactId=jps-model -Dversion=${PYCHARM_VERSION} -Dpackaging=jar") } - runMaven(JDK_VERSION,"clean install -Dskip.its=true") + runMaven(JDK_VERSION,"clean install -Dskip.its=true -e") } } } diff --git a/sonar-python-plugin/pom.xml b/sonar-python-plugin/pom.xml index 3082c96171..b0ef5e4650 100644 --- a/sonar-python-plugin/pom.xml +++ b/sonar-python-plugin/pom.xml @@ -1676,16 +1676,7 @@ com/jetbrains/python/run/PythonRunParams.class com/jetbrains/python/sdk/InvalidSdkException.class com/jetbrains/python/sdk/PythonSdkType.class - com/jetbrains/python/sdk/flavors/CPythonSdkFlavor.class - com/jetbrains/python/sdk/flavors/CondaEnvSdkFlavor.class - com/jetbrains/python/sdk/flavors/IronPythonSdkFlavor.class - com/jetbrains/python/sdk/flavors/JythonSdkFlavor.class - com/jetbrains/python/sdk/flavors/MacPythonSdkFlavor.class - com/jetbrains/python/sdk/flavors/PyPySdkFlavor.class - com/jetbrains/python/sdk/flavors/PyRemoteSdkFlavor.class - com/jetbrains/python/sdk/flavors/PythonFlavorProvider.class - com/jetbrains/python/sdk/flavors/PythonSdkFlavor.class - com/jetbrains/python/sdk/flavors/VirtualEnvSdkFlavor.class + com/jetbrains/python/sdk/flavors/* com/jetbrains/python/testing/PyAbstractTestFactory.class com/jetbrains/python/testing/PyNoseTestFactory.class com/jetbrains/python/testing/PyTestFactory.class From 4e447e9b8ee3bc811a4b76c1e28724ee92ac90d1 Mon Sep 17 00:00:00 2001 From: Andrea Guarino Date: Mon, 29 Jul 2019 15:43:06 -0700 Subject: [PATCH 4/6] Add PythonWindowsFlavourSDK service --- .../sonar/python/frontend/PythonParser.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/python-frontend/src/main/java/org/sonar/python/frontend/PythonParser.java b/python-frontend/src/main/java/org/sonar/python/frontend/PythonParser.java index c17685ee16..49c21a6aae 100644 --- a/python-frontend/src/main/java/org/sonar/python/frontend/PythonParser.java +++ b/python-frontend/src/main/java/org/sonar/python/frontend/PythonParser.java @@ -173,6 +173,9 @@ import com.jetbrains.python.pyi.PyiTypeProvider; import com.jetbrains.python.sdk.PythonSdkType; import com.jetbrains.python.sdk.flavors.PythonFlavorProvider; +import com.jetbrains.python.sdk.flavors.WinPythonSdkFlavor; +import com.jetbrains.python.sdk.flavors.WinRegistryService; +import com.jetbrains.python.sdk.flavors.WinRegistryServiceImpl; import com.jetbrains.python.testing.PythonTestConfigurationType; import com.jetbrains.python.testing.pyTestFixtures.PyTestFixtureTargetChecker; import com.jetbrains.python.testing.pyTestParametrized.PyTestParametrizedTypeProvider; @@ -374,6 +377,8 @@ public SchemeManager create(@Not project.registerService(ProjectFileIndex.class, ProjectFileIndexImpl.class); project.registerService(ResolveCache.class, new ResolveCache(project.getMessageBus())); + application.registerService(WinPythonSdkFlavor.class, getWindowsFlavorSDK()); + ProjectRootManagerImpl projectRootManager = new ProjectRootManagerImpl(project); project.registerService(ProjectRootManager.class, projectRootManager); @@ -455,6 +460,20 @@ private static PythonSdkType getPythonSdkType() { return pythonSdkType; } + @NotNull + private static WinPythonSdkFlavor getWindowsFlavorSDK() { + Constructor constructor; + WinPythonSdkFlavor winPythonSdkFlavor; + try { + constructor = WinPythonSdkFlavor.class.getDeclaredConstructor(WinRegistryService.class); + constructor.setAccessible(true); + winPythonSdkFlavor = constructor.newInstance(new WinRegistryServiceImpl()); + } catch (NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e) { + throw new IllegalStateException(e); + } + return winPythonSdkFlavor; + } + /** * Create our own PythonFileTypeFactory to skip loading of QtUIFileType and XmlFileType */ From 52d240ae1318e4d311f59f9e8949d91790737f64 Mon Sep 17 00:00:00 2001 From: Andrea Guarino Date: Mon, 12 Aug 2019 11:02:42 +0200 Subject: [PATCH 5/6] update ruling and UT for S4823. Add more comments --- .../test/resources/expected/python-S4823.json | 36 ++++++++++--------- .../checks/hotspots/commandLineArgs.py | 11 ++++++ .../sonar/python/frontend/PythonParser.java | 3 ++ .../minimization/ClassLoaderLogAnalyzer.java | 2 ++ 4 files changed, 35 insertions(+), 17 deletions(-) diff --git a/its/ruling/src/test/resources/expected/python-S4823.json b/its/ruling/src/test/resources/expected/python-S4823.json index 1f0cc9df20..f4014f7122 100644 --- a/its/ruling/src/test/resources/expected/python-S4823.json +++ b/its/ruling/src/test/resources/expected/python-S4823.json @@ -6,14 +6,12 @@ 'project:buildbot-0.8.6p1/buildbot/scripts/runner.py':[ 1302, ], -'project:buildbot-0.8.6p1/buildbot/scripts/startup.py':[ -99, -], 'project:buildbot-0.8.6p1/contrib/bitbucket_buildbot.py':[ 150, ], 'project:buildbot-0.8.6p1/contrib/bk_buildbot.py':[ 30, +31, 32, 33, 34, @@ -59,6 +57,7 @@ ], 'project:buildbot-0.8.6p1/contrib/svn_buildbot.py':[ 41, +42, 43, 44, 45, @@ -76,14 +75,14 @@ 548, ], 'project:buildbot-0.8.6p1/setup.py':[ +84, +87, +118, 196, ], 'project:buildbot-slave-0.8.6p1/buildslave/scripts/runner.py':[ 412, ], -'project:buildbot-slave-0.8.6p1/buildslave/scripts/startup.py':[ -112, -], 'project:buildbot-slave-0.8.6p1/buildslave/test/unit/runprocess-scripts.py':[ 62, 68, @@ -201,46 +200,51 @@ ], 'project:numpy-1.16.4/numpy/f2py/f2py2e.py':[ 444, +493, 494, +498, 502, 503, 504, 510, 511, -511, 517, 518, -518, 521, 532, -532, 535, 536, -536, 539, 540, -540, 568, 569, -569, 575, 578, +579, 580, 581, 581, 582, 584, +585, 586, 587, 587, 588, 640, -640, +641, +646, +648, 659, +660, 666, 669, +670, 671, +675, +676, 677, +678, 682, 685, ], @@ -263,7 +267,6 @@ ], 'project:numpy-1.16.4/runtests.py':[ 67, -170, 486, ], 'project:numpy-1.16.4/setup.py':[ @@ -271,6 +274,7 @@ 262, 344, 385, +387, ], 'project:numpy-1.16.4/tools/c_coverage/c_coverage_report.py':[ 148, @@ -310,7 +314,6 @@ 220, 243, 244, -244, 245, 245, 247, @@ -318,8 +321,6 @@ 249, 251, 252, -252, -278, ], 'project:tornado-2.3/tornado/options.py':[ 117, @@ -502,6 +503,7 @@ 'project:twisted-12.1.0/twisted/scripts/trial.py':[ 98, 369, +370, 375, ], 'project:twisted-12.1.0/twisted/test/_preamble.py':[ diff --git a/python-checks/src/test/resources/checks/hotspots/commandLineArgs.py b/python-checks/src/test/resources/checks/hotspots/commandLineArgs.py index 716e21a59d..99b4559686 100644 --- a/python-checks/src/test/resources/checks/hotspots/commandLineArgs.py +++ b/python-checks/src/test/resources/checks/hotspots/commandLineArgs.py @@ -23,3 +23,14 @@ def builtins(): def optparse_test(): OptionParser() # Noncompliant optparse.OptionParser() # Noncompliant + + + +def assign_to_argv(original_argv): + sys.argv = original_argv # OK + +def calling_list_methods(): + sys.argv.index('-d') # Noncompliant + sys.argv.remove('test') # Noncompliant + sys.argv.append('test') # Noncompliant + sys.argv.extend(['config_fc'] + []) # Noncompliant diff --git a/python-frontend/src/main/java/org/sonar/python/frontend/PythonParser.java b/python-frontend/src/main/java/org/sonar/python/frontend/PythonParser.java index 49c21a6aae..58410723e9 100644 --- a/python-frontend/src/main/java/org/sonar/python/frontend/PythonParser.java +++ b/python-frontend/src/main/java/org/sonar/python/frontend/PythonParser.java @@ -558,6 +558,9 @@ private static Sdk createSDK(String sdkDir, LanguageLevel level) { return sdk.clone(); } + /** + * Configure pyi files containing type definition for Python standard library. + */ private static File initSdk(File workDir) { File sdkDir = new File(workDir + "/" + SDK_DIR); createDir(sdkDir); diff --git a/sonar-python-plugin/src/test/java/org/sonar/plugins/python/minimization/ClassLoaderLogAnalyzer.java b/sonar-python-plugin/src/test/java/org/sonar/plugins/python/minimization/ClassLoaderLogAnalyzer.java index e6ed1c034d..b39b1535d5 100644 --- a/sonar-python-plugin/src/test/java/org/sonar/plugins/python/minimization/ClassLoaderLogAnalyzer.java +++ b/sonar-python-plugin/src/test/java/org/sonar/plugins/python/minimization/ClassLoaderLogAnalyzer.java @@ -82,6 +82,8 @@ public static void main(String[] args) throws IOException { packageLines.stream() .map(Line::classFileName) .sorted() + // Kotlin class names may contain `$$`. This is not handled correctly by Maven Shade plugin, so we replace + // `$$` with `??` .map(l -> " " + l.replaceAll("\\$\\$", "??") + "") .forEach(System.out::println); } From d481f0e149d6c1395cacb941450ecb4b00fed04d Mon Sep 17 00:00:00 2001 From: Andrea Guarino Date: Mon, 12 Aug 2019 11:57:58 +0200 Subject: [PATCH 6/6] some refactoring --- .../sonar/python/frontend/PythonParser.java | 70 +++++++++++-------- 1 file changed, 41 insertions(+), 29 deletions(-) diff --git a/python-frontend/src/main/java/org/sonar/python/frontend/PythonParser.java b/python-frontend/src/main/java/org/sonar/python/frontend/PythonParser.java index 58410723e9..31944b4ad1 100644 --- a/python-frontend/src/main/java/org/sonar/python/frontend/PythonParser.java +++ b/python-frontend/src/main/java/org/sonar/python/frontend/PythonParser.java @@ -255,6 +255,7 @@ private static PsiFileFactory psiFileFactory() { File sdkDir = initSdk(tmpDir); System.setProperty("idea.home.path", tmpDir.getAbsolutePath()); + // avoid opening an icon popup on macOS System.setProperty("apple.awt.UIElement", "true"); CoreFileTypeRegistry fileTypeRegistry = new CoreFileTypeRegistry(); fileTypeRegistry.registerFileType(PythonFileType.INSTANCE, "py"); @@ -274,8 +275,8 @@ private static PsiFileFactory psiFileFactory() { SchemeManagerFactory schemeManagerFactory = new SchemeManagerFactory() { @NotNull @Override - public SchemeManager create(@NotNull String fileSpec, @NotNull SchemeProcessor schemeProcessor, @Nullable String presentableName, @NotNull RoamingType roamingType, @NotNull Function1 schemeNameToFileName, @Nullable StreamProvider streamProvider, @Nullable Path ioDirectory, boolean b) { - return (SchemeManager) new EmptySchemesManager(); + public SchemeManager create(@NotNull String fileSpec, @NotNull SchemeProcessor schemeProcessor, @Nullable String presentableName, @NotNull RoamingType roamingType, @NotNull Function1 schemeNameToFileName, @Nullable StreamProvider streamProvider, @Nullable Path ioDirectory, boolean b) { + return (SchemeManager) new EmptySchemesManager(); } }; application.registerService(SchemeManagerFactory.class, schemeManagerFactory); @@ -296,33 +297,14 @@ public SchemeManager create(@Not registerExtensionPoint(IndexableSetContributor.EP_NAME, IndexableSetContributor.class); registerExtensionPoint(AdditionalLibraryRootsProvider.EP_NAME, AdditionalLibraryRootsProvider.class); - registerExtensionPoint(PyTypeProvider.EP_NAME, PyTypeProvider.class); - registerExtension(PyTypeProvider.EP_NAME, new PyStdlibTypeProvider()); - registerExtension(PyTypeProvider.EP_NAME, new PyDataclassTypeProvider()); - registerExtension(PyTypeProvider.EP_NAME, new PyNamedTupleTypeProvider()); - registerExtension(PyTypeProvider.EP_NAME, new PyNamedTupleOverridingTypeProvider()); - registerExtension(PyTypeProvider.EP_NAME, new PyCollectionTypeByModificationsProvider()); - registerExtension(PyTypeProvider.EP_NAME, new PyTypingTypeProvider()); - registerExtension(PyTypeProvider.EP_NAME, new PyiTypeProvider()); - registerExtension(PyTypeProvider.EP_NAME, new PyTestParametrizedTypeProvider()); - registerExtension(PyTypeProvider.EP_NAME, new PyUserSkeletonsTypeProvider()); - registerExtension(PyTypeProvider.EP_NAME, new PyCallSignatureTypeProvider()); - registerExtension(PyTypeProvider.EP_NAME, new NumpyDocStringTypeProvider()); - registerExtension(PyTypeProvider.EP_NAME, new PyDocStringTypeProvider()); - registerExtension(PyTypeProvider.EP_NAME, new PyQtTypeProvider()); - registerExtension(PyTypeProvider.EP_NAME, new PyAncestorTypeProvider()); + registerPyTypeProvider(); - registerExtensionPoint(FileTypeFactory.FILE_TYPE_FACTORY_EP, FileTypeFactory.class); - registerExtension(PythonFileTypeFactory.FILE_TYPE_FACTORY_EP, new MyPythonFileTypeFactory()); - registerExtension(PythonFileTypeFactory.FILE_TYPE_FACTORY_EP, new PyiFileTypeFactory()); + registerFileTypeFactory(); registerExtensionPoint(PyReferenceCustomTargetChecker.Companion.getEP_NAME(), PyReferenceCustomTargetChecker.class); registerExtension(PyReferenceCustomTargetChecker.Companion.getEP_NAME(), new PyTestFixtureTargetChecker()); - registerExtensionPoint(PyReferenceResolveProvider.EP_NAME, PyReferenceResolveProvider.class); - registerExtension(PyReferenceResolveProvider.EP_NAME, new PyForwardReferenceResolveProvider()); - registerExtension(PyReferenceResolveProvider.EP_NAME, new PythonBuiltinReferenceResolveProvider()); - registerExtension(PyReferenceResolveProvider.EP_NAME, new PythonOverridingBuiltinReferenceResolveProvider()); + registerPyReferenceResolveProvider(); registerExtensionPoint(PyImportResolver.EP_NAME, PyImportResolver.class); @@ -400,7 +382,6 @@ public SchemeManager create(@Not application.registerService(VirtualFileManager.class, virtualFileManager); // https://github.com/JetBrains/intellij-community/blob/93b632941e406178dd5c78fe4d8fdf7d8c357355/platform/testFramework/src/com/intellij/testFramework/ParsingTestCase.java - //new MockPsiManager() PsiManagerImpl psiManager = new PsiManagerImpl(project, fileDocMgr, psiBuilderFactory, fileIndexFacade, project.getMessageBus(), modificationTracker); DocumentCommitProcessor documentCommitThread = getDocumentCommitThread(disposable); @@ -432,14 +413,45 @@ public SchemeManager create(@Not return psiFileFactory; } + private static void registerPyReferenceResolveProvider() { + registerExtensionPoint(PyReferenceResolveProvider.EP_NAME, PyReferenceResolveProvider.class); + registerExtension(PyReferenceResolveProvider.EP_NAME, new PyForwardReferenceResolveProvider()); + registerExtension(PyReferenceResolveProvider.EP_NAME, new PythonBuiltinReferenceResolveProvider()); + registerExtension(PyReferenceResolveProvider.EP_NAME, new PythonOverridingBuiltinReferenceResolveProvider()); + } + + private static void registerFileTypeFactory() { + registerExtensionPoint(FileTypeFactory.FILE_TYPE_FACTORY_EP, FileTypeFactory.class); + registerExtension(PythonFileTypeFactory.FILE_TYPE_FACTORY_EP, new MyPythonFileTypeFactory()); + registerExtension(PythonFileTypeFactory.FILE_TYPE_FACTORY_EP, new PyiFileTypeFactory()); + } + + private static void registerPyTypeProvider() { + registerExtensionPoint(PyTypeProvider.EP_NAME, PyTypeProvider.class); + registerExtension(PyTypeProvider.EP_NAME, new PyStdlibTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyDataclassTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyNamedTupleTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyNamedTupleOverridingTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyCollectionTypeByModificationsProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyTypingTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyiTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyTestParametrizedTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyUserSkeletonsTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyCallSignatureTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new NumpyDocStringTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyDocStringTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyQtTypeProvider()); + registerExtension(PyTypeProvider.EP_NAME, new PyAncestorTypeProvider()); + } + @NotNull private static DocumentCommitProcessor getDocumentCommitThread(Disposable disposable) { - Constructor constructor2; + Constructor constructor; DocumentCommitProcessor documentCommitThread; try { - constructor2 = DocumentCommitThread.class.getDeclaredConstructor(ApplicationEx.class); - constructor2.setAccessible(true); - documentCommitThread = constructor2.newInstance(new MockApplicationEx(disposable)); + constructor = DocumentCommitThread.class.getDeclaredConstructor(ApplicationEx.class); + constructor.setAccessible(true); + documentCommitThread = constructor.newInstance(new MockApplicationEx(disposable)); } catch (NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e) { throw new IllegalStateException(e); }