Repository navigation
Detect unmatched brackets in multi-line input - #15451
Open
bniladridas wants to merge 1 commit into
Open
bniladridas wants to merge 1 commit into
bniladridas wants to merge 1 commit into
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Extend the sunken-bracket check in check_complete from single-line to multi-line input. Previously, only single-line input was checked for more closing brackets than opening ones. Multi-line input relied on compile_command to catch unmatched brackets, but an IndentationError from a later line could be raised first and mask the underlying SyntaxError. Track cumulative bracket balance across all tokenized lines. On Python >= 3.12, where the tokenizer rejects unmatched closing brackets, the check runs on all lines so an unmatched bracket on an early line is caught before a later IndentationError masks it. On Python < 3.12, only single-line input is checked, preserving existing behaviour. Removes the now-unused has_sunken_brackets helper. Adds a regression test covering the ipythongh-13099 scenario: multi-line input with an unmatched closing bracket on an early line. Fixes ipython#13099 Signed-off-by: Niladri Das <125604915+bniladridas@users.noreply.github.com>
bniladridas
force-pushed
the
fix/indentationerror-unmatched-brackets
branch
from
October 26, 2026 02:09
7352e02 to
26344e3
Compare
This branch has not been deployed
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.
Fixes #13099
Summary
Extend the sunken-bracket check in
check_completefrom single-line to multi-line input. Previously, only single-line input was checked for more closing brackets than opening ones. Multi-line input relied oncompile_commandto catch unmatched brackets, but anIndentationErrorfrom a later line could be raised first and mask the underlyingSyntaxError.Track cumulative bracket balance across all tokenized lines. If the balance drops below zero at any point, return
"invalid"immediately, ensuring unmatched closing brackets are reported asSyntaxErrorrather than being hidden by a subsequentIndentationError.Removes the now-unused
has_sunken_bracketshelper.Test Plan
Added a regression test case to
tests/test_inputtransformer2.pycovering the gh-13099 scenario: multi-line input with an unmatched closing bracket on an early line.Full test suite passes: