建立 Python 和 Bash 友誼:發布 python-shell 和 smart-env v 函式庫。 1.0.1

今天是個好日子!

二月29 2020年 圖書館的官方微發布發生了 智慧環境 и 蟒蛇殼。 不了解的朋友建議先閱讀一下 第一篇文章.

簡而言之,這些變更包括命令完成、執行命令的擴充功能、一些重構和錯誤修復。

詳情請見貓。

python-shell 有什麼新功能?

我馬上開始吃甜點。

命令完成

同意 - 當編輯器/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 中的識別碼(例如,眾所周知的 2to3 實用程式)。 打電話給她

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 時的程式碼重複,但也可能提供其他好處。

smart-env 有什麼新功能?

與 python-shell 不同,smart-env 函式庫的變化較少。 原因很簡單 - 缺乏空閒時間,在此期間一些潛在的改進(例如,環境變數的自動完成)被移至下一個版本。

事實上,該庫已進行以下更改:

  • 小代碼修復。
  • 重構。
  • 現有測試的重組和細化。

下一個版本的計劃

python-shell 函式庫

  • 新增對非阻塞命令呼叫的支援(並行執行)。

智慧環境庫

  • ENV 類別中環境變數自動完成的實作。
  • 支援 in 運算子來檢查環境變數是否存在。
  • 實作對 ENV 類別的 str() 和 repr() 函數的支援。

下一個版本的日期將透過以下溝通管道進一步公佈:

來源: www.habr.com

添加評論