Skip to content

Commit 225789e

Browse files
authored
do not use actual filepath for docgen module (#1809)
1 parent e0ca46d commit 225789e

File tree

2 files changed

+20
-13
lines changed

2 files changed

+20
-13
lines changed

pcweb/docgen_pipeline.py

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,8 @@ class ReflexDocTransformer(DocumentTransformer[rx.Component]):
169169
the reflex package look identical to the locally-authored ones.
170170
"""
171171

172-
def __init__(self, filename: str = "") -> None:
172+
def __init__(self, virtual_filepath: str = "", filename: str = "") -> None:
173+
self.virtual_filepath = virtual_filepath
173174
self.filename = filename
174175
self.env: dict = {}
175176

@@ -234,7 +235,7 @@ def code_block(self, block: CodeBlock) -> rx.Component:
234235

235236
# ``python exec`` only — execute code, produce nothing visible.
236237
if language == "python" and "exec" in flags:
237-
_exec_code(block.content, self.env, self.filename)
238+
_exec_code(block.content, self.env, self.virtual_filepath)
238239
return rx.fragment()
239240

240241
# ``python eval`` (standalone) — eval and return the component directly.
@@ -378,10 +379,10 @@ def _render_demo(self, content: str, flags: set[str]) -> rx.Component:
378379

379380
try:
380381
if "exec" in flags:
381-
_exec_code(content, self.env, self.filename)
382+
_exec_code(content, self.env, self.virtual_filepath)
382383
comp = self.env[list(self.env.keys())[-1]]()
383384
elif "graphing" in flags:
384-
_exec_code(content, self.env, self.filename)
385+
_exec_code(content, self.env, self.virtual_filepath)
385386
comp = self.env[list(self.env.keys())[-1]]()
386387
parts = content.rpartition("def")
387388
data, code = parts[0], parts[1] + parts[2]
@@ -393,7 +394,7 @@ def _render_demo(self, content: str, flags: set[str]) -> rx.Component:
393394
comp = eval(content, self.env, self.env)
394395
except Exception as e:
395396
e.add_note(
396-
f"While rendering demo block in {self.filename}:\n{content[:200]}"
397+
f"While rendering demo block in {self.virtual_filepath}:\n{content[:200]}"
397398
)
398399
raise
399400

@@ -416,10 +417,10 @@ def _render_demo_only(self, content: str, flags: set[str]) -> rx.Component:
416417

417418
try:
418419
if "exec" in flags:
419-
_exec_code(content, self.env, self.filename)
420+
_exec_code(content, self.env, self.virtual_filepath)
420421
comp = self.env[list(self.env.keys())[-1]]()
421422
elif "graphing" in flags:
422-
_exec_code(content, self.env, self.filename)
423+
_exec_code(content, self.env, self.virtual_filepath)
423424
comp = self.env[list(self.env.keys())[-1]]()
424425
parts = content.rpartition("def")
425426
data, code = parts[0], parts[1] + parts[2]
@@ -430,7 +431,7 @@ def _render_demo_only(self, content: str, flags: set[str]) -> rx.Component:
430431
comp = eval(content, self.env, self.env)
431432
except Exception as e:
432433
e.add_note(
433-
f"While rendering demo-only block in {self.filename}:\n{content[:200]}"
434+
f"While rendering demo-only block in {self.virtual_filepath}:\n{content[:200]}"
434435
)
435436
raise
436437

@@ -681,10 +682,14 @@ def _parse_doc(filepath: str | Path) -> Document:
681682
return parse_document(source)
682683

683684

684-
def render_docgen_document(filepath: str | Path) -> rx.Component:
685+
def render_docgen_document(
686+
virtual_filepath: str | Path, actual_filepath: str | Path
687+
) -> rx.Component:
685688
"""Parse and render a doc file from the reflex package using reflex_docgen."""
686-
doc = _parse_doc(filepath)
687-
transformer = ReflexDocTransformer(filename=str(filepath))
689+
doc = _parse_doc(actual_filepath)
690+
transformer = ReflexDocTransformer(
691+
virtual_filepath=str(virtual_filepath), filename=str(actual_filepath)
692+
)
688693
return transformer.transform(doc)
689694

690695

pcweb/pages/docs/__init__.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,9 +273,11 @@ def get_component_docgen(virtual_doc: str, actual_path: str, title: str):
273273
if virtual_doc.startswith("docs/library"):
274274
return handle_library_doc(virtual_doc, actual_path, title, resolved)
275275

276-
def comp(_actual=actual_path):
276+
def comp(_actual=actual_path, _virtual=virtual_doc):
277277
toc = get_docgen_toc(_actual)
278-
rendered = render_docgen_document(_actual)
278+
rendered = render_docgen_document(
279+
virtual_filepath=_virtual, actual_filepath=_actual
280+
)
279281
return (toc, rendered)
280282

281283
return make_docpage(resolved.route, resolved.display_title, virtual_doc, comp)

0 commit comments

Comments
 (0)