facebook / facebook/pyrefly

Type[GenericSubclass].__new__ resolves to GenericAlias.__new__

Open
#3,053 0 comments 0 reactions 0 assignees View on GitHub
typechecking
Dominant language
Rust
Stars
7k
Forks
516
PR merge metrics
No merged PRs in 30d

Description

### Describe the Bug

Minimal repro:
```python
from typing import TypeVar, Any

_T = TypeVar("_T")

class OrderingList(list[_T]):
"""A list that maintains ordering metadata."""

ordering_attr: str = "position"

def reconstitute(
cls: type[OrderingList[_T]], dict_: dict[str, Any], items: list[_T]
) -> OrderingList[_T]:
"""Unpickle an OrderingList instance."""
# pyrefly: Missing positional arguments `origin`, `args`
# in function `types.GenericAlias.__new__`
obj = cls.__new__(cls)
obj.__dict__.update(dict_)
list.extend(obj, items)
return obj
```

No other type checker treats this as an error.

### Sandbox Link

https://pyrefly.org/sandbox/?project=N4IgZglgNgpgziAXKOBDAdgEwEYHsAeAdAA4CeS4ATrgLYAEALqcROgOZ0Q3G6UN0AVZjABqqSgBo6AQXSkAOukUB9AXQC8g4WMoAKeSFUGAlIrPoAxlFRw4dAPKVMMSqzYAZCHAa6oXhgDaqgC6xoiKdJF0BjEg0nR%2B3owAFqj8NKisDJnodrzOrux0NDDZmGmohLExSuhRdPkubsppDJSIdN6UGtEgPHAQDBC4SiDmis5gdJQwFiPegwCuDDD6dVFWcB1MxDABjgVunt5BAsHBUpgQFgzKHVc3AV1SsqQXnCs0Wwn%2Bp8GKxjoAFoAHwOJxNdjHQIhcLrSLVEAAVXQLAsAGtYHQMODDlD-JxctlLDAqmNyREogBiOhkGZgKCkDoAWS8AyK-UGw3QqCg2MobEWJXQDDsAANeBA2KwxVIxeI2HAxZTIjT6urWHQwItLEMRnQxTt4IQAOIwdBNCzSPw2QjKZQWgDu9uV8Ia2AAVj1NnaHTBncpdJtTG7cJ7fQ9bspCItiOUVrpI8oQ-VEgxCDB8CssLowx6pIMYF8U1EZgxFpQ6nmQBIQMtoHASORECAaUihn4mFqdTduXBzJMtbwMrd0ELsC5dPgOllAaDOm04fUyxW6mADAA5ccuDrAfAAXxqNb6pHpjMIDFoUAoNIACqeYAzSJ0MDgCHQ5uhIILKGluVV0BpABlGAYDoZIGAYYgtgAehgulH3PXg2Bg80YMwXALDgGDP2-Cs-xGGCh26VAADdMmsbAsVwqV8L1KtiHoxtFDIBhkhGIFSJcAZ9U0AwAGZCAARgAJiPfda1QXsuIAMWgGAKDQLA8CIMgQH3IA

### (Only applicable for extension issues) IDE Information

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.