ruff/crates/ty_python_semantic
Alex Waygood 3a8191529c
[ty] Exclude members starting with _abc_ from a protocol interface (#18467)
## Summary

As well as excluding a hardcoded set of special attributes, CPython at
runtime also excludes any attributes or declarations starting with
`_abc_` from the set of members that make up a protocol interface. I
missed this in my initial implementation.

This is a bit of a CPython implementation detail, but I do think it's
important that we try to model the runtime as best we can here. The
closer we are to the runtime behaviour, the closer we come to sound
behaviour when narrowing types from `isinstance()` checks against
runtime-checkable protocols (for example)

## Test Plan

Extended an existing mdtest
2025-06-04 20:34:09 +01:00
..
resources [ty] Exclude members starting with _abc_ from a protocol interface (#18467) 2025-06-04 20:34:09 +01:00
src [ty] Exclude members starting with _abc_ from a protocol interface (#18467) 2025-06-04 20:34:09 +01:00
tests Switch to Rust 2024 edition (#18129) 2025-05-16 13:25:28 +02:00
build.rs
Cargo.toml
mdtest.py
mdtest.py.lock