pyi ファイルのボイラープレートコードを自動的に作成するにはどうすればよいですか?
すべてのメソッド名を含む pep484 で説明されているように、タイプヒント用の pyi ファイルを作成したいと思います。
魔法は欲しくない。ファイルの自動作成後に型情報を追加したい。
コピー&ペースト作業は避けたいです。
目標:PyCharm for Python2に入力ヒント。
私に関する限り、PyCharmにはそのような直接的なツールはありません。ただし、これにはサードパーティのツールがあります。
.pyi
ジェネレータはい、Pythonでコンパイル時の型チェックを使用したい人は、おそらくMyPyを使用することになるでしょう。 MyPyには.pyi
ファイルを生成する stubgen.py ツールが含まれています。
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 または requests )、すべて適切にバージョン管理されています。
.pyi
ファイルに代わるPyCharm怠惰である場合、または単に.pyi
ファイルを必要とせず、サードパーティのツールを使用することに煩わされたくないプロジェクトで作業している場合、PyCharmを使用すると次のことができます。
私はこれのためにメイクファイルを書きました:
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
ファイルが生成されます。これらはパッケージに含まれます package_data
の一部である場合 。