From b073477905fbb9feb6c30f8f081226225d09b6a7 Mon Sep 17 00:00:00 2001 From: qingxu fu <505030475@qq.com> Date: Thu, 30 Mar 2023 18:01:06 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=83=AD=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- functional_crazy.py | 22 +++++++++++++--------- toolbox.py | 13 ++++++++++++- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index a281e4f..26640f7 100644 --- a/README.md +++ b/README.md @@ -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一键生成纯英文的项目源代码。 diff --git a/functional_crazy.py b/functional_crazy.py index 3f13853..889e242 100644 --- a/functional_crazy.py +++ b/functional_crazy.py @@ -1,9 +1,12 @@ +from functools import HotReload # HotReload 的意思是热更新,修改函数插件后,不需要重启程序,代码直接生效 + # UserVisibleLevel是过滤器参数。 # 由于UI界面空间有限,所以通过这种方式决定UI界面中显示哪些插件 # 默认函数插件 VisibleLevel 是 0 # 当 UserVisibleLevel >= 函数插件的 VisibleLevel 时,该函数插件才会被显示出来 UserVisibleLevel = 1 + def get_crazy_functionals(): from crazy_functions.读文章写摘要 import 读文章写摘要 from crazy_functions.生成函数注释 import 批量生成函数注释 @@ -16,33 +19,34 @@ def get_crazy_functionals(): function_plugins = { "请解析并解构此项目本身": { - "Function": 解析项目本身 + # HotReload 的意思是热更新,修改函数插件后,不需要重启程序,代码直接生效 + "Function": HotReload(解析项目本身) }, "解析整个py项目": { "Color": "stop", # 按钮颜色 - "Function": 解析一个Python项目 + "Function": HotReload(解析一个Python项目) }, "解析整个C++项目头文件": { "Color": "stop", # 按钮颜色 - "Function": 解析一个C项目的头文件 + "Function": HotReload(解析一个C项目的头文件) }, "解析整个C++项目": { "Color": "stop", # 按钮颜色 - "Function": 解析一个C项目 + "Function": HotReload(解析一个C项目) }, "读tex论文写摘要": { "Color": "stop", # 按钮颜色 - "Function": 读文章写摘要 + "Function": HotReload(读文章写摘要) }, "批量生成函数注释": { "Color": "stop", # 按钮颜色 - "Function": 批量生成函数注释 + "Function": HotReload(批量生成函数注释) }, "[多线程demo] 把本项目源代码切换成全英文": { - "Function": 全项目切换英文 + "Function": HotReload(全项目切换英文) }, "[函数插件模板demo] 历史上的今天": { - "Function": 高阶功能模板函数 + "Function": HotReload(高阶功能模板函数) }, } @@ -52,7 +56,7 @@ def get_crazy_functionals(): function_plugins.update({ "[仅供开发调试] 批量总结PDF文档": { "Color": "stop", - "Function": 批量总结PDF文档 + "Function": HotReload(批量总结PDF文档) }, }) diff --git a/toolbox.py b/toolbox.py index d96b3f6..e50b973 100644 --- a/toolbox.py +++ b/toolbox.py @@ -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中添加错误信息 From 363e45508b0fdf00fea2a8647cdee772d86d3e16 Mon Sep 17 00:00:00 2001 From: qingxu fu <505030475@qq.com> Date: Thu, 30 Mar 2023 18:04:20 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=83=AD=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- functional_crazy.py | 11 ++++++++--- toolbox.py | 13 ++++++++++++- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index a281e4f..26640f7 100644 --- a/README.md +++ b/README.md @@ -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一键生成纯英文的项目源代码。 diff --git a/functional_crazy.py b/functional_crazy.py index 3f13853..67c3c4b 100644 --- a/functional_crazy.py +++ b/functional_crazy.py @@ -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文档) }, }) diff --git a/toolbox.py b/toolbox.py index d96b3f6..e50b973 100644 --- a/toolbox.py +++ b/toolbox.py @@ -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中添加错误信息 From ba0c17ba53a7d128b2834d6479851dce29dc45fb Mon Sep 17 00:00:00 2001 From: qingxu fu <505030475@qq.com> Date: Thu, 30 Mar 2023 18:21:17 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E8=87=AA=E8=AF=91=E8=A7=A3=E6=8A=A5?= =?UTF-8?q?=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project_self_analysis.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/project_self_analysis.md b/project_self_analysis.md index c817421..f0a544e 100644 --- a/project_self_analysis.md +++ b/project_self_analysis.md @@ -1,5 +1,5 @@ -# chatgpt-academic项目分析报告 -(Author补充:以下分析均由本项目调用ChatGPT一键生成,如果有不准确的地方全怪GPT) +# chatgpt-academic项目自译解报告 +(Author补充:以下分析均由本项目调用ChatGPT一键生成,如果有不准确的地方,全怪GPT😄) ## [0/10] 程序摘要: check_proxy.py