Fix CodeTailor Parsons puzzle asymmetric block indentation - #1416
Merged
bnmnetp merged 1 commit intoAug 25, 2026
Merged
Conversation
The first block of a generated Parsons puzzle was sitting on the same
source line as the {personalized_Parsons_block} placeholder in coach.py's
f-string templates, so it inherited that line's own Python-source
indentation while every other block (after an embedded newline) didn't --
producing a spurious indentation requirement on every block but the
first, even for flat, unnested code.
Also fix a related crash: aggregate_code_to_Parsons_block_with_distractor
stored the raw block_stack list instead of flushing each item as a string
when a settled/unchanged run preceded a paired-distractor block whose
matched-fixed line hadn't been seen yet, causing check_settled_tag to
throw TypeError: expected string or bytes-like object, got 'list'.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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.
The first block of a generated Parsons puzzle was sitting on the same source line as the {personalized_Parsons_block} placeholder in coach.py's f-string templates, so it inherited that line's own Python-source indentation while every other block (after an embedded newline) didn't -- producing a spurious indentation requirement on every block but the first, even for flat, unnested code.
Also fix a related crash: aggregate_code_to_Parsons_block_with_distractor stored the raw block_stack list instead of flushing each item as a string when a settled/unchanged run preceded a paired-distractor block whose matched-fixed line hadn't been seen yet, causing check_settled_tag to throw TypeError: expected string or bytes-like object, got 'list'.