ruff/crates
Alex Waygood 8485dbb324
[ty] Fix `--python` argument for Windows, and improve error messages for bad `--python` arguments (#18457)
## Summary

Fixes https://github.com/astral-sh/ty/issues/556.

On Windows, system installations have different layouts to virtual
environments. In Windows virtual environments, the Python executable is
found at `<sys.prefix>/Scripts/python.exe`. But in Windows system
installations, the Python executable is found at
`<sys.prefix>/python.exe`. That means that Windows users were able to
point to Python executables inside virtual environments with the
`--python` flag, but they weren't able to point to Python executables
inside system installations.

This PR fixes that issue. It also makes a couple of other changes:
- Nearly all `sys.prefix` resolution is moved inside `site_packages.rs`.
That was the original design of the `site-packages` resolution logic,
but features implemented since the initial implementation have added
some resolution and validation to `resolver.rs` inside the module
resolver. That means that we've ended up with a somewhat confusing code
structure and a situation where several checks are unnecessarily
duplicated between the two modules.
- I noticed that we had quite bad error messages if you e.g. pointed to
a path that didn't exist on disk with `--python` (we just gave a
somewhat impenetrable message saying that we "failed to canonicalize"
the path). I improved the error messages here and added CLI tests for
`--python` and the `environment.python` configuration setting.

## Test Plan

- Existing tests pass
- Added new CLI tests
- I manually checked that virtual-environment discovery still works if
no configuration is given
- Micha did some manual testing to check that pointing `--python` to a
system-installation executable now works on Windows
2025-06-05 08:19:15 +01:00
..
ruff [ty] Fix `--python` argument for Windows, and improve error messages for bad `--python` arguments (#18457) 2025-06-05 08:19:15 +01:00
ruff_annotate_snippets Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
ruff_benchmark [ty] Add --config-file CLI arg (#18083) 2025-05-27 08:00:38 +02:00
ruff_cache Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
ruff_db Update salsa past generational id change (#18362) 2025-05-30 15:31:33 +02:00
ruff_dev Add a `ViolationMetadata::rule` method (#18234) 2025-05-28 09:27:09 -04:00
ruff_diagnostics Add a `ViolationMetadata::rule` method (#18234) 2025-05-28 09:27:09 -04:00
ruff_formatter Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
ruff_graph [ty] Fix `--python` argument for Windows, and improve error messages for bad `--python` arguments (#18457) 2025-06-05 08:19:15 +01:00
ruff_index Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
ruff_linter [`pyupgrade`] Make fix unsafe if it deletes comments (`UP050`) (#18390) 2025-06-03 09:10:15 -04:00
ruff_macros Add a `ViolationMetadata::rule` method (#18234) 2025-05-28 09:27:09 -04:00
ruff_notebook Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
ruff_options_metadata [ty] Document configuration schema (#17950) 2025-05-09 10:47:45 +02:00
ruff_python_ast Implement template strings (#17851) 2025-05-30 15:00:56 -05:00
ruff_python_ast_integration_tests Implement template strings (#17851) 2025-05-30 15:00:56 -05:00
ruff_python_codegen Implement template strings (#17851) 2025-05-30 15:00:56 -05:00
ruff_python_formatter Implement template strings (#17851) 2025-05-30 15:00:56 -05:00
ruff_python_index Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
ruff_python_literal Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
ruff_python_parser Implement template strings (#17851) 2025-05-30 15:00:56 -05:00
ruff_python_resolver Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
ruff_python_semantic Implement template strings (#17851) 2025-05-30 15:00:56 -05:00
ruff_python_stdlib Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
ruff_python_trivia Add `offset` method to `ruff_python_trivia::Cursor` (#18371) 2025-05-29 16:08:15 +01:00
ruff_python_trivia_integration_tests Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
ruff_server Add a `ViolationMetadata::rule` method (#18234) 2025-05-28 09:27:09 -04:00
ruff_source_file Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
ruff_text_size Add rustfmt.toml file (#18197) 2025-05-19 11:40:58 -04:00
ruff_wasm Bump 0.11.12 (#18369) 2025-05-29 09:17:12 -04:00
ruff_workspace Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
ty [ty] Fix `--python` argument for Windows, and improve error messages for bad `--python` arguments (#18457) 2025-06-05 08:19:15 +01:00
ty_ide [ty] IDE: only provide declarations and bindings as completions (#18456) 2025-06-04 16:11:05 +02:00
ty_project [ty] Fix `--python` argument for Windows, and improve error messages for bad `--python` arguments (#18457) 2025-06-05 08:19:15 +01:00
ty_python_semantic [ty] Fix `--python` argument for Windows, and improve error messages for bad `--python` arguments (#18457) 2025-06-05 08:19:15 +01:00
ty_server [ty] Fix server hang after shutdown request (#18414) 2025-06-02 06:57:51 +00:00
ty_test [ty] Fix `--python` argument for Windows, and improve error messages for bad `--python` arguments (#18457) 2025-06-05 08:19:15 +01:00
ty_vendored Sync vendored typeshed stubs (#18407) 2025-06-01 15:21:18 +01:00
ty_wasm Use ty's completions in playground (#18425) 2025-06-03 10:11:39 +02:00