完成配置加载
This commit is contained in:
parent
f1a392aa32
commit
36a5f9cfd3
|
@ -1,48 +1,33 @@
|
|||
from typing import Union
|
||||
from os import path as osp
|
||||
import os
|
||||
import importlib
|
||||
import time
|
||||
import json5
|
||||
import app.env as env
|
||||
|
||||
class Config:
|
||||
def __init__(self,conf:Union[dict,str]):
|
||||
|
||||
if type(conf) == dict:
|
||||
# 杈撳叆鏄瓧鍏告椂
|
||||
|
||||
self._conf_Dict = conf
|
||||
self.__name__ = '<Standard Dictionary>'
|
||||
else:
|
||||
ConfList = conf.split('://')
|
||||
FileFormat = ConfList[0]
|
||||
FilePath = ConfList[1]
|
||||
|
||||
if FileFormat not in ['json','yaml','py','env']:
|
||||
# 鍒ゆ柇鏂囦欢鏍煎紡
|
||||
raise NameError(f'Unsupported file format:{FileFormat}')
|
||||
|
||||
if not osp.exists(FilePath) and FileFormat not in ['env','py']:
|
||||
# 鍒ゆ柇鏂囦欢鏄惁瀛樺湪
|
||||
raise FileExistsError('The configuration file path does not exist.')
|
||||
|
||||
self.__name__ = osp.splitext(osp.basename(FilePath))[0]
|
||||
|
||||
self._conf_Dict = self._readConf(FilePath,FileFormat)
|
||||
|
||||
def __init__(self):
|
||||
self._conf_Dict = json5.load(os.path.join(env.dirs.user_config_path, "config.json"), encoding="utf-8")
|
||||
self.__name__ = "<Standard Dictionary>"
|
||||
self.update()
|
||||
|
||||
def __getattr__(self, name):
|
||||
if name in self._conf_Dict:
|
||||
return self._conf_Dict[name]
|
||||
else:
|
||||
raise AttributeError(f"'{self.__class__.__name__}' object has no attribute '{name}'")
|
||||
raise AttributeError(
|
||||
f"'{self.__class__.__name__}' object has no attribute '{name}'"
|
||||
)
|
||||
|
||||
def update(self,conf:Union[dict, None] = None):
|
||||
if conf:
|
||||
self._conf_Dict = conf
|
||||
# 鏇存柊鍒楄〃
|
||||
def update(self):
|
||||
for k, v in self._conf_Dict.items():
|
||||
if isinstance(v, dict):
|
||||
setattr(self, k, Config(v))
|
||||
elif isinstance(v, list):
|
||||
setattr(
|
||||
self,
|
||||
k,
|
||||
[Config(item) if isinstance(item, dict) else item for item in v],
|
||||
)
|
||||
else:
|
||||
setattr(self, k, v)
|
||||
self.__updateTime__ = time.time()
|
||||
|
||||
c = Config('env://MY:dotenv')
|
||||
def __str__(self):
|
||||
return str(self._conf_Dict)
|
||||
|
|
0
app/endponit/HuTao.py
Normal file
0
app/endponit/HuTao.py
Normal file
1
app/endponit/__init__.py
Normal file
1
app/endponit/__init__.py
Normal file
|
@ -0,0 +1 @@
|
|||
from .HuTao import *
|
|
@ -8,6 +8,10 @@ def init_dirs():
|
|||
os.makedirs(dirs.user_log_path, exist_ok=True)
|
||||
os.makedirs(dirs.user_data_path, exist_ok=True)
|
||||
|
||||
if not os.path.exists(os.path.join(dirs.user_config_path, "config.json")):
|
||||
with open(os.path.join(dirs.user_config_path, "config.json"), "w") as f:
|
||||
f.write("{}")
|
||||
|
||||
def init():
|
||||
init_dirs()
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
pyqt5==5.15.11
|
||||
PyQt-Fluent-Widgets[full]==1.6.3
|
||||
platformdirs==4.3.1
|
||||
json5==0.9.25
|
Loading…
Reference in New Issue
Block a user