Skip to content

Pull Pylance with Pyright 1.1.406#11010

Merged
heejaechang merged 2 commits intomainfrom
pull-pylance-with-pyright-1.1.406-20251008-232729
Oct 9, 2025
Merged

Pull Pylance with Pyright 1.1.406#11010
heejaechang merged 2 commits intomainfrom
pull-pylance-with-pyright-1.1.406-20251008-232729

Conversation

@bschnurr
Copy link
Member

@bschnurr bschnurr commented Oct 8, 2025

The majority of these changes are around handling workspace pull diagnostics, which didn't work the way we originally thought.

VS code asks for workspace diagnostics and then expects the server to continually provide progress as things change.

This PR is changing Pyright to do that and to register dynamically for pull diagnostics based on the value 'diagnosticMode'.

@heejaechang heejaechang merged commit 20aa20a into main Oct 9, 2025
20 checks passed
@github-actions
Copy link
Contributor

github-actions bot commented Oct 9, 2025

Diff from mypy_primer, showing the effect of this PR on open source code:

sympy (https://github.com/sympy/sympy)
+   .../projects/sympy/sympy/solvers/bivariate.py:134:15 - error: Operator "-" not supported for "None" (reportOptionalOperand)
+   .../projects/sympy/sympy/solvers/bivariate.py:138:17 - error: Operator "-" not supported for type "Basic | Any | Unknown" (reportOperatorIssue)
+   .../projects/sympy/sympy/solvers/bivariate.py:143:23 - error: Operator "-" not supported for "None" (reportOptionalOperand)
+   .../projects/sympy/sympy/solvers/deutils.py:233:14 - error: Operator "not in" not supported for types "str" and "Unknown | int"
+     Operator "not in" not supported for types "str" and "int" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:420:38 - error: Argument of type "int | Any | Unknown | Expr" cannot be assigned to parameter "expr" of type "Expr" in function "make_args"
+   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:420:38 - error: Argument of type "Unknown | Expr | Literal[0]" cannot be assigned to parameter "expr" of type "Expr" in function "make_args"
-     Type "int | Any | Unknown | Expr" is not assignable to type "Expr"
+     Type "Unknown | Expr | Literal[0]" is not assignable to type "Expr"
-       "int" is not assignable to "Expr" (reportArgumentType)
+       "Literal[0]" is not assignable to "Expr" (reportArgumentType)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:499:19 - error: Operator "**" not supported for types "Unknown | Basic" and "Literal[2]"
-     Operator "**" not supported for types "Basic" and "Literal[2]" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:500:19 - error: Operator "*" not supported for types "Unknown | Basic" and "Unknown | Basic"
-     Operator "*" not supported for types "Basic" and "Basic" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:501:19 - error: Operator "**" not supported for types "Unknown | Basic" and "Literal[2]"
-     Operator "**" not supported for types "Basic" and "Literal[2]" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:564:42 - error: Operator "*" not supported for types "int" and "Unknown | Basic"
-     Operator "*" not supported for types "int" and "Basic" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:564:50 - error: Operator "*" not supported for types "Expr" and "Unknown | Basic"
-     Operator "*" not supported for types "Expr" and "Basic" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:720:42 - error: Operator "**" not supported for types "Unknown | Basic" and "Literal[2]"
-     Operator "**" not supported for types "Basic" and "Literal[2]" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:730:19 - error: Operator "**" not supported for types "Unknown | Basic" and "Literal[2]"
-     Operator "**" not supported for types "Basic" and "Literal[2]" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:731:19 - error: Operator "**" not supported for types "Unknown | Basic" and "Literal[2]"
-     Operator "**" not supported for types "Basic" and "Literal[2]" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:732:19 - error: Operator "**" not supported for types "Unknown | Basic" and "Literal[2]"
-     Operator "**" not supported for types "Basic" and "Literal[2]" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:809:47 - error: Operator "**" not supported for types "Unknown | Basic" and "Literal[2]"
-     Operator "**" not supported for types "Basic" and "Literal[2]" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:836:26 - error: Operator "**" not supported for types "Unknown | Basic" and "Literal[2]"
-     Operator "**" not supported for types "Basic" and "Literal[2]" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:837:22 - error: Operator "*" not supported for types "Unknown | Basic" and "Unknown | Basic"
-     Operator "*" not supported for types "Basic" and "Basic" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:838:36 - error: Operator "*" not supported for types "int | Any | Unknown" and "Unknown | Basic"
-     Operator "*" not supported for types "int" and "Basic" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:838:42 - error: Operator "*" not supported for types "Unknown | Basic" and "Unknown | Basic"
-     Operator "*" not supported for types "Basic" and "Basic" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:838:51 - error: Operator "*" not supported for types "int | Any | Unknown" and "Unknown | Basic"
-     Operator "*" not supported for types "int" and "Basic" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:838:57 - error: Operator "*" not supported for types "Unknown | Basic" and "Unknown | Basic"
-     Operator "*" not supported for types "Basic" and "Basic" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:838:66 - error: Operator "*" not supported for types "Unknown | Basic" and "Unknown | Basic"
-     Operator "*" not supported for types "Basic" and "Basic" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:840:53 - error: Operator "*" not supported for types "Unknown | Basic" and "Unknown | Basic"
-     Operator "*" not supported for types "Basic" and "Basic" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:849:18 - error: Operator "**" not supported for types "Unknown | Basic" and "Literal[2]"
-     Operator "**" not supported for types "Basic" and "Literal[2]" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:851:22 - error: Operator "**" not supported for types "Unknown | Basic" and "Literal[2]"
-     Operator "**" not supported for types "Basic" and "Literal[2]" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:860:22 - error: Operator "*" not supported for types "Unknown | Basic" and "Unknown | Basic"
-     Operator "*" not supported for types "Basic" and "Basic" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:860:36 - error: Operator "*" not supported for types "Unknown | Basic" and "Unknown | Basic"
-     Operator "*" not supported for types "Basic" and "Basic" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:862:27 - error: Operator "**" not supported for types "Unknown | Basic" and "Literal[2]"
-     Operator "**" not supported for types "Basic" and "Literal[2]" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:863:27 - error: Operator "*" not supported for types "Unknown | Basic" and "Unknown | Basic"
-     Operator "*" not supported for types "Basic" and "Basic" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:864:27 - error: Operator "*" not supported for types "Unknown | Basic" and "Unknown | Basic"
-     Operator "*" not supported for types "Basic" and "Basic" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:865:27 - error: Operator "**" not supported for types "Unknown | Basic" and "Literal[2]"
-     Operator "**" not supported for types "Basic" and "Literal[2]" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:866:27 - error: Operator "*" not supported for types "Unknown | Basic" and "Unknown | Basic"
-     Operator "*" not supported for types "Basic" and "Basic" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:867:27 - error: Operator "**" not supported for types "Unknown | Basic" and "Literal[2]"
-     Operator "**" not supported for types "Basic" and "Literal[2]" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:871:24 - error: Operator "**" not supported for types "Unknown | Basic" and "Literal[2]"
-     Operator "**" not supported for types "Basic" and "Literal[2]" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:872:24 - error: Operator "**" not supported for types "Unknown | Basic" and "Literal[2]"
-     Operator "**" not supported for types "Basic" and "Literal[2]" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:873:24 - error: Operator "**" not supported for types "Unknown | Basic" and "Literal[2]"
-     Operator "**" not supported for types "Basic" and "Literal[2]" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:874:24 - error: Operator "*" not supported for types "Unknown | Basic" and "Unknown | Basic"
-     Operator "*" not supported for types "Basic" and "Basic" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:875:24 - error: Operator "*" not supported for types "Unknown | Basic" and "Unknown | Basic"
-     Operator "*" not supported for types "Basic" and "Basic" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:876:24 - error: Operator "*" not supported for types "Unknown | Basic" and "Unknown | Basic"
-     Operator "*" not supported for types "Basic" and "Basic" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:883:37 - error: Operator "*" not supported for types "int | Any | Unknown" and "Unknown | None"
-     Operator "*" not supported for types "int" and "None" (reportOperatorIssue)
-   .../projects/sympy/sympy/solvers/diophantine/diophantine.py:883:45 - error: Operator "*" not supported for types "int | Any | Unknown" and "Unknown | None"

... (truncated 412 lines) ...

maxwell-k added a commit to maxwell-k/ale that referenced this pull request Jan 10, 2026
pyright>=1.1.407 needs textDocument/diagnostic requests. pyright changed
in <microsoft/pyright#11010>. Both VS Code and
pyright come from Microsoft.

> VS code asks for workspace diagnostics and then expects the server to
> continually provide progress as things change.

Without the workaround below, ALE does not (1) ask pyright for diagnostics
or (2) receive any diagnostics from pyright.

Debugging the behaviour I can see that:

1. pyright does not send capability responses including diagnosticProvider.
2. ALE does not set the pull_model capability without diagnosticProvider in
   the response from pyright.
3. Without the pull_model capability ale#lsp#message#Diagnostic is not
   called and no textDocument/diagnostic message is sent.
4. Without a textDocument/diagnostic message, pyright==1.1.407 does not
   provide any diagnostics.

pack/submodules/start/ale/autoload/ale/lsp.vim:280
pack/submodules/start/ale/autoload/ale/lsp_linter.vim:572

Put another way:

> it never sends any textDocument/diagnostic requests so pyright never
> responds with any diagnostics.

—<zed-industries/zed#40980 (comment)>
maxwell-k added a commit to maxwell-k/ale that referenced this pull request Jan 10, 2026
pyright>=1.1.407 needs textDocument/diagnostic requests. pyright changed
in <microsoft/pyright#11010>. Both VS Code and
pyright come from Microsoft.

> VS code asks for workspace diagnostics and then expects the server to
> continually provide progress as things change.

Without the workaround below, ALE does not (1) ask pyright for diagnostics
or (2) receive any diagnostics from pyright.

Debugging the behaviour I can see that:

1. pyright does not send capability responses including diagnosticProvider.
2. ALE does not set the pull_model capability without diagnosticProvider in
   the response from pyright.
3. Without the pull_model capability ale#lsp#message#Diagnostic is not
   called and no textDocument/diagnostic message is sent.
4. Without a textDocument/diagnostic message, pyright==1.1.407 does not
   provide any diagnostics.

pack/submodules/start/ale/autoload/ale/lsp.vim:280
pack/submodules/start/ale/autoload/ale/lsp_linter.vim:572

Put another way:

> it never sends any textDocument/diagnostic requests so pyright never
> responds with any diagnostics.

—<zed-industries/zed#40980 (comment)>
maxwell-k added a commit to maxwell-k/ale that referenced this pull request Feb 5, 2026
pyright>=1.1.407 needs textDocument/diagnostic requests. pyright changed
in <microsoft/pyright#11010>. Both VS Code and
pyright come from Microsoft.

> VS code asks for workspace diagnostics and then expects the server to
> continually provide progress as things change.

Without the workaround below, ALE does not (1) ask pyright for diagnostics
or (2) receive any diagnostics from pyright.

Debugging the behaviour I can see that:

1. pyright does not send capability responses including diagnosticProvider.
2. ALE does not set the pull_model capability without diagnosticProvider in
   the response from pyright.
3. Without the pull_model capability ale#lsp#message#Diagnostic is not
   called and no textDocument/diagnostic message is sent.
4. Without a textDocument/diagnostic message, pyright==1.1.407 does not
   provide any diagnostics.

pack/submodules/start/ale/autoload/ale/lsp.vim:280
pack/submodules/start/ale/autoload/ale/lsp_linter.vim:572

Put another way:

> it never sends any textDocument/diagnostic requests so pyright never
> responds with any diagnostics.

—<zed-industries/zed#40980 (comment)>
maxwell-k added a commit to maxwell-k/ale that referenced this pull request Mar 4, 2026
pyright>=1.1.407 needs textDocument/diagnostic requests. pyright changed
in <microsoft/pyright#11010>. Both VS Code and
pyright come from Microsoft.

> VS code asks for workspace diagnostics and then expects the server to
> continually provide progress as things change.

Without the workaround below, ALE does not (1) ask pyright for diagnostics
or (2) receive any diagnostics from pyright.

Debugging the behaviour I can see that:

1. pyright does not send capability responses including diagnosticProvider.
2. ALE does not set the pull_model capability without diagnosticProvider in
   the response from pyright.
3. Without the pull_model capability ale#lsp#message#Diagnostic is not
   called and no textDocument/diagnostic message is sent.
4. Without a textDocument/diagnostic message, pyright==1.1.407 does not
   provide any diagnostics.

pack/submodules/start/ale/autoload/ale/lsp.vim:280
pack/submodules/start/ale/autoload/ale/lsp_linter.vim:572

Put another way:

> it never sends any textDocument/diagnostic requests so pyright never
> responds with any diagnostics.

—<zed-industries/zed#40980 (comment)>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants