Skip to content

maintenance: raw-string the LaTeX-carrying docstrings - #70

Merged
Jammy2211 merged 1 commit into
mainfrom
claude/latex-raw-string-docstrings-9h4ine
Aug 20, 2026
Merged

maintenance: raw-string the LaTeX-carrying docstrings#70
Jammy2211 merged 1 commit into
mainfrom
claude/latex-raw-string-docstrings-9h4ine

Conversation

@Jammy2211

Copy link
Copy Markdown
Collaborator

Part of PyAutoLabs/autolens_workspace#491 — one of six independent, prose-only PRs (one per workspace repo). No API surface, so no cross-repo merge ordering.

Non-raw docstrings containing LaTeX are corrupted by Python's escape handling, in two classes — and only one of them is visible:

what it is diagnostic
warned \s, \l, \[ — escapes Python does not recognise SyntaxWarning per compile; slated to become SyntaxError
silent \t in \theta, \f in \frac, \r in \rm none at all — the value is simply corrupted

20 literals across 4 files get the r prefix. Both sweeps now return zero. Prose is untouched — only the delimiter gains an r.

Verification

  • Baseline regeneration is a no-op — the generator was run before editing and left the tree clean, so generator noise cannot fake the gate below.
  • Runtime values: 13 corruptions repaired, 0 other changes. Every changed literal's value was compared HEAD vs worktree; the prefix may only ever remove corruption. This is the check that catches real mistakes — the regeneration gate structurally cannot, because the generator reads source text, not runtime values.
  • Regenerated with autohands: notebooks/, markdown/, llms-full.txt and workspace_index.json are all byte-identical — the diff-empty gate passes exactly.

One docstring here (chapter_2_modeling/tutorial_1_non_linear_search.py) needed a hand-approved prefix: its prose contains pre-existing malformed nested LaTeX (\(f(\( … \))\)) that the automatic math-span matcher cannot bracket. Every backslash in it was read and confirmed LaTeX (\text{} ×21 plus brackets); the 21 \t were the silent \text → TAB+ext corruption. The malformed delimiters were left exactly as found — fixing them is a prose change, not this task.

Left alone deliberately

Real newlines in print() and already-escaped LaTeX line breaks. The prefix was applied only where every backslash in the literal sits in a LaTeX context ($…$, \(…\), \[…\], \begin{}…\end{}, or a markdown code span), with an absolute veto on \\, escaped quotes and numeric escapes regardless of context.

Unblocked by PyAutoHands#251, which taught the notebook and env parsers to accept an r""" opener.

🤖 Generated with Claude Code

https://claude.ai/code/session_01MTjtx5mdituitiyQYFGn2E


Generated by Claude Code

Non-raw docstrings containing LaTeX are corrupted by Python's escape handling.
Two distinct failure classes, and only the first is visible:

  warned  `\s`, `\l`, `\[` ... escapes Python does NOT recognise. It leaves
          them literal but emits SyntaxWarning on every compile/import, and
          they are slated to become a SyntaxError.
  silent  `\t` in `\theta`, `\f` in `\frac`, `\r` in `\rm`, `\b` in `\beta`.
          Escapes Python DOES recognise: the value is corrupted with NO
          diagnostic at all. `\theta_E` was literally TAB + "heta_E".

20 literals across 4 files get the `r` prefix. Both sweeps now return zero.

Verified, not assumed:
- Runtime values: 13 corruptions repaired, 0 other changes. Every changed
  literal's value was compared HEAD vs worktree; the prefix may only ever
  REMOVE corruption, never alter a string otherwise.
- Regenerated with autohands: notebooks/, markdown/, llms-full.txt and workspace_index.json are ALL byte-identical -- the generator swaps the delimiter either way, so the diff-empty gate passes exactly.

Prose is untouched -- only the delimiter gains an `r`. Deliberate escapes were
left alone (real newlines in print(), already-escaped LaTeX line breaks): the
prefix was applied only where every backslash sits in a LaTeX context.
@Jammy2211
Jammy2211 merged commit 71e762c into main Aug 20, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants