自动加载配置文件(.ini)
autoconfiguration的Python项目详细描述
python自动配置
自动加载配置文件(.ini)。在
使用
必须首先调用autoconfiguration
包的init
函数来初始化配置。向此函数传递任意数量的配置文件。将加载所有传递的文件。另外,默认情况下,全局配置文件(config.ini
)将始终被加载。全局配置文件的名称必须是config.ini
。所有其他文件必须以config-
开头,以.ini
结尾。您不必为init
函数使用完整的文件名。您可以使用config-
和.ini
之间的名称。在
init
函数需要第二个参数config_class
。这应该是一个包含配置文件所有部分的dataclass。字段的类型也应该是dataclasses。这些数据类应该包含相应部分的键。在
数据类中键的支持数据类型:
- 结构
- 内景
- 浮动
- 复杂
- 布尔
- 列表
- 元组
- 迪克特
- 可选(如果在配置中找不到密钥,值将设置为
None
)
也支持默认值,如果在配置中找不到相应的键,将设置这些值。在
第三个参数是可选的。这应该是包含配置文件的目录的路径。支持绝对路径。默认值是config
。如果目录的名称是config
,并且它存在于执行应用程序的目录中,则此操作有效。在
示例
配置文件:
config.ini
:
[section]
key=test
config-dev.ini
:
数据类:
fromdataclassesimportdataclass,fieldfromtypingimportList,Tuple,Dict,Any,Optional@dataclassclassSection:key:str@dataclassclassTest:test_int:inttest_bool:booltest_float:floattest_complex:complextest_list:List[Any]test_tuple:Tuple[int,str]test_dict:Dictoptional:Optional[str]default_int:int=987default_list:List[str]=field(default_factory=lambda:[1,2,3])@dataclassclassConfig:section:Sectiontest:Test
初始化自动配置:
fromautoconfigurationimportautoconfigurationconfig:Config=autoconfiguration.init("dev",config_class=Config)
通过指定变量的类型(config: Config
),可以在ide中启用自动完成。在
初始化自动配置后,您可以通过调用get
函数从代码中的任何位置获取配置:
fromautoconfigurationimportautoconfigurationconfig:Config=autoconfiguration.get()
由init
创建的实例将被缓存。这意味着init
和get
函数始终为特定配置类返回相同的实例。在
上面的config类的实例如下所示:
Config(section=Section(key="test"),types=Types(test_int=123,test_bool=False,test_float=0.987,test_complex=1j,test_list=["abc",123],test_tuple=(123,"abc"),test_dict={"test":123,2:"abc"},optional=None,default_int=987,default_list=[1,2,3],),)
多个实例
如果使用另一个配置类调用init
,则自动配置将创建并返回一个新实例并缓存该实例。在
如果在没有config class参数的情况下调用get
,它总是返回第一个缓存实例。将config类传递给get
以获取另一个实例:
fromautoconfigurationimportautoconfigurationconfig:SecondConfig=autoconfiguration.get(SecondConfig)
请参见example/main.py
以获取完整的示例。在
- 项目
标签: