ERROR Class member `_rv_continuous_0.stats` overrides parent class `rv_continuous` in an inconsistent manner [bad-override]
--> scipy-stubs/stats/_distn_infrastructure.pyi:929:9
|
929 | def stats(self, /, loc: onp.ToFloat, scale: onp.ToFloat, moment: _Moment1) -> _Float: ...
| ^^^^^
|
`_rv_continuous_0.stats` has type `BoundMethod[_rv_continuous_0, Overload[(self: _rv_continuous_0, /, loc: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], scale: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], moment: Literal['k', 'm', 's', 'v']) -> float | float64, (self: _rv_continuous_0, /, loc: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any] = 0, scale: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any] = 1, *, moment: Literal['k', 'm', 's', 'v']) -> float | float64, (self: _rv_continuous_0, /, loc: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any] = 0, scale: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any] = 1, moment: Literal['km', 'ks', 'kv', 'mk', 'ms', 'mv', 'sk', 'sm', 'sv', 'vk', 'vm', 'vs'] = 'mv') -> tuple[float | float64, float | float64], (self: _rv_continuous_0, /, loc: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], scale: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], moment: Literal['kms', 'kmv', 'ksm', 'ksv', 'kvm', 'kvs', 'mks', 'mkv', 'msk', 'msv', 'mvk', 'mvs', 'skm', 'skv', 'smk', 'smv', 'svk', 'svm', 'vkm', 'vks', 'vmk', 'vms', 'vsk', 'vsm']) -> tuple[float | float64, float | float64, float | float64], (self: _rv_continuous_0, /, loc: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any] = 0, scale: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any] = 1, *, moment: Literal['kms', 'kmv', 'ksm', 'ksv', 'kvm', 'kvs', 'mks', 'mkv', 'msk', 'msv', 'mvk', 'mvs', 'skm', 'skv', 'smk', 'smv', 'svk', 'svm', 'vkm', 'vks', 'vmk', 'vms', 'vsk', 'vsm']) -> tuple[float | float64, float | float64, float | float64], (self: _rv_continuous_0, /, loc: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], scale: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], moment: Literal['kmsv', 'kmvs', 'ksmv', 'ksvm', 'kvms', 'kvsm', 'mksv', 'mkvs', 'mskv', 'msvk', 'mvks', 'mvsk', 'skmv', 'skvm', 'smkv', 'smvk', 'svkm', 'svmk', 'vkms', 'vksm', 'vmks', 'vmsk', 'vskm', 'vsmk']) -> tuple[float | float64, float | float64, float | float64, float | float64], (self: _rv_continuous_0, /, loc: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any] = 0, scale: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any] = 1, *, moment: Literal['kmsv', 'kmvs', 'ksmv', 'ksvm', 'kvms', 'kvsm', 'mksv', 'mkvs', 'mskv', 'msvk', 'mvks', 'mvsk', 'skmv', 'skvm', 'smkv', 'smvk', 'svkm', 'svmk', 'vkms', 'vksm', 'vmks', 'vmsk', 'vskm', 'vsmk']) -> tuple[float | float64, float | float64, float | float64, float | float64], (self: _rv_continuous_0, /, loc: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], scale: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]], moment: Literal['k', 'm', 's', 'v']) -> ndarray[tuple[Any, ...], dtype[float64]], (self: _rv_continuous_0, /, loc: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], scale: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]], moment: Literal['km', 'ks', 'kv', 'mk', 'ms', 'mv', 'sk', 'sm', 'sv', 'vk', 'vm', 'vs'] = 'mv') -> tuple[ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]]], (self: _rv_continuous_0, /, loc: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], scale: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]], moment: Literal['kms', 'kmv', 'ksm', 'ksv', 'kvm', 'kvs', 'mks', 'mkv', 'msk', 'msv', 'mvk', 'mvs', 'skm', 'skv', 'smk', 'smv', 'svk', 'svm', 'vkm', 'vks', 'vmk', 'vms', 'vsk', 'vsm']) -> tuple[ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]]], (self: _rv_continuous_0, /, loc: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], scale: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]], moment: Literal['kmsv', 'kmvs', 'ksmv', 'ksvm', 'kvms', 'kvsm', 'mksv', 'mkvs', 'mskv', 'msvk', 'mvks', 'mvsk', 'skmv', 'skvm', 'smkv', 'smvk', 'svkm', 'svmk', 'vkms', 'vksm', 'vmks', 'vmsk', 'vskm', 'vsmk']) -> tuple[ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]]], (self: _rv_continuous_0, /, loc: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any] = 0, *, scale: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]], moment: Literal['k', 'm', 's', 'v']) -> ndarray[tuple[Any, ...], dtype[float64]], (self: _rv_continuous_0, /, loc: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any] = 0, *, scale: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]], moment: Literal['km', 'ks', 'kv', 'mk', 'ms', 'mv', 'sk', 'sm', 'sv', 'vk', 'vm', 'vs'] = 'mv') -> tuple[ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]]], (self: _rv_continuous_0, /, loc: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any] = 0, *, scale: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]], moment: Literal['kms', 'kmv', 'ksm', 'ksv', 'kvm', 'kvs', 'mks', 'mkv', 'msk', 'msv', 'mvk', 'mvs', 'skm', 'skv', 'smk', 'smv', 'svk', 'svm', 'vkm', 'vks', 'vmk', 'vms', 'vsk', 'vsm']) -> tuple[ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]]], (self: _rv_continuous_0, /, loc: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any] = 0, *, scale: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]], moment: Literal['kmsv', 'kmvs', 'ksmv', 'ksvm', 'kvms', 'kvsm', 'mksv', 'mkvs', 'mskv', 'msvk', 'mvks', 'mvsk', 'skmv', 'skvm', 'smkv', 'smvk', 'svkm', 'svmk', 'vkms', 'vksm', 'vmks', 'vmsk', 'vskm', 'vsmk']) -> tuple[ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]]], (self: _rv_continuous_0, /, loc: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]], scale: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], moment: Literal['k', 'm', 's', 'v']) -> ndarray[tuple[Any, ...], dtype[float64]], (self: _rv_continuous_0, /, loc: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]], scale: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | numpy.bool[builtins.bool] | float | floating[Any] | integer[Any] = 1, *, moment: Literal['k', 'm', 's', 'v']) -> ndarray[tuple[Any, ...], dtype[float64]], (self: _rv_continuous_0, /, loc: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]], scale: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | numpy.bool[builtins.bool] | float | floating[Any] | integer[Any] = 1, moment: Literal['km', 'ks', 'kv', 'mk', 'ms', 'mv', 'sk', 'sm', 'sv', 'vk', 'vm', 'vs'] = 'mv') -> tuple[ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]]], (self: _rv_continuous_0, /, loc: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]], scale: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], moment: Literal['kms', 'kmv', 'ksm', 'ksv', 'kvm', 'kvs', 'mks', 'mkv', 'msk', 'msv', 'mvk', 'mvs', 'skm', 'skv', 'smk', 'smv', 'svk', 'svm', 'vkm', 'vks', 'vmk', 'vms', 'vsk', 'vsm']) -> tuple[ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]]], (self: _rv_continuous_0, /, loc: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]], scale: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | numpy.bool[builtins.bool] | float | floating[Any] | integer[Any] = 1, *, moment: Literal['kms', 'kmv', 'ksm', 'ksv', 'kvm', 'kvs', 'mks', 'mkv', 'msk', 'msv', 'mvk', 'mvs', 'skm', 'skv', 'smk', 'smv', 'svk', 'svm', 'vkm', 'vks', 'vmk', 'vms', 'vsk', 'vsm']) -> tuple[ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]]], (self: _rv_continuous_0, /, loc: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]], scale: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], moment: Literal['kmsv', 'kmvs', 'ksmv', 'ksvm', 'kvms', 'kvsm', 'mksv', 'mkvs', 'mskv', 'msvk', 'mvks', 'mvsk', 'skmv', 'skvm', 'smkv', 'smvk', 'svkm', 'svmk', 'vkms', 'vksm', 'vmks', 'vmsk', 'vskm', 'vsmk']) -> tuple[ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]]], (self: _rv_continuous_0, /, loc: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]], scale: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | numpy.bool[builtins.bool] | float | floating[Any] | integer[Any] = 1, *, moment: Literal['kmsv', 'kmvs', 'ksmv', 'ksvm', 'kvms', 'kvsm', 'mksv', 'mkvs', 'mskv', 'msvk', 'mvks', 'mvsk', 'skmv', 'skvm', 'smkv', 'smvk', 'svkm', 'svmk', 'vkms', 'vksm', 'vmks', 'vmsk', 'vskm', 'vsmk']) -> tuple[ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]]]]]`, which is not assignable to `BoundMethod[_rv_continuous_0, Overload[(self: _rv_continuous_0, /, *args: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], *, moment: Literal['k', 'm', 's', 'v'], **kwds: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any]) -> float | float64, (self: _rv_continuous_0, /, *args: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], *, moment: Literal['km', 'ks', 'kv', 'mk', 'ms', 'mv', 'sk', 'sm', 'sv', 'vk', 'vm', 'vs'] = ..., **kwds: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any]) -> tuple[float | float64, float | float64], (self: _rv_continuous_0, /, *args: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], *, moment: Literal['kms', 'kmv', 'ksm', 'ksv', 'kvm', 'kvs', 'mks', 'mkv', 'msk', 'msv', 'mvk', 'mvs', 'skm', 'skv', 'smk', 'smv', 'svk', 'svm', 'vkm', 'vks', 'vmk', 'vms', 'vsk', 'vsm'], **kwds: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any]) -> tuple[float | float64, float | float64, float | float64], (self: _rv_continuous_0, /, *args: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], *, moment: Literal['kmsv', 'kmvs', 'ksmv', 'ksvm', 'kvms', 'kvsm', 'mksv', 'mkvs', 'mskv', 'msvk', 'mvks', 'mvsk', 'skmv', 'skvm', 'smkv', 'smvk', 'svkm', 'svmk', 'vkms', 'vksm', 'vmks', 'vmsk', 'vskm', 'vsmk'], **kwds: numpy.bool[builtins.bool] | float | floating[Any] | integer[Any]) -> tuple[float | float64, float | float64, float | float64, float | float64], (self: _rv_continuous_0, /, *args: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], *, moment: Literal['k', 'm', 's', 'v'], **kwds: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | numpy.bool[builtins.bool] | float | floating[Any] | integer[Any]) -> float | float64 | ndarray[tuple[Any, ...], dtype[float64]], (self: _rv_continuous_0, /, *args: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], *, moment: Literal['km', 'ks', 'kv', 'mk', 'ms', 'mv', 'sk', 'sm', 'sv', 'vk', 'vm', 'vs'] = ..., **kwds: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | numpy.bool[builtins.bool] | float | floating[Any] | integer[Any]) -> tuple[float | float64 | ndarray[tuple[Any, ...], dtype[float64]], float | float64 | ndarray[tuple[Any, ...], dtype[float64]]], (self: _rv_continuous_0, /, *args: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], *, moment: Literal['kms', 'kmv', 'ksm', 'ksv', 'kvm', 'kvs', 'mks', 'mkv', 'msk', 'msv', 'mvk', 'mvs', 'skm', 'skv', 'smk', 'smv', 'svk', 'svm', 'vkm', 'vks', 'vmk', 'vms', 'vsk', 'vsm'], **kwds: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | numpy.bool[builtins.bool] | float | floating[Any] | integer[Any]) -> tuple[float | float64 | ndarray[tuple[Any, ...], dtype[float64]], float | float64 | ndarray[tuple[Any, ...], dtype[float64]], float | float64 | ndarray[tuple[Any, ...], dtype[float64]]], (self: _rv_continuous_0, /, *args: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | numpy.bool[builtins.bool] | float | floating[Any] | integer[Any], *, moment: Literal['kmsv', 'kmvs', 'ksmv', 'ksvm', 'kvms', 'kvsm', 'mksv', 'mkvs', 'mskv', 'msvk', 'mvks', 'mvsk', 'skmv', 'skvm', 'smkv', 'smvk', 'svkm', 'svmk', 'vkms', 'vksm', 'vmks', 'vmsk', 'vskm', 'vsmk'], **kwds: SequenceND[_CanArray[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | float] | _CanArrayND[numpy.bool[builtins.bool] | floating[Any] | integer[Any]] | numpy.bool[builtins.bool] | float | floating[Any] | integer[Any]) -> tuple[float | float64 | ndarray[tuple[Any, ...], dtype[float64]], float | float64 | ndarray[tuple[Any, ...], dtype[float64]], float | float64 | ndarray[tuple[Any, ...], dtype[float64]], float | float64 | ndarray[tuple[Any, ...], dtype[float64]]]]]`, the type of `rv_continuous.stats`
This amount of overloads might look pretty ridiculous, but truth be told, methods like this one are pretty common in scipy-stubs (I try to keep in under 64 overloads though 😅).
Anyway, I think it would help a lot if pyrefly wouldn't "expand" the type-aliases, and just print their names.
For example:
which in "reality" looks like
https://github.com/scipy/scipy-stubs/blob/a9a9d611c907da0330569e224f0ce83b0fd93454/scipy-stubs/stats/_distn_infrastructure.pyi#L928-L941
This amount of overloads might look pretty ridiculous, but truth be told, methods like this one are pretty common in scipy-stubs (I try to keep in under 64 overloads though 😅).
Anyway, I think it would help a lot if pyrefly wouldn't "expand" the type-aliases, and just print their names.