みんなに良い一日を!
29 2月2020年 ライブラリの公式マイクロリリースが行われました スマート環境 и Pythonシェル。 知らない人はまず読んでみるといいと思います
つまり、変更にはコマンド補完、コマンド実行機能の拡張、いくつかのリファクタリングとバグ修正が含まれます。
Python シェルの新機能は何ですか?
早速デザートから始めます。
コマンドの完了
同意します - エディター/IDE/ターミナルがコマンド名の入力を求め、場合によっては呼び出しパラメーターの入力を求められると便利です。 そのため、python-shell も同様の機能の提供を徐々に進めています。 内部の Shell クラスのフィールドは事実上そのフィールド (ユビキタス __getattr__) ではないという事実のため、オートコンプリートも (それぞれ __dir__ メソッドをオーバーロードすることによって) スクラッチから作成されました。 オートコンプリートは現在、BPython および IPython 環境で動作します。 もちろん、PyCharm のようなより由緒ある製品との統合も期待しており、この方向で実装の可能性が検討されています。
プロパティの追加
リリースの一部として、Shell クラスは新しい last_command プロパティを受け取りました。 これが必要になったのは、ゼロ以外の戻りコードを持つコマンドによって ShellException がスローされた場合、コマンド オブジェクトへの __call__() 呼び出しから Command オブジェクトが返されなかったためです。 今、これを行う機会があります:
try:
command = Shell.touch('/foo.txt')
except ShellException:
command = Shell.last_command
Command オブジェクトのプロパティのリストも拡張されました。 コマンド出力をエラー ストリームに返すエラー フィールドを追加しました。
無効な Python 名を使用したコマンドの実行
ほとんどすべてのシステムには、Python の識別子として適切ではない名前のプログラムが少なくとも 2 つあります (たとえば、よく知られた 3toXNUMX ユーティリティ)。 彼女に電話してください
Shell.2to3()
それが機能しない場合、通訳はそれを通過させません。
解決策は、回りくどい方法でコマンドを呼び出すことです。
Shell("2to3") # возвращает объект команды
同様の方法で、インタプリタの観点から有効なコマンドを実行できることは注目に値します。これにより、次のような柔軟なスクリプトを作成する機会が残されます。
cmd = "python{}".format(sys.version_info[0])
Shell(cmd)(*args, **kwargs)
マイナーな変更
- Command クラス オブジェクトの __repr__() メソッドと __str__() メソッドが実装され、直感的な値 (それぞれパラメーター付きのコマンドとその stdout 出力) が生成されるようになりました。
- マイナーコード修正。
- テスト カバレッジを追加し、既存のテスト カバレッジを再編成します。
- Subprocess クラスと Process クラスを追加します。その目的は、subprocess モジュールを操作するときに追加の抽象レベルを作成することです。 主に、Python 2/3 で作業するときにコードの重複を排除するために必要ですが、他のボーナスも提供される可能性があります。
スマート環境の新機能は何ですか?
python-shell とは異なり、smart-env ライブラリの変更はほとんどありません。 この理由は単純です。自由時間が不足しており、その間にいくつかの潜在的な改善 (環境変数の自動補完など) が次のリリースに移されました。
実際、ライブラリには次の変更が加えられています。
- マイナーコード修正。
- リファクタリング。
- 既存のテストの再編成と改良。
次のリリースの計画
Pythonシェルライブラリ
- ノンブロッキング コマンド呼び出し (実行の並列化) のサポートを追加します。
スマート環境ライブラリ
- ENV クラスでの環境変数のオートコンプリートの実装。
- 環境変数の存在を確認するための in 演算子のサポート。
- ENV クラスの str() および repr() 関数のサポートの実装。
次のリリースの日付は、次のコミュニケーション チャネルでさらに発表されます。
電報チャンネル(公開) Twitter - この記事で更新します。
出所: habr.com