[red-knot] Detect (some) invalid protocols#17488
Merged
AlexWaygood merged 1 commit intomainfrom Apr 21, 2025
Merged
Conversation
Contributor
|
carljm
approved these changes
Apr 21, 2025
| && !(base_class.is_protocol(self.db()) | ||
| || base_class.is_known(self.db(), KnownClass::Object)) | ||
| { | ||
| self.context.report_lint_old( |
Contributor
There was a problem hiding this comment.
Not sure if it makes sense to add new uses of report_lint_old?
But I guess there is some argument for keeping consistency with nearby code, and changing them all together?
cc @BurntSushi
Member
Author
There was a problem hiding this comment.
Heh, yeah, I also wondered about this... I think I'll keep it as-is for now, purely for local consistency if nothing else 😄 apologies to @BurntSushi if this causes annoyance for him!
Member
There was a problem hiding this comment.
Yeah it's okay, I'll fix it up. Thanks for highlighting this!
e3d05ac to
d301713
Compare
dcreager
added a commit
that referenced
this pull request
Apr 21, 2025
* main: Update pre-commit dependencies (#17506) [red-knot] Simplify visibility constraint handling for `*`-import definitions (#17486) [red-knot] Detect (some) invalid protocols (#17488) [red-knot] Correctly identify protocol classes (#17487) Update dependency ruff to v0.11.6 (#17516) Update Rust crate shellexpand to v3.1.1 (#17512) Update Rust crate proc-macro2 to v1.0.95 (#17510) Update Rust crate rand to v0.9.1 (#17511) Update Rust crate libc to v0.2.172 (#17509) Update Rust crate jiff to v0.2.9 (#17508) Update Rust crate clap to v4.5.37 (#17507) Update astral-sh/setup-uv action to v5.4.2 (#17504) Update taiki-e/install-action digest to 09dc018 (#17503) [red-knot] infer attribute assignments bound in comprehensions (#17396) [red-knot] simplify gradually-equivalent types out of unions and intersections (#17467) [red-knot] pull primer projects to run from file (#17473)
dcreager
added a commit
that referenced
this pull request
Apr 22, 2025
* main: (37 commits) [red-knot] Add list of failing/slow ecosystem projects (#17474) [red-knot] mypy_primer: extend ecosystem checks (#17544) [red-knot] Move `InstanceType` to its own submodule (#17525) [red-knot] mypy_primer: capture backtraces (#17543) [red-knot] mypy_primer: Use upstream repo (#17500) [red-knot] `typing.dataclass_transform` (#17445) Update dependency react-resizable-panels to v2.1.8 (#17513) Update dependency smol-toml to v1.3.3 (#17505) Update dependency uuid to v11.1.0 (#17517) Update actions/setup-node action to v4.4.0 (#17514) [red-knot] Fix variable name (#17532) [red-knot] Add basic subtyping between class literal and callable (#17469) [`pyupgrade`] Add fix safety section to docs (`UP030`) (#17443) [`perflint`] Allow list function calls to be replaced with a comprehension (`PERF401`) (#17519) Update pre-commit dependencies (#17506) [red-knot] Simplify visibility constraint handling for `*`-import definitions (#17486) [red-knot] Detect (some) invalid protocols (#17488) [red-knot] Correctly identify protocol classes (#17487) Update dependency ruff to v0.11.6 (#17516) Update Rust crate shellexpand to v3.1.1 (#17512) ...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Stacked on top of #17487.
If a class includes
ProtocolorProtocol[]in its bases, it cannot also include any non-protocol classes in its bases, orTypeErroris raised at runtime. This PR adds the logic to detect this error by adding a new lint,invalid-protocol.Test Plan
existing mdtests updated