更新Python类型语法
项目描述
Python类型更新
更新Python类型语法的工具。它使用标记分析和
以尽可能好地更新类型语法。
重要
每个项目都使用不同的格式化风格,因此在提交任何更改之前,请始终检查git diff
!由于此工具使用pyupgrade,因此最好用于已使用它的项目。
限制
由于工具的工作方式,它将多次重排导入。默认情况下,工具会尝试检测是否移动了注释,并将所有更改还原到文件中。这可以通过使用--force
来覆盖。
目前,无法更新不同名称的别名。特别是,这些需要手动更新
旧类型名称 | 新 |
---|---|
Deque |
collections.deque |
DefaultDict |
collections.defaultdict |
AbstractSet |
collections.abc.Set |
ContextManager |
contextlib.AbstractContextManager |
AsyncContextMananger |
contextlib.AbstractAsyncContextManager |
工作原理
- 运行 python-reorder-import 以将
from __future__ import annotations
添加到每个文件。 - 尽可能使用通用别名(PEP 585)和替代联合语法(PEP 604),运行 pyupgrade。
- 运行 autoflake 检查是否有任何类型导入现在不再使用。如果不是,使用
git restore
撤销更改。 - 使用 autoflake 删除未使用的导入。
- 运行 isort 尝试恢复之前的格式。
- 可选:运行 black。 (需要将
black
添加为additional_dependency
) - 检查
git diff
以查找修改过的注释。如果检测到,则撤销更改并打印文件名。可以用--force
覆盖。
设置 pre-commit
将此内容添加到 .pre-commit-config.yaml
文件中
repos:
- repo: https://github.com/cdce8p/python-typing-update
rev: <insert current tag here!>
hooks:
- id: python-typing-update
stages: [manual]
使用以下命令运行
pre-commit run --hook-stage manual python-typing-update --all-files
配置
--verbose
始终打印详细日志。
--limit
应该更改的最大文件数。由于限制仅在所有文件处理完毕后才应用,因此不会提高性能。
--concurrent-files
在初始加载期间并发处理的文件数。
--full-reorder
使用来自 python-reorder-imports 的附加选项来重写
--py38-plus
(默认): 当可能时,从mypy_extensions
和typing_extensions
导入。--py39-plus
: 重写 PEP 585 类型导入。此外,typing.Hashable
和typing.Sized
也将被其collections.abc
等效项替换。
--keep-updates
即使没有导入被删除,也要保留更新。请谨慎使用,可能会导致更多错误。
--black
更新后运行 black
格式化。
要使用它,请将 black
添加为 additional_dependency
到您的 .pre-commit-config.yaml
。
additional_dependencies:
- black==<insert current version here!>
--disable-committed-check
不要因未提交的更改而中止。 在生产环境中不要使用! 有丢失未提交更改的风险。
不同的模式选项
--check
检查文件是否会被修改。如果没有修改,则返回退出码 1
或 0
。对于 CI 运行很有用。
--force
如果检测到修改过的注释,则不撤销更改。提交前请检查 git diff
!
--only-force
仅更新可能需要额外工作的文件。提交前请检查 git diff
!
Python 版本选项
--py37-plus
将最低 Python 语法版本设置为 3.7。(默认:3.8)
--py38-plus
将最低 Python 语法版本设置为 3.8。这是默认值。
--py39-plus
将最低 Python 语法版本设置为 3.9。(默认:3.8)
--py310-plus
将最低 Python 语法版本设置为 3.10。(默认:3.8)
许可证
此项目受 MIT 许可证许可。有关完整的许可证文本,请参阅 LICENSE。
python-typing-update-0.6.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 896c6fcf15c44373f9b48779b6f0516e5cfb523ef42799ac4e75148c3a88dbc9 |
|
MD5 | 3385ecfc700d24e1e87c3c6472f3a3bc |
|
BLAKE2b-256 | c160d9f0f2e53831fbb0ac07419f0be388582a9635e30f9689e4f995a36ef476 |
python_typing_update-0.6.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 356e94f818f93ddfec7fe6876d32aa5e1d6ddbb7e856430e3067735a9fb71c74 |
|
MD5 | dd23979e5fdfb3a91ba9beb67cfa5d88 |
|
BLAKE2b-256 | 1c46cc9824a91296dbeffb72965039e0950fc0ef9c13a5fd86019405e3c570cf |