Rename Red Knot (#17820)

This commit is contained in:
Micha Reiser 2025-05-03 19:49:15 +02:00 committed by GitHub
parent e6a798b962
commit b51c4f82ea
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
1564 changed files with 1598 additions and 1578 deletions

View file

@ -0,0 +1,6 @@
# Boolean literals
```py
reveal_type(True) # revealed: Literal[True]
reveal_type(False) # revealed: Literal[False]
```

View file

@ -0,0 +1,10 @@
# Bytes literals
## Simple
```py
reveal_type(b"t" b"y") # revealed: Literal[b"ty"]
reveal_type(b"hello") # revealed: Literal[b"hello"]
reveal_type(b"world" + b"!") # revealed: Literal[b"world!"]
reveal_type(b"\xff\x00") # revealed: Literal[b"\xff\x00"]
```

View file

@ -0,0 +1,7 @@
# Dictionaries
## Empty dictionary
```py
reveal_type({}) # revealed: dict[Unknown, Unknown]
```

View file

@ -0,0 +1,7 @@
# Lists
## Empty list
```py
reveal_type([]) # revealed: list
```

View file

@ -0,0 +1,7 @@
# Sets
## Basic set
```py
reveal_type({1, 2}) # revealed: set
```

View file

@ -0,0 +1,17 @@
# Tuples
## Empty tuple
```py
reveal_type(()) # revealed: tuple[()]
```
## Heterogeneous tuple
```py
reveal_type((1, "a")) # revealed: tuple[Literal[1], Literal["a"]]
reveal_type((1, (2, 3))) # revealed: tuple[Literal[1], tuple[Literal[2], Literal[3]]]
reveal_type(((1, "a"), 2)) # revealed: tuple[tuple[Literal[1], Literal["a"]], Literal[2]]
```

View file

@ -0,0 +1,7 @@
# Complex literals
## Complex numbers
```py
reveal_type(2j) # revealed: complex
```

View file

@ -0,0 +1,23 @@
# Ellipsis literals
## Python 3.9
```toml
[environment]
python-version = "3.9"
```
```py
reveal_type(...) # revealed: ellipsis
```
## Python 3.10
```toml
[environment]
python-version = "3.10"
```
```py
reveal_type(...) # revealed: EllipsisType
```

View file

@ -0,0 +1,32 @@
# f-strings
## Expression
```py
from typing_extensions import Literal
def _(x: Literal[0], y: str, z: Literal[False]):
reveal_type(f"hello") # revealed: Literal["hello"]
reveal_type(f"h {x}") # revealed: Literal["h 0"]
reveal_type("one " f"single " f"literal") # revealed: Literal["one single literal"]
reveal_type("first " f"second({x})" f" third") # revealed: Literal["first second(0) third"]
reveal_type(f"-{y}-") # revealed: str
reveal_type(f"-{y}-" f"--" "--") # revealed: str
reveal_type(f"{z} == {False} is {True}") # revealed: Literal["False == False is True"]
```
## Conversion Flags
```py
string = "hello"
# TODO: should be `Literal["'hello'"]`
reveal_type(f"{string!r}") # revealed: str
```
## Format Specifiers
```py
# TODO: should be `Literal["01"]`
reveal_type(f"{1:02}") # revealed: str
```

View file

@ -0,0 +1,7 @@
# Float literals
## Basic
```py
reveal_type(1.0) # revealed: float
```

View file

@ -0,0 +1,56 @@
# Integer literals
## Literals
We can infer an integer literal type:
```py
reveal_type(1) # revealed: Literal[1]
```
## Variable
```py
x = 1
reveal_type(x) # revealed: Literal[1]
```
## Overflow
We only track integer literals within the range of an i64:
```py
reveal_type(9223372036854775808) # revealed: int
```
## Big int
We don't support big integer literals; we just infer `int` type instead:
```py
x = 10_000_000_000_000_000_000
reveal_type(x) # revealed: int
```
## Negated
```py
x = -1
y = -1234567890987654321
z = --987
reveal_type(x) # revealed: Literal[-1]
reveal_type(y) # revealed: Literal[-1234567890987654321]
reveal_type(z) # revealed: Literal[987]
```
## Floats
```py
reveal_type(1.0) # revealed: float
```
## Complex
```py
reveal_type(2j) # revealed: complex
```

View file

@ -0,0 +1,21 @@
# String literals
## Simple
```py
reveal_type("Hello") # revealed: Literal["Hello"]
reveal_type("world") # revealed: Literal["world"]
reveal_type("Guten " + "Tag") # revealed: Literal["Guten Tag"]
reveal_type("bon " + "jour") # revealed: Literal["bon jour"]
```
## Nested Quotes
```py
reveal_type('I say "hello" to you') # revealed: Literal["I say \"hello\" to you"]
# revealed: Literal["You say \"hey\" back"]
reveal_type("You say \"hey\" back") # fmt: skip
reveal_type('No "closure here') # revealed: Literal["No \"closure here"]
```