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