我的工作,包含以下根文件夾Python應用程序:強制包分離(避免來自特定模塊進口)
+---FrontEnd
+---BackEnd
+---Common
前端和後端的進口從共同但通用不應該從以前的進口。我想以編程方式強制執行此規則,所以我的團隊(尤其是新團隊成員)不會意外地將FrontEnd或BackEnd導入Common。
我聽說進口掛鉤可以幫助這裏,但我還沒有找到關於此的很多信息。我第一次嘗試沒有多麼容易:
Common.__init__.py
class NoForeignDependencies(object):
PATH_TRIGGERS = ['FrontEnd', 'BackEnd']
def __init__(self, path_entry):
if path_entry not in self.PATH_TRIGGERS:
raise ImportError()
def find_module(self, fullname, path=None):
print 'Import not allowed for this module'
return None
sys.path_hooks.append(NoForeignDependencies)
我如何能做到這一點任何想法?
在開發時間內完成它是絕對必要的嗎?我們在git pre-commit鉤子中進行了這些檢查,因此您可以執行此類導入以進行測試或播放,並且只有在嘗試提交時纔會被拒絕。但是如果你事先知道這個邏輯,那麼沒有必要推動CI系統讓測試失敗。 – drodri