不要使用这是一个测试包
confizzo的Python项目详细描述
确认曲
confizzo是一个配置管理库。它被设计成在一个API中包含许多版本的配置管理方法。在
多文件配置
多文件配置,在confizzo术语中,是被划分为多个文件的配置。一种假设是,当一个配置包含另一个实体的配置信息时,该配置存储在一个单独的配置文件中,并由类型引用,对应于文件中配置的文件名和名称。在
规格
在这里,配置被解析为一个或多个文件。当一个配置依赖于另一个对象-通过组合-这样的配置 对象将存储在单独的文件中。所有相似类型的对象-保存入口点对象,将存储在以名称表示的类的文件中 (通过vase类)为其配置。在'主.yml'-入口点配置-配置将是
object:type:class_typeconf:SOME CONFIGURATION DICTIONARY_dependencies_:-List of dependency descriptions
依赖关系描述的列表将包含如下对象
^{pr2}$“依赖项”部分用于
- 帮助填充配置存储库
- 用于标识对可动态注入的类的引用,并引用正确的配置
这里要使用的模式是
- 从它的配置创建一个对象(不可注入的对象)
- 从dependencies_u查找将要构造的类和用于引用该对象配置的键的名称(作为一个可通过的conf值)。在
示例
假设我们有一个名为datamover的应用程序。然后,对于这个在本地模式下运行的应用程序,配置将存储在$HOME路径的.data\u mover中。在
在主.yml在
version:1system_1:type:ClassAconf:param_1:somethingparam_2:other_dependencies_:-var_name:db_connname:dev_pgconf_type:database
在数据库.yaml在
version:1dev_pg:obj_type:PostgresDBuser:userpassword:passwordhost:10.0.0.7database:root
使用模式如下: 主.py在
fromprovidah.factories.package_factoryimportPackageFactoryfromconfizzo.multifile.config_managerimportConfigManagerfromconfizzo.multifile.parserimportParserdefmain():ConfigManager.config_root='~/.data_mover/config.yml'conf_key='ClassA'config=Parser.get(conf_key)obj_type=config.pop('type')system_1=PackageFactory.create(key=obj_type,**{'conf_key':conf_key})system_1.run()
系统1.py
fromprovidah.factories.package_factoryimportPackageFactoryfromconfizzo.multifile.parserimportParserclassSystem1:def__init__(self,conf_key:str):self.__config=Parser.get(conf_key)dependencies=self.__config['_dependencies_']conf_for_db_conn_ref=[depfordepindependenciesifdep['var_name']=='db_conn']self.__db_conn=PackageFactory.create(key=Parser.get(conf_for_db_conn_ref['type']),**{'conf_key':conf_for_db_conn_ref['name']})defrun(self):self.__db_conn.execute('SELECT 1')
博士后_数据库在
fromconfizzo.multifile.parserimportParserclassPostgresDB:def__init__(self,conf_key:str):# Configuration contains secrets, so we don't want to expose this except when executing a query.self.__config_name=conf_keydefexecute(self,query:str)->None:conf=Parser.get(self.__config_name)['conf']conn=self.__get_connection(conf)conn.cursor.execute(query)conn.close()def__get_connection(self,conf:str)->Connection:pass
托多
有许多特性可以添加
- 使用库和避免定制解决方案和
- 引用配置时的附加过滤
- 与providah包相关的附加配置(可能)
- 项目
标签: