当我重构代码时,我经常发现自己在枯燥地添加从上下文中显而易见的类型注解:不返回任何内容的函数、布尔标志等。这就是自动类型化的用武之地:它会自动添加这些类型并插入正确的注解。
以下是使用方法:
pip install autotypingpython -m autotyping /path/to/my/code默认情况下它不执行任何操作;你需要添加标志来使其执行更多转换。支持以下操作:
--none-return:为主体中没有任何return、yield或raise的函数添加-> None返回类型--scalar-return:为只返回字面量bool、str、bytes、int或float对象的函数添加返回注解--bool-param:为默认值为True或False的任何函数参数添加: bool注解--int-param、--float-param、--str-param、--bytes-param:为默认值为字面量int、float、str或bytes对象的任何参数添加注解--annotate-optional foo:bar.Baz:对于形如foo=None的任何参数,添加从bar导入的Baz作为类型。例如,使用--annotate-optional uid:my_types.Uid可以将代码库中任何默认值为None的uid注解为Optional[my_types.Uid]--annotate-named-param foo:bar.Baz:为任何没有默认值且名为foo的参数添加bar.Baz注解。例如,使用--annotate-named-param uid:my_types.Uid可以将代码库中任何没有默认值的uid参数注解为my_types.Uid--guess-common-names:根据开源Python代码中的常见模式,推断某些参数类 型。例如,推断verbose参数的类型为bool--annotate-magics:为某些魔术方法添加类型注解。目前包括以下内容:
__str__返回str__repr__返回str__len__返回int__length_hint__返回int__init__返回None__del__返回None__bool__返回bool__bytes__返回bytes__format__返回str__contains__返回bool__complex__返回complex__int__返回int__float__返回float__index__返回int__exit__:三个参数分别为Optional[Type[BaseException]]、Optional[BaseException]和Optional[TracebackType]__aexit__:与__exit__相同--annotate-imprecise-magics:为一些额外的魔术方法添加不精确的类型注解。目前为__iter__、__await__和__reversed__添加typing.Iterator返回注解。这些注解应该有一个泛型参数来指明你在迭代什么,但这对自动类型化来说太难了--pyanalyze-report:采用pyanalyze的suggested_parameter_type和suggested_return_type代码建议的类型并应用它们。你可以使用类似这样的命令生成这些建议:
pyanalyze --json-output failures.json -e suggested_return_type -e suggested_parameter_type -v .--only-without-imports:仅应用不需要新导入的pyanalyze建议。这很有用,因为需要导入的建议可能需要更多手动工作有两个快捷标志可以同时启用多个转换:
--safe启用应该始终安全的更改。这包括--none-return、--scalar-return和--annotate-magics--aggressive启用风险更高的更改,更有可能产生新的类型检查器错误。它包括--safe的所有内容以及--bool-param、--int-param、--float-param、--str-param、--bytes-param和--annotate-imprecise-magicsAutotyping是作为LibCST codemod构建的;有关如何使用codemod的更多信息,请参阅LibCST文档。
如果你希望通过libcst.tool接口运行,可以这样做:
.libcst.codemod.yaml文件,其中modules列表包含'autotyping'。
例子请参见此仓库中的.libcst.codemod.yaml。python -m libcst.tool codemod autotyping.AutotypeCommand /path/to/my/codeAutotyping旨在成为一个简单的工具,使用启发式方法找到手动添加会很繁琐的注解。这些启发式方法可能会失败,在运行autotyping后,你应该运行类型检查器来验证它添加的类型是否正确。
已知局限性:
None返回python3 -m autotyping来调用该工具。(感谢Shantanu Jain。 )iterables)导致的崩溃(由Marco Gorelli贡献)--guess-common-names(由John Litborn贡献)--safe和--aggressive标志,使它们不接受被忽略的参数--length-hint应该返回int(由Nikita Sobolev贡献)--safe和--aggressive--pyanalyze-report@abstractmethod的方法和存根文件中的方法添加None返回类型"string" % ...总是strb"bytes" % ...总是bytesand或or运算符返回该类型is、is not、in和not in总是返回bool

企业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光
稳定高效的流量提升解决方案,助力品牌曝光


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频


实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。


选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。


AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。


最强AI数据分析助手
小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。


像人一样思考的AI智能体
imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。


AI数字人视频创作平台
Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。


一站式AI创作平台
提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号