ruff/crates/red_knot_python_semantic/resources/mdtest/binary
David Peter 86b01d2d3c
[red-knot] Correct modeling of dunder calls (#16368)
## Summary

Model dunder-calls correctly (and in one single place), by implementing
this behavior (using `__getitem__` as an example).

```py
def getitem_desugared(obj: object, key: object) -> object:
    getitem_callable = find_in_mro(type(obj), "__getitem__")
    if hasattr(getitem_callable, "__get__"):
        getitem_callable = getitem_callable.__get__(obj, type(obj))

    return getitem_callable(key)
```

See the new `calls/dunder.md` test suite for more information. The new
behavior also needs much fewer lines of code (the diff is positive due
to new tests).

## Test Plan

New tests; fix TODOs in existing tests.
2025-02-25 20:38:15 +01:00
..
booleans.md [red-knot] add special case for float/complex (#16166) 2025-02-14 12:24:10 -08:00
classes.md Don't special-case class instances in binary expression inference (#15161) 2025-01-06 13:50:20 -05:00
custom.md [red-knot] Add missing imports in mdtests (#15869) 2025-02-03 09:27:29 +00:00
instances.md [red-knot] Correct modeling of dunder calls (#16368) 2025-02-25 20:38:15 +01:00
integers.md [red-knot] Add support for @classmethods (#16305) 2025-02-24 09:55:34 +01:00