pycoze 0.1.254__tar.gz → 0.1.256__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. {pycoze-0.1.254 → pycoze-0.1.256}/PKG-INFO +1 -1
  2. pycoze-0.1.256/pycoze/api/__init__.py +6 -0
  3. pycoze-0.1.256/pycoze/api/api.py +9 -0
  4. pycoze-0.1.256/pycoze/api/tab_cls.py +103 -0
  5. pycoze-0.1.256/pycoze/api/window_cls.py +50 -0
  6. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/reference/bot.py +1 -1
  7. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/reference/tool.py +1 -1
  8. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/reference/workflow.py +2 -2
  9. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/ui/base.py +1 -1
  10. pycoze-0.1.256/pycoze/utils/__init__.py +9 -0
  11. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/utils/socket.py +3 -2
  12. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze.egg-info/PKG-INFO +1 -1
  13. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze.egg-info/SOURCES.txt +4 -0
  14. {pycoze-0.1.254 → pycoze-0.1.256}/setup.py +1 -1
  15. pycoze-0.1.254/pycoze/utils/__init__.py +0 -5
  16. {pycoze-0.1.254 → pycoze-0.1.256}/LICENSE +0 -0
  17. {pycoze-0.1.254 → pycoze-0.1.256}/README.md +0 -0
  18. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/__init__.py +0 -0
  19. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/ai/__init__.py +0 -0
  20. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/ai/llm/__init__.py +0 -0
  21. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/ai/llm/chat.py +0 -0
  22. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/ai/llm/text_to_image_prompt.py +0 -0
  23. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/ai/llm/think.py +0 -0
  24. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/ai/vram_reserve.py +0 -0
  25. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/bot/__init__.py +0 -0
  26. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/bot/agent/__init__.py +0 -0
  27. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/bot/agent/agent.py +0 -0
  28. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/bot/agent/agent_types/__init__.py +0 -0
  29. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/bot/agent/agent_types/const.py +0 -0
  30. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/bot/agent/agent_types/openai_func_call_agent.py +0 -0
  31. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/bot/agent/assistant.py +0 -0
  32. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/bot/agent/chat.py +0 -0
  33. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/bot/agent_chat.py +0 -0
  34. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/bot/bot.py +0 -0
  35. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/reference/__init__.py +0 -0
  36. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/reference/lib.py +0 -0
  37. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/ui/__init__.py +0 -0
  38. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/ui/color.py +0 -0
  39. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/ui/typ.py +0 -0
  40. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/ui/ui_def.py +0 -0
  41. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/utils/arg.py +0 -0
  42. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/utils/env.py +0 -0
  43. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze/utils/text_or_file.py +0 -0
  44. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze.egg-info/dependency_links.txt +0 -0
  45. {pycoze-0.1.254 → pycoze-0.1.256}/pycoze.egg-info/top_level.txt +0 -0
  46. {pycoze-0.1.254 → pycoze-0.1.256}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pycoze
3
- Version: 0.1.254
3
+ Version: 0.1.256
4
4
  Summary: Package for pycoze only!
5
5
  Author: Yuan Jie Xiong
6
6
  Author-email: aiqqqqqqq@qq.com
@@ -0,0 +1,6 @@
1
+ from .api import Api, api
2
+
3
+ tab = api.tab
4
+ window = api.window
5
+
6
+ # from ps_view import ViewCls, WebsiteViewCls, FileViewCls, DirectoryViewCls, WorkflowCls
@@ -0,0 +1,9 @@
1
+ from .tab_cls import TabCls
2
+ from .window_cls import WindowCls
3
+
4
+ class Api:
5
+ def __init__(self) -> None:
6
+ self.tab = TabCls()
7
+ self.window = WindowCls()
8
+
9
+ oper = Api()
@@ -0,0 +1,103 @@
1
+ import os
2
+ from pycoze import utils
3
+ from uuid import uuid4
4
+ from ps_view import ViewCls, WebsiteViewCls, FileViewCls, DirectoryViewCls, WorkflowCls
5
+ import time
6
+ from typing import Union
7
+
8
+
9
+ socket = utils.socket
10
+
11
+ class TabCls:
12
+
13
+ def open_path(self, item_path: str) -> FileViewCls | DirectoryViewCls:
14
+ if not os.path.isabs(item_path):
15
+ item_path = os.path.abspath(item_path)
16
+ if os.path.isdir(item_path):
17
+ return self.open_dir(item_path)
18
+ else:
19
+ return self.open_file(item_path)
20
+
21
+ def open_file(self, item_path: str) -> Union[FileViewCls, WebsiteViewCls, WorkflowCls]:
22
+ if not os.path.isabs(item_path):
23
+ item_path = os.path.abspath(item_path)
24
+ location = ["FileOrDir", item_path]
25
+ socket.post("add-tab", {"location": location, "name": os.path.basename(item_path)})
26
+ lower_suffix = item_path.lower().split(".")[-1]
27
+ if lower_suffix == 'workflow':
28
+ return WorkflowCls(location)
29
+ if len(location) > 1 and (location[0] == "Website" or location[1].endswith(".website") or location[1].endswith(".html") or location[1].endswith(".ipynb")):
30
+ return WebsiteViewCls(location)
31
+ return FileViewCls(location)
32
+
33
+ def open_dir(self, item_path: str) -> DirectoryViewCls:
34
+ if not os.path.isabs(item_path):
35
+ item_path = os.path.abspath(item_path)
36
+ location = ["FileOrDir", item_path]
37
+ socket.post("add-tab", {"location": location, "name": os.path.basename(item_path)})
38
+ return DirectoryViewCls(location)
39
+
40
+ def open_website(self, url: str, uid:str=None) -> WebsiteViewCls:
41
+ if uid is None:
42
+ uid = str(uuid4())
43
+ location = ["Website", url, uid]
44
+ socket.post("add-tab", {"location": location, "name": url})
45
+ return WebsiteViewCls(location)
46
+
47
+ def get_active(self) -> ViewCls:
48
+ result = socket.post_and_recv_result("get-active-tab", {})
49
+ return self._result_to_view(result)
50
+
51
+ def _result_to_view(self, result: list[str]) -> ViewCls:
52
+ if result[0] == "Website":
53
+ return WebsiteViewCls(result)
54
+ elif result[0] == "FileOrDir":
55
+ if os.path.isdir(result[1]):
56
+ return DirectoryViewCls(result)
57
+ else:
58
+ if result[1].lower().split(".")[-1] == 'workflow':
59
+ return WorkflowCls(result)
60
+ return FileViewCls(result)
61
+ return ViewCls(result)
62
+
63
+ def wait_for_tab_open(self, location: list[str] | ViewCls):
64
+ times = 0
65
+ while not self.is_tab_open(location):
66
+ time.sleep(0.01)
67
+ times += 1
68
+ if times > 1000:
69
+ raise Exception("Tab open timeout")
70
+
71
+ def get_all(self) -> list[ViewCls]:
72
+ results = socket.post_and_recv_result("get-all-tabs", {})
73
+ return [self._result_to_view(result) for result in results]
74
+
75
+ def close_tab(self, location: list[str] | ViewCls):
76
+ if isinstance(location, ViewCls):
77
+ location = location.location
78
+ self.wait_for_tab_open(location)
79
+ socket.post("close-tab", {"location": location})
80
+
81
+ def switch_tab(self, location: list[str] | ViewCls):
82
+ if isinstance(location, ViewCls):
83
+ location = location.location
84
+ self.wait_for_tab_open(location)
85
+ socket.post("switchTab", {"location": location})
86
+
87
+ def is_tab_open(self, location: list[str] | ViewCls):
88
+ if isinstance(location, ViewCls):
89
+ location = location.location
90
+ result = socket.post_and_recv_result("is-tab-open", {"location": location})
91
+ return result
92
+
93
+ def pin_tab(self, location: list[str] | ViewCls):
94
+ if isinstance(location, ViewCls):
95
+ location = location.location
96
+ self.wait_for_tab_open(location)
97
+ socket.post("pin-tab", {"location": location})
98
+
99
+ def unpin_tab(self, location: list[str] | ViewCls):
100
+ if isinstance(location, ViewCls):
101
+ location = location.location
102
+ self.wait_for_tab_open(location)
103
+ socket.post("unpin-tab", {"location": location})
@@ -0,0 +1,50 @@
1
+ import sys
2
+ import subprocess
3
+ import os
4
+ from ps_socket import socket
5
+ import time
6
+
7
+
8
+ class WindowCls:
9
+
10
+ def get_slected_text(self) -> str:
11
+ result = socket.post_and_recv_result("get-selected-text", {})
12
+ return result
13
+
14
+ def append_msg(self, message: str, type='info'):
15
+ if not isinstance(message, str):
16
+ message = repr(message)
17
+ socket.post("append-msg", {"message": message, "type": type})
18
+
19
+ def show_operation(self, text: str):
20
+ socket.post("show-operation", {"text": text})
21
+
22
+ def screenshot(self, name):
23
+ socket.post("screenshot", {"name": name})
24
+
25
+ def confirm(self, message: str) -> bool:
26
+ return socket.post_and_recv_result("confirm", {"message": message})
27
+
28
+ def maximize(self):
29
+ socket.post("maximize", {})
30
+
31
+ def open_file_with_system(self, file_path, wait: bool):
32
+ process_fn = subprocess.run if wait else subprocess.Popen
33
+ if sys.platform.startswith('linux'):
34
+ process_fn(['xdg-open', file_path])
35
+ elif sys.platform.startswith('darwin'):
36
+ process_fn(['open', file_path])
37
+ elif sys.platform.startswith('win32') or sys.platform.startswith('cygwin'):
38
+ os.startfile(file_path)
39
+ else:
40
+ raise OSError('Unsupported operating system')
41
+
42
+ def open_program(self, file_path, wait: bool):
43
+ process_fn = subprocess.run if wait else subprocess.Popen
44
+ process_fn([file_path])
45
+
46
+ def execute_javaScript(self, js_code: str):
47
+ result = socket.post_and_recv_result("executeJavaScript", {"code": js_code})
48
+ if not result["ok"]:
49
+ raise Exception(result["value"])
50
+ return result["value"] if "value" in result else None
@@ -10,7 +10,7 @@ from pycoze import utils
10
10
 
11
11
  bot_index = 0
12
12
 
13
- params = utils.read_params_file()
13
+ params = utils.params
14
14
 
15
15
  def ref_bot(bot_id, as_agent_tool=False, workspace_path=None):
16
16
  global bot_index
@@ -8,7 +8,7 @@ from .lib import ChangeDirectoryAndPath, ModuleManager, wrapped_func
8
8
  from pycoze import utils
9
9
 
10
10
 
11
- params = utils.read_params_file()
11
+ params = utils.params
12
12
 
13
13
  def ref_tools(tool_id, as_agent_tool=False, workspace_path=None):
14
14
  if workspace_path is None:
@@ -4,11 +4,11 @@ import importlib
4
4
  from langchain.agents import tool as to_agent_tool
5
5
  import types
6
6
  import langchain_core
7
- from .lib import ChangeDirectoryAndPath, ModuleManager, wrapped_func
7
+ from .lib import ModuleManager, wrapped_func
8
8
  from pycoze import utils
9
9
 
10
10
 
11
- params = utils.read_params_file()
11
+ params = utils.params
12
12
 
13
13
  def _ref_workflows(workflow_id, as_agent_tool=False, workspace_path=None):
14
14
  if workspace_path is None:
@@ -4,7 +4,7 @@ import json
4
4
  import inspect
5
5
 
6
6
 
7
- params = utils.read_params_file()
7
+ params = utils.params
8
8
 
9
9
 
10
10
  def get_ui():
@@ -0,0 +1,9 @@
1
+ from .arg import read_arg
2
+ from .env import read_params_file, params, read_json_file
3
+ from .socket import TcpSocket, socket, socket_subscribe
4
+ from .text_or_file import to_text
5
+
6
+ __all__ = [read_arg,
7
+ read_params_file, params, read_json_file,
8
+ TcpSocket, socket, socket_subscribe,
9
+ to_text]
@@ -1,10 +1,11 @@
1
1
  import socket
2
2
  import json
3
3
  import uuid
4
+ from pycoze import utils
4
5
 
5
6
 
6
- tcp_port = read_arg("tcp_port")
7
-
7
+ params = utils.params
8
+ tcp_port = params["tcpPort"]
8
9
 
9
10
 
10
11
  class TcpSocket:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pycoze
3
- Version: 0.1.254
3
+ Version: 0.1.256
4
4
  Summary: Package for pycoze only!
5
5
  Author: Yuan Jie Xiong
6
6
  Author-email: aiqqqqqqq@qq.com
@@ -12,6 +12,10 @@ pycoze/ai/llm/__init__.py
12
12
  pycoze/ai/llm/chat.py
13
13
  pycoze/ai/llm/text_to_image_prompt.py
14
14
  pycoze/ai/llm/think.py
15
+ pycoze/api/__init__.py
16
+ pycoze/api/api.py
17
+ pycoze/api/tab_cls.py
18
+ pycoze/api/window_cls.py
15
19
  pycoze/bot/__init__.py
16
20
  pycoze/bot/agent_chat.py
17
21
  pycoze/bot/bot.py
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name="pycoze",
5
- version="0.1.254",
5
+ version="0.1.256",
6
6
  packages=find_packages(),
7
7
  install_requires=[],
8
8
  author="Yuan Jie Xiong",
@@ -1,5 +0,0 @@
1
- from .arg import read_arg
2
- from .env import read_params_file, params, read_json_file
3
- from .text_or_file import to_text
4
-
5
- __all__ = [read_arg, read_params_file, params, read_json_file, to_text]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes