utils.sync_all

从 __init__.py 的 from X import Y 语句自动生成 __all__。

用法:

python -m backend.tools.sync_all

设计原则:
  • import 行是公开接口的唯一真实来源

  • 以下划线开头的名称不会被加入 __all__

  • 脚本不增加不减少导入,只生成 __all__

Attributes

BACKEND

Functions

_collect_names(→ list[str])

解析源码中所有 from X import Y 语句,收集公开名称。

_rebuild(→ str)

扫描 AST 找到最后一个 import 行,截断后追加 __all__ 列表。

sync_file(→ bool)

对单个 __init__.py 执行同步:解析 import 行 → 生成 __all__ → 写回文件。

main()

扫描 backend/ 下所有 __init__.py,同步 __all__ 后输出变更清单。

Module Contents

utils.sync_all.BACKEND
utils.sync_all._collect_names(source: str) list[str]

解析源码中所有 from X import Y 语句,收集公开名称。

utils.sync_all._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__ 后的完整源码。

utils.sync_all.sync_file(path: str) bool

对单个 __init__.py 执行同步:解析 import 行 → 生成 __all__ → 写回文件。

Args:

path: __init__.py 的绝对路径。

Returns:

bool: True 表示文件已被修改,False 表示无需变更。

utils.sync_all.main()

扫描 backend/ 下所有 __init__.py,同步 __all__ 后输出变更清单。