Skip to content

Commit a6f4e1a

Browse files
committed
Add pyright analysis support
1 parent 1ca4760 commit a6f4e1a

15 files changed

Lines changed: 1055 additions & 4 deletions

File tree

.github/workflows/tests-pydev.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ jobs:
1212
submodules: recursive
1313

1414
- name: Set up JDK 17
15-
uses: actions/setup-java@v2
15+
uses: actions/setup-java@v5
1616
with:
1717
java-version: '17'
18-
distribution: 'adopt'
18+
distribution: 'temurin'
1919
cache: 'maven'
2020

2121
- name: Installed Maven version

plugins/com.python.pydev.analysis/META-INF/MANIFEST.MF

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ Export-Package: com.python.pydev.analysis,
2828
com.python.pydev.analysis.mypy,
2929
com.python.pydev.analysis.pep8,
3030
com.python.pydev.analysis.pylint,
31+
com.python.pydev.analysis.pyright,
3132
com.python.pydev.analysis.refactoring.changes,
3233
com.python.pydev.analysis.refactoring.quick_fixes,
3334
com.python.pydev.analysis.refactoring.refactorer,

plugins/com.python.pydev.analysis/src/com/python/pydev/analysis/additionalinfo/builders/AnalysisBuilderRunnable.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@
5454
import com.python.pydev.analysis.ruff.OnlyRemoveMarkersRuffVisitor;
5555
import com.python.pydev.analysis.ruff.RuffVisitor;
5656
import com.python.pydev.analysis.ruff.RuffVisitorFactory;
57+
import com.python.pydev.analysis.pyright.OnlyRemoveMarkersPyrightVisitor;
58+
import com.python.pydev.analysis.pyright.PyrightVisitor;
59+
import com.python.pydev.analysis.pyright.PyrightVisitorFactory;
5760

5861
/**
5962
* This class is used to do analysis on a thread, so that if an analysis is asked for some analysis that
@@ -80,6 +83,7 @@ public class AnalysisBuilderRunnable extends AbstractAnalysisBuilderRunnable {
8083
private IExternalCodeAnalysisVisitor mypyVisitor;
8184
private IExternalCodeAnalysisVisitor flake8Visitor;
8285
private IExternalCodeAnalysisVisitor ruffVisitor;
86+
private IExternalCodeAnalysisVisitor pyrightVisitor;
8387

8488
private boolean onlyRecreateCtxInsensitiveInfo;
8589

@@ -131,18 +135,21 @@ private static boolean isHierarchicallyDerived(IResource curr) {
131135
this.flake8Visitor = visitor;
132136
} else if (visitor instanceof OnlyRemoveMarkersRuffVisitor || visitor instanceof RuffVisitor) {
133137
this.ruffVisitor = visitor;
138+
} else if (visitor instanceof OnlyRemoveMarkersPyrightVisitor || visitor instanceof PyrightVisitor) {
139+
this.pyrightVisitor = visitor;
134140
}
135141
}
136-
if (pyLintVisitor == null || mypyVisitor == null || flake8Visitor == null || ruffVisitor == null) {
142+
if (pyLintVisitor == null || mypyVisitor == null || flake8Visitor == null || ruffVisitor == null || pyrightVisitor == null) {
137143
throw new AssertionError("All visitor types must be passed.");
138144
}
139145
} else {
140146
this.pyLintVisitor = PyLintVisitorFactory.create(resource, document, module, internalCancelMonitor);
141147
this.mypyVisitor = MypyVisitorFactory.create(resource, document, module, internalCancelMonitor);
142148
this.flake8Visitor = Flake8VisitorFactory.create(resource, document, module, internalCancelMonitor);
143149
this.ruffVisitor = RuffVisitorFactory.create(resource, document, module, internalCancelMonitor);
150+
this.pyrightVisitor = PyrightVisitorFactory.create(resource, document, module, internalCancelMonitor);
144151
this.allVisitors = new IExternalCodeAnalysisVisitor[] { this.pyLintVisitor, this.mypyVisitor,
145-
this.flake8Visitor, this.ruffVisitor };
152+
this.flake8Visitor, this.ruffVisitor, this.pyrightVisitor };
146153
}
147154

148155
for (IExternalCodeAnalysisVisitor visitor : allVisitors) {

plugins/com.python.pydev.analysis/src/com/python/pydev/analysis/additionalinfo/builders/AnalysisRunner.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ public class AnalysisRunner {
4949
public static final String MYPY_PROBLEM_MARKER = IMiscConstants.MYPY_PROBLEM_MARKER;
5050
public static final String FLAKE8_PROBLEM_MARKER = IMiscConstants.FLAKE8_PROBLEM_MARKER;
5151
public static final String RUFF_PROBLEM_MARKER = IMiscConstants.RUFF_PROBLEM_MARKER;
52+
public static final String PYRIGHT_PROBLEM_MARKER = IMiscConstants.PYRIGHT_PROBLEM_MARKER;
5253

5354
/**
5455
* do we want to debug this class?
@@ -137,6 +138,14 @@ public static void deleteMarkers(IResource resource, boolean onlyPydevAnalysisMa
137138
} catch (CoreException e3) {
138139
Log.log(e3);
139140
}
141+
142+
try {
143+
if (resource != null) {
144+
resource.deleteMarkers(PYRIGHT_PROBLEM_MARKER, false, IResource.DEPTH_ZERO);
145+
}
146+
} catch (CoreException e3) {
147+
Log.log(e3);
148+
}
140149
}
141150

142151
/**
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/**
2+
* Copyright (c) 2025 Brainwy Software Ltda. All Rights Reserved.
3+
* Licensed under the terms of the Eclipse Public License (EPL).
4+
* Please see the license.txt included with this distribution for details.
5+
* Any modifications to this file must keep this entire header intact.
6+
*/
7+
package com.python.pydev.analysis.pyright;
8+
9+
import org.eclipse.core.resources.IResource;
10+
import org.python.pydev.shared_core.IMiscConstants;
11+
12+
import com.python.pydev.analysis.external.AbstractExternalCodeAnalysisOnlyRemoveMarkersVisitor;
13+
14+
public class OnlyRemoveMarkersPyrightVisitor extends AbstractExternalCodeAnalysisOnlyRemoveMarkersVisitor {
15+
16+
public OnlyRemoveMarkersPyrightVisitor(IResource resource) {
17+
super(resource);
18+
}
19+
20+
public static final String PYRIGHT_PROBLEM_MARKER = IMiscConstants.PYRIGHT_PROBLEM_MARKER;
21+
public static final String PYRIGHT_MESSAGE_ID = IMiscConstants.PYRIGHT_MESSAGE_ID;
22+
23+
@Override
24+
public String getProblemMarkerId() {
25+
return PYRIGHT_PROBLEM_MARKER;
26+
}
27+
28+
@Override
29+
public String getMessageId() {
30+
return PYRIGHT_MESSAGE_ID;
31+
}
32+
33+
}

0 commit comments

Comments
 (0)