Percent scripts: accept raw-string (r""") and '''-delimited markdown cells, as jupytext writes them
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 84/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- jupyter, python, typescript
Direzione di ricerca
Inizia in src/core/jupyter/percent.ts, all’altezza di markdownFromJupyterPercentScript, e analizza il rilevamento delle virgolette triple mostrato nell’issue. Usa l’esempio minimo doc.py con quarto render per verificare che i delimitatori raw-string e single-quote vengano analizzati come markdown. Il lavoro è completato quando r""", R""", """ e le forme ''' non eseguono più il rendering dei relativi delimitatori come prosa.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
Quarto renders Python percent scripts and the docs name jupytext as the reference implementation of the format, with markdown cells written either as # comments or as a multi-line string (""").
Jupytext writes markdown cells as strings when cell_markers = '"""' is set, and since 1.13.0 it prefixes the string with r whenever the cell contains a backslash, so that LaTeX such as \frac is not read as a Python escape sequence (changelog entry for jupytext/jupytext#836; src/jupytext/cell_to_text.py, "Markdown cells that contain a backslash should be encoded as raw strings"; expected output in tests/functional/others/test_raw_strings.py). Its reader accepts """, r""", R""" and the ''' forms (src/jupytext/cell_reader.py).
Quarto's parser recognises only a bare """ line:
// src/core/jupyter/percent.ts, markdownFromJupyterPercentScript
const isTripleQuote = (line: string) => !!line.match(/^"{3,}\s*$/);
so a cell jupytext wrote falls into the comment branch, which only strips a leading #, and both delimiter lines are rendered as prose. The same applies to a cell a user writes as r""" by hand to keep Python from interpreting the backslashes (a plain """ cell containing \xi or \underline is a syntax error in Python, so the raw prefix is the only way to keep such a file importable or runnable).
Minimal example
doc.py:
# %% [markdown]
# ---
# title: "Raw-string markdown cell"
# ---
# %% [markdown]
r"""
# A heading
Display math: $\frac{a}{b}$
"""
quarto render doc.py (1.8.25; the parser is unchanged in 1.10.18, 1.11.3 and main) produces a document whose body, as plain text, reads
r”“” A heading
Display math: \(\frac{a}{b}\) ““”
The heading is lost (the # was stripped as a comment prefix) and both delimiters appear as text, smart-quoted by Pandoc. Replacing r""" by """ renders correctly, which confirms the cause.
Proposed change
Accept an optional r/R prefix on the opening delimiter, and the single-quote form, matching jupytext's reader:
const isTripleQuoteOpen = (line: string) => !!line.match(/^[rR]?("{3,}|'{3,})\s*$/);
const isTripleQuoteClose = (line: string) => !!line.match(/^("{3,}|'{3,})\s*$/);
No other part of the pipeline is affected: the cell content is taken as markdown source either way.
Quarto version
1.8.25 on Windows 11; the relevant code is identical at tags v1.10.18 and v1.11.3 and on main.
- Lingua principale
- JavaScript
- Stelle
- 6k
- Fork
- 458
- Merge medio
- 1g 9h
- PR unite (30g)
- 41
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di quarto-dev/quarto-cli
-
binder bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
quarto-dev/quarto-cli#14907 · 3 commenti ·
-
brand bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
quarto-dev/quarto-cli#14891 ·
-
brand bug html revealjs
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
quarto-dev/quarto-cli#14882 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
quarto-dev/quarto-cli#14875 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
quarto-dev/quarto-cli#14844 · 1 reazione ·
Tutte le issue di quarto-dev/quarto-cli
Issue simili
-
code-quality refactoring
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
github/gh-aw-firewall#8816 ·
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
langchain-ai/deepagents#6450 ·
-
optimization optimization:agents-md-curator
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
githubnext/gh-aw-cao#13143 ·
-
status: needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100