新增热更新功能
This commit is contained in:
		
							parent
							
								
									1c3ce18eff
								
							
						
					
					
						commit
						c358c95630
					
				@ -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一键生成纯英文的项目源代码。
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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文档)
 | 
			
		||||
            },
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										13
									
								
								toolbox.py
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								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中添加错误信息
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user