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:
+13
-1
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user