mirror of
https://github.com/astral-sh/ruff.git
synced 2025-10-22 16:22:52 +00:00
This is a drive-by improvement that I stumbled backwards into while looking into * https://github.com/astral-sh/ty/issues/296 I was writing some simple tests for "thing not in old version of stdlib" diagnostics and checked what was added in 3.14, and saw `compression.zstd` and to my surprise discovered that `import compression.zstd` and `from compression import zstd` had completely different quality diagnostics. This is because `compression` and `compression.zstd` were *both* introduced in 3.14, and so per VERSIONS policy only an entry for `compression` was added, and so we don't actually have any definite info on `compression.zstd` and give up on producing a diagnostic. However the `from compression import zstd` form fails on looking up `compression` and we *do* have an exact match for that, so it gets a better diagnostic! (aside: I have now learned about the VERSIONS format and I *really* wish they would just enumerate all the submodules but, oh well!) The fix is, when handling an import failure, if we fail to find an exact match *we requery with the parent module*. In cases like `compression.zstd` this lets us at least identify that, hey, not even `compression` exists, and luckily that fixes the whole issue. In cases where the parent module and submodule were introduced at different times then we may discover that the parent module is in-range and that's fine, we don't produce the richer stdlib diagnostic. |
||
|---|---|---|
| .. | ||
| basic.md | ||
| builtins.md | ||
| case_sensitive.md | ||
| conditional.md | ||
| conflicts.md | ||
| conventions.md | ||
| cyclic.md | ||
| dunder_all.md | ||
| errors.md | ||
| invalid_syntax.md | ||
| module_getattr.md | ||
| namespace.md | ||
| partial_stub_packages.md | ||
| relative.md | ||
| site_packages_discovery.md | ||
| star.md | ||
| stub_packages.md | ||
| stubs.md | ||
| tracking.md | ||