qingxu99 commited on
Commit
b073477
1 Parent(s): 16ce033

新增热更新功能

Browse files
Files changed (3) hide show
  1. README.md +1 -1
  2. functional_crazy.py +13 -9
  3. toolbox.py +12 -1
README.md CHANGED
@@ -22,7 +22,7 @@ https://github.com/polarwinkel/mdtex2html
22
  >
23
  > 1.请注意只有“红颜色”标识的函数插件(按钮)才支持读取文件。目前暂不能完善地支持pdf格式文献的翻译解读,尚不支持word格式文件的读取。
24
  >
25
- > 2.本项目中每个文件的功能都在`project_self_analysis.md`详细说明。随着版本的迭代,您也可以随时自行点击相关函数插件,调用GPT重新生成项目的自我解析报告。
26
  >
27
  > 3.如果您不太习惯部分中文命名的函数,您可以随时点击相关函数插件,调用GPT一键生成纯英文的项目源代码。
28
 
 
22
  >
23
  > 1.请注意只有“红颜色”标识的函数插件(按钮)才支持读取文件。目前暂不能完善地支持pdf格式文献的翻译解读,尚不支持word格式文件的读取。
24
  >
25
+ > 2.本项目中每个文件的功能都在`project_self_analysis.md`详细说明。随着版本的迭代,您也可以随时自行点击相关函数插件,调用GPT重新生成项目的自译解报告。
26
  >
27
  > 3.如果您不太习惯部分中文命名的函数,您可以随时点击相关函数插件,调用GPT一键生成纯英文的项目源代码。
28
 
functional_crazy.py CHANGED
@@ -1,9 +1,12 @@
 
 
1
  # UserVisibleLevel是过滤器参数。
2
  # 由于UI界面空间有限,所以通过这种方式决定UI界面中显示哪些插件
3
  # 默认函数插件 VisibleLevel 是 0
4
  # 当 UserVisibleLevel >= 函数插件的 VisibleLevel 时,该函数插件才会被显示出来
5
  UserVisibleLevel = 1
6
 
 
7
  def get_crazy_functionals():
8
  from crazy_functions.读文章写摘要 import 读文章写摘要
9
  from crazy_functions.生成函数注释 import 批量生成函数注释
@@ -16,33 +19,34 @@ def get_crazy_functionals():
16
 
17
  function_plugins = {
18
  "请解析并解构此项目本身": {
19
- "Function": 解析项目本身
 
20
  },
21
  "解析整个py项目": {
22
  "Color": "stop", # 按钮颜色
23
- "Function": 解析一个Python项目
24
  },
25
  "解析整个C++项目头文件": {
26
  "Color": "stop", # 按钮颜色
27
- "Function": 解析一个C项目的头文件
28
  },
29
  "解析整个C++项目": {
30
  "Color": "stop", # 按钮颜色
31
- "Function": 解析一个C项目
32
  },
33
  "读tex论文写摘要": {
34
  "Color": "stop", # 按钮颜色
35
- "Function": 读文章写摘要
36
  },
37
  "批量生成函数注释": {
38
  "Color": "stop", # 按钮颜色
39
- "Function": 批量生成函数注释
40
  },
41
  "[多线程demo] 把本项目源代码切换成全英文": {
42
- "Function": 全项目切换英文
43
  },
44
  "[函数插件模板demo] 历史上的今天": {
45
- "Function": 高阶功能模板函数
46
  },
47
  }
48
 
@@ -52,7 +56,7 @@ def get_crazy_functionals():
52
  function_plugins.update({
53
  "[仅供开发调试] 批量总结PDF文档": {
54
  "Color": "stop",
55
- "Function": 批量总结PDF文档
56
  },
57
  })
58
 
 
1
+ from functools import HotReload # HotReload 的意思是热更新,修改函数插件后,不需要重启程序,代码直接生效
2
+
3
  # UserVisibleLevel是过滤器参数。
4
  # 由于UI界面空间有限,所以通过这种方式决定UI界面中显示哪些插件
5
  # 默认函数插件 VisibleLevel 是 0
6
  # 当 UserVisibleLevel >= 函数插件的 VisibleLevel 时,该函数插件才会被显示出来
7
  UserVisibleLevel = 1
8
 
9
+
10
  def get_crazy_functionals():
11
  from crazy_functions.读文章写摘要 import 读文章写摘要
12
  from crazy_functions.生成函数注释 import 批量生成函数注释
 
19
 
20
  function_plugins = {
21
  "请解析并解构此项目本身": {
22
+ # HotReload 的意思是热更新,修改函数插件后,不需要重启程序,代码直接生效
23
+ "Function": HotReload(解析项目本身)
24
  },
25
  "解析整个py项目": {
26
  "Color": "stop", # 按钮颜色
27
+ "Function": HotReload(解析一个Python项目)
28
  },
29
  "解析整个C++项目头文件": {
30
  "Color": "stop", # 按钮颜色
31
+ "Function": HotReload(解析一个C项目的头文件)
32
  },
33
  "解析整个C++项目": {
34
  "Color": "stop", # 按钮颜色
35
+ "Function": HotReload(解析一个C项目)
36
  },
37
  "读tex论文写摘要": {
38
  "Color": "stop", # 按钮颜色
39
+ "Function": HotReload(读文章写摘要)
40
  },
41
  "批量生成函数注释": {
42
  "Color": "stop", # 按钮颜色
43
+ "Function": HotReload(批量生成函数注释)
44
  },
45
  "[多线程demo] 把本项目源代码切换成全英文": {
46
+ "Function": HotReload(全项目切换英文)
47
  },
48
  "[函数插件模板demo] 历史上的今天": {
49
+ "Function": HotReload(高阶功能模板函数)
50
  },
51
  }
52
 
 
56
  function_plugins.update({
57
  "[仅供开发调试] 批量总结PDF文档": {
58
  "Color": "stop",
59
+ "Function": HotReload(批量总结PDF文档)
60
  },
61
  })
62
 
toolbox.py CHANGED
@@ -1,4 +1,4 @@
1
- import markdown, mdtex2html, threading, importlib, traceback
2
  from show_math import convert as convert_math
3
  from functools import wraps
4
 
@@ -88,6 +88,17 @@ def CatchException(f):
88
  yield chatbot, history, f'异常 {e}'
89
  return decorated
90
 
 
 
 
 
 
 
 
 
 
 
 
91
  def report_execption(chatbot, history, a, b):
92
  """
93
  向chatbot中添加错误信息
 
1
+ import markdown, mdtex2html, threading, importlib, traceback, importlib, inspect
2
  from show_math import convert as convert_math
3
  from functools import wraps
4
 
 
88
  yield chatbot, history, f'异常 {e}'
89
  return decorated
90
 
91
+ def HotReload(f):
92
+ """
93
+ 装饰器函数,实现函数插件热更新
94
+ """
95
+ @wraps(f)
96
+ def decorated(*args, **kwargs):
97
+ fn_name = f.__name__
98
+ f_hot_reload = getattr(importlib.reload(inspect.getmodule(f)), fn_name)
99
+ yield from f_hot_reload(*args, **kwargs)
100
+ return decorated
101
+
102
  def report_execption(chatbot, history, a, b):
103
  """
104
  向chatbot中添加错误信息