Skip to content

LiteralString inference on dict keys #2517

@grievejia

Description

@grievejia

Describe the Bug

Minimal repro:

from string import ascii_uppercase
letter_to_index = {char: i for i, char in enumerate(ascii_uppercase)}

def encode(message: str) -> list[int]:
    result = []
    for letter in message:
        result.append(letter_to_index[letter])  # FP: str not assignable to LiteralString
    return result

No other type checker infers letter_to_index as keyed on LiteralString.

Sandbox Link

https://pyrefly.org/sandbox/?project=N4IgZglgNgpgziAXKOBDAdgEwEYHsAeAdAA4CeS4ATrgLYAEcALpROgOZ0Q3G6WN2o4AYwgQA%2BgFdixGJSGCYAHXSxGjWWMa4xrTDHx0AvHWBCAFqkqJOdML04AaOucud0dGOgk1ZqdQApBEXEpGTkFAEoAX2VYrBgwD3QhXD1-Hzg0NhhrJkoIugBaAD46KAgmAG1WRgBdRGU6JrpKeAkofmNK2sbmu0oymDVZNzoMrJze5ubWuHbGQlRpT0x-VXVKTW1dfUr12VqCugBiOgAxAAVc5jp0XH5BOAg2dFRsWDotOgAZCA3UKAAZWYrDYUxaQwklHcs3mIAcIAkjGgcBI5EQIFOAFVkeVGKRbBJksjcOg4HE9Il%2BjQ-GIvDRsLJ-PhrDUCiUGMwGu4ZpDobZFCAAHLeRlWEz4GIgZTwkBkVpgKCkQhaGhQCinC6kBVKhgYHAEZykyBsKF%2BCCkwjKU6AmAwOhmNTEOCIAD0rvlCSVhF4bFdnldmFwQjgrpS6BNZpJ6FdtnsqAAbqhoG8PuHI5RzaS6LhiNHUcoyIwzKTCgnZE9s8ZBQBmQgARgATIKZVEEaghMjy2doDAKGgsHgiGQQFEgA

(Only applicable for extension issues) IDE Information

No response

Metadata

Metadata

Assignees

Labels

typecheckingusabilityUsability & readiness issues identified with running Pyrefly on top OSS projects

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions