GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

python

mypy – Python 2および3(PEP484)のオプションの静的型付け

投稿日:

Python 2および3(PEP484)のオプションの静的型付け http://www.mypy-lang.org/

Mypy:Pythonのためのオプションの静的型付け

質問がありましたか? Gitterに参加してください!

メーリングリストはありません。 私たちはいつも笑い声で質問に答えることができて満足しています。 バグが見つかった場合は、新しい問題を提出する前に、問題追跡ツールで重複を検索してください。

mypyとは何ですか?

MypyはPythonのオプションの静的型チェッカーです。 タイプヒント( PEP 484 )をPythonプログラムに追加し、mypyを使用してタイプヒントを静的にチェックすることができます。 プログラムを実行しなくてもバグを見つけてください!

動的な型定義と静的な型定義をプログラムに混在させることができます。 レガシーコードのように静的な入力が便利でない場合は、常に動的な型に戻すことができます。

あなたの食欲をほぐす小さな例があります(Python 3):

from typing import Iterator

def fib(n: int) -> Iterator[int]:
    a, b = 0, 1
    while a < n:
        yield a
        a, b = b, a + b

その他の例については、ドキュメントを参照してください。

Python 2.7の場合、標準アノテーションはコメントとして記述されます。

def is_palindrome(s):
    # type: (str) -> bool
    return s == s[::-1]

Python 2のサポートに関するドキュメントを参照してください。

Mypyは開発中です。 いくつかの機能が欠けており、バグがあります。 下記の「開発状況」を参照してください。

要件

mypyを実行するには、Python 3.4以降が必要です。 複数のPythonバージョン(2.xと3.x)を問題なく同じシステムにインストールすることができます。

Ubuntu、Mint、Debianでは、次のようにPython 3をインストールすることができます:

$ sudo apt-get install python3 python3-pip

他のLinuxのフレーバー、OS XとWindowsでは、パッケージは

http://www.python.org/getit/

クイックスタート

Mypyはpipを使用してインストールできます:

$ python3 -m pip install -U mypy

最新バージョンのコードを実行したい場合は、gitからインストールできます:

$ python3 -m pip install -U git+git://github.com/python/mypy.git

さて、システム上のPythonが適切に設定されている場合(以下の「トラブルシューティング」を参照)、プログラムの静的に型付けされた部分を次のようにタイプチェックできます:

$ mypy PROGRAM

型エラーがあっても、静的に型付けされたプログラムを実行するためにPythonインタプリタを使うことができます:

$ python3 PROGRAM

IDEとLinterの統合

Mypyは一般的なIDEに統合することができます:

Mypyは、 flake8-mypyを使用してFlake8に統合することもできます。

Webサイトとドキュメント

ドキュメントおよび追加情報は、Webサイトから入手できます。

http://www.mypy-lang.org/

あるいは、ドキュメントに直接ジャンプすることもできます:

http://mypy.readthedocs.io/

トラブルシューティング

設定によっては、次のようにpipを実行する必要があります。

$ python3 -m pip install -U mypy

これにより、適切なバージョンのmypyのパーサーであるtyped-astが自動的にインストールされます。 何らかの理由でそれができない場合は、手動でインストールできます。

$ python3 -m pip install -U typed-ast

インストール後にmypyコマンドが見つからない場合: python3 -m pip installと、 typingモジュールを含むmypyスクリプトと依存関係がシステムに依存する場所にインストールされます。 場合によっては、スクリプトディレクトリがPATHに存在しないため、 PATHに手動でターゲットディレクトリを追加するか、スクリプトへのシンボリックリンクを作成する必要があります。 特に、Mac OS Xでは、 /Library/Frameworks下にスクリプトをインストールすることができます:

/Library/Frameworks/Python.framework/Versions/<version>/bin

Windowsでは、スクリプトは通常\PythonNN\Scriptsにインストールされます。 ですから、このようなプログラムをタイプしてみてください( \Python34をPythonのインストールパスに置き換えてください):

C:\>\Python34\python \Python34\Scripts\mypy PROGRAM

virtualenv

virtualenvを使用している場合は、python3環境を実行していることを確認してください。 v2環境でpip3経由でインストールしてpip3 、インストールされたモジュールをコマンドラインから実行する環境は設定されません。

$ python3 -m pip install -U virtualenv
$ python3 -m virtualenv env

mypyに貢献するためのクイックスタート

貢献したい場合は、まずmypy gitリポジトリをクローンします:

$ git clone --recurse-submodules https://github.com/python/mypy.git

--recurse-submodulesなしでrepoをすでにクローンしている場合、次のようにtypeshed repoをプルする必要があります:

$ git submodule init
$ git submodule update

どちらの方法でも、タイプド・レポ( https://github.com/python/typeshed )のクローンを含むサブディレクトリをtypeshedする必要がありhttps://github.com/python/typeshed

mypyディレクトリから、pipを使用してmypyをインストールします。

$ cd mypy
$ python3 -m pip install -U .

python3をあなたのPython 3インタプリタに置き換えてください。 ルートとして上記を実行する必要があります。 たとえば、Ubuntuでは次のようになります。

$ sudo python3 -m pip install -U .

今度は上記のようにmypyプログラムを使用できます。 問題が発生した場合は、上記の「トラブルシューティング」を参照してください。

mypyのgitバージョンで作業する

mypyにはサブモジュール「typeshed」が含まれています。 http://github.com/python/typeshedを参照してください このサブモジュールには、Python標準ライブラリの型が含まれています。

gitのサブモジュールが動作する方法のために、あなたはする必要があります

  git submodule update typeshed

分岐、マージ、リベース、またはプルするたびに

(これを自動化することも可能です:Googleで “git hook update submodule”を検索する)

テスト

Test README.mdを参照してください

開発状況

Mypyはalphaソフトウェアですが、すでにDropboxで1年以上実稼動に使用されており、豊富なテストスイートを備えています。

将来の計画に興味がある場合は、ロードマップを参照してください。

課題トラッカー

mypy issue trackerを使用して、バグや拡張機能のアイディアを報告してください:

https://github.com/python/mypy/issues

トラッカーの質問もお気軽に。

従業員求む

テスト、開発、文書作成などの作業の助けを借りて、プロジェクトに非常に感謝しています。 すべての経験レベルの貢献者のためのタスクがあります。 あなたがちょうど始めているのであれば、 ゲッターチャットで初心者の良いアイデアを尋ねてください。

詳細については、 CONTRIBUTING.mdファイルを参照してください。

ライセンス

Mypyは、MITライセンスの条件に基づいてライセンスされています(ファイルLICENSEを参照)。







-python

執筆者: