Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[red-knot] Minor simplifications and improvements to constraint narrowing logic #15270

Merged
merged 2 commits into from
Jan 5, 2025

Conversation

AlexWaygood
Copy link
Member

Summary

On its own this is a pretty minor refactor, but it makes some other improvements I'm working on easier to implement. It nonetheless seems worth doing on its own, however, and reduces the size of the diff on the other branch I have locally, so I'm submitting it as its own PR.

Test Plan

No new tests added; this is a pure refactor, which shouldn't change any functionality.

@AlexWaygood AlexWaygood added the red-knot Multi-file analysis & type inference label Jan 5, 2025
@AlexWaygood AlexWaygood force-pushed the alex/future-proof-disjointness branch from a89c77b to 79e5743 Compare January 5, 2025 15:24
@AlexWaygood AlexWaygood force-pushed the alex/simplify-constraint-fn branch from 91d135c to eb01dfa Compare January 5, 2025 15:24
Copy link
Contributor

github-actions bot commented Jan 5, 2025

ruff-ecosystem results

Linter (stable)

✅ ecosystem check detected no linter changes.

Linter (preview)

ℹ️ ecosystem check detected linter changes. (+0 -0 violations, +0 -4 fixes in 2 projects; 53 projects unchanged)

zulip/zulip (+0 -0 violations, +0 -4 fixes)

ruff check --no-cache --exit-zero --ignore RUF9 --output-format concise --preview --select ALL

+ tools/lib/template_parser.py:637:29: FURB171 Membership test against single-item container
- tools/lib/template_parser.py:637:29: FURB171 [*] Membership test against single-item container
+ tools/lib/template_parser.py:645:29: FURB171 Membership test against single-item container
- tools/lib/template_parser.py:645:29: FURB171 [*] Membership test against single-item container

python-trio/trio (+0 -0 violations, +0 -0 fixes)

ruff check --no-cache --exit-zero --ignore RUF9 --output-format concise --preview


Changes by rule (1 rules affected)

code total + violation - violation + fix - fix
FURB171 4 0 0 0 4

@MichaReiser MichaReiser removed their request for review January 5, 2025 16:52
crates/red_knot_python_semantic/src/types.rs Outdated Show resolved Hide resolved
crates/red_knot_python_semantic/src/types/narrow.rs Outdated Show resolved Hide resolved
Comment on lines +86 to +93
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum KnownConstraintFunction {
/// `builtins.isinstance`
IsInstance,
/// `builtins.issubclass`
IsSubclass,
}

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I moved this enum here from types.rs so that all the narrowing logic remained encapsulated in narrow.rs

@AlexWaygood AlexWaygood force-pushed the alex/simplify-constraint-fn branch from 4362821 to 305174f Compare January 5, 2025 19:48
@AlexWaygood AlexWaygood force-pushed the alex/simplify-constraint-fn branch from 305174f to f0f82f0 Compare January 5, 2025 21:46
@AlexWaygood AlexWaygood changed the base branch from alex/future-proof-disjointness to main January 5, 2025 21:46
@AlexWaygood AlexWaygood changed the title [red-knot] Minor simplification to constraint narrowing logic [red-knot] Minor simplifications and improvements to constraint narrowing logic Jan 5, 2025
@AlexWaygood AlexWaygood enabled auto-merge (squash) January 5, 2025 21:47
@AlexWaygood AlexWaygood merged commit 980ce94 into main Jan 5, 2025
20 checks passed
@AlexWaygood AlexWaygood deleted the alex/simplify-constraint-fn branch January 5, 2025 21:51
dcreager added a commit that referenced this pull request Jan 6, 2025
* main: (60 commits)
  [`ruff`] Dataclass enums (`RUF049`) (#15299)
  Better error message when `--config` is given a table key and a non-inline-table value (#15266)
  Update pre-commit dependencies (#15289)
  Don't fix in ecosystem check (#15267)
  Update Rust crate itertools to 0.14.0 (#15287)
  Remove accidental empty block at the bottom of `split-static-string (SIM905)` doc (#15290)
  Update Rust crate clearscreen to v4 (#15288)
  Update Rust crate insta to v1.42.0 (#15286)
  Update NPM Development dependencies (#15285)
  Update dependency uuid to v11.0.4 (#15284)
  Update dependency ruff to v0.8.6 (#15283)
  Update Rust crate syn to v2.0.95 (#15282)
  Update Rust crate matchit to v0.8.6 (#15281)
  Update Rust crate bstr to v1.11.3 (#15280)
  [red-knot] Future-proof `Type::is_disjoint_from()` (#15262)
  [red-knot] Improve `Type::is_disjoint_from()` for `KnownInstanceType`s (#15261)
  [red-knot] Minor simplifications and improvements to constraint narrowing logic (#15270)
  Allow assigning ellipsis literal as parameter default value (#14982)
  [red-knot] fix control flow for assignment expressions in elif tests (#15274)
  [`refurb`] Mark fix as unsafe when the right-hand side is a string (`FURB171`) (#15273)
  ...
dcreager added a commit that referenced this pull request Jan 6, 2025
* main: (29 commits)
  [`ruff`] Dataclass enums (`RUF049`) (#15299)
  Better error message when `--config` is given a table key and a non-inline-table value (#15266)
  Update pre-commit dependencies (#15289)
  Don't fix in ecosystem check (#15267)
  Update Rust crate itertools to 0.14.0 (#15287)
  Remove accidental empty block at the bottom of `split-static-string (SIM905)` doc (#15290)
  Update Rust crate clearscreen to v4 (#15288)
  Update Rust crate insta to v1.42.0 (#15286)
  Update NPM Development dependencies (#15285)
  Update dependency uuid to v11.0.4 (#15284)
  Update dependency ruff to v0.8.6 (#15283)
  Update Rust crate syn to v2.0.95 (#15282)
  Update Rust crate matchit to v0.8.6 (#15281)
  Update Rust crate bstr to v1.11.3 (#15280)
  [red-knot] Future-proof `Type::is_disjoint_from()` (#15262)
  [red-knot] Improve `Type::is_disjoint_from()` for `KnownInstanceType`s (#15261)
  [red-knot] Minor simplifications and improvements to constraint narrowing logic (#15270)
  Allow assigning ellipsis literal as parameter default value (#14982)
  [red-knot] fix control flow for assignment expressions in elif tests (#15274)
  [`refurb`] Mark fix as unsafe when the right-hand side is a string (`FURB171`) (#15273)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
red-knot Multi-file analysis & type inference
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants