今天是個好日子!
二月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