from typing import Any, dataclass_transform
@dataclass_transform(kw_only_default=True)
class DataclassMeta(type):
"""Metaclass that makes classes behave like kw_only dataclasses."""
def __new__(
mcs,
name: str,
bases: tuple[type, ...],
namespace: dict[str, Any],
**kwargs: Any,
) -> Any:
return super().__new__(mcs, name, bases, namespace)
class EntityDescription(metaclass=DataclassMeta):
"""Base description with annotated fields."""
key: str
name: str | None = None
class SensorEntityDescription(EntityDescription):
"""Sensor description inheriting key from parent."""
device_class: str | None = None
unit: str | None = None
# These should all be valid -- @dataclass_transform tells the checker
# that annotated fields become __init__ parameters.
sensor = SensorEntityDescription(
key="temperature", # pyrefly FP: unexpected-keyword
device_class="temperature", # pyrefly FP: unexpected-keyword
name="Temperature Sensor", # pyrefly FP: unexpected-keyword
)
Describe the Bug
Minimal repro:
Sandbox Link
https://pyrefly.org/sandbox/?project=N4IgZglgNgpgziAXKOBDAdgEwEYHsAeAdAA4CeS4ATrgLYAEALqcROgOZ0Q3G6UN0BBdKQA0dTKgaoAxlFRw4AfQaUMcMLxoAddDp0ABCVNnylKtRso0AFAGsA7otzoopRZhhhUAVygMAvAAqlN4wAJQ6Jgp0ACKSMnIKALIwUtZMxOGIOnS5dFogBQUpxolwjAAWknQ0qLbwdFFwDdgwVQBuMHRQEPV0Dk4upOLxTfCERYWFuuh54p50ioroMI6K1jlzeTTScCKbW3ToqDQwiHRwKvuzh3TY8vDnDN7EsADaGTBihD8Aute3I4neDEGRncQQaQMN6XShiISkf4HLYAKhRDlQlDYcHOCIBeTCdAAtAA%2BQTCbI3Q6UVLeSizOAvGCUaxhQhLFZraw7PZA05ie7NXnHU5wUHScJ6GZNOgAUXQDAgTBi8GklAgxEVzm5qQSpn8cVKphKqDClLmkwKACEHvM4GqNVrZvYlRU6Bh0LgpAwYJg6JAYFBMHAJlMijM5vVSOdYciReDYXQAD50AByzi6-jTGalkTKdAAyjB0HBePLFcrVerNRBteWlaQVfbq06zcjLSAiyXeHaHTXnJx0BVmUrWBwo-7qPRQTSFaHLRG8h52pCYIomjGVMnsys6Fn0ytkd50ErN5RtwfMzuYLn0ABiOiBYfNC4VXC%2BP2oKBQO5ddpfiA-SJIk6EMUYymUVQS0segfW-coGGHRph2kepKB0B9EOqD0vUkX1-QgQNg1-aRaC6JZWCVJY6BnYEfUoEMdGabtzyzLtS0oetK2bR1a3QDYqX6GBSH8AofW4ZlJDpG8QDEOgHzIGkwFcc5jxgfBMihX0iSjexeEwZFl1XdcylEkBxMyVRnhpAo5IU0glJUug1I0mAtMwHThL0ygDME%2BMzMCGAJKs6TC2LDjbNyezHOjZyVlc9zPNIbzfIidBZJAbxFSgEMyAoB8AFVsobf1jyhPi4ClDwwH9TRJGWbwaFaFl8HOVgGEJUkLhUc08hpazZjAApU0a5rzmAfAAF9wwyxTPFcQgGFoKB8roAAFBz5uGNAsDwfBGmcSA2DpSQ%2BIme8wq6CoGAYYgcQAenuublNIQheDYe7i3uzBcF2e7SPQI6Tqde7avPVB-2gVBsFgA7AYgY6rL4uhcH7EtzrIRDnCJToGORrMCgAZkIABGAAmGbJpEEAZEVToADFoBgCgdpwAgSHISagA
(Only applicable for extension issues) IDE Information
No response