pycoze 0.1.255__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.255 → 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.256/pycoze/utils/__init__.py +9 -0
  7. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/utils/socket.py +3 -2
  8. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze.egg-info/PKG-INFO +1 -1
  9. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze.egg-info/SOURCES.txt +4 -0
  10. {pycoze-0.1.255 → pycoze-0.1.256}/setup.py +1 -1
  11. pycoze-0.1.255/pycoze/utils/__init__.py +0 -5
  12. {pycoze-0.1.255 → pycoze-0.1.256}/LICENSE +0 -0
  13. {pycoze-0.1.255 → pycoze-0.1.256}/README.md +0 -0
  14. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/__init__.py +0 -0
  15. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/ai/__init__.py +0 -0
  16. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/ai/llm/__init__.py +0 -0
  17. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/ai/llm/chat.py +0 -0
  18. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/ai/llm/text_to_image_prompt.py +0 -0
  19. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/ai/llm/think.py +0 -0
  20. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/ai/vram_reserve.py +0 -0
  21. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/bot/__init__.py +0 -0
  22. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/bot/agent/__init__.py +0 -0
  23. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/bot/agent/agent.py +0 -0
  24. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/bot/agent/agent_types/__init__.py +0 -0
  25. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/bot/agent/agent_types/const.py +0 -0
  26. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/bot/agent/agent_types/openai_func_call_agent.py +0 -0
  27. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/bot/agent/assistant.py +0 -0
  28. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/bot/agent/chat.py +0 -0
  29. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/bot/agent_chat.py +0 -0
  30. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/bot/bot.py +0 -0
  31. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/reference/__init__.py +0 -0
  32. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/reference/bot.py +0 -0
  33. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/reference/lib.py +0 -0
  34. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/reference/tool.py +0 -0
  35. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/reference/workflow.py +0 -0
  36. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/ui/__init__.py +0 -0
  37. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/ui/base.py +0 -0
  38. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/ui/color.py +0 -0
  39. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/ui/typ.py +0 -0
  40. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/ui/ui_def.py +0 -0
  41. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/utils/arg.py +0 -0
  42. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/utils/env.py +0 -0
  43. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze/utils/text_or_file.py +0 -0
  44. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze.egg-info/dependency_links.txt +0 -0
  45. {pycoze-0.1.255 → pycoze-0.1.256}/pycoze.egg-info/top_level.txt +0 -0
  46. {pycoze-0.1.255 → 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.255
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
@@ -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.255
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.255",
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
File without changes