GitHubじゃ!Pythonじゃ!

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

jonathanslenders

python-prompt-toolkit – Pythonで強力なインタラクティブコマンドラインを構築するためのライブラリ

投稿日:

Pythonで強力なインタラクティブコマンドラインを構築するためのライブラリ

Pythonプロンプトツールキット

prompt_toolkitは、強力な対話型のコマンドラインとPythonでのターミナルアプリケーションを構築するためのライブラリです。

readthedocsドキュメントを読んでください

注意:prompt_toolkit 2.0

これがprompt_toolkitの2.0ブランチであることに注意してください。 これは1.0ブランチと互換性がありませんが、多くの点でははるかに優れています。 Pypiでは1.0のブランチが見つかるはずですが、すぐにリリースされるはずです。 その間、このブランチをテストしてバグを報告することを躊躇しないでください。

Ptpython

ptpythonは対話的なPythonシェルで、prompt_toolkitの上に構築されています。

prompt_toolkitの機能

prompt_toolkitGNU readlineの代わりになる可能性がありますが、これ以上のこともあります。

いくつかの機能:

  • 純粋なPython。
  • 入力中の構文の強調表示。 (例えば、Pygmentsレクサーの場合)。
  • マルチライン入力編集。
  • 高度なコード補完。
  • EmacsとViの両方のキーバインディング (readlineに似ています)
  • 名前付きレジスタや二重グラフのようないくつかの高度なVi機能さえ。
  • 逆方向および順方向インクリメンタルサーチ。
  • 2.6から3.5までのすべてのPythonバージョンで動作します。
  • Unicodeの2倍の幅の文字でうまく動作します。 (中国語入力)
  • コピー/貼り付けのためのテキストの選択。 (EmacsとViスタイルの両方)。
  • 括弧で囲まれたペーストのサポート。
  • カーソルの位置決めとスクロールのためのマウスサポート。
  • 自動提案。 魚の殻のように)
  • 複数の入力バッファ。
  • グローバルな状態はありません。
  • 軽量で、唯一の依存関係はPygments、6およびwcwidthです。
  • Linux、OS X、FreeBSD、OpenBSD、Windowsシステムで動作します。
  • さらに多くの…

バグや機能リクエストのチケットを作成し、他の人と共有したい素敵なパッチがあればプルリクエストを作成してください。

Windowsのサポートについて

prompt_toolkitはクロスプラットフォームであり、上に構築したものはすべてUnixシステムとWindowsシステムの両方で正常に動作するはずです。 Windowsでは、別のイベントループ( selectではなくWaitForMultipleObjects )と別の入出力システムを使用します。 (擬似端末とVT100ではなくWin32 API)。

実装は「可能な限りの最善の努力」であることは注目に値する。 UnixとWindowsの両方の端末には限界があります。 しかし、一般的に、Unixの経験はやや良いでしょう。

Windowsでは、 cmderまたはconemuのどちらかを使用することをお勧めします。

インストール

pip install prompt_toolkit

コンダのために:

conda install -c https://conda.anaconda.org/conda-forge prompt_toolkit

入門

ライブラリの最も単純な例は次のようになります:

from prompt_toolkit import prompt

if __name__ == '__main__':
    answer = prompt('Give me some input: ')
    print('You said: %s' % answer)

もっと複雑な例については、 examplesディレクトリを見てください。 すべての例は、1つだけを実証するために選択されています。 また、ソースコードを見るのを恐れないでください。 prompt機能の実装は良いスタートになる可能性がありprompt

Python 2の注意:すべての文字列はUnicode文字列であると予想されます。 だから、すべての文字列の前に小さなuを入れるか、上記の例のfrom __future__ import unicode_literalsを入れfrom __future__ import unicode_literals

prompt_toolkitを使用したプロジェクト

シェル:

  • ptpython :Python REPL
  • ptpdb :Pythonデバッガ(pdb置換)
  • pgcli :Postgresクライアント。
  • mycli :MySqlクライアント。
  • wharfee :ドッカーのコマンドライン。
  • xonsh :Python-ish、BASHwards互換のシェル。
  • saws :スーパーチャージAWSコマンドラインインターフェイス。
  • cycli :Cypherのコマンドラインインターフェイス。
  • クラッシュ :クレートコマンドラインクライアント。
  • vcli :Verticaクライアント。
  • aws-shell :AWS CLIを操作するための統合シェル。
  • softlayer-python :さまざまなSoftLayer製品およびサービスを管理するためのコマンドラインインターフェイス。
  • ipython :IPython REPL
  • click-repl :クリックアプリのサブコマンドREPL。
  • haxor-news :Hacker NewsのCLIです。
  • gitsome :GitHubインテグレーションによるGit / Shellのオートコンプリート。
  • http-prompt :対話型のコマンドラインHTTPクライアント。
  • ココナッツ :Pythonでの機能プログラミング。
  • Ergonomica :Pythonで書かれたBashの代替。
  • Kube-shell :Kubernetesシェル:Kubernetes CLIを操作するための統合シェル
  • mssql-cli :Microsoft SQL Server用のコマンドラインクライアント。
  • robotframework-debuglibraryRobotFrameworkのデバッグライブラリとREPL。
  • ptrepl :コマンドをREPLとして実行します。
  • clipwdmgr :コマンドラインパスワードマネージャー。
  • slacker :Slack APIへの簡単なアクセスとREPLを介したワークスペースの管理。

フルスクリーンアプリケーション:

  • pymux :純粋なPythonのターミナルマルチプレクサ(tmuxなど)。
  • pyvim :純粋なPythonのVimクローン。

(自分のプロジェクトをここにリストしたいのですか?GitHubの問題を作成してください。)

哲学

prompt_toolkitのソースコードは、読みやすく簡潔かつ効率的でなければなりません。 1つのタスクに焦点を合わせ、入力と出力の型が明確になっている短い関数を優先します。 継承は同じオブジェクトに多すぎる機能をもたらす可能性があるため、継承より合成を優先します。 可能であれば、不変のオブジェクトを優先します(オブジェクトは初期化後に変更されません)。 再利用性が重要です。 グローバルな状態が変わることは絶対に避けてください。同じプロセスで同じコードの複数の独立したインスタンスを持つことは可能です。 アーキテクチャは階層化されていなければなりません。下位レベルは基本操作とデータ構造上で動作し、正しく組み合わされていればすべての可能な柔軟性を与えます。 より高いレベルでは、より簡単なAPIが用意されており、すぐに使用でき、ほとんどの使用例で十分です。 アルゴリズムと効率について考えることは重要ですが、時期尚早の最適化は避けてください。

特別なおかげで







-jonathanslenders

執筆者: