PyBreeze-dev 1.0.9__tar.gz → 1.0.11__tar.gz
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.
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/PKG-INFO +1 -1
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend/mail_thunder_extend/mail_thunder_setting.py +2 -2
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend/process_executor/api_testka/api_testka_process.py +2 -2
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend/process_executor/auto_control/auto_control_process.py +2 -2
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend/process_executor/file_automation/file_automation_process.py +2 -2
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend/process_executor/load_density/load_density_process.py +2 -2
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend/process_executor/process_executor_utils.py +1 -1
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend/process_executor/python_task_process_manager.py +202 -177
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend/process_executor/test_pioneer/test_pioneer_process_manager.py +200 -181
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend/process_executor/web_runner/web_runner_process.py +2 -2
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend_multi_language/extend_english.py +3 -1
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend_multi_language/extend_traditional_chinese.py +2 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_command_widget.py +1 -1
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_file_viewer_widget.py +22 -5
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/editor_main/main_ui.py +1 -1
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/code_review/cot_code_review_gui.py +3 -1
- pybreeze_dev-1.0.11/pybreeze/pybreeze_ui/jupyter_lab_gui/jupyer_lab_thread.py +125 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/jupyter_lab_gui/jupyter_lab_widget.py +7 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/utils/file_process/get_dir_file_list.py +1 -1
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/utils/logging/logger.py +2 -4
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze_dev.egg-info/PKG-INFO +1 -1
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pyproject.toml +1 -1
- pybreeze_dev-1.0.9/pybreeze/pybreeze_ui/jupyter_lab_gui/jupyer_lab_thread.py +0 -95
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/LICENSE +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/README.md +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/__main__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend/mail_thunder_extend/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend/process_executor/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend/process_executor/api_testka/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend/process_executor/auto_control/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend/process_executor/file_automation/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend/process_executor/load_density/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend/process_executor/mail_thunder/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend/process_executor/mail_thunder/mail_thunder_process.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend/process_executor/test_pioneer/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend/process_executor/web_runner/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend_multi_language/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/extend_multi_language/update_language_dict.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/connect_gui/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/connect_gui/ssh/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_login_widget.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_main_widget.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/connect_gui/url/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/connect_gui/url/ai_code_review_gui.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/editor_main/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/ai_gui_global_variable.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/code_review/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/code_review/code_review_thread.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/code_smell_detector.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/first_code_review.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/first_summary_prompt.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/global_rule.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge_single_review.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/linter.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/step_by_step_analysis.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/total_summary.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_prompt_editor_widget.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_editor_widget.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/code_explainer.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/code_review.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/skills/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/extend_ai_gui/skills/skills_send_gui.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/jupyter_lab_gui/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/automation_menu/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/automation_menu/api_testka_menu/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/automation_menu/api_testka_menu/build_api_testka_menu.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/automation_menu/auto_control_menu/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/automation_menu/auto_control_menu/build_autocontrol_menu.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/automation_menu/automation_file_menu/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/automation_menu/automation_file_menu/build_automation_file_menu.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/automation_menu/load_density_menu/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/automation_menu/load_density_menu/build_load_density_menu.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/automation_menu/mail_thunder_menu/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/automation_menu/mail_thunder_menu/build_mail_thunder_menu.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/automation_menu/test_pioneer_menu/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/automation_menu/test_pioneer_menu/build_test_pioneer_menu.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/automation_menu/web_runner_menu/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/automation_menu/web_runner_menu/build_webrunner_menu.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/build_menubar.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/extend_jeditor_tab_menu/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/extend_jeditor_tab_menu/jupyter_lab_tab.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/install_menu/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/install_menu/automation_menu/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/install_menu/automation_menu/build_automation_install_menu.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/install_menu/install_utils.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/install_menu/tools_menu/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/install_menu/tools_menu/build_tool_install_menu.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/menu_utils.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/tools/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/menu/tools/tools_menu.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/show_code_window/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/show_code_window/code_window.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/syntax/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/syntax/syntax_extend.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/pybreeze_ui/syntax/syntax_keyword.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/utils/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/utils/exception/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/utils/exception/exception_tags.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/utils/exception/exceptions.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/utils/file_process/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/utils/json_format/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/utils/json_format/json_process.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/utils/logging/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/utils/manager/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/utils/manager/package_manager/__init__.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze/utils/manager/package_manager/package_manager_class.py +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze_dev.egg-info/SOURCES.txt +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze_dev.egg-info/dependency_links.txt +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze_dev.egg-info/requires.txt +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/pybreeze_dev.egg-info/top_level.txt +0 -0
- {pybreeze_dev-1.0.9 → pybreeze_dev-1.0.11}/setup.cfg +0 -0
|
@@ -11,7 +11,7 @@ def send_after_test(html_report_path: str = None) -> None:
|
|
|
11
11
|
mail_thunder_smtp: SMTPWrapper = SMTPWrapper()
|
|
12
12
|
if html_report_path is None and mail_thunder_smtp.login_state is True:
|
|
13
13
|
user: str = mail_thunder_smtp.user
|
|
14
|
-
with open("default_name.html", "r
|
|
14
|
+
with open("default_name.html", "r") as file:
|
|
15
15
|
html_string: str = file.read()
|
|
16
16
|
message = mail_thunder_smtp.create_message_with_attach(
|
|
17
17
|
html_string,
|
|
@@ -21,7 +21,7 @@ def send_after_test(html_report_path: str = None) -> None:
|
|
|
21
21
|
mail_thunder_smtp.quit()
|
|
22
22
|
elif mail_thunder_smtp.login_state is True:
|
|
23
23
|
user: str = mail_thunder_smtp.user
|
|
24
|
-
with open(html_report_path, "r
|
|
24
|
+
with open(html_report_path, "r") as file:
|
|
25
25
|
html_string: str = file.read()
|
|
26
26
|
message: MIMEMultipart = mail_thunder_smtp.create_message_with_attach(
|
|
27
27
|
html_string,
|
|
@@ -36,7 +36,7 @@ def call_api_testka_multi_file(
|
|
|
36
36
|
if need_to_execute_list is not None \
|
|
37
37
|
and isinstance(need_to_execute_list, list) and len(need_to_execute_list) > 0:
|
|
38
38
|
for execute_file in need_to_execute_list:
|
|
39
|
-
with open(execute_file, "r
|
|
39
|
+
with open(execute_file, "r") as test_script_json:
|
|
40
40
|
call_api_testka(
|
|
41
41
|
main_window,
|
|
42
42
|
test_script_json.read(),
|
|
@@ -56,7 +56,7 @@ def call_api_testka_multi_file_and_send(
|
|
|
56
56
|
if need_to_execute_list is not None \
|
|
57
57
|
and isinstance(need_to_execute_list, list) and len(need_to_execute_list) > 0:
|
|
58
58
|
for execute_file in need_to_execute_list:
|
|
59
|
-
with open(execute_file, "r
|
|
59
|
+
with open(execute_file, "r") as test_script_json:
|
|
60
60
|
call_api_testka_with_send(
|
|
61
61
|
main_window,
|
|
62
62
|
test_script_json.read(),
|
|
@@ -35,7 +35,7 @@ def call_auto_control_multi_file(
|
|
|
35
35
|
if need_to_execute_list is not None \
|
|
36
36
|
and isinstance(need_to_execute_list, list) and len(need_to_execute_list) > 0:
|
|
37
37
|
for execute_file in need_to_execute_list:
|
|
38
|
-
with open(execute_file, "r
|
|
38
|
+
with open(execute_file, "r") as test_script_json:
|
|
39
39
|
call_auto_control(
|
|
40
40
|
main_window,
|
|
41
41
|
test_script_json.read(),
|
|
@@ -52,7 +52,7 @@ def call_auto_control_multi_file_and_send(
|
|
|
52
52
|
if need_to_execute_list is not None \
|
|
53
53
|
and isinstance(need_to_execute_list, list) and len(need_to_execute_list) > 0:
|
|
54
54
|
for execute_file in need_to_execute_list:
|
|
55
|
-
with open(execute_file, "r
|
|
55
|
+
with open(execute_file, "r") as test_script_json:
|
|
56
56
|
call_auto_control_with_send(
|
|
57
57
|
main_window,
|
|
58
58
|
test_script_json.read(),
|
|
@@ -36,7 +36,7 @@ def call_file_automation_test_multi_file(
|
|
|
36
36
|
if need_to_execute_list is not None \
|
|
37
37
|
and isinstance(need_to_execute_list, list) and len(need_to_execute_list) > 0:
|
|
38
38
|
for execute_file in need_to_execute_list:
|
|
39
|
-
with open(execute_file, "r
|
|
39
|
+
with open(execute_file, "r") as test_script_json:
|
|
40
40
|
call_file_automation_test(
|
|
41
41
|
main_window,
|
|
42
42
|
test_script_json.read(),
|
|
@@ -56,7 +56,7 @@ def call_file_automation_test_multi_file_and_send(
|
|
|
56
56
|
if need_to_execute_list is not None \
|
|
57
57
|
and isinstance(need_to_execute_list, list) and len(need_to_execute_list) > 0:
|
|
58
58
|
for execute_file in need_to_execute_list:
|
|
59
|
-
with open(execute_file, "r
|
|
59
|
+
with open(execute_file, "r") as test_script_json:
|
|
60
60
|
call_file_automation_test_with_send(
|
|
61
61
|
main_window,
|
|
62
62
|
test_script_json.read(),
|
|
@@ -36,7 +36,7 @@ def call_load_density_multi_file(
|
|
|
36
36
|
if need_to_execute_list is not None and isinstance(need_to_execute_list, list) and len(
|
|
37
37
|
need_to_execute_list) > 0:
|
|
38
38
|
for execute_file in need_to_execute_list:
|
|
39
|
-
with open(execute_file, "r
|
|
39
|
+
with open(execute_file, "r") as test_script_json:
|
|
40
40
|
call_load_density(
|
|
41
41
|
main_window,
|
|
42
42
|
test_script_json.read(),
|
|
@@ -56,7 +56,7 @@ def call_load_density_multi_file_and_send(
|
|
|
56
56
|
if need_to_execute_list is not None and isinstance(need_to_execute_list, list) and len(
|
|
57
57
|
need_to_execute_list) > 0:
|
|
58
58
|
for execute_file in need_to_execute_list:
|
|
59
|
-
with open(execute_file, "r
|
|
59
|
+
with open(execute_file, "r") as test_script_json:
|
|
60
60
|
call_load_density_with_send(
|
|
61
61
|
main_window,
|
|
62
62
|
test_script_json.read(),
|
|
@@ -56,13 +56,13 @@ def start_process(
|
|
|
56
56
|
if send_mail:
|
|
57
57
|
process = TaskProcessManager(
|
|
58
58
|
main_window=code_window,
|
|
59
|
+
task_done_trigger_function=send_after_test,
|
|
59
60
|
program_buffer_size=program_buffer,
|
|
60
61
|
program_encoding=main_window.encoding
|
|
61
62
|
)
|
|
62
63
|
else:
|
|
63
64
|
process = TaskProcessManager(
|
|
64
65
|
code_window,
|
|
65
|
-
task_done_trigger_function=send_after_test,
|
|
66
66
|
program_buffer_size=program_buffer,
|
|
67
67
|
program_encoding=main_window.encoding
|
|
68
68
|
)
|
|
@@ -1,177 +1,202 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
from
|
|
8
|
-
from
|
|
9
|
-
from
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
from PySide6.
|
|
13
|
-
from
|
|
14
|
-
from je_editor.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
self.
|
|
33
|
-
self.
|
|
34
|
-
self.
|
|
35
|
-
self.
|
|
36
|
-
self.
|
|
37
|
-
self.
|
|
38
|
-
self.
|
|
39
|
-
self.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
self.
|
|
43
|
-
self.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
)
|
|
90
|
-
self.
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
self.
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
text_cursor.
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
self.
|
|
142
|
-
if self.
|
|
143
|
-
self.
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
def
|
|
157
|
-
self.run_output_queue
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
1
|
+
import queue
|
|
2
|
+
import subprocess
|
|
3
|
+
import sys
|
|
4
|
+
import threading
|
|
5
|
+
import typing
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
from queue import Queue
|
|
8
|
+
from threading import Thread
|
|
9
|
+
from typing import Union
|
|
10
|
+
|
|
11
|
+
from PySide6.QtCore import QTimer
|
|
12
|
+
from PySide6.QtGui import QTextCharFormat
|
|
13
|
+
from je_editor.pyside_ui.main_ui.save_settings.user_color_setting_file import actually_color_dict
|
|
14
|
+
from je_editor.utils.venv_check.check_venv import check_and_choose_venv
|
|
15
|
+
|
|
16
|
+
from pybreeze.pybreeze_ui.show_code_window.code_window import CodeWindow
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class TaskProcessManager(object):
|
|
20
|
+
def __init__(
|
|
21
|
+
self,
|
|
22
|
+
main_window: CodeWindow,
|
|
23
|
+
task_done_trigger_function: typing.Callable = None,
|
|
24
|
+
error_trigger_function: typing.Callable = None,
|
|
25
|
+
program_buffer_size: int = 1024,
|
|
26
|
+
program_encoding: str = "utf-8"
|
|
27
|
+
):
|
|
28
|
+
super().__init__()
|
|
29
|
+
self.compiler_path = None
|
|
30
|
+
# ite_instance param
|
|
31
|
+
self.read_program_error_output_from_thread: Union[threading.Thread, None] = None
|
|
32
|
+
self.read_program_output_from_thread: Union[threading.Thread, None] = None
|
|
33
|
+
self.main_window: CodeWindow = main_window
|
|
34
|
+
self.timer: QTimer = QTimer(self.main_window)
|
|
35
|
+
self.still_run_program: bool = True
|
|
36
|
+
self.program_encoding: str = program_encoding
|
|
37
|
+
self.run_output_queue: Queue = Queue()
|
|
38
|
+
self.run_error_queue: Queue = Queue()
|
|
39
|
+
self.process: Union[subprocess.Popen, None] = None
|
|
40
|
+
|
|
41
|
+
self.task_done_trigger_function: typing.Callable = task_done_trigger_function
|
|
42
|
+
self.error_trigger_function: typing.Callable = error_trigger_function
|
|
43
|
+
self.program_buffer_size = program_buffer_size
|
|
44
|
+
|
|
45
|
+
def renew_path(self) -> None:
|
|
46
|
+
if self.main_window.python_compiler is None:
|
|
47
|
+
# Renew compiler path
|
|
48
|
+
if sys.platform in ["win32", "cygwin", "msys"]:
|
|
49
|
+
venv_path = Path(str(Path.cwd()) + "/venv/Scripts")
|
|
50
|
+
else:
|
|
51
|
+
venv_path = Path(str(Path.cwd()) + "/venv/bin")
|
|
52
|
+
self.compiler_path = check_and_choose_venv(venv_path)
|
|
53
|
+
else:
|
|
54
|
+
self.compiler_path = self.main_window.python_compiler
|
|
55
|
+
|
|
56
|
+
def start_test_process(self, package: str, exec_str: str):
|
|
57
|
+
self.renew_path()
|
|
58
|
+
if sys.platform in ["win32", "cygwin", "msys"]:
|
|
59
|
+
exec_str = __import__("json").dumps(exec_str)
|
|
60
|
+
args = [
|
|
61
|
+
str(self.compiler_path),
|
|
62
|
+
"-m",
|
|
63
|
+
package,
|
|
64
|
+
"--execute_str",
|
|
65
|
+
exec_str
|
|
66
|
+
]
|
|
67
|
+
self.process = subprocess.Popen(
|
|
68
|
+
args,
|
|
69
|
+
stdin=subprocess.PIPE,
|
|
70
|
+
stdout=subprocess.PIPE,
|
|
71
|
+
stderr=subprocess.PIPE,
|
|
72
|
+
)
|
|
73
|
+
self.still_run_program = True
|
|
74
|
+
# program output message queue thread
|
|
75
|
+
self.read_program_output_from_thread = Thread(
|
|
76
|
+
target=self.read_program_output_from_process,
|
|
77
|
+
daemon=True
|
|
78
|
+
)
|
|
79
|
+
self.read_program_output_from_thread.start()
|
|
80
|
+
# program error message queue thread
|
|
81
|
+
self.read_program_error_output_from_thread = Thread(
|
|
82
|
+
target=self.read_program_error_output_from_process,
|
|
83
|
+
daemon=True
|
|
84
|
+
)
|
|
85
|
+
self.read_program_error_output_from_thread.start()
|
|
86
|
+
# start Pyside update
|
|
87
|
+
# start timer
|
|
88
|
+
self.main_window.setWindowTitle(package)
|
|
89
|
+
self.main_window.show()
|
|
90
|
+
self.timer = QTimer()
|
|
91
|
+
self.timer.setInterval(100)
|
|
92
|
+
self.timer.timeout.connect(self.pull_text)
|
|
93
|
+
self.timer.start()
|
|
94
|
+
|
|
95
|
+
# Pyside UI update method
|
|
96
|
+
def pull_text(self):
|
|
97
|
+
try:
|
|
98
|
+
if not self.run_output_queue.empty():
|
|
99
|
+
output_message = self.run_output_queue.get_nowait()
|
|
100
|
+
output_message = str(output_message).strip()
|
|
101
|
+
if output_message:
|
|
102
|
+
text_cursor = self.main_window.code_result.textCursor()
|
|
103
|
+
text_format = QTextCharFormat()
|
|
104
|
+
text_format.setForeground(actually_color_dict.get("normal_output_color"))
|
|
105
|
+
text_cursor.insertText(output_message, text_format)
|
|
106
|
+
text_cursor.insertBlock()
|
|
107
|
+
if not self.run_error_queue.empty():
|
|
108
|
+
error_message = self.run_error_queue.get_nowait()
|
|
109
|
+
error_message = str(error_message).strip()
|
|
110
|
+
if error_message:
|
|
111
|
+
text_cursor = self.main_window.code_result.textCursor()
|
|
112
|
+
text_format = QTextCharFormat()
|
|
113
|
+
text_format.setForeground(actually_color_dict.get("error_output_color"))
|
|
114
|
+
text_cursor.insertText(error_message, text_format)
|
|
115
|
+
text_cursor.insertBlock()
|
|
116
|
+
except queue.Empty:
|
|
117
|
+
pass
|
|
118
|
+
if self.process is not None:
|
|
119
|
+
if self.process.returncode == 0:
|
|
120
|
+
if self.timer.isActive():
|
|
121
|
+
self.timer.stop()
|
|
122
|
+
self.exit_program()
|
|
123
|
+
elif self.process.returncode is not None:
|
|
124
|
+
if self.timer.isActive():
|
|
125
|
+
self.timer.stop()
|
|
126
|
+
self.exit_program()
|
|
127
|
+
if self.still_run_program:
|
|
128
|
+
# poll return code
|
|
129
|
+
self.process.poll()
|
|
130
|
+
else:
|
|
131
|
+
if self.timer.isActive():
|
|
132
|
+
self.timer.stop()
|
|
133
|
+
|
|
134
|
+
# exit program change run flag to false and clean read thread and queue and process
|
|
135
|
+
def exit_program(self):
|
|
136
|
+
self.still_run_program = False
|
|
137
|
+
if self.read_program_output_from_thread is not None:
|
|
138
|
+
self.read_program_output_from_thread = None
|
|
139
|
+
if self.read_program_error_output_from_thread is not None:
|
|
140
|
+
self.read_program_error_output_from_thread = None
|
|
141
|
+
self.drain_and_display_queue()
|
|
142
|
+
if self.process is not None:
|
|
143
|
+
self.process.terminate()
|
|
144
|
+
text_cursor = self.main_window.code_result.textCursor()
|
|
145
|
+
text_format = QTextCharFormat()
|
|
146
|
+
text_format.setForeground(actually_color_dict.get("normal_output_color"))
|
|
147
|
+
text_cursor.insertText(f"Task exit with code {self.process.returncode}", text_format)
|
|
148
|
+
text_cursor.insertBlock()
|
|
149
|
+
self.process = None
|
|
150
|
+
if self.task_done_trigger_function is not None:
|
|
151
|
+
try:
|
|
152
|
+
self.task_done_trigger_function()
|
|
153
|
+
except Exception as e:
|
|
154
|
+
print(repr(e), file=sys.stderr)
|
|
155
|
+
|
|
156
|
+
def drain_and_display_queue(self):
|
|
157
|
+
while not self.run_output_queue.empty():
|
|
158
|
+
try:
|
|
159
|
+
output_message = self.run_output_queue.get_nowait()
|
|
160
|
+
output_message = str(output_message).strip()
|
|
161
|
+
if output_message:
|
|
162
|
+
text_cursor = self.main_window.code_result.textCursor()
|
|
163
|
+
text_format = QTextCharFormat()
|
|
164
|
+
text_format.setForeground(actually_color_dict.get("normal_output_color"))
|
|
165
|
+
text_cursor.insertText(output_message, text_format)
|
|
166
|
+
text_cursor.insertBlock()
|
|
167
|
+
except queue.Empty:
|
|
168
|
+
break
|
|
169
|
+
while not self.run_error_queue.empty():
|
|
170
|
+
try:
|
|
171
|
+
error_message = self.run_error_queue.get_nowait()
|
|
172
|
+
error_message = str(error_message).strip()
|
|
173
|
+
if error_message:
|
|
174
|
+
text_cursor = self.main_window.code_result.textCursor()
|
|
175
|
+
text_format = QTextCharFormat()
|
|
176
|
+
text_format.setForeground(actually_color_dict.get("error_output_color"))
|
|
177
|
+
text_cursor.insertText(error_message, text_format)
|
|
178
|
+
text_cursor.insertBlock()
|
|
179
|
+
except queue.Empty:
|
|
180
|
+
break
|
|
181
|
+
|
|
182
|
+
def read_program_output_from_process(self):
|
|
183
|
+
while self.still_run_program:
|
|
184
|
+
proc = self.process
|
|
185
|
+
if proc is None:
|
|
186
|
+
break
|
|
187
|
+
program_output_data = proc.stdout.readline(self.program_buffer_size)
|
|
188
|
+
if isinstance(program_output_data, bytes):
|
|
189
|
+
program_output_data = program_output_data.decode(self.program_encoding, "replace")
|
|
190
|
+
if program_output_data.strip():
|
|
191
|
+
self.run_output_queue.put(program_output_data)
|
|
192
|
+
|
|
193
|
+
def read_program_error_output_from_process(self):
|
|
194
|
+
while self.still_run_program:
|
|
195
|
+
proc = self.process
|
|
196
|
+
if proc is None:
|
|
197
|
+
break
|
|
198
|
+
program_error_output_data = proc.stderr.readline(self.program_buffer_size)
|
|
199
|
+
if isinstance(program_error_output_data, bytes):
|
|
200
|
+
program_error_output_data = program_error_output_data.decode(self.program_encoding, "replace")
|
|
201
|
+
if program_error_output_data.strip():
|
|
202
|
+
self.run_error_queue.put(program_error_output_data)
|