Skip to content

Commit 44d0057

Browse files
committed
Add Feature & Test & Update & Exceptions
Add Feature * Add callback function executor Add Test * Add callback function executor test Update * Update dev version Exceptions * Add exception tag * Add exception
1 parent 9c149b0 commit 44d0057

File tree

11 files changed

+188
-5
lines changed

11 files changed

+188
-5
lines changed

.circleci/config.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,10 @@ jobs:
103103
- run:
104104
command: python ./test/gui_test/image/locate_image_center.py
105105
name: locate_image_center_test
106+
# callback test
107+
- run:
108+
command: python ./test/unit_test/callback/callback_test.py
109+
name: callback_test
106110

107111
# integrated_test
108112
# can't run this because circle ci bug
@@ -210,7 +214,10 @@ jobs:
210214
- run:
211215
command: python ./test/unit_test/argparse/argparse_test.py
212216
name: argparse_test
213-
217+
# callback test
218+
- run:
219+
command: python ./test/unit_test/callback/callback_test.py
220+
name: callback_test
214221

215222
# integrated_test
216223
# can't run this because circle ci bug

.github/workflows/auto-control-github-actions_dev.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,7 @@ jobs:
7474
run: python ./test/unit_test/argparse/argparse_test.py
7575
# html report test
7676
- name: html_report_test
77-
run: python ./test/unit_test/generate_report/html_report_test.py
77+
run: python ./test/unit_test/generate_report/html_report_test.py
78+
# call back test
79+
- name: call back test
80+
run: python ./test/unit_test/callback/callback_test.py

.github/workflows/auto-control-github-actions_stable.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,7 @@ jobs:
7474
run: python ./test/unit_test/argparse/argparse_test.py
7575
# html report test
7676
- name: html_report_test
77-
run: python ./test/unit_test/generate_report/html_report_test.py
77+
run: python ./test/unit_test/generate_report/html_report_test.py
78+
# call back test
79+
- name: call back test
80+
run: python ./test/unit_test/callback/callback_test.py

je_auto_control/__init__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@
6969
# xml
7070
from je_auto_control.utils.generate_report.generate_xml_report import generate_xml
7171
from je_auto_control.utils.generate_report.generate_xml_report import generate_xml_report
72+
# callback
73+
from je_auto_control.utils.callback.callback_function_executor import callback_executor
7274

7375
__all__ = [
7476
"click_mouse", "mouse_table", "position", "press_mouse", "release_mouse",
@@ -92,5 +94,6 @@
9294
"generate_html", "generate_html_report",
9395
"generate_json", "generate_json_report",
9496
"generate_xml", "generate_xml_report",
95-
"get_dir_files_as_list", "create_template_dir", "start_autocontrol_socket_server"
97+
"get_dir_files_as_list", "create_template_dir", "start_autocontrol_socket_server",
98+
"callback_executor"
9699
]

je_auto_control/utils/callback/__init__.py

Whitespace-only changes.
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
import typing
2+
from sys import stderr
3+
4+
from je_auto_control.utils.exception.exception_tags import get_bad_trigger_method, get_bad_trigger_function
5+
from je_auto_control.utils.exception.exceptions import CallbackExecutorException
6+
# executor
7+
from je_auto_control.utils.executor.action_executor import execute_action
8+
from je_auto_control.utils.executor.action_executor import execute_files
9+
from je_auto_control.utils.file_process.create_project_structure import create_template_dir
10+
# file process
11+
from je_auto_control.utils.file_process.get_dir_file_list import get_dir_files_as_list
12+
# html report
13+
from je_auto_control.utils.generate_report.generate_html_report import generate_html
14+
from je_auto_control.utils.generate_report.generate_html_report import generate_html_report
15+
from je_auto_control.utils.generate_report.generate_json_report import generate_json
16+
from je_auto_control.utils.generate_report.generate_json_report import generate_json_report
17+
# xml
18+
from je_auto_control.utils.generate_report.generate_xml_report import generate_xml
19+
from je_auto_control.utils.generate_report.generate_xml_report import generate_xml_report
20+
# utils image
21+
from je_auto_control.utils.image.screenshot import pil_screenshot
22+
# json
23+
from je_auto_control.utils.json.json_file import read_action_json
24+
from je_auto_control.utils.json.json_file import write_action_json
25+
# socket server
26+
from je_auto_control.utils.socket_server.auto_control_socket_server import start_autocontrol_socket_server
27+
# test record
28+
from je_auto_control.utils.test_record.record_test_class import test_record_instance
29+
# import image
30+
from je_auto_control.wrapper.auto_control_image import locate_all_image
31+
from je_auto_control.wrapper.auto_control_image import locate_and_click
32+
from je_auto_control.wrapper.auto_control_image import locate_image_center
33+
from je_auto_control.wrapper.auto_control_keyboard import check_key_is_press
34+
from je_auto_control.wrapper.auto_control_keyboard import hotkey
35+
# import keyboard
36+
from je_auto_control.wrapper.auto_control_keyboard import keys_table
37+
from je_auto_control.wrapper.auto_control_keyboard import press_key
38+
from je_auto_control.wrapper.auto_control_keyboard import release_key
39+
from je_auto_control.wrapper.auto_control_keyboard import type_key
40+
from je_auto_control.wrapper.auto_control_keyboard import write
41+
# import mouse
42+
from je_auto_control.wrapper.auto_control_mouse import click_mouse
43+
from je_auto_control.wrapper.auto_control_mouse import mouse_table
44+
from je_auto_control.wrapper.auto_control_mouse import position
45+
from je_auto_control.wrapper.auto_control_mouse import press_mouse
46+
from je_auto_control.wrapper.auto_control_mouse import release_mouse
47+
from je_auto_control.wrapper.auto_control_mouse import scroll
48+
from je_auto_control.wrapper.auto_control_mouse import set_position
49+
from je_auto_control.wrapper.auto_control_mouse import special_table
50+
# test_record
51+
from je_auto_control.wrapper.auto_control_record import record
52+
from je_auto_control.wrapper.auto_control_record import stop_record
53+
from je_auto_control.wrapper.auto_control_screen import screenshot
54+
# import screen
55+
from je_auto_control.wrapper.auto_control_screen import size
56+
57+
58+
class CallbackFunctionExecutor(object):
59+
60+
def __init__(self):
61+
self.event_dict: dict = {
62+
# mouse
63+
"mouse_left": click_mouse,
64+
"mouse_right": click_mouse,
65+
"mouse_middle": click_mouse,
66+
"click_mouse": click_mouse,
67+
"mouse_table": mouse_table,
68+
"position": position,
69+
"press_mouse": press_mouse,
70+
"release_mouse": release_mouse,
71+
"scroll": scroll,
72+
"set_position": set_position,
73+
"special_table": special_table,
74+
# keyboard
75+
"keys_table": keys_table,
76+
"type_key": type_key,
77+
"press_key": press_key,
78+
"release_key": release_key,
79+
"check_key_is_press": check_key_is_press,
80+
"write": write,
81+
"hotkey": hotkey,
82+
# image
83+
"locate_all_image": locate_all_image,
84+
"locate_image_center": locate_image_center,
85+
"locate_and_click": locate_and_click,
86+
# screen
87+
"size": size,
88+
"screenshot": screenshot,
89+
# test record
90+
"set_record_enable": test_record_instance.set_record_enable,
91+
# only generate
92+
"generate_html": generate_html,
93+
"generate_json": generate_json,
94+
"generate_xml": generate_xml,
95+
# generate report
96+
"generate_html_report": generate_html_report,
97+
"generate_json_report": generate_json_report,
98+
"generate_xml_report": generate_xml_report,
99+
# record
100+
"record": record,
101+
"stop_record": stop_record,
102+
"execute_action": execute_action,
103+
"execute_files": execute_files,
104+
"create_template_dir": create_template_dir,
105+
"get_dir_files_as_list": get_dir_files_as_list,
106+
"pil_screenshot": pil_screenshot,
107+
"read_action_json": read_action_json,
108+
"write_action_json": write_action_json,
109+
"start_autocontrol_socket_server": start_autocontrol_socket_server,
110+
111+
}
112+
113+
def callback_function(
114+
self,
115+
trigger_function_name: str,
116+
callback_function: typing.Callable,
117+
callback_function_param: dict,
118+
callback_param_method: str = "kwargs",
119+
**kwargs
120+
):
121+
"""
122+
:param trigger_function_name: what function we want to trigger only accept function in event_dict
123+
:param callback_function: what function we want to callback
124+
:param callback_function_param: callback function's param only accept dict
125+
:param callback_param_method: what type param will use on callback function only accept kwargs and args
126+
:param kwargs: trigger_function's param
127+
:return:
128+
"""
129+
try:
130+
if trigger_function_name not in self.event_dict.keys():
131+
raise CallbackExecutorException(get_bad_trigger_function)
132+
execute_return_value = self.event_dict.get(trigger_function_name)(**kwargs)
133+
if callback_param_method not in ["kwargs", "args"]:
134+
raise CallbackExecutorException(get_bad_trigger_method)
135+
if callback_param_method == "kwargs":
136+
callback_function(**callback_function_param)
137+
else:
138+
callback_function(*callback_function_param.values())
139+
return execute_return_value
140+
except Exception as error:
141+
print(repr(error), file=stderr)
142+
143+
144+
callback_executor = CallbackFunctionExecutor()
145+
146+

je_auto_control/utils/exception/exception_tags.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,6 @@
5656
# XML
5757
cant_read_xml_error: str = "can't read xml"
5858
xml_type_error: str = "xml type error"
59+
# Callback executor
60+
get_bad_trigger_method: str = "get bad trigger method, only accept kwargs and args"
61+
get_bad_trigger_function: str = "get bad trigger function only accept function in event_dict"

je_auto_control/utils/exception/exceptions.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,3 +97,8 @@ class XMLException(AutoControlException):
9797

9898
class XMLTypeException(XMLException):
9999
pass
100+
101+
102+
# Execute callback
103+
class CallbackExecutorException(AutoControlException):
104+
pass

je_auto_control/utils/executor/action_executor.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
from je_auto_control.utils.generate_report.generate_xml_report import generate_xml
2626
from je_auto_control.utils.generate_report.generate_xml_report import generate_xml_report
2727

28+
2829
class Executor(object):
2930

3031
def __init__(self):

dev.toml renamed to pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
66

77
[project]
88
name = "je_auto_control_dev"
9-
version = "0.0.55"
9+
version = "0.0.56"
1010
authors = [
1111
{ name = "JE-Chen", email = "zenmailman@gmail.com" },
1212
]

0 commit comments

Comments
 (0)