Private
Public Access
0
0

refactor(markdown_helper): remove top-level src.markdown_table import; use _require_warmed

Phase 5C of startup_speedup_20260606 track.

src/markdown_helper.py imported src.markdown_table at module level:
  from src.markdown_table import parse_tables, render_table

Both parse_tables and render_table are only used inside
MarkdownRenderer.render(). Removed the top-level import; the
MarkdownRenderer.render() method now does:
  markdown_table = _require_warmed('src.markdown_table')
  parse_tables = markdown_table.parse_tables
  render_table = markdown_table.render_table

at the top of its body, before any other logic.

TESTS:
- tests/test_markdown_helper_no_top_level_table.py: 3/3 PASS (all RED -> GREEN)
- tests/test_markdown_table*.py (5 files) + test_markdown_helper_bullets.py +
  test_markdown_render_robust.py: 24/24 PASS (no breakage)

EFFECTIVENESS: import src.markdown_helper no longer triggers src.markdown_table
(~250ms). For renderers that never hit a GFM table, the import is never
paid. For renderers that do, the warmup pre-loads it on _io_pool and the
render() lookup is O(1).

NEXT: Phase 5D - bulk refactor of src/gui_2.py feature-gated imports via
scripts/audit_gui2_imports.py.
This commit is contained in:
2026-06-06 16:58:32 -04:00
parent cbc3b075a0
commit 48c9649951
2 changed files with 104 additions and 1 deletions
+13 -1
View File
@@ -12,7 +12,14 @@ from typing import Optional, Dict, Callable
from src import theme_2
from src.markdown_table import parse_tables, render_table
from src.module_loader import _require_warmed
# NOTE: src.markdown_table is NOT imported at module level. The GFM table
# rendering branch is feature-gated (startup_speedup_20260606 Phase 5C);
# the lookup happens inside MarkdownRenderer.render() via _require_warmed.
# If you need parse_tables/render_table elsewhere in this file, do the
# lookup there too. The warmup on AppController's _io_pool pre-loads
# src.markdown_table so the first render() call is O(1).
def _get_language_id(name: str):
@@ -121,6 +128,11 @@ class MarkdownRenderer:
Render Markdown text with code block interception and GFM table substitution.
[C: src/theme_2.py:render_post_fx, tests/test_theme_nerv_alert.py:test_alert_pulsing_render_active, tests/test_theme_nerv_alert.py:test_alert_pulsing_render_inactive, tests/test_theme_nerv_fx.py:TestThemeNervFx.test_alert_pulsing_render, tests/test_theme_nerv_fx.py:TestThemeNervFx.test_crt_filter_disabled, tests/test_theme_nerv_fx.py:TestThemeNervFx.test_crt_filter_render]
"""
# Lazy lookup of src.markdown_table (Phase 5C). Warmup has already loaded
# it on AppController's _io_pool, so this is an O(1) sys.modules get.
markdown_table = _require_warmed("src.markdown_table")
parse_tables = markdown_table.parse_tables
render_table = markdown_table.render_table
if not text: return
text = self._normalize_bullet_delimiters(text)
text = self._normalize_nested_list_endings(text)