代码拉取完成,页面将自动刷新
FUNC_MAP = {
}
def get_FUNC_MAP():
return FUNC_MAP
import importlib
import logging
import yaml
import os
logger = logging.getLogger(__name__)
from src.formula_base import MyMLError
def my_import(name):
dot_idx = name.rindex('.')
module_name = name[:dot_idx]
class_name = name[dot_idx + 1:]
mod = importlib.import_module(module_name)
_cls = getattr(mod, class_name)
return _cls
def loadOneFunc(f):
func_cls = None
with open(f, encoding='utf-8') as _f:
fun_json = yaml.load(_f)
name = os.path.basename(f).replace('.yml', '')
formula_name = fun_json['formula_name']
class_str = fun_json.get('class')
if class_str is None:
raise Exception(f'没有定义class字段: {f}')
func_cls = my_import(class_str)
logger.debug(f'load class {class_str} success,yml={f}')
if formula_name in FUNC_MAP:
raise Exception('func key 重复定义:yml={f}')
FUNC_MAP[formula_name] = func_cls()
return fun_json
def loadOneDir(_dir):
func_list = []
onlyfiles = [f for f in os.listdir(_dir) if f.endswith('.yml')]
for f in onlyfiles:
func_json = loadOneFunc(os.path.join(_dir, f))
func_list.append(func_json)
return func_list
def read():
func_list = []
FUNC_MAP.clear()
func_list.extend(loadOneDir(os.path.join(os.path.dirname(__file__), 'src')))
return func_list
print(read())
print(FUNC_MAP)
def infer(formula_name,params):
if formula_name not in FUNC_MAP:
raise MyMLError('1','公式名称不存在')
return FUNC_MAP[formula_name].calc(params)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。