新增热更新功能

This commit is contained in:
qingxu fu 2023-03-30 18:04:20 +08:00
parent 1c3ce18eff
commit 3fe96956ce
3 changed files with 21 additions and 5 deletions

View File

@ -22,7 +22,7 @@ https://github.com/polarwinkel/mdtex2html
>
> 1.请注意只有“红颜色”标识的函数插件按钮才支持读取文件。目前暂不能完善地支持pdf格式文献的翻译解读尚不支持word格式文件的读取。
>
> 2.本项目中每个文件的功能都在`project_self_analysis.md`详细说明。随着版本的迭代您也可以随时自行点击相关函数插件调用GPT重新生成项目的自我解析报告。
> 2.本项目中每个文件的功能都在`project_self_analysis.md`详细说明。随着版本的迭代您也可以随时自行点击相关函数插件调用GPT重新生成项目的自译解报告。
>
> 3.如果您不太习惯部分中文命名的函数您可以随时点击相关函数插件调用GPT一键生成纯英文的项目源代码。

View File

@ -1,3 +1,5 @@
from functools import HotReload # HotReload 的意思是热更新,修改函数插件后,不需要重启程序,代码直接生效
# UserVisibleLevel是过滤器参数。
# 由于UI界面空间有限所以通过这种方式决定UI界面中显示哪些插件
# 默认函数插件 VisibleLevel 是 0
@ -39,10 +41,12 @@ def get_crazy_functionals():
"Function": 批量生成函数注释
},
"[多线程demo] 把本项目源代码切换成全英文": {
"Function": 全项目切换英文
# HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效
"Function": HotReload(全项目切换英文)
},
"[函数插件模板demo] 历史上的今天": {
"Function": 高阶功能模板函数
# HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效
"Function": HotReload(高阶功能模板函数)
},
}
@ -52,7 +56,8 @@ def get_crazy_functionals():
function_plugins.update({
"[仅供开发调试] 批量总结PDF文档": {
"Color": "stop",
"Function": 批量总结PDF文档
# HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效
"Function": HotReload(批量总结PDF文档)
},
})

View File

@ -1,4 +1,4 @@
import markdown, mdtex2html, threading, importlib, traceback
import markdown, mdtex2html, threading, importlib, traceback, importlib, inspect
from show_math import convert as convert_math
from functools import wraps
@ -88,6 +88,17 @@ def CatchException(f):
yield chatbot, history, f'异常 {e}'
return decorated
def HotReload(f):
"""
装饰器函数实现函数插件热更新
"""
@wraps(f)
def decorated(*args, **kwargs):
fn_name = f.__name__
f_hot_reload = getattr(importlib.reload(inspect.getmodule(f)), fn_name)
yield from f_hot_reload(*args, **kwargs)
return decorated
def report_execption(chatbot, history, a, b):
"""
向chatbot中添加错误信息