如何自动创建pyi个文件的样板代码?
我想为pyi中描述的类型提示创建一个pep484文件,其中包含所有方法名称。
我不想要魔法。我想在自动创建文件后添加类型信息。
我想避免复制+粘贴工作。
目标:在PyCharm中为Python2键入提示。
答案 0 :(得分:19)
就我而言,PyCharm中没有这样的直接工具。但是,有第三方工具。
.pyi
个生成器是的,我想任何想在Python中使用编译时类型检查的人都可能最终使用MyPy。 MyPy包含stubgen.py工具,可生成.pyi
个文件。
mkdir out
stubgen urllib.parse
生成out/urllib/parse.pyi
。
您也可以使用Python2:
stubgen --py2 textwrap
对于C模块:
scripts/stubgen --docpath <DIR>/Python-3.4.2/Doc/library curses
如果要指定自定义程序包的路径,可以使用--search-path
选项:
stubgen my-pkg --search-path=folder/path/to/the/package
这个项目致力于实现这一目标。
非常基本的(但它有一些选项,只需咨询README.md
或make_stub_files -h
make_stub_files foo.py
.pyi
个文件所以你不必自己写。
是的,如果您在自己的项目中使用.pyi
个文件,则在使用外部代码时也可能需要使用此文件。 Typeshed包含Python2和Python3 stdlib的.pyi
文件以及一堆Python2库(如redis,crypto,...)和一些Python3库(如werkzeug或{ {3}}),所有版本都很好。
.pyi
个文件如果你很懒,或者只是处理一个不需要.pyi
文件的项目,并且你不想被第三方工具打扰,PyCharm允许你使用:< / p>
答案 1 :(得分:1)
我为此编写了一个makefile:
package := example
sources := $(wildcard $(package)/*.py)
stub: $(sources)
stubgen --output . --package $(package)
dist: setup.py stub
python $< sdist bdist_wheel
publish: dist
twine upload dist/*
.PHONY += stub dist publish
运行make publish
将在打包并上载到PyPI之前,在与其对应的.pyi
文件相同的位置生成.py
文件。它们将包含在软件包provided that they are part of package_data
中。