ruff/crates
Shunsuke Shibayama 08a561fc05
[ty] more precise lazy scope place lookup (#19932)
## Summary

This is a follow-up to https://github.com/astral-sh/ruff/pull/19321.

Now lazy snapshots are updated to take into account new bindings on
every symbol reassignment.

```python
def outer(x: A | None):
    if x is None:
        x = A()

    reveal_type(x)  # revealed: A

    def inner() -> None:
        # lazy snapshot: {x: A}
        reveal_type(x)  # revealed: A
    inner()

def outer() -> None:
    x = None

    x = 1

    def inner() -> None:
        # lazy snapshot: {x: Literal[1]} -> {x: Literal[1, 2]}
        reveal_type(x)  # revealed: Literal[1, 2]
    inner()

    x = 2
```

Closes astral-sh/ty#559.

## Test Plan

Some TODOs in `public_types.md` now work properly.

---------

Co-authored-by: Carl Meyer <carl@astral.sh>
2025-09-08 21:08:35 +00:00
..
ruff Bump 0.12.12 (#20242) 2025-09-04 11:35:56 -05:00
ruff_annotate_snippets Move full diagnostic rendering to `ruff_db` (#19415) 2025-08-08 12:56:23 -04:00
ruff_benchmark [ty] Benchmarks for problematic implicit instance attributes cases (#20133) 2025-08-28 15:25:25 +02:00
ruff_cache Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
ruff_db Add support for sorting diagnostics without a range (#20257) 2025-09-05 15:23:30 -07:00
ruff_dev [ty] Remove duplicate global lint registry (#20053) 2025-08-22 19:43:12 -04:00
ruff_diagnostics Fix rust feature activation (#20012) 2025-08-21 09:26:06 +02:00
ruff_formatter Update Rust toolchain to 1.89 (#19807) 2025-08-07 18:21:50 +02:00
ruff_graph [ty] Remove `KnownModule::is_enum` (#19681) 2025-08-01 10:31:12 +02:00
ruff_index Update Rust toolchain to 1.88 and MSRV to 1.86 (#19011) 2025-06-28 20:24:00 +02:00
ruff_linter [`pep8-naming`] Fix formatting of `__all__` (`N816`) (#20301) 2025-09-08 14:40:38 +00:00
ruff_macros Don't cache files with diagnostics (#19869) 2025-08-12 15:28:44 -04:00
ruff_memory_usage [ty] Track heap usage of salsa structs (#19790) 2025-08-12 13:28:44 +02:00
ruff_notebook Improve diff rendering for notebooks (#20036) 2025-08-25 09:20:42 -04:00
ruff_options_metadata Update Rust toolchain to 1.89 (#19807) 2025-08-07 18:21:50 +02:00
ruff_python_ast [ty] Implement the legacy PEP-484 convention for indicating positional-only parameters (#20248) 2025-09-05 17:56:06 +01:00
ruff_python_ast_integration_tests Disallow implicit concatenation of t-strings and other string types (#19485) 2025-07-27 12:41:03 +00:00
ruff_python_codegen Expose `Indentation` in `ruff_python_codegen` (#20216) 2025-09-03 13:32:31 -04:00
ruff_python_formatter [ty] Shrink size of `AstNodeRef` (#20028) 2025-08-22 17:03:22 -04: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 [syntax-errors] Detect `yield from` inside async function (#20051) 2025-09-03 10:13:05 -04:00
ruff_python_semantic Add a `ScopeKind` for the `__class__` cell (#20048) 2025-08-26 09:49:08 -04:00
ruff_python_stdlib Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
ruff_python_trivia [`ruff`] Preserve relative whitespace in multi-line expressions (`RUF033`) (#19647) 2025-08-27 19:15:44 +00:00
ruff_python_trivia_integration_tests Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
ruff_server Update Rust toolchain to 1.89 (#19807) 2025-08-07 18:21:50 +02:00
ruff_source_file Move diff rendering to `ruff_db` (#20006) 2025-08-21 09:47:00 -04:00
ruff_text_size [ty] Fix a few more diagnostic differences from Ruff (#19806) 2025-08-08 11:31:19 -04:00
ruff_wasm Bump 0.12.12 (#20242) 2025-09-04 11:35:56 -05:00
ruff_workspace Fix rust feature activation (#20012) 2025-08-21 09:26:06 +02:00
ty [ty] Include `python` folder in `environment.root` if it exists (#20263) 2025-09-05 13:53:48 +02:00
ty_combine [ty] Disallow std::env and io methods in most ty crates (#20046) 2025-08-22 11:13:47 -07:00
ty_ide [ty] Add support for generic PEP695 type aliases (#20219) 2025-09-08 13:26:21 -07:00
ty_project [ty] Include `python` folder in `environment.root` if it exists (#20263) 2025-09-05 13:53:48 +02:00
ty_python_semantic [ty] more precise lazy scope place lookup (#19932) 2025-09-08 21:08:35 +00:00
ty_server [ty] Correct default value for experimental rename setting 2025-09-03 09:57:26 -04:00
ty_static [ty] Disallow std::env and io methods in most ty crates (#20046) 2025-08-22 11:13:47 -07:00
ty_test [ty] Add functions for revealing assignability/subtyping constraints (#20217) 2025-09-03 16:44:35 -04:00
ty_vendored [ty] Fix signature of `NamedTupleLike._make` (#20302) 2025-09-08 14:53:17 +02:00
ty_wasm [ty] Make auto-import completions opt-in via an experimental option 2025-09-03 09:57:26 -04:00