pycoze 0.1.41__py3-none-any.whl → 0.1.42__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,45 +5,52 @@ from langchain.agents import tool as _tool
5
5
  import types
6
6
  import langchain_core
7
7
 
8
+ def change_directory_and_path(module_path):
9
+ """Change the current working directory and sys.path."""
10
+ sys.path.insert(0, module_path)
11
+ os.chdir(module_path)
12
+
13
+ def restore_directory_and_path(module_path, old_path):
14
+ """Restore the original working directory and sys.path."""
15
+ sys.path.remove(module_path)
16
+ os.chdir(old_path)
8
17
 
9
18
  def wrapped_tool(tool, module_path):
10
- old_tool_fun = tool.func
19
+ """Wrap the tool function to include additional logging and path management."""
20
+ original_tool_function = tool.func
11
21
 
12
22
  def _wrapped_tool(*args, **kwargs):
13
23
  print(f"调用了{tool.name}")
14
24
  old_path = os.getcwd()
15
25
  try:
16
- sys.path.insert(0, module_path) # 插入到第一个位置
17
- os.chdir(module_path)
18
- result = old_tool_fun(*args, **kwargs)
26
+ change_directory_and_path(module_path)
27
+ result = original_tool_function(*args, **kwargs)
19
28
  finally:
20
- sys.path.remove(module_path)
21
- os.chdir(old_path)
29
+ restore_directory_and_path(module_path, old_path)
22
30
  print(f"{tool.name}调用完毕,结果为:", result)
23
31
  return result
24
32
 
25
33
  return _wrapped_tool
26
34
 
27
-
28
35
  def import_tools(tool_id):
29
- tool_path = "../../tool"
36
+ """Import tools from a specified tool_id."""
37
+ tool_base_path = "../../tool"
30
38
  old_path = os.getcwd()
31
- module_path = os.path.join(tool_path, tool_id)
39
+ module_path = os.path.join(tool_base_path, tool_id)
32
40
  module_path = os.path.normpath(os.path.abspath(module_path))
33
41
 
34
42
  if not os.path.exists(module_path):
35
43
  print(f"Tool {tool_id} not found")
36
44
  return []
37
45
 
38
- # 保存当前的 sys.modules 状态
46
+ # Save the current sys.modules state
39
47
  original_modules = sys.modules.copy()
40
48
 
41
49
  try:
42
- sys.path.insert(0, module_path) # 插入到第一个位置
43
- os.chdir(module_path)
50
+ change_directory_and_path(module_path)
44
51
  module = importlib.import_module("tool")
45
52
  export_tools = getattr(module, "export_tools")
46
- temp_list = []
53
+ valid_tools = []
47
54
  for tool in export_tools:
48
55
  assert isinstance(tool, langchain_core.tools.StructuredTool) or isinstance(
49
56
  tool, types.FunctionType
@@ -51,23 +58,21 @@ def import_tools(tool_id):
51
58
  if isinstance(tool, types.FunctionType) and not isinstance(
52
59
  tool, langchain_core.tools.StructuredTool
53
60
  ):
54
- temp_list.append(_tool(tool))
55
- export_tools = temp_list
61
+ valid_tools.append(_tool(tool))
62
+ export_tools = valid_tools
56
63
 
57
64
  except Exception as e:
58
65
  print(f"Error loading tool {tool_id}: {e}")
59
- sys.path.remove(module_path)
60
- os.chdir(old_path)
66
+ restore_directory_and_path(module_path, old_path)
61
67
  return []
62
68
 
63
- # 卸载模块并恢复 sys.modules 状态
69
+ # Unload modules and restore sys.modules state
64
70
  importlib.invalidate_caches()
65
71
  for key in list(sys.modules.keys()):
66
72
  if key not in original_modules:
67
73
  del sys.modules[key]
68
74
 
69
- sys.path.remove(module_path)
70
- os.chdir(old_path)
75
+ restore_directory_and_path(module_path, old_path)
71
76
 
72
77
  for tool in export_tools:
73
78
  tool.func = wrapped_tool(tool, module_path)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pycoze
3
- Version: 0.1.41
3
+ Version: 0.1.42
4
4
  Summary: Package for pycoze only!
5
5
  Author: Yuan Jie Xiong
6
6
  Author-email: aiqqqqqqq@qq.com
@@ -1,7 +1,7 @@
1
1
  pycoze/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  pycoze/module.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  pycoze/access/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- pycoze/access/tool_for_bot.py,sha256=qpRMUznyzjl5BcO4T0Cv-4aRFAT_R5CXmlcZb9ZJ9kY,2262
4
+ pycoze/access/tool_for_bot.py,sha256=dmaMEBCHy0vbYzanFrLg_ZLw60ZMkDCnpHK-K_aUHMo,2652
5
5
  pycoze/bot/__init__.py,sha256=pciDtfcIXda7iFt9uI5Fpm0JKpGBhdXHmJv4966WTVU,21
6
6
  pycoze/bot/bot.py,sha256=ijihiXv6etFFQ-NGxtmi0_J7lkgwZir3jbVGUKdFPZ8,2510
7
7
  pycoze/bot/agent/__init__.py,sha256=IaYqQCJ3uBor92JdOxI_EY4HtYOHgej8lijr3UrN1Vc,161
@@ -22,8 +22,8 @@ pycoze/ui/ui_def.py,sha256=CNFYH8NC-WYmbceIPpxsRr9H6O006pMKukx7U-BOE1Q,3744
22
22
  pycoze/utils/__init__.py,sha256=KExBkotf23dr2NfTEouWke5nJB1q2IuDXgHrmuyd95k,73
23
23
  pycoze/utils/arg.py,sha256=rRujm1zKc0XlnNlpIJ6JAAaFiTzDGmL_RliIpSc5OD8,724
24
24
  pycoze/utils/text_or_file.py,sha256=gpxZVWt2DW6YiEg_MnMuwg36VNf3TX383QD_1oZNB0Y,551
25
- pycoze-0.1.41.dist-info/LICENSE,sha256=QStd_Qsd0-kAam_-sOesCIp_uKrGWeoKwt9M49NVkNU,1090
26
- pycoze-0.1.41.dist-info/METADATA,sha256=yYdj2mQkG6HhcIj3dtnO5CjOf333vW4nWIfT57RJ6QE,719
27
- pycoze-0.1.41.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
28
- pycoze-0.1.41.dist-info/top_level.txt,sha256=76dPeDhKvOCleL3ZC5gl1-y4vdS1tT_U1hxWVAn7sFo,7
29
- pycoze-0.1.41.dist-info/RECORD,,
25
+ pycoze-0.1.42.dist-info/LICENSE,sha256=QStd_Qsd0-kAam_-sOesCIp_uKrGWeoKwt9M49NVkNU,1090
26
+ pycoze-0.1.42.dist-info/METADATA,sha256=ca4bq5h8DLWoOBCzYXRZvwDm6bGrQQSX4VwmJjI_hU4,719
27
+ pycoze-0.1.42.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
28
+ pycoze-0.1.42.dist-info/top_level.txt,sha256=76dPeDhKvOCleL3ZC5gl1-y4vdS1tT_U1hxWVAn7sFo,7
29
+ pycoze-0.1.42.dist-info/RECORD,,