Skip to content

feat(python): python code intelligence via Pyrefly with Ruff formatting#3016

Open
abose wants to merge 2 commits into
mainfrom
ai
Open

feat(python): python code intelligence via Pyrefly with Ruff formatting#3016
abose wants to merge 2 commits into
mainfrom
ai

Conversation

@abose

@abose abose commented Jul 7, 2026

Copy link
Copy Markdown
Member
  • New PythonSupport default extension (desktop only): completion, hover, signature help, jump-to-definition, references, type diagnostics and quick fixes through the shared LSP framework, powered by an exact-pinned Pyrefly wheel installed on demand from PyPI (sha256-verified, node-side download + stdlib zip extraction, no npm or Python runtime needed)
  • Ruff installs alongside (own pin, independent upgrade) and powers only the Beautify command as a standalone 'ruff format' stdin call
  • Generic NodeUtils: downloadFile (streamed, progress events, sha256), extractZipFile (stdlib unzipper, restores exec bits), setExecutableBits, execFileWithInput
  • LSP framework: per-server workspaceConfiguration served to workspace/configuration pulls (pyrefly treats the null fallback answer as all-diagnostics-off)
  • Install UX shared with PHP: once-per-lifetime dialog over the find-bar prompt (terse line + benefits hover card + powered-by links + download size beside the action buttons); bar styles generalized to lsp-install-*
  • Fix buttons (problems panel + hover quick view) now show the LSP code action title as tooltip so users see what a fix will apply
  • integration:Python LSP suite (7 specs) + fixtures

- New PythonSupport default extension (desktop only): completion, hover,
  signature help, jump-to-definition, references, type diagnostics and
  quick fixes through the shared LSP framework, powered by an exact-pinned
  Pyrefly wheel installed on demand from PyPI (sha256-verified, node-side
  download + stdlib zip extraction, no npm or Python runtime needed)
- Ruff installs alongside (own pin, independent upgrade) and powers only
  the Beautify command as a standalone 'ruff format' stdin call
- Generic NodeUtils: downloadFile (streamed, progress events, sha256),
  extractZipFile (stdlib unzipper, restores exec bits), setExecutableBits,
  execFileWithInput
- LSP framework: per-server workspaceConfiguration served to
  workspace/configuration pulls (pyrefly treats the null fallback answer
  as all-diagnostics-off)
- Install UX shared with PHP: once-per-lifetime dialog over the find-bar
  prompt (terse line + benefits hover card + powered-by links + download
  size beside the action buttons); bar styles generalized to lsp-install-*
- Fix buttons (problems panel + hover quick view) now show the LSP code
  action title as tooltip so users see what a fix will apply
- integration:Python LSP suite (7 specs) + fixtures
…vers it

JSON key completion inside autoclosed quotes (`"|"`) inserted
`"author": {}"` - the server's textEdit range covers both quotes, but
insertHint always clamped the replacement end to the cursor, leaving the
closing quote dangling. Now a range.end beyond the cursor is honored;
an end at/before the cursor is still clamped so cached completion lists
served while typing forward keep working as before.

Adds a JSON LSP regression spec driving the hint provider directly (the
popup UI needs OS window focus the embedded test window may not have),
plus a test-only _getClient hook in JsonLsp.
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
20.5% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

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.

1 participant