通用yaml/json配置读写器
saiti的Python项目详细描述
saiti-通用yaml/json配置处理程序
saiti包将yaml或json配置文件转换为类。 用于我们的应用程序。它对参数进行验证 并检查参数的存在性。验证是为了防止 配置中的输入错误。
它目前支持跟踪外部包;
- 烧瓶
- 烧瓶Jwt
- 烧瓶Jwt伸长
- 烧瓶sqlalchemy
- 烧瓶后挡板
概念
这个概念简单明了,从一个 继承configfile类并实现可访问的属性 在根文件级别。对于基元变量(str、int、bool和float) 同时实现属性getter和setter。
classMyConfigurationFileObject(ConfigYamlFile):def__init__(self,**kwargs)self.__property_name=defaultvalueorNone...ConfigFile.__init__(self,**kwargs)return@propertydefproperty_name(self):returnself.__property_name@property_name.setterdefproperty_name(self,value)self.__property_name=valuereturn
对于复杂的属性,只需要实现一个getter。
classMyConfigurationObject(ConfigProcessor):def__init__(self,**kwargs)self.__list_property_name=[]self.__object_property_name=DerivedConfigProcessorself.__list_objects_property_name=DerivedConfigProcessorList...@propertydeflist_property_name(self):returnself.__list_property_name@propertydefobject_property_name(self):returnself.__object_property_name@propertydeflist_object_property_name(self):returnself.__list_object_property_name
内部变量可能是一个包含原始变量的简单列表,或者 从中的configprocessor或configlistprocessor派生的对象 复杂对象列表的大小写。
从configprocess类派生的对象如下所示
fromsaitiimportConfigProcessorclassMyConfigurationObject(ConfigProcessor):def__init__(self,**kwargs):self.__property_name=defaultvalueorNoneConfigProcessor.__init__(self,'<name>',**kwargs)...@propertydefproperty_name(self):returnself.__property_name@property_name.setterdefproperty_name(self,value)self.__property_name=valuereturn
一个复杂对象的列表需要像上面这样的一个实现 在名单上。以及configlistprocessor类的一个实现 下面。
fromsaitiimportConfigListProcessorclassMyListConfigurationObject(ConfigListProcessor):def__init__(self,**kwargs):ConfigListProcessor.__init__(self,**kwargs)returndefnewObject(self,name,obj):returnMyConfigurationObject(name)
库中提供了许多配置类;
- loggingconfig;实现标准的python日志记录。
- databaseconfig:实现访问的标准配置项 到具有以下属性的数据库:
- engine
- database
- username
- password
- hostname
- hostport
- 烧瓶配置:
- hostname
- host same ase hostname
- hostport
- port same ase hostport
- UserPassConfigMixin;具有以下性质:
- username
- password
特殊情况
每当配置包含配置对象的键时 是变量,因此不是预定义的。
在派生的configprocessor类中,变量“通配符对象”必须 设置为从configprocessor派生的类。
示例
请参见示例文件夹