web-dev-qa-db-ja.com

.pyiファイルを自動的に作成しますか?

pyi ファイルのボイラープレートコードを自動的に作成するにはどうすればよいですか?

すべてのメソッド名を含む pep484 で説明されているように、タイプヒント用の pyi ファイルを作成したいと思います。

魔法は欲しくない。ファイルの自動作成後に型情報を追加したい。

コピー&ペースト作業は避けたいです。

目標:PyCharm for Python2に入力ヒント。

19
guettli

私に関する限り、PyCharmにはそのような直接的なツールはありません。ただし、これにはサードパーティのツールがあります。


.pyiジェネレータ

MyPy

はい、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

make-stub-files

このプロジェクトはまさにこの目標に取り組んでいます。

使用法

非常に基本的なもの(ただし、いくつかのオプションがあります。README.mdまたはmake_stub_files -hに相談してください。

make_stub_files foo.py

事前に書き込まれた.pyiファイル

したがって、独自に記述する必要はありません。

タイプシェッド

はい、自分のプロジェクトで.pyiファイルを使用している場合は、外部コードを使用するときにもこのファイルを使用する必要があります。 Typeshedには、Python2およびPython3 stdlib用の.pyiファイルと、多数のPython2ライブラリ( rediscrypto など)といくつかのPython3ライブラリ(-など)が含まれています werkzeug または requests )、すべて適切にバージョン管理されています。


.pyiファイルに代わるPyCharm

怠惰である場合、または単に.pyiファイルを必要とせず、サードパーティのツールを使用することに煩わされたくないプロジェクトで作業している場合、PyCharmを使用すると次のことができます。

20
sjaustirni

私はこれのためにメイクファイルを書きました:

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の一部である場合

0
Matheus Moreira