Skip to content

Direction of comparison operator in error message does not depend on direction in code #17460

Open
@jevandezande

Description

@jevandezande

Bug Report

When encountering an error due to using a comparison operator with None as one of the arguments, Mypy adjusts the direction of < and > operators in its messages based on the types involved so that it always reports None as the second type (e.g. Unsupported operand types for {comparisson operator direction} ("int" and "None")). This becomes increasingly confusing when both variables in the comparison could potentially be a large number of types.

To reproduce

For the following code

1 < None
1 > None
None < 1
None > 1

Expected Behavior

file.py:1: error: Unsupported operand types for < ("int" and "None")  [operator]
file.py:2: error: Unsupported operand types for > ("int" and "None")  [operator]
file.py:3: error: Unsupported operand types for < ("None" and "int")  [operator]
file.py:4: error: Unsupported operand types for > ("None" and "int")  [operator]

Actual Behavior

file.py:1: error: Unsupported operand types for < ("int" and "None")  [operator]
file.py:2: error: Unsupported operand types for > ("int" and "None")  [operator]
file.py:3: error: Unsupported operand types for > ("int" and "None")  [operator]
file.py:4: error: Unsupported operand types for < ("int" and "None")  [operator]

Your Environment

  • Mypy version used: 1.10
  • Python version used: 3.12

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions