Merge remote-tracking branch 'origin/hot-reload-test'

This commit is contained in:
Your Name 2023-03-31 19:21:15 +08:00
commit f17c580fd9
3 changed files with 24 additions and 6 deletions

View File

@ -1,9 +1,12 @@
from functools import HotReload # HotReload 的意思是热更新,修改函数插件后,不需要重启程序,代码直接生效
# UserVisibleLevel是过滤器参数。 # UserVisibleLevel是过滤器参数。
# 由于UI界面空间有限所以通过这种方式决定UI界面中显示哪些插件 # 由于UI界面空间有限所以通过这种方式决定UI界面中显示哪些插件
# 默认函数插件 VisibleLevel 是 0 # 默认函数插件 VisibleLevel 是 0
# 当 UserVisibleLevel >= 函数插件的 VisibleLevel 时,该函数插件才会被显示出来 # 当 UserVisibleLevel >= 函数插件的 VisibleLevel 时,该函数插件才会被显示出来
UserVisibleLevel = 1 UserVisibleLevel = 1
def get_crazy_functionals(): def get_crazy_functionals():
from crazy_functions.读文章写摘要 import 读文章写摘要 from crazy_functions.读文章写摘要 import 读文章写摘要
from crazy_functions.生成函数注释 import 批量生成函数注释 from crazy_functions.生成函数注释 import 批量生成函数注释
@ -16,6 +19,7 @@ def get_crazy_functionals():
function_plugins = { function_plugins = {
"请解析并解构此项目本身": { "请解析并解构此项目本身": {
# HotReload 的意思是热更新,修改函数插件后,不需要重启程序,代码直接生效
"Function": 解析项目本身 "Function": 解析项目本身
}, },
"解析整个py项目": { "解析整个py项目": {
@ -39,10 +43,12 @@ def get_crazy_functionals():
"Function": 批量生成函数注释 "Function": 批量生成函数注释
}, },
"[多线程demo] 把本项目源代码切换成全英文": { "[多线程demo] 把本项目源代码切换成全英文": {
"Function": 全项目切换英文 # HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效
"Function": HotReload(全项目切换英文)
}, },
"[函数插件模板demo] 历史上的今天": { "[函数插件模板demo] 历史上的今天": {
"Function": 高阶功能模板函数 # HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效
"Function": HotReload(高阶功能模板函数)
}, },
} }
@ -52,7 +58,8 @@ def get_crazy_functionals():
function_plugins.update({ function_plugins.update({
"[仅供开发调试] 批量总结PDF文档": { "[仅供开发调试] 批量总结PDF文档": {
"Color": "stop", "Color": "stop",
"Function": 批量总结PDF文档 # HotReload 的意思是热更新,修改函数插件代码后,不需要重启程序,代码直接生效
"Function": HotReload(批量总结PDF文档)
}, },
}) })

View File

@ -1,5 +1,5 @@
# chatgpt-academic项目分析报告 # chatgpt-academic项目自译解报告
Author补充以下分析均由本项目调用ChatGPT一键生成如果有不准确的地方全怪GPT Author补充以下分析均由本项目调用ChatGPT一键生成如果有不准确的地方全怪GPT😄
## [0/10] 程序摘要: check_proxy.py ## [0/10] 程序摘要: check_proxy.py

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 show_math import convert as convert_math
from functools import wraps from functools import wraps
@ -88,6 +88,17 @@ def CatchException(f):
yield chatbot, history, f'异常 {e}' yield chatbot, history, f'异常 {e}'
return decorated 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): def report_execption(chatbot, history, a, b):
""" """
向chatbot中添加错误信息 向chatbot中添加错误信息