PY-76463: Mark methods that read lock

GitOrigin-RevId: b5972205bad54e947cd59fc379b3c7a561098989
This commit is contained in:
Ilya.Kazakevich
2025-05-14 20:47:57 +00:00
committed by intellij-monorepo-bot
parent 7be3764ad8
commit f1f77c0af7
3 changed files with 21 additions and 1 deletions
@@ -8,6 +8,7 @@ import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.concurrency.annotations.RequiresReadLock;
import com.jetbrains.python.packaging.requirement.PyRequirementRelation;
import com.jetbrains.python.packaging.requirement.PyRequirementVersionSpec;
import one.util.streamex.StreamEx;
@@ -194,6 +195,8 @@ public final class PyRequirementParser {
return fromText(text, null, new HashSet<>());
}
@RequiresReadLock(generateAssertion = false)
public static @NotNull List<PyRequirement> fromFile(@NotNull VirtualFile file) {
return fromText(loadText(file), file, new HashSet<>());
}
@@ -221,6 +224,8 @@ public final class PyRequirementParser {
return null;
}
@RequiresReadLock(generateAssertion = false)
private static @Nullable PyRequirement parseVcsProjectUrl(@NotNull String line) {
final Matcher vcsMatcher = VCS_PROJECT_URL.matcher(line);
if (vcsMatcher.matches()) {
@@ -259,8 +264,12 @@ public final class PyRequirementParser {
return null;
}
@RequiresReadLock(generateAssertion = false)
@ApiStatus.Internal
public static @NotNull List<PyRequirement> fromText(@NotNull String text, @Nullable VirtualFile containingFile, @NotNull Set<VirtualFile> visitedFiles) {
public static @NotNull List<PyRequirement> fromText(@NotNull String text,
@Nullable VirtualFile containingFile,
@NotNull Set<VirtualFile> visitedFiles) {
if (containingFile != null) {
visitedFiles.add(containingFile);
}
@@ -273,6 +282,7 @@ public final class PyRequirementParser {
.toList();
}
@RequiresReadLock(generateAssertion = false)
private static @NotNull String loadText(@NotNull VirtualFile file) {
final Document document = FileDocumentManager.getInstance().getDocument(file);
@@ -312,6 +322,8 @@ public final class PyRequirementParser {
return Pair.create(normalizeVcsOrArchiveNameParts(nameParts), normalizeVcsOrArchiveVersionParts(versionParts));
}
@RequiresReadLock(generateAssertion = false)
private static @NotNull PyRequirement createVcsOrArchiveRequirement(@NotNull Pair<String, String> nameAndVersion,
@NotNull List<String> installOptions,
@Nullable String extras) {
@@ -399,6 +411,8 @@ public final class PyRequirementParser {
return result;
}
@RequiresReadLock(generateAssertion = false)
private static @NotNull List<PyRequirement> parseLine(@NotNull String line,
@Nullable VirtualFile containingFile,
@NotNull Set<VirtualFile> visitedFiles) {
@@ -533,6 +547,8 @@ public final class PyRequirementParser {
return null;
}
@RequiresReadLock(generateAssertion = false)
private static @NotNull List<PyRequirement> parseRecursiveLine(@NotNull String line,
@Nullable VirtualFile containingFile,
@NotNull Set<VirtualFile> visitedFiles,
@@ -11,6 +11,7 @@ import com.intellij.openapi.roots.OrderRootType;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.concurrency.annotations.RequiresReadLock;
import com.intellij.util.net.HttpConfigurable;
import com.jetbrains.python.PyPsiPackageUtil;
import com.jetbrains.python.PySdkBundle;
@@ -167,6 +168,7 @@ public abstract class PyPackageManagerImplBase extends PyPackageManager {
return dependents;
}
@RequiresReadLock(generateAssertion = false)
protected static @NotNull LanguageLevel getOrRequestLanguageLevelForSdk(@NotNull Sdk sdk) throws ExecutionException {
if (sdk instanceof PyDetectedSdk) {
final PythonSdkFlavor flavor = PythonSdkFlavor.getFlavor(sdk);
@@ -33,6 +33,7 @@ import com.intellij.psi.PsiManager;
import com.intellij.psi.ResolveResult;
import com.intellij.serviceContainer.AlreadyDisposedException;
import com.intellij.util.ObjectUtils;
import com.intellij.util.concurrency.annotations.RequiresReadLock;
import com.intellij.util.containers.ContainerUtil;
import com.jetbrains.python.PyBundle;
import com.jetbrains.python.PyNames;
@@ -419,6 +420,7 @@ public final class PyPackageUtil {
PyPsiPackageUtil.findPackage(packages, PIP) != null;
}
@RequiresReadLock(generateAssertion = false)
public static @Nullable List<PyRequirement> getRequirementsFromTxt(@NotNull Module module) {
final VirtualFile requirementsTxt = findRequirementsTxt(module);
if (requirementsTxt != null) {