Flask 也有已審核的擴(kuò)展的概念。已審核的擴(kuò)展被作為 Flask 自身的一部分來測
試來保證在新版本中不會破壞。這些已審核的擴(kuò)展會在
Flask Extension Registry 中列出,并有相應(yīng)的標(biāo)記。如果你想要自己的擴(kuò)展
通過審核,你需要遵守下面的指導(dǎo)方針:
- 一個通過審核的 Flask 擴(kuò)展需要一個維護(hù)者。如果一個擴(kuò)展作者想要超越項(xiàng)目,
項(xiàng)目應(yīng)該尋找一個新的維護(hù)者,包括完整的源碼托管過渡和 PyPI 訪問。如果沒
有可用的維護(hù)者,請給 Flask 核心團(tuán)隊訪問權(quán)限。
- 一個通過審核的 Flask 擴(kuò)展必須確切地提供一個名為 flask_extensioname 的
包或模塊。它們也可能駐留在 flaskext 命名空間包內(nèi)部,雖然現(xiàn)在這不被推薦。
- 它必須伴隨一個可以使用 make test 或 python setup.py test 的調(diào)用測
試套件。對于用 make test 測試的套件,擴(kuò)展必須確保所有測試需要的依賴關(guān)
系都被自動處理好。如果測試由 python setup.py test 調(diào)用,測試的依賴關(guān)系
由 setup.py 文件指定。測試套件也必須是發(fā)行版的一部分。
- 通過審核的擴(kuò)展的 API 可以通過下面特性的檢查:
- 一個通過審核的擴(kuò)展必須支持在同一個 Python 進(jìn)程中支持多個應(yīng)用
- 必須支持使用工廠模式創(chuàng)建應(yīng)用
- 必須以 BSD/MIT/WTFPL 許可
- 官方擴(kuò)展的命名模式是 Flask-ExtensionName 或 ExtensionName-Flask
- 通過審核的擴(kuò)展必須在 setup.py 文件里定義好它們的依賴關(guān)系,除非因
其在 PyPI 上不可用而不能滿足這個依賴。
- 擴(kuò)展的文檔必須使用兩種 Flask 的 Sphinx 文檔主題中的一個
- setup.py 描述(因此PyPI 描述同)必須鏈接到文檔、網(wǎng)站(如果有),
并且必須有一個鏈接來自動安裝開發(fā)版本( PackageName==dev )
- 安裝腳本中的 zip_safe 標(biāo)志必須被設(shè)置為 False ,即使擴(kuò)展對于
壓縮是安全的
- 現(xiàn)行擴(kuò)展必須支持 Python 2.6 以及 2.7
擴(kuò)展導(dǎo)入的過渡
一段時間,我們推薦對 Flask 擴(kuò)展使用命名空間包。這在實(shí)踐中被證明是有問題
的,因?yàn)樵S多不同命名空間包系統(tǒng)存在競爭,并且 pip 會自動在不同的系統(tǒng)中切
換,這給用戶導(dǎo)致了許多問題。
現(xiàn)在,我們推薦命名包為 flask_foo 替代過時的 flaskext.foo 。Flask
0.8 引入了重定向?qū)胂到y(tǒng),允許從 flask.ext.foo 導(dǎo)入,并且如果
flaskext.foo 失敗時,會首先嘗試 flask_foo 。
Flask 擴(kuò)展應(yīng)該力勸用戶從 flask.ext.foo 導(dǎo)入,而不是 flask_foo
或 flaskext_foo ,這樣擴(kuò)展可以遷移到新的包名稱而不煩擾用戶。
更多建議: