-
Notifications
You must be signed in to change notification settings - Fork 125
Closed
astral-sh/ruff
#20730Labels
diagnosticsRelated to reporting of diagnostics.Related to reporting of diagnostics.
Description
Summary
One of the diagnostics in the ecosystem report for astral-sh/ruff#20368 is:
[error] invalid-argument-type - :1121:30 - Argument is incorrect: Expected `str`, found `Unknown | str | ((sd: @Todo | SpectralDistribution | MultiSpectralDistributions, cmfs: MultiSpectralDistributions | None = None, illuminant: SpectralDistribution | None = None, k: @Todo | None = None, method: str = str, **kwargs: Any) -> @Todo) | ((XYZ: @Todo, method: str = str, **kwargs: Any) -> SpectralDistribution) | ((sd: SpectralDistribution, lef: SpectralDistribution | None = None) -> int | float) | ((XYZ: @Todo) -> @Todo) | ((Y: @Todo) -> @Todo) | ((LV: @Todo, method: str = str, **kwargs: Any) -> @Todo) | partial[Unknown] | ((wavelength: @Todo, cmfs: MultiSpectralDistributions | None = None) -> @Todo) | ((xyY: @Todo) -> @Todo) | ((xy: @Todo) -> @Todo) | ((Lab: @Todo) -> @Todo) | ((Luv: @Todo, illuminant: @Todo = Any) -> @Todo) | ((uv: @Todo) -> @Todo) | ((UVW: @Todo) -> @Todo) | ((Lab_99: @Todo, illuminant: @Todo = Any, k_E: int | float = int, k_CH: int | float = int, method: str = str) -> @Todo) | ((Lab_hdr: @Todo, illuminant: @Todo = Any, Y_s: @Todo = float, Y_abs: @Todo = int, method: str = str) -> @Todo) | ((ICaCb: @Todo) -> @Todo) | ((ICtCp: @Todo, illuminant: @Todo = Any, chromatic_adaptation_transform: @Todo | str | None = str, method: str = str, L_p: int | float = int) -> @Todo) | ((IgPgTg: @Todo) -> @Todo) | ((IPT: @Todo) -> @Todo) | ((XYZ_D65: @Todo, constants: Structure = Structure) -> @Todo) | ((Jzazbz: @Todo, constants: Structure = Structure) -> @Todo) | ((IPT_hdr: @Todo, Y_s: @Todo = float, Y_abs: @Todo = int, method: str = str) -> @Todo) | ((Ljg: @Todo, optimisation_kwargs: dict[Unknown, Unknown] | None = None) -> @Todo) | ((ProLab: @Todo, illuminant: @Todo = Any) -> @Todo) | ((Iab: @Todo) -> @Todo) | ((Yrg: @Todo) -> @Todo) | ((uvV: @Todo) -> @Todo) | ((uvL: @Todo, illuminant: @Todo = Any) -> @Todo) | ((RGB: @Todo) -> @Todo) | ((HSV: @Todo) -> @Todo) | ((HSL: @Todo) -> @Todo) | ((HCL: @Todo, gamma: int | float = int, Y_0: int | float = int) -> @Todo) | ((HYS: @Todo) -> @Todo) | ((CMY: @Todo) -> @Todo) | ((CMYK: @Todo) -> @Todo) | ((Lrgb: @Todo) -> @Todo) | ((YCbCr: @Todo, K: @Todo = Any, in_bits: int = int, in_legal: bool = bool, in_int: bool = bool, out_bits: int = int, out_legal: bool = bool, out_int: bool = bool, clamp_int: bool = bool, **kwargs: Any) -> @Todo) | ((YcCbcCrc: @Todo, in_bits: int = int, in_legal: bool = bool, in_int: bool = bool, is_12_bits_system: bool = bool, **kwargs: Any) -> @Todo) | ((YCoCg: @Todo) -> @Todo) | ((value: @Todo, function: @Todo | str = str, **kwargs: Any) -> @Todo) | ((HEX: @Todo) -> @Todo) | ((keyword: str) -> @Todo) | ((xyY: @Todo, hue_decimals: int = int, value_decimals: int = int, chroma_decimals: int = int) -> str | @Todo) | ((munsell_colour: @Todo) -> @Todo) | (Overload[(sd_test: SpectralDistribution, additional_data: bool = bool, method: str = EllipsisType) -> ColourRendering_Specification_CRI, (sd_test: SpectralDistribution, *, additional_data: bool, method: str = EllipsisType) -> int | float, (sd_test: SpectralDistribution, additional_data: bool, method: str = EllipsisType) -> int | float]) | (Overload[(sd_test: SpectralDistribution, *, additional_data: bool, method: str = EllipsisType) -> int | float, (sd_test: SpectralDistribution, additional_data: bool = bool, method: str = EllipsisType) -> ColourRendering_Specification_CQS, (sd_test: SpectralDistribution, additional_data: bool, method: str = EllipsisType) -> int | float]) | ((CCT_D_uv: @Todo) -> @Todo) | ((mired: @Todo) -> @Todo) | ((specification: CAM_Specification_CIECAM02) -> @Todo) | ((JMh: @Todo) -> CAM_Specification_CIECAM02) | ((specification: CAM_Specification_CAM16) -> @Todo) | ((JMh: @Todo) -> CAM_Specification_CAM16) | ((specification: CAM_Specification_CIECAM16) -> @Todo) | ((JMh: @Todo) -> CAM_Specification_CIECAM16) | ((specification: CAM_Specification_Hellwig2022) -> @Todo) | ((JMh: @Todo) -> CAM_Specification_Hellwig2022) | ((specification: CAM_Specification_sCAM) -> @Todo) | ((JMh: @Todo) -> CAM_Specification_sCAM) | ((JMh: @Todo) -> @Todo) | ((Jpapbp: @Todo) -> @Todo)`
That's a ridiculously long display for a type, and it's needlessly long. The user has all the information they need after they're presented with the first union element that's not assignable to str
. We should instead display something like:
[error] invalid-argument-type - :1121:30 - Argument is incorrect: Expected `str`, found `Unknown | str | ((sd: @Todo | SpectralDistribution | MultiSpectralDistributions, cmfs: MultiSpectralDistributions | None = None, illuminant: SpectralDistribution | None = None, k: @Todo | None = None, method: str = str, **kwargs: Any) -> @Todo) | (...30 union elements omitted)`
(I didn't actually count how many elements there are in that very long union, but you get the picture.)
Version
No response
Metadata
Metadata
Assignees
Labels
diagnosticsRelated to reporting of diagnostics.Related to reporting of diagnostics.