SuperAPI AI 工具集

pyreorder

编程与开发

查看项目

更新于 10-15 23:42

技能介绍

用途:pyreorder 用于重排 Python 模块的顶层语句顺序,并按可见性和类型整理类内方法,适合希望统一模块布局、按调用顺序或抽象层次排列函数、以及用 CI 检查结构是否已排序的场景。它不负责仅导入排序(用 ruff/isort)或格式化(用 ruff format/black),应在格式化之后运行。

主要能力:基于 libcst,保留注释与格式;支持分区顺序(imports、typing_imports、module_constants、enums、dataclasses、classes、functions、dunder_exports、main_block);分区内策略有 keep、alpha、stepdown(调用者在前)、abstraction(被调用者在前);类方法按 public→protected→private、instance→class→static 排序。安全模型包括屏障(无法归类的语句不移动)、固定 docstring 与 future 导入、文件或类级 # pyreorder: off 跳过、幂等。可选转换:--hoist-inline-imports 提升函数内导入,--remove-type-checking 移除 TYPE_CHECKING 守卫,二者默认关闭且可能改变导入时机。

使用方式:安装 uv tool install pyreorder(或 git+https://github.com/jr2804/pyreorder),短别名为 rord。命令:pyreorder run [PATHS...] 原地排序(- 表示 stdin 到 stdout)、check 未排序时退出 1、diff 输出统一差异、config generate/show。常用选项有 --config、--exclude/-x、--no-recursive、--no-class-methods、--section-only、--strategy-overrides、--hoist-inline-imports、--remove-type-checking。配置从 --config、pyreorder.toml、.config/pyreorder.toml、pyproject.toml 的 [tool.pyreorder] 依次发现。

限制:alpha 用于 module_constants/classes/dataclasses 可能破坏运行时顺序,应用前先用 diff 预览;两个导入转换可能破坏代码;从 csort/clean-sort 迁移时需手动改 [tool.csort] 等名称。程序化 API 为 from pyreorder import sort_source, Config。