不要使用这是一个测试包

confizzo的Python项目详细描述


FOSSA Statuscodecov

确认曲

confizzo是一个配置管理库。它被设计成在一个API中包含许多版本的配置管理方法。在

多文件配置

多文件配置,在confizzo术语中,是被划分为多个文件的配置。一种假设是,当一个配置包含另一个实体的配置信息时,该配置存储在一个单独的配置文件中,并由类型引用,对应于文件中配置的文件名和名称。在

规格

在这里,配置被解析为一个或多个文件。当一个配置依赖于另一个对象-通过组合-这样的配置 对象将存储在单独的文件中。所有相似类型的对象-保存入口点对象,将存储在以名称表示的类的文件中 (通过vase类)为其配置。在'主.yml'-入口点配置-配置将是

object:type:class_typeconf:SOME CONFIGURATION DICTIONARY_dependencies_:-List of dependency descriptions

依赖关系描述的列表将包含如下对象

^{pr2}$

“依赖项”部分用于

  1. 帮助填充配置存储库
  2. 用于标识对可动态注入的类的引用,并引用正确的配置

这里要使用的模式是

  1. 从它的配置创建一个对象(不可注入的对象)
  2. 从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

托多

有许多特性可以添加

  1. 使用库和避免定制解决方案和
  2. 引用配置时的附加过滤
  3. 与providah包相关的附加配置(可能)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓中通过TCP发送时java文件损坏   Java测试预期=异常失败,断言错误   java ssh4 LazyInitializationException   java是否可以在集合中添加重复项?   java是一个免费的开源数据库管理工具   java是否可以在导出的html中嵌入图像   编译器构造解释一些东西,并用Java运行生成的字节码?   java KeyPairGenerator未生成随机密钥   java使用正则表达式生成字符串而不是匹配字符串   java中的多线程线程间通信   具有复合密钥的java Hibernate合并问题   java不能在MainActivity类之外使用SharedReferences变量   正在获取切割/零件异常消息。使用java Spring ControllerAdvice   java tomcat漏洞讨论   javascript在Java中实现“system”命令   java如何在JUnit5*中加载*Spring测试上下文之前获取回调?   java bluej关于缺少返回语句   JavaSpringBoot@ModelAttribute包含使用字符串键的其他模型   从可选中抛出异常。ifPresent()Java 8