utils.sync_all ============== .. py:module:: utils.sync_all .. autoapi-nested-parse:: 从 __init__.py 的 from X import Y 语句自动生成 __all__。 用法: python -m backend.tools.sync_all 设计原则: - import 行是公开接口的唯一真实来源 - 以下划线开头的名称不会被加入 __all__ - 脚本不增加不减少导入,只生成 __all__ Attributes ---------- .. autoapisummary:: utils.sync_all.BACKEND Functions --------- .. autoapisummary:: utils.sync_all._collect_names utils.sync_all._rebuild utils.sync_all.sync_file utils.sync_all.main Module Contents --------------- .. py:data:: BACKEND .. py:function:: _collect_names(source: str) -> list[str] 解析源码中所有 from X import Y 语句,收集公开名称。 .. py:function:: _rebuild(source: str, names: list[str]) -> str 扫描 AST 找到最后一个 import 行,截断后追加 __all__ 列表。 策略:丢弃 import 行之后的所有内容(已有 __all__ 或其他代码), 从最后一个 import 行截断,在末尾生成新的 __all__ 块。 自动检测原始换行符风格(LF / CRLF)并保持一致。 Args: source: __init__.py 的原始源码。 names: 需要加入 __all__ 的公开名称列表。 Returns: str: 替换 __all__ 后的完整源码。 .. py:function:: sync_file(path: str) -> bool 对单个 __init__.py 执行同步:解析 import 行 → 生成 __all__ → 写回文件。 Args: path: __init__.py 的绝对路径。 Returns: bool: True 表示文件已被修改,False 表示无需变更。 .. py:function:: main() 扫描 backend/ 下所有 __init__.py,同步 __all__ 后输出变更清单。