`type[Self]` converted to a callable drops constructor signature
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Describe the Bug
from typing import Callable
def identity[**P, R](cb: Callable[P, R]) -> Callable[P, R]:
return cb
class Foo:
def __init__(self, value: int) -> None: ...
@classmethod
def meth(cls) -> None:
reveal_type(cls) # type[Self@Foo]
reveal_type(identity(cls)) # (*args: Any, **kwds: Any) -> Any
cls("") # error, expected
f: Callable[[str], Foo] = cls # no error
def explicit(t: type[Foo]) -> None:
reveal_type(identity(t)) # (value: int) -> Foo
When a variable declared type[Self] (such as the cls parameter of a classmethod) is used where a callable is expected, pyrefly treats it as type.__call__ instead of using the constructor of the class bound to Self.
Sandbox Link
(Only applicable for extension issues) IDE Information
No response
- Lenguaje dominante
- Rust
- Estrellas
- 7.2k
- Forks
- 578
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de facebook/pyrefly
-
sqlalchemy
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
-
typechecking
Dificultad 4/5 3-5 días Aptitud para principiantes 57/100
-
quansight
Dificultad 3/5 Medio día Aptitud para principiantes 55/100
-
Version-gated early exits: `from copy import replace` is accepted but `copy.replace` is rejectedAbiertoquansight
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
-
warning: hiding a lifetime that's elided elsewhere is confusingPosiblemente ocupada @jay23606 la tomó hace 2 días. Abiertogood first issue
Todos los issues de facebook/pyrefly
Issues similares
-
Expression with ill-formed typeAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 94/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 2 días
-
ci enhancement need-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
Los mantenedores suelen responder en 1 día
-
enhancement good first issue help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
area:ui
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
openfootmanager/openfootmanager#1365 ·
Los mantenedores suelen responder en 1 día