Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Keep Python script limited to
sysconfig
usage (#511)
## Summary This PR makes progress towards #476 and #479 by making the following changes: * Update the `ruff_server.py` script to limit itself to just getting the Ruff binary path using `sysconfig` * Use the `which` dependency and move the logic of locating the Ruff binary from `PATH` to TypeScript * Add log messages similar to `ruff-lsp` ## Test Plan ### 1 ```json { "ruff.nativeServer": true } ``` Or ```json { "ruff.nativeServer": true, "ruff.importStrategy": "fromEnvironment" } ``` Logs: When the `ruff` binary is installed in the current virtual environment: ``` 2024-07-03 15:28:35.674 [info] Using the Ruff binary: /Users/dhruv/work/astral/ruff-vscode/.venv/bin/ruff 2024-07-03 15:28:35.675 [info] Server run command: /Users/dhruv/work/astral/ruff-vscode/.venv/bin/ruff server --preview ``` If there's no `ruff` binary in the current virtual environment: ``` 2024-07-03 15:25:19.605 [info] Using the Ruff binary: /Users/dhruv/.local/bin/ruff 2024-07-03 15:25:19.606 [info] Server run command: /Users/dhruv/.local/bin/ruff server --preview ``` If the `ruff` binary is only available via `PATH`: ``` 2024-07-03 15:32:12.172 [info] Using environment executable: /opt/homebrew/bin/ruff 2024-07-03 15:32:12.173 [info] Server run command: /opt/homebrew/bin/ruff server --preview ``` And, if there's no `ruff` binary anywhere on the system, use the bundled binary: ``` 2024-07-03 15:29:47.948 [info] Falling back to bundled executable: /Users/dhruv/work/astral/ruff-vscode/bundled/libs/bin/ruff 2024-07-03 15:29:47.948 [info] Server run command: /Users/dhruv/work/astral/ruff-vscode/bundled/libs/bin/ruff server --preview ``` ### 2 ```json { "ruff.nativeServer": true, "ruff.importStrategy": "useBundled" } ``` Logs: ``` 2024-07-03 15:26:28.767 [info] Using bundled executable: /Users/dhruv/work/astral/ruff-vscode/bundled/libs/bin/ruff 2024-07-03 15:26:28.767 [info] Server run command: /Users/dhruv/work/astral/ruff-vscode/bundled/libs/bin/ruff server --preview ``` ### 3 ```json { "ruff.nativeServer": true, "ruff.path": ["/Users/dhruv/work/astral/ruff/target/debug/ruff"] } ``` Logs: ``` 2024-07-03 15:27:42.342 [info] Using 'path' setting: /Users/dhruv/work/astral/ruff/target/debug/ruff 2024-07-03 15:27:42.342 [info] Server run command: /Users/dhruv/work/astral/ruff/target/debug/ruff server --preview ``` ### 4 ```json { "ruff.nativeServer": true, "ruff.interpreter": [ "/Users/dhruv/work/astral/ruff-lsp/.venv/bin/python" ] } ``` Logs: ``` 2024-07-03 15:35:23.578 [info] Using the Ruff binary: /Users/dhruv/work/astral/ruff-lsp/.venv/bin/ruff 2024-07-03 15:35:23.578 [info] Server run command: /Users/dhruv/work/astral/ruff-lsp/.venv/bin/ruff server --preview ``` ### 5 What if the script failed? I modified the script path in TypeScript code and we get the following logs: ``` 2024-07-03 15:42:41.035 [error] Error while trying to find the Ruff binary: Error: Command failed: /Users/dhruv/work/astral/ruff-lsp/.venv/bin/python /Users/dhruv/work/astral/ruff-vscode/bundled/tool/find_ruff_binary_pat.py /Users/dhruv/work/astral/ruff-lsp/.venv/bin/python: can't open file '/Users/dhruv/work/astral/ruff-vscode/bundled/tool/find_ruff_binary_pat.py': [Errno 2] No such file or directory 2024-07-03 15:42:41.037 [info] Using environment executable: /Users/dhruv/.local/bin/ruff 2024-07-03 15:42:41.040 [info] Server run command: /Users/dhruv/.local/bin/ruff server --preview ```
- Loading branch information