From cfe6d9751d8312bfdf7774478d365e4a1caa0438 Mon Sep 17 00:00:00 2001 From: JE-Chen Date: Fri, 13 Mar 2026 19:14:21 +0800 Subject: [PATCH 1/4] Update README.md --- README.md | 75 ++++++++++++++++++++++++++----------------------------- 1 file changed, 35 insertions(+), 40 deletions(-) diff --git a/README.md b/README.md index 1dcacd4..d80a753 100644 --- a/README.md +++ b/README.md @@ -1,41 +1,36 @@ -# Automation-IDE -An integrated test automation IDE developed with Python and PySide6 (Qt). - -## Components -- Editor - - https://github.com/Integration-Automation/JEDITOR -- GUI Testing - - https://github.com/Integration-Automation/AutoControlGUI -- API Testing - - https://github.com/Integration-Automation/APITestka -- Web Testing - - https://github.com/Integration-Automation/WebRunner -- Load Testing - - https://github.com/Integration-Automation/LoadDensity -- File - - https://github.com/Integration-Automation/FileAutomation -- OpenCV - - https://github.com/Integration-Automation/je_opencv_wrapper -- Mail - - https://github.com/Integration-Automation/MailThunder - -## Supported features: -- Python syntax highlighting -- Auto reformatter -- Code execution -- Test scripts -- Shell commands -- Embedded browser -- Jupyter integration -- Git client -- Code diff viewer, etc. - -## Testing modules include: -- GUI testing -- API testing -- Load testing -- Web testing - -## Installation -> pip install automation_editor +# PyBreeze: The Automation-First IDE +--- + +## Core Capabilities: Four-Dimensional Automation +PyBreeze features built-in modules tailored for every level of modern automation, allowing developers to tackle complex scenarios without leaving the IDE: + +* **Web Automation**: Deep integration with browser drivers and element locators for rapid web-based interaction simulation and testing. +* **API Automation**: Built-in request builders and response analyzers supporting RESTful API development with advanced assertion verification. +* **GUI Automation**: Specialized support for image recognition and coordinate-based positioning for seamless desktop application automation. +* **Load & Stress Testing**: An integrated performance engine capable of simulating high-concurrency scenarios to monitor system stability under extreme pressure. + +--- + +## IDE Deep Dive: Optimized for Automation Workflows +PyBreeze is more than just a code editor; it is a command center for your automation lifecycle: + +* **Intelligent Completion**: Provides deep syntax hinting and code navigation specifically for popular automation libraries (e.g., Selenium, Requests, PyAutoGUI), significantly boosting script authoring speed. +* **Visual Debugging Suite**: Features breakpoint debugging and real-time variable monitoring, enhanced by "Step-by-Step" execution and "Screenshot Traceback" for faster troubleshooting. +* **Integrated Asset Manager**: Centralized management for Object Repositories (element locators), test data (CSV/JSON), and environment configurations, enabling clean separation of code and data. +* **Real-Time Analytics Dashboard**: Synchronous reporting during script execution, visualizing logs, screenshots, and performance curves in an intuitive interface. + +--- + +## Key Highlights +1. **Native Python Ecosystem**: Built 100% on Python, allowing developers to seamlessly leverage the vast library of third-party packages. +2. **Zero-Config Environment**: Features built-in virtual environment management and automatic driver updates, solving the common frustration of complex environment setups. +3. **Automation-First UI**: Unlike generic IDEs, the layout is specifically designed around the "Develop-Execute-Report" cycle. + +--- + +## Target Audience +* **Python Developers**: Those who want a lightweight, dedicated environment to build Python-based automation scripts without the overhead of heavy, general-purpose IDEs. +* **SDET (Software Development Engineers in Test)**: Professionals needing to maintain Web, API, and Performance tests simultaneously. +* **Automation Beginners**: Users looking for a friendly IDE that lowers the barrier to entry for Python automation. +* **DevOps Teams**: A powerful platform for rapidly building and debugging integration test suites within CI/CD pipelines. \ No newline at end of file From 5da77859f09a965301f75473a2054692ed6b86fa Mon Sep 17 00:00:00 2001 From: JE-Chen Date: Fri, 13 Mar 2026 19:20:22 +0800 Subject: [PATCH 2/4] Update README.md Update README.md --- README.md | 2 ++ images/main_gui.png | Bin 0 -> 56081 bytes 2 files changed, 2 insertions(+) create mode 100644 images/main_gui.png diff --git a/README.md b/README.md index d80a753..4ea1928 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # PyBreeze: The Automation-First IDE +![Main GUI](images/main_gui.png) + --- ## Core Capabilities: Four-Dimensional Automation diff --git a/images/main_gui.png b/images/main_gui.png new file mode 100644 index 0000000000000000000000000000000000000000..eecff5c886222221540a29186f4e4c7b5db4c401 GIT binary patch literal 56081 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 bdBAJQ4(Hybd_5ATFMjvip*!oh$DaK=oo|yi literal 0 HcmV?d00001 From 35b7e8a36e4e8b9fa6288018c1de7acb579d9970 Mon Sep 17 00:00:00 2001 From: JE-Chen Date: Sun, 15 Mar 2026 00:18:02 +0800 Subject: [PATCH 3/4] Rename project & folders Rename project & folders --- automation_ide/__init__.py | 7 ---- .../extend_ai_gui/ai_gui_global_variable.py | 40 ------------------- .../update_language_dict.py | 8 ---- stable.toml => dev.toml | 11 ++--- exe/start_automation_editor.py | 2 +- pybreeze/__init__.py | 7 ++++ {automation_ide => pybreeze}/__main__.py | 0 .../extend}/__init__.py | 0 .../extend/mail_thunder_extend}/__init__.py | 0 .../mail_thunder_setting.py | 4 +- .../extend/process_executor}/__init__.py | 0 .../process_executor/api_testka}/__init__.py | 0 .../api_testka/api_testka_process.py | 6 +-- .../auto_control}/__init__.py | 0 .../auto_control/auto_control_process.py | 6 +-- .../file_automation}/__init__.py | 0 .../file_automation_process.py | 6 +-- .../load_density}/__init__.py | 0 .../load_density/load_density_process.py | 6 +-- .../mail_thunder}/__init__.py | 0 .../mail_thunder/mail_thunder_process.py | 4 +- .../process_executor_utils.py | 12 +++--- .../python_task_process_manager.py | 2 +- .../test_pioneer}/__init__.py | 0 .../test_pioneer_process_manager.py | 4 +- .../process_executor/web_runner}/__init__.py | 0 .../web_runner/web_runner_process.py | 6 +-- .../pybreeze_ui}/__init__.py | 0 .../pybreeze_ui/connect_gui}/__init__.py | 0 .../pybreeze_ui/connect_gui/ssh}/__init__.py | 0 .../connect_gui/ssh/ssh_command_widget.py | 2 +- .../connect_gui/ssh/ssh_file_viewer_widget.py | 2 +- .../connect_gui/ssh/ssh_login_widget.py | 0 .../connect_gui/ssh/ssh_main_widget.py | 6 +-- .../pybreeze_ui/connect_gui/url}/__init__.py | 0 .../connect_gui/url/ai_code_review_gui.py | 0 .../pybreeze_ui/editor_main}/__init__.py | 0 .../pybreeze_ui}/editor_main/main_ui.py | 10 ++--- .../pybreeze_ui/extend_ai_gui}/__init__.py | 0 .../extend_ai_gui/ai_gui_global_variable.py | 40 +++++++++++++++++++ .../extend_ai_gui/code_review}/__init__.py | 0 .../code_review/code_review_thread.py | 4 +- .../code_review/cot_code_review_gui.py | 4 +- .../prompt_edit_gui}/__init__.py | 0 .../__init__.py | 0 .../code_smell_detector.py | 0 .../first_code_review.py | 0 .../first_summary_prompt.py | 0 .../global_rule.py | 0 .../cot_code_review_prompt_templates/judge.py | 0 .../judge_single_review.py | 0 .../linter.py | 0 .../step_by_step_analysis.py | 0 .../total_summary.py | 0 .../cot_prompt_editor_widget.py | 2 +- .../skills_prompt_editor_widget.py | 2 +- .../skills_prompt_templates}/__init__.py | 0 .../skills_prompt_templates/code_explainer.py | 0 .../skills_prompt_templates/code_review.py | 0 .../extend_ai_gui/skills}/__init__.py | 0 .../extend_ai_gui/skills/skills_send_gui.py | 2 +- .../extend_multi_language}/__init__.py | 0 .../extend_multi_language/extend_english.py | 0 .../extend_traditional_chinese.py | 0 .../update_language_dict.py | 8 ++++ .../pybreeze_ui/menu}/__init__.py | 0 .../menu/automation_menu}/__init__.py | 0 .../api_testka_menu}/__init__.py | 0 .../api_testka_menu/build_api_testka_menu.py | 6 +-- .../auto_control_menu}/__init__.py | 0 .../build_autocontrol_menu.py | 6 +-- .../automation_file_menu}/__init__.py | 0 .../build_automation_file_menu.py | 6 +-- .../load_density_menu}/__init__.py | 0 .../build_load_density_menu.py | 6 +-- .../mail_thunder_menu}/__init__.py | 0 .../build_mail_thunder_menu.py | 6 +-- .../test_pioneer_menu}/__init__.py | 0 .../build_test_pioneer_menu.py | 4 +- .../web_runner_menu}/__init__.py | 0 .../web_runner_menu/build_webrunner_menu.py | 6 +-- .../pybreeze_ui}/menu/build_menubar.py | 22 +++++----- .../menu/install_menu}/__init__.py | 0 .../install_menu/automation_menu}/__init__.py | 0 .../build_automation_install_menu.py | 4 +- .../menu/install_menu/install_utils.py | 2 +- .../menu/install_menu/tools_menu}/__init__.py | 0 .../tools_menu/build_tool_install_menu.py | 4 +- .../pybreeze_ui}/menu/menu_utils.py | 2 +- .../pybreeze_ui/menu/tools}/__init__.py | 0 .../pybreeze_ui}/menu/tools/tools_menu.py | 12 +++--- .../pybreeze_ui/show_code_window}/__init__.py | 0 .../show_code_window/code_window.py | 0 .../pybreeze_ui/syntax}/__init__.py | 0 .../pybreeze_ui}/syntax/syntax_extend.py | 6 +-- .../pybreeze_ui}/syntax/syntax_keyword.py | 0 .../utils/__init__.py | 0 .../utils/exception/__init__.py | 0 .../utils/exception/exception_tags.py | 0 .../utils/exception/exceptions.py | 0 .../utils/file_process/__init__.py | 0 .../utils/file_process/get_dir_file_list.py | 0 .../utils/json_format/__init__.py | 0 .../utils/json_format/json_process.py | 6 +-- .../utils/logging/__init__.py | 0 .../utils/logging/logger.py | 0 .../utils/manager/__init__.py | 0 .../utils/manager/package_manager/__init__.py | 0 .../package_manager/package_manager_class.py | 0 pyproject.toml | 11 +++-- .../extend_automation_test.py | 2 +- .../start_automation/start_automation_test.py | 2 +- 112 files changed, 163 insertions(+), 163 deletions(-) delete mode 100644 automation_ide/__init__.py delete mode 100644 automation_ide/automation_editor_ui/extend_ai_gui/ai_gui_global_variable.py delete mode 100644 automation_ide/automation_editor_ui/extend_multi_language/update_language_dict.py rename stable.toml => dev.toml (87%) create mode 100644 pybreeze/__init__.py rename {automation_ide => pybreeze}/__main__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/extend}/__init__.py (100%) rename {automation_ide/automation_editor_ui/connect_gui => pybreeze/extend/mail_thunder_extend}/__init__.py (100%) rename {automation_ide => pybreeze}/extend/mail_thunder_extend/mail_thunder_setting.py (90%) rename {automation_ide/automation_editor_ui/connect_gui/ssh => pybreeze/extend/process_executor}/__init__.py (100%) rename {automation_ide/automation_editor_ui/connect_gui/url => pybreeze/extend/process_executor/api_testka}/__init__.py (100%) rename {automation_ide => pybreeze}/extend/process_executor/api_testka/api_testka_process.py (88%) rename {automation_ide/automation_editor_ui/editor_main => pybreeze/extend/process_executor/auto_control}/__init__.py (100%) rename {automation_ide => pybreeze}/extend/process_executor/auto_control/auto_control_process.py (87%) rename {automation_ide/automation_editor_ui/extend_ai_gui => pybreeze/extend/process_executor/file_automation}/__init__.py (100%) rename {automation_ide => pybreeze}/extend/process_executor/file_automation/file_automation_process.py (88%) rename {automation_ide/automation_editor_ui/extend_ai_gui/code_review => pybreeze/extend/process_executor/load_density}/__init__.py (100%) rename {automation_ide => pybreeze}/extend/process_executor/load_density/load_density_process.py (88%) rename {automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui => pybreeze/extend/process_executor/mail_thunder}/__init__.py (100%) rename {automation_ide => pybreeze}/extend/process_executor/mail_thunder/mail_thunder_process.py (64%) rename {automation_ide => pybreeze}/extend/process_executor/process_executor_utils.py (77%) rename {automation_ide => pybreeze}/extend/process_executor/python_task_process_manager.py (98%) rename {automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates => pybreeze/extend/process_executor/test_pioneer}/__init__.py (100%) rename {automation_ide => pybreeze}/extend/process_executor/test_pioneer/test_pioneer_process_manager.py (97%) rename {automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates => pybreeze/extend/process_executor/web_runner}/__init__.py (100%) rename {automation_ide => pybreeze}/extend/process_executor/web_runner/web_runner_process.py (88%) rename {automation_ide/automation_editor_ui/extend_ai_gui/skills => pybreeze/pybreeze_ui}/__init__.py (100%) rename {automation_ide/automation_editor_ui/extend_multi_language => pybreeze/pybreeze_ui/connect_gui}/__init__.py (100%) rename {automation_ide/automation_editor_ui/menu => pybreeze/pybreeze_ui/connect_gui/ssh}/__init__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/connect_gui/ssh/ssh_command_widget.py (99%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/connect_gui/ssh/ssh_file_viewer_widget.py (99%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/connect_gui/ssh/ssh_login_widget.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/connect_gui/ssh/ssh_main_widget.py (84%) rename {automation_ide/automation_editor_ui/menu/automation_menu => pybreeze/pybreeze_ui/connect_gui/url}/__init__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/connect_gui/url/ai_code_review_gui.py (100%) rename {automation_ide/automation_editor_ui/menu/automation_menu/api_testka_menu => pybreeze/pybreeze_ui/editor_main}/__init__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/editor_main/main_ui.py (88%) rename {automation_ide/automation_editor_ui/menu/automation_menu/auto_control_menu => pybreeze/pybreeze_ui/extend_ai_gui}/__init__.py (100%) create mode 100644 pybreeze/pybreeze_ui/extend_ai_gui/ai_gui_global_variable.py rename {automation_ide/automation_editor_ui/menu/automation_menu/automation_file_menu => pybreeze/pybreeze_ui/extend_ai_gui/code_review}/__init__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/extend_ai_gui/code_review/code_review_thread.py (93%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/extend_ai_gui/code_review/cot_code_review_gui.py (93%) rename {automation_ide/automation_editor_ui/menu/automation_menu/load_density_menu => pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui}/__init__.py (100%) rename {automation_ide/automation_editor_ui/menu/automation_menu/mail_thunder_menu => pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates}/__init__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/code_smell_detector.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/first_code_review.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/first_summary_prompt.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/global_rule.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge_single_review.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/linter.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/step_by_step_analysis.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/total_summary.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/extend_ai_gui/prompt_edit_gui/cot_prompt_editor_widget.py (98%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/extend_ai_gui/prompt_edit_gui/skills_prompt_editor_widget.py (97%) rename {automation_ide/automation_editor_ui/menu/automation_menu/test_pioneer_menu => pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates}/__init__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/code_explainer.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/code_review.py (100%) rename {automation_ide/automation_editor_ui/menu/automation_menu/web_runner_menu => pybreeze/pybreeze_ui/extend_ai_gui/skills}/__init__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/extend_ai_gui/skills/skills_send_gui.py (97%) rename {automation_ide/automation_editor_ui/menu/install_menu => pybreeze/pybreeze_ui/extend_multi_language}/__init__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/extend_multi_language/extend_english.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/extend_multi_language/extend_traditional_chinese.py (100%) create mode 100644 pybreeze/pybreeze_ui/extend_multi_language/update_language_dict.py rename {automation_ide/automation_editor_ui/menu/install_menu/automation_menu => pybreeze/pybreeze_ui/menu}/__init__.py (100%) rename {automation_ide/automation_editor_ui/menu/install_menu/tools_menu => pybreeze/pybreeze_ui/menu/automation_menu}/__init__.py (100%) rename {automation_ide/automation_editor_ui/menu/tools => pybreeze/pybreeze_ui/menu/automation_menu/api_testka_menu}/__init__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/menu/automation_menu/api_testka_menu/build_api_testka_menu.py (95%) rename {automation_ide/automation_editor_ui/show_code_window => pybreeze/pybreeze_ui/menu/automation_menu/auto_control_menu}/__init__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/menu/automation_menu/auto_control_menu/build_autocontrol_menu.py (96%) rename {automation_ide/automation_editor_ui/syntax => pybreeze/pybreeze_ui/menu/automation_menu/automation_file_menu}/__init__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/menu/automation_menu/automation_file_menu/build_automation_file_menu.py (94%) rename {automation_ide/extend => pybreeze/pybreeze_ui/menu/automation_menu/load_density_menu}/__init__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/menu/automation_menu/load_density_menu/build_load_density_menu.py (95%) rename {automation_ide/extend/mail_thunder_extend => pybreeze/pybreeze_ui/menu/automation_menu/mail_thunder_menu}/__init__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/menu/automation_menu/mail_thunder_menu/build_mail_thunder_menu.py (92%) rename {automation_ide/extend/process_executor => pybreeze/pybreeze_ui/menu/automation_menu/test_pioneer_menu}/__init__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/menu/automation_menu/test_pioneer_menu/build_test_pioneer_menu.py (92%) rename {automation_ide/extend/process_executor/api_testka => pybreeze/pybreeze_ui/menu/automation_menu/web_runner_menu}/__init__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/menu/automation_menu/web_runner_menu/build_webrunner_menu.py (94%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/menu/build_menubar.py (50%) rename {automation_ide/extend/process_executor/auto_control => pybreeze/pybreeze_ui/menu/install_menu}/__init__.py (100%) rename {automation_ide/extend/process_executor/file_automation => pybreeze/pybreeze_ui/menu/install_menu/automation_menu}/__init__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/menu/install_menu/automation_menu/build_automation_install_menu.py (95%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/menu/install_menu/install_utils.py (89%) rename {automation_ide/extend/process_executor/load_density => pybreeze/pybreeze_ui/menu/install_menu/tools_menu}/__init__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/menu/install_menu/tools_menu/build_tool_install_menu.py (84%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/menu/menu_utils.py (82%) rename {automation_ide/extend/process_executor/mail_thunder => pybreeze/pybreeze_ui/menu/tools}/__init__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/menu/tools/tools_menu.py (92%) rename {automation_ide/extend/process_executor/test_pioneer => pybreeze/pybreeze_ui/show_code_window}/__init__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/show_code_window/code_window.py (100%) rename {automation_ide/extend/process_executor/web_runner => pybreeze/pybreeze_ui/syntax}/__init__.py (100%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/syntax/syntax_extend.py (81%) rename {automation_ide/automation_editor_ui => pybreeze/pybreeze_ui}/syntax/syntax_keyword.py (100%) rename {automation_ide => pybreeze}/utils/__init__.py (100%) rename {automation_ide => pybreeze}/utils/exception/__init__.py (100%) rename {automation_ide => pybreeze}/utils/exception/exception_tags.py (100%) rename {automation_ide => pybreeze}/utils/exception/exceptions.py (100%) rename {automation_ide => pybreeze}/utils/file_process/__init__.py (100%) rename {automation_ide => pybreeze}/utils/file_process/get_dir_file_list.py (100%) rename {automation_ide => pybreeze}/utils/json_format/__init__.py (100%) rename {automation_ide => pybreeze}/utils/json_format/json_process.py (75%) rename {automation_ide => pybreeze}/utils/logging/__init__.py (100%) rename {automation_ide => pybreeze}/utils/logging/logger.py (100%) rename {automation_ide => pybreeze}/utils/manager/__init__.py (100%) rename {automation_ide => pybreeze}/utils/manager/package_manager/__init__.py (100%) rename {automation_ide => pybreeze}/utils/manager/package_manager/package_manager_class.py (100%) diff --git a/automation_ide/__init__.py b/automation_ide/__init__.py deleted file mode 100644 index 6d845ce..0000000 --- a/automation_ide/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor -from automation_ide.automation_editor_ui.editor_main.main_ui import EDITOR_EXTEND_TAB -from automation_ide.automation_editor_ui.editor_main.main_ui import start_editor - -__all__ = [ - "start_editor", "AutomationEditor", "EDITOR_EXTEND_TAB" -] diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/ai_gui_global_variable.py b/automation_ide/automation_editor_ui/extend_ai_gui/ai_gui_global_variable.py deleted file mode 100644 index 158817e..0000000 --- a/automation_ide/automation_editor_ui/extend_ai_gui/ai_gui_global_variable.py +++ /dev/null @@ -1,40 +0,0 @@ -from automation_ide.automation_editor_ui.extend_ai_gui.prompt_edit_gui.cot_code_review_prompt_templates.code_smell_detector import \ - CODE_SMELL_DETECTOR_TEMPLATE -from automation_ide.automation_editor_ui.extend_ai_gui.prompt_edit_gui.cot_code_review_prompt_templates.first_code_review import \ - FIRST_CODE_REVIEW_TEMPLATE -from automation_ide.automation_editor_ui.extend_ai_gui.prompt_edit_gui.cot_code_review_prompt_templates.first_summary_prompt import \ - FIRST_SUMMARY_TEMPLATE -from automation_ide.automation_editor_ui.extend_ai_gui.prompt_edit_gui.cot_code_review_prompt_templates.linter import \ - LINTER_TEMPLATE -from automation_ide.automation_editor_ui.extend_ai_gui.prompt_edit_gui.cot_code_review_prompt_templates.total_summary import \ - TOTAL_SUMMARY_TEMPLATE -from automation_ide.automation_editor_ui.extend_ai_gui.prompt_edit_gui.skills_prompt_templates.code_explainer import \ - CODE_EXPLAINER_TEMPLATE -from automation_ide.automation_editor_ui.extend_ai_gui.prompt_edit_gui.skills_prompt_templates.code_review import \ - CODE_REVIEW_SKILL_TEMPLATE - -COT_TEMPLATE_FILES = [ - "first_summary_prompt.md", - "first_code_review.md", - "linter.md", - "code_smell_detector.md", - "total_summary.md", -] - -COT_TEMPLATE_RELATION = { - "first_summary_prompt.md": FIRST_SUMMARY_TEMPLATE, - "first_code_review.md": FIRST_CODE_REVIEW_TEMPLATE, - "linter.md": LINTER_TEMPLATE, - "code_smell_detector.md": CODE_SMELL_DETECTOR_TEMPLATE, - "total_summary.md": TOTAL_SUMMARY_TEMPLATE, -} - -SKILLS_TEMPLATE_FILES = [ - "code_review_skill.md", - "code_explainer_skill.md", -] - -SKILLS_TEMPLATE_RELATION = { - "code_review_skill.md": CODE_REVIEW_SKILL_TEMPLATE, - "code_explainer_skill.md": CODE_EXPLAINER_TEMPLATE -} diff --git a/automation_ide/automation_editor_ui/extend_multi_language/update_language_dict.py b/automation_ide/automation_editor_ui/extend_multi_language/update_language_dict.py deleted file mode 100644 index 6ccf732..0000000 --- a/automation_ide/automation_editor_ui/extend_multi_language/update_language_dict.py +++ /dev/null @@ -1,8 +0,0 @@ -from automation_ide.automation_editor_ui.extend_multi_language.extend_english import update_english_word_dict -from automation_ide.automation_editor_ui.extend_multi_language.extend_traditional_chinese import \ - update_traditional_chinese_word_dict - - -def update_language_dict(): - update_traditional_chinese_word_dict() - update_english_word_dict() diff --git a/stable.toml b/dev.toml similarity index 87% rename from stable.toml rename to dev.toml index f38781a..a46a08e 100644 --- a/stable.toml +++ b/dev.toml @@ -1,12 +1,12 @@ -# Rename to build stable version -# This is stable version +# Rename to dev version +# This is dev version [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] -name = "PyBreeze" -version = "1.0.4" +name = "pybreeze_dev" +version = "1.0.5" authors = [ { name = "JE-Chen", email = "jechenmailman@gmail.com" }, ] @@ -14,7 +14,7 @@ description = "AutomationEditor for multi automation" requires-python = ">=3.10" license-files = ["LICENSE"] dependencies = [ - "je-editor", "je_auto_control", "je_web_runner", + "je_editor_dev", "je_auto_control", "je_web_runner", "je_load_density", "je_api_testka", "je-mail-thunder", "automation-file", "PySide6==6.10.2", "test_pioneer", "paramiko" ] @@ -35,5 +35,6 @@ Code = "https://github.com/Intergration-Automation-Testing/AutomationEditor" file = "README.md" content-type = "text/markdown" + [tool.setuptools.packages] find = { namespaces = false } diff --git a/exe/start_automation_editor.py b/exe/start_automation_editor.py index 801c962..a465590 100644 --- a/exe/start_automation_editor.py +++ b/exe/start_automation_editor.py @@ -1,3 +1,3 @@ -from automation_ide import start_editor +from pybreeze import start_editor start_editor() diff --git a/pybreeze/__init__.py b/pybreeze/__init__.py new file mode 100644 index 0000000..f86eb83 --- /dev/null +++ b/pybreeze/__init__.py @@ -0,0 +1,7 @@ +from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor +from pybreeze.pybreeze_ui.editor_main.main_ui import EDITOR_EXTEND_TAB +from pybreeze.pybreeze_ui.editor_main.main_ui import start_editor + +__all__ = [ + "start_editor", "AutomationEditor", "EDITOR_EXTEND_TAB" +] diff --git a/automation_ide/__main__.py b/pybreeze/__main__.py similarity index 100% rename from automation_ide/__main__.py rename to pybreeze/__main__.py diff --git a/automation_ide/automation_editor_ui/__init__.py b/pybreeze/extend/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/__init__.py rename to pybreeze/extend/__init__.py diff --git a/automation_ide/automation_editor_ui/connect_gui/__init__.py b/pybreeze/extend/mail_thunder_extend/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/connect_gui/__init__.py rename to pybreeze/extend/mail_thunder_extend/__init__.py diff --git a/automation_ide/extend/mail_thunder_extend/mail_thunder_setting.py b/pybreeze/extend/mail_thunder_extend/mail_thunder_setting.py similarity index 90% rename from automation_ide/extend/mail_thunder_extend/mail_thunder_setting.py rename to pybreeze/extend/mail_thunder_extend/mail_thunder_setting.py index 970003a..f5f643a 100644 --- a/automation_ide/extend/mail_thunder_extend/mail_thunder_setting.py +++ b/pybreeze/extend/mail_thunder_extend/mail_thunder_setting.py @@ -1,8 +1,8 @@ import sys from email.mime.multipart import MIMEMultipart -from automation_ide.utils.exception.exception_tags import send_html_exception_tag -from automation_ide.utils.exception.exceptions import ITESendHtmlReportException +from pybreeze.utils.exception.exception_tags import send_html_exception_tag +from pybreeze.utils.exception.exceptions import ITESendHtmlReportException def send_after_test(html_report_path: str = None) -> None: diff --git a/automation_ide/automation_editor_ui/connect_gui/ssh/__init__.py b/pybreeze/extend/process_executor/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/connect_gui/ssh/__init__.py rename to pybreeze/extend/process_executor/__init__.py diff --git a/automation_ide/automation_editor_ui/connect_gui/url/__init__.py b/pybreeze/extend/process_executor/api_testka/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/connect_gui/url/__init__.py rename to pybreeze/extend/process_executor/api_testka/__init__.py diff --git a/automation_ide/extend/process_executor/api_testka/api_testka_process.py b/pybreeze/extend/process_executor/api_testka/api_testka_process.py similarity index 88% rename from automation_ide/extend/process_executor/api_testka/api_testka_process.py rename to pybreeze/extend/process_executor/api_testka/api_testka_process.py index bbee5c0..fc2710c 100644 --- a/automation_ide/extend/process_executor/api_testka/api_testka_process.py +++ b/pybreeze/extend/process_executor/api_testka/api_testka_process.py @@ -2,13 +2,13 @@ from typing import TYPE_CHECKING, Union -from automation_ide.extend.process_executor.process_executor_utils import build_process +from pybreeze.extend.process_executor.process_executor_utils import build_process if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor import sys -from automation_ide.utils.file_process.get_dir_file_list import ask_and_get_dir_files_as_list +from pybreeze.utils.file_process.get_dir_file_list import ask_and_get_dir_files_as_list def call_api_testka( diff --git a/automation_ide/automation_editor_ui/editor_main/__init__.py b/pybreeze/extend/process_executor/auto_control/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/editor_main/__init__.py rename to pybreeze/extend/process_executor/auto_control/__init__.py diff --git a/automation_ide/extend/process_executor/auto_control/auto_control_process.py b/pybreeze/extend/process_executor/auto_control/auto_control_process.py similarity index 87% rename from automation_ide/extend/process_executor/auto_control/auto_control_process.py rename to pybreeze/extend/process_executor/auto_control/auto_control_process.py index 115c6a2..257df5a 100644 --- a/automation_ide/extend/process_executor/auto_control/auto_control_process.py +++ b/pybreeze/extend/process_executor/auto_control/auto_control_process.py @@ -2,13 +2,13 @@ from typing import TYPE_CHECKING, Union -from automation_ide.extend.process_executor.process_executor_utils import build_process +from pybreeze.extend.process_executor.process_executor_utils import build_process if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor import sys -from automation_ide.utils.file_process.get_dir_file_list import ask_and_get_dir_files_as_list +from pybreeze.utils.file_process.get_dir_file_list import ask_and_get_dir_files_as_list def call_auto_control( diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/__init__.py b/pybreeze/extend/process_executor/file_automation/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_ai_gui/__init__.py rename to pybreeze/extend/process_executor/file_automation/__init__.py diff --git a/automation_ide/extend/process_executor/file_automation/file_automation_process.py b/pybreeze/extend/process_executor/file_automation/file_automation_process.py similarity index 88% rename from automation_ide/extend/process_executor/file_automation/file_automation_process.py rename to pybreeze/extend/process_executor/file_automation/file_automation_process.py index cb47efc..1a4be92 100644 --- a/automation_ide/extend/process_executor/file_automation/file_automation_process.py +++ b/pybreeze/extend/process_executor/file_automation/file_automation_process.py @@ -2,13 +2,13 @@ from typing import TYPE_CHECKING, Union -from automation_ide.extend.process_executor.process_executor_utils import build_process +from pybreeze.extend.process_executor.process_executor_utils import build_process if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor import sys -from automation_ide.utils.file_process.get_dir_file_list import ask_and_get_dir_files_as_list +from pybreeze.utils.file_process.get_dir_file_list import ask_and_get_dir_files_as_list def call_file_automation_test( diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/code_review/__init__.py b/pybreeze/extend/process_executor/load_density/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_ai_gui/code_review/__init__.py rename to pybreeze/extend/process_executor/load_density/__init__.py diff --git a/automation_ide/extend/process_executor/load_density/load_density_process.py b/pybreeze/extend/process_executor/load_density/load_density_process.py similarity index 88% rename from automation_ide/extend/process_executor/load_density/load_density_process.py rename to pybreeze/extend/process_executor/load_density/load_density_process.py index 91c05c4..553241b 100644 --- a/automation_ide/extend/process_executor/load_density/load_density_process.py +++ b/pybreeze/extend/process_executor/load_density/load_density_process.py @@ -2,13 +2,13 @@ from typing import TYPE_CHECKING, Union -from automation_ide.extend.process_executor.process_executor_utils import build_process +from pybreeze.extend.process_executor.process_executor_utils import build_process if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor import sys -from automation_ide.utils.file_process.get_dir_file_list import ask_and_get_dir_files_as_list +from pybreeze.utils.file_process.get_dir_file_list import ask_and_get_dir_files_as_list def call_load_density( diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/__init__.py b/pybreeze/extend/process_executor/mail_thunder/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/__init__.py rename to pybreeze/extend/process_executor/mail_thunder/__init__.py diff --git a/automation_ide/extend/process_executor/mail_thunder/mail_thunder_process.py b/pybreeze/extend/process_executor/mail_thunder/mail_thunder_process.py similarity index 64% rename from automation_ide/extend/process_executor/mail_thunder/mail_thunder_process.py rename to pybreeze/extend/process_executor/mail_thunder/mail_thunder_process.py index e566777..dfcd561 100644 --- a/automation_ide/extend/process_executor/mail_thunder/mail_thunder_process.py +++ b/pybreeze/extend/process_executor/mail_thunder/mail_thunder_process.py @@ -2,10 +2,10 @@ from typing import TYPE_CHECKING, Union -from automation_ide.extend.process_executor.process_executor_utils import build_process +from pybreeze.extend.process_executor.process_executor_utils import build_process if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor def call_mail_thunder( diff --git a/automation_ide/extend/process_executor/process_executor_utils.py b/pybreeze/extend/process_executor/process_executor_utils.py similarity index 77% rename from automation_ide/extend/process_executor/process_executor_utils.py rename to pybreeze/extend/process_executor/process_executor_utils.py index 45a15a0..62c9300 100644 --- a/automation_ide/extend/process_executor/process_executor_utils.py +++ b/pybreeze/extend/process_executor/process_executor_utils.py @@ -6,14 +6,14 @@ from je_editor import EditorWidget -from automation_ide.automation_editor_ui.show_code_window.code_window import CodeWindow -from automation_ide.extend.mail_thunder_extend.mail_thunder_setting import send_after_test -from automation_ide.extend.process_executor.python_task_process_manager import TaskProcessManager -from automation_ide.utils.exception.exception_tags import wrong_test_data_format_exception_tag -from automation_ide.utils.exception.exceptions import ITETestExecutorException +from pybreeze.pybreeze_ui.show_code_window.code_window import CodeWindow +from pybreeze.extend.mail_thunder_extend.mail_thunder_setting import send_after_test +from pybreeze.extend.process_executor.python_task_process_manager import TaskProcessManager +from pybreeze.utils.exception.exception_tags import wrong_test_data_format_exception_tag +from pybreeze.utils.exception.exceptions import ITETestExecutorException if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor def build_process( diff --git a/automation_ide/extend/process_executor/python_task_process_manager.py b/pybreeze/extend/process_executor/python_task_process_manager.py similarity index 98% rename from automation_ide/extend/process_executor/python_task_process_manager.py rename to pybreeze/extend/process_executor/python_task_process_manager.py index d8e4e62..7450a1d 100644 --- a/automation_ide/extend/process_executor/python_task_process_manager.py +++ b/pybreeze/extend/process_executor/python_task_process_manager.py @@ -14,7 +14,7 @@ from je_editor.pyside_ui.main_ui.save_settings.user_color_setting_file import actually_color_dict from je_editor.utils.venv_check.check_venv import check_and_choose_venv -from automation_ide.automation_editor_ui.show_code_window.code_window import CodeWindow +from pybreeze.pybreeze_ui.show_code_window.code_window import CodeWindow class TaskProcessManager(object): diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/__init__.py b/pybreeze/extend/process_executor/test_pioneer/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/__init__.py rename to pybreeze/extend/process_executor/test_pioneer/__init__.py diff --git a/automation_ide/extend/process_executor/test_pioneer/test_pioneer_process_manager.py b/pybreeze/extend/process_executor/test_pioneer/test_pioneer_process_manager.py similarity index 97% rename from automation_ide/extend/process_executor/test_pioneer/test_pioneer_process_manager.py rename to pybreeze/extend/process_executor/test_pioneer/test_pioneer_process_manager.py index 94bc637..e843c8a 100644 --- a/automation_ide/extend/process_executor/test_pioneer/test_pioneer_process_manager.py +++ b/pybreeze/extend/process_executor/test_pioneer/test_pioneer_process_manager.py @@ -14,10 +14,10 @@ from je_editor.pyside_ui.main_ui.save_settings.user_color_setting_file import actually_color_dict from je_editor.utils.venv_check.check_venv import check_and_choose_venv -from automation_ide.automation_editor_ui.show_code_window.code_window import CodeWindow +from pybreeze.pybreeze_ui.show_code_window.code_window import CodeWindow if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor class TestPioneerProcess(object): diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/__init__.py b/pybreeze/extend/process_executor/web_runner/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/__init__.py rename to pybreeze/extend/process_executor/web_runner/__init__.py diff --git a/automation_ide/extend/process_executor/web_runner/web_runner_process.py b/pybreeze/extend/process_executor/web_runner/web_runner_process.py similarity index 88% rename from automation_ide/extend/process_executor/web_runner/web_runner_process.py rename to pybreeze/extend/process_executor/web_runner/web_runner_process.py index 6778119..4a24d68 100644 --- a/automation_ide/extend/process_executor/web_runner/web_runner_process.py +++ b/pybreeze/extend/process_executor/web_runner/web_runner_process.py @@ -2,13 +2,13 @@ from typing import TYPE_CHECKING, Union -from automation_ide.extend.process_executor.process_executor_utils import build_process +from pybreeze.extend.process_executor.process_executor_utils import build_process if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor import sys -from automation_ide.utils.file_process.get_dir_file_list import ask_and_get_dir_files_as_list +from pybreeze.utils.file_process.get_dir_file_list import ask_and_get_dir_files_as_list def call_web_runner_test( diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/skills/__init__.py b/pybreeze/pybreeze_ui/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_ai_gui/skills/__init__.py rename to pybreeze/pybreeze_ui/__init__.py diff --git a/automation_ide/automation_editor_ui/extend_multi_language/__init__.py b/pybreeze/pybreeze_ui/connect_gui/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_multi_language/__init__.py rename to pybreeze/pybreeze_ui/connect_gui/__init__.py diff --git a/automation_ide/automation_editor_ui/menu/__init__.py b/pybreeze/pybreeze_ui/connect_gui/ssh/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/menu/__init__.py rename to pybreeze/pybreeze_ui/connect_gui/ssh/__init__.py diff --git a/automation_ide/automation_editor_ui/connect_gui/ssh/ssh_command_widget.py b/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_command_widget.py similarity index 99% rename from automation_ide/automation_editor_ui/connect_gui/ssh/ssh_command_widget.py rename to pybreeze/pybreeze_ui/connect_gui/ssh/ssh_command_widget.py index 5cc1698..1db7639 100644 --- a/automation_ide/automation_editor_ui/connect_gui/ssh/ssh_command_widget.py +++ b/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_command_widget.py @@ -10,7 +10,7 @@ ) from je_editor import language_wrapper -from automation_ide.automation_editor_ui.connect_gui.ssh.ssh_login_widget import LoginWidget +from pybreeze.pybreeze_ui.connect_gui.ssh.ssh_login_widget import LoginWidget ANSI_ESCAPE_PATTERN = re.compile(r'\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])') diff --git a/automation_ide/automation_editor_ui/connect_gui/ssh/ssh_file_viewer_widget.py b/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_file_viewer_widget.py similarity index 99% rename from automation_ide/automation_editor_ui/connect_gui/ssh/ssh_file_viewer_widget.py rename to pybreeze/pybreeze_ui/connect_gui/ssh/ssh_file_viewer_widget.py index 59f64c3..33d2139 100644 --- a/automation_ide/automation_editor_ui/connect_gui/ssh/ssh_file_viewer_widget.py +++ b/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_file_viewer_widget.py @@ -10,7 +10,7 @@ ) from je_editor import language_wrapper -from automation_ide.automation_editor_ui.connect_gui.ssh.ssh_login_widget import LoginWidget +from pybreeze.pybreeze_ui.connect_gui.ssh.ssh_login_widget import LoginWidget class SFTPClientWrapper: diff --git a/automation_ide/automation_editor_ui/connect_gui/ssh/ssh_login_widget.py b/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_login_widget.py similarity index 100% rename from automation_ide/automation_editor_ui/connect_gui/ssh/ssh_login_widget.py rename to pybreeze/pybreeze_ui/connect_gui/ssh/ssh_login_widget.py diff --git a/automation_ide/automation_editor_ui/connect_gui/ssh/ssh_main_widget.py b/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_main_widget.py similarity index 84% rename from automation_ide/automation_editor_ui/connect_gui/ssh/ssh_main_widget.py rename to pybreeze/pybreeze_ui/connect_gui/ssh/ssh_main_widget.py index 2f44190..f7a2e13 100644 --- a/automation_ide/automation_editor_ui/connect_gui/ssh/ssh_main_widget.py +++ b/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_main_widget.py @@ -3,9 +3,9 @@ from PySide6.QtCore import Qt from PySide6.QtWidgets import QWidget, QVBoxLayout, QSplitter, QApplication, QSizePolicy -from automation_ide.automation_editor_ui.connect_gui.ssh.ssh_command_widget import SSHCommandWidget -from automation_ide.automation_editor_ui.connect_gui.ssh.ssh_file_viewer_widget import SSHFileTreeManager -from automation_ide.automation_editor_ui.connect_gui.ssh.ssh_login_widget import LoginWidget +from pybreeze.pybreeze_ui.connect_gui.ssh.ssh_command_widget import SSHCommandWidget +from pybreeze.pybreeze_ui.connect_gui.ssh.ssh_file_viewer_widget import SSHFileTreeManager +from pybreeze.pybreeze_ui.connect_gui.ssh.ssh_login_widget import LoginWidget class SSHMainWidget(QWidget): diff --git a/automation_ide/automation_editor_ui/menu/automation_menu/__init__.py b/pybreeze/pybreeze_ui/connect_gui/url/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/menu/automation_menu/__init__.py rename to pybreeze/pybreeze_ui/connect_gui/url/__init__.py diff --git a/automation_ide/automation_editor_ui/connect_gui/url/ai_code_review_gui.py b/pybreeze/pybreeze_ui/connect_gui/url/ai_code_review_gui.py similarity index 100% rename from automation_ide/automation_editor_ui/connect_gui/url/ai_code_review_gui.py rename to pybreeze/pybreeze_ui/connect_gui/url/ai_code_review_gui.py diff --git a/automation_ide/automation_editor_ui/menu/automation_menu/api_testka_menu/__init__.py b/pybreeze/pybreeze_ui/editor_main/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/menu/automation_menu/api_testka_menu/__init__.py rename to pybreeze/pybreeze_ui/editor_main/__init__.py diff --git a/automation_ide/automation_editor_ui/editor_main/main_ui.py b/pybreeze/pybreeze_ui/editor_main/main_ui.py similarity index 88% rename from automation_ide/automation_editor_ui/editor_main/main_ui.py rename to pybreeze/pybreeze_ui/editor_main/main_ui.py index 6dcf610..7cfdc54 100644 --- a/automation_ide/automation_editor_ui/editor_main/main_ui.py +++ b/pybreeze/pybreeze_ui/editor_main/main_ui.py @@ -4,7 +4,7 @@ from pathlib import Path from typing import List, Dict, Type -from automation_ide.utils.logging.logger import automation_ide_logger +from pybreeze.utils.logging.logger import automation_ide_logger environ["LOCUST_SKIP_MONKEY_PATCH"] = "1" @@ -14,9 +14,9 @@ from je_editor import EditorMain, language_wrapper from qt_material import apply_stylesheet -from automation_ide.automation_editor_ui.extend_multi_language.update_language_dict import update_language_dict -from automation_ide.automation_editor_ui.menu.build_menubar import add_menu_to_menubar -from automation_ide.automation_editor_ui.syntax.syntax_extend import \ +from pybreeze.pybreeze_ui.extend_multi_language.update_language_dict import update_language_dict +from pybreeze.pybreeze_ui.menu.build_menubar import add_menu_to_menubar +from pybreeze.pybreeze_ui.syntax.syntax_extend import \ syntax_extend_package @@ -53,7 +53,7 @@ def __init__(self, debug_mode: bool = False, show_system_tray_ray: bool = False, # Icon if not extend: - self.icon_path = Path(os.getcwd() + "/automation_ide.ico") + self.icon_path = Path(os.getcwd() + "/pybreeze.ico") self.icon = QIcon(str(self.icon_path)) if not self.icon.isNull(): self.setWindowIcon(self.icon) diff --git a/automation_ide/automation_editor_ui/menu/automation_menu/auto_control_menu/__init__.py b/pybreeze/pybreeze_ui/extend_ai_gui/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/menu/automation_menu/auto_control_menu/__init__.py rename to pybreeze/pybreeze_ui/extend_ai_gui/__init__.py diff --git a/pybreeze/pybreeze_ui/extend_ai_gui/ai_gui_global_variable.py b/pybreeze/pybreeze_ui/extend_ai_gui/ai_gui_global_variable.py new file mode 100644 index 0000000..d91be02 --- /dev/null +++ b/pybreeze/pybreeze_ui/extend_ai_gui/ai_gui_global_variable.py @@ -0,0 +1,40 @@ +from pybreeze.pybreeze_ui.extend_ai_gui.prompt_edit_gui.cot_code_review_prompt_templates.code_smell_detector import \ + CODE_SMELL_DETECTOR_TEMPLATE +from pybreeze.pybreeze_ui.extend_ai_gui.prompt_edit_gui.cot_code_review_prompt_templates.first_code_review import \ + FIRST_CODE_REVIEW_TEMPLATE +from pybreeze.pybreeze_ui.extend_ai_gui.prompt_edit_gui.cot_code_review_prompt_templates.first_summary_prompt import \ + FIRST_SUMMARY_TEMPLATE +from pybreeze.pybreeze_ui.extend_ai_gui.prompt_edit_gui.cot_code_review_prompt_templates.linter import \ + LINTER_TEMPLATE +from pybreeze.pybreeze_ui.extend_ai_gui.prompt_edit_gui.cot_code_review_prompt_templates.total_summary import \ + TOTAL_SUMMARY_TEMPLATE +from pybreeze.pybreeze_ui.extend_ai_gui.prompt_edit_gui.skills_prompt_templates.code_explainer import \ + CODE_EXPLAINER_TEMPLATE +from pybreeze.pybreeze_ui.extend_ai_gui.prompt_edit_gui.skills_prompt_templates.code_review import \ + CODE_REVIEW_SKILL_TEMPLATE + +COT_TEMPLATE_FILES = [ + "first_summary_prompt.md", + "first_code_review.md", + "linter.md", + "code_smell_detector.md", + "total_summary.md", +] + +COT_TEMPLATE_RELATION = { + "first_summary_prompt.md": FIRST_SUMMARY_TEMPLATE, + "first_code_review.md": FIRST_CODE_REVIEW_TEMPLATE, + "linter.md": LINTER_TEMPLATE, + "code_smell_detector.md": CODE_SMELL_DETECTOR_TEMPLATE, + "total_summary.md": TOTAL_SUMMARY_TEMPLATE, +} + +SKILLS_TEMPLATE_FILES = [ + "code_review_skill.md", + "code_explainer_skill.md", +] + +SKILLS_TEMPLATE_RELATION = { + "code_review_skill.md": CODE_REVIEW_SKILL_TEMPLATE, + "code_explainer_skill.md": CODE_EXPLAINER_TEMPLATE +} diff --git a/automation_ide/automation_editor_ui/menu/automation_menu/automation_file_menu/__init__.py b/pybreeze/pybreeze_ui/extend_ai_gui/code_review/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/menu/automation_menu/automation_file_menu/__init__.py rename to pybreeze/pybreeze_ui/extend_ai_gui/code_review/__init__.py diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/code_review/code_review_thread.py b/pybreeze/pybreeze_ui/extend_ai_gui/code_review/code_review_thread.py similarity index 93% rename from automation_ide/automation_editor_ui/extend_ai_gui/code_review/code_review_thread.py rename to pybreeze/pybreeze_ui/extend_ai_gui/code_review/code_review_thread.py index 62b07af..5008399 100644 --- a/automation_ide/automation_editor_ui/extend_ai_gui/code_review/code_review_thread.py +++ b/pybreeze/pybreeze_ui/extend_ai_gui/code_review/code_review_thread.py @@ -3,8 +3,8 @@ from PySide6.QtCore import QThread, Signal from je_editor import language_wrapper -from automation_ide.automation_editor_ui.extend_ai_gui.ai_gui_global_variable import COT_TEMPLATE_RELATION -from automation_ide.automation_editor_ui.extend_ai_gui.prompt_edit_gui.cot_code_review_prompt_templates.global_rule import \ +from pybreeze.pybreeze_ui.extend_ai_gui.ai_gui_global_variable import COT_TEMPLATE_RELATION +from pybreeze.pybreeze_ui.extend_ai_gui.prompt_edit_gui.cot_code_review_prompt_templates.global_rule import \ build_global_rule_template diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/code_review/cot_code_review_gui.py b/pybreeze/pybreeze_ui/extend_ai_gui/code_review/cot_code_review_gui.py similarity index 93% rename from automation_ide/automation_editor_ui/extend_ai_gui/code_review/cot_code_review_gui.py rename to pybreeze/pybreeze_ui/extend_ai_gui/code_review/cot_code_review_gui.py index 947e5ea..70e4659 100644 --- a/automation_ide/automation_editor_ui/extend_ai_gui/code_review/cot_code_review_gui.py +++ b/pybreeze/pybreeze_ui/extend_ai_gui/code_review/cot_code_review_gui.py @@ -2,8 +2,8 @@ QMessageBox from je_editor import language_wrapper -from automation_ide.automation_editor_ui.extend_ai_gui.ai_gui_global_variable import COT_TEMPLATE_FILES -from automation_ide.automation_editor_ui.extend_ai_gui.code_review.code_review_thread import SenderThread +from pybreeze.pybreeze_ui.extend_ai_gui.ai_gui_global_variable import COT_TEMPLATE_FILES +from pybreeze.pybreeze_ui.extend_ai_gui.code_review.code_review_thread import SenderThread class CoTCodeReviewGUI(QWidget): diff --git a/automation_ide/automation_editor_ui/menu/automation_menu/load_density_menu/__init__.py b/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/menu/automation_menu/load_density_menu/__init__.py rename to pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/__init__.py diff --git a/automation_ide/automation_editor_ui/menu/automation_menu/mail_thunder_menu/__init__.py b/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/menu/automation_menu/mail_thunder_menu/__init__.py rename to pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/__init__.py diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/code_smell_detector.py b/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/code_smell_detector.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/code_smell_detector.py rename to pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/code_smell_detector.py diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/first_code_review.py b/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/first_code_review.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/first_code_review.py rename to pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/first_code_review.py diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/first_summary_prompt.py b/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/first_summary_prompt.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/first_summary_prompt.py rename to pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/first_summary_prompt.py diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/global_rule.py b/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/global_rule.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/global_rule.py rename to pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/global_rule.py diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge.py b/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge.py rename to pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge.py diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge_single_review.py b/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge_single_review.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge_single_review.py rename to pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge_single_review.py diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/linter.py b/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/linter.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/linter.py rename to pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/linter.py diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/step_by_step_analysis.py b/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/step_by_step_analysis.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/step_by_step_analysis.py rename to pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/step_by_step_analysis.py diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/total_summary.py b/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/total_summary.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/total_summary.py rename to pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/total_summary.py diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_prompt_editor_widget.py b/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_prompt_editor_widget.py similarity index 98% rename from automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_prompt_editor_widget.py rename to pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_prompt_editor_widget.py index d4a41c3..00f0c6c 100644 --- a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_prompt_editor_widget.py +++ b/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_prompt_editor_widget.py @@ -7,7 +7,7 @@ ) from je_editor import language_wrapper -from automation_ide.automation_editor_ui.extend_ai_gui.ai_gui_global_variable import COT_TEMPLATE_FILES, \ +from pybreeze.pybreeze_ui.extend_ai_gui.ai_gui_global_variable import COT_TEMPLATE_FILES, \ COT_TEMPLATE_RELATION diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_editor_widget.py b/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_editor_widget.py similarity index 97% rename from automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_editor_widget.py rename to pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_editor_widget.py index 30d5de4..eaa0eb4 100644 --- a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_editor_widget.py +++ b/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_editor_widget.py @@ -7,7 +7,7 @@ ) from je_editor import language_wrapper -from automation_ide.automation_editor_ui.extend_ai_gui.ai_gui_global_variable import SKILLS_TEMPLATE_FILES, \ +from pybreeze.pybreeze_ui.extend_ai_gui.ai_gui_global_variable import SKILLS_TEMPLATE_FILES, \ SKILLS_TEMPLATE_RELATION diff --git a/automation_ide/automation_editor_ui/menu/automation_menu/test_pioneer_menu/__init__.py b/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/menu/automation_menu/test_pioneer_menu/__init__.py rename to pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/__init__.py diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/code_explainer.py b/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/code_explainer.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/code_explainer.py rename to pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/code_explainer.py diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/code_review.py b/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/code_review.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/code_review.py rename to pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/code_review.py diff --git a/automation_ide/automation_editor_ui/menu/automation_menu/web_runner_menu/__init__.py b/pybreeze/pybreeze_ui/extend_ai_gui/skills/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/menu/automation_menu/web_runner_menu/__init__.py rename to pybreeze/pybreeze_ui/extend_ai_gui/skills/__init__.py diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/skills/skills_send_gui.py b/pybreeze/pybreeze_ui/extend_ai_gui/skills/skills_send_gui.py similarity index 97% rename from automation_ide/automation_editor_ui/extend_ai_gui/skills/skills_send_gui.py rename to pybreeze/pybreeze_ui/extend_ai_gui/skills/skills_send_gui.py index 0a2e618..047f503 100644 --- a/automation_ide/automation_editor_ui/extend_ai_gui/skills/skills_send_gui.py +++ b/pybreeze/pybreeze_ui/extend_ai_gui/skills/skills_send_gui.py @@ -7,7 +7,7 @@ from PySide6.QtCore import QThread, Signal from je_editor import language_wrapper -from automation_ide.automation_editor_ui.extend_ai_gui.ai_gui_global_variable import SKILLS_TEMPLATE_FILES +from pybreeze.pybreeze_ui.extend_ai_gui.ai_gui_global_variable import SKILLS_TEMPLATE_FILES class RequestThread(QThread): diff --git a/automation_ide/automation_editor_ui/menu/install_menu/__init__.py b/pybreeze/pybreeze_ui/extend_multi_language/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/menu/install_menu/__init__.py rename to pybreeze/pybreeze_ui/extend_multi_language/__init__.py diff --git a/automation_ide/automation_editor_ui/extend_multi_language/extend_english.py b/pybreeze/pybreeze_ui/extend_multi_language/extend_english.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_multi_language/extend_english.py rename to pybreeze/pybreeze_ui/extend_multi_language/extend_english.py diff --git a/automation_ide/automation_editor_ui/extend_multi_language/extend_traditional_chinese.py b/pybreeze/pybreeze_ui/extend_multi_language/extend_traditional_chinese.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_multi_language/extend_traditional_chinese.py rename to pybreeze/pybreeze_ui/extend_multi_language/extend_traditional_chinese.py diff --git a/pybreeze/pybreeze_ui/extend_multi_language/update_language_dict.py b/pybreeze/pybreeze_ui/extend_multi_language/update_language_dict.py new file mode 100644 index 0000000..bfb9aec --- /dev/null +++ b/pybreeze/pybreeze_ui/extend_multi_language/update_language_dict.py @@ -0,0 +1,8 @@ +from pybreeze.pybreeze_ui.extend_multi_language.extend_english import update_english_word_dict +from pybreeze.pybreeze_ui.extend_multi_language.extend_traditional_chinese import \ + update_traditional_chinese_word_dict + + +def update_language_dict(): + update_traditional_chinese_word_dict() + update_english_word_dict() diff --git a/automation_ide/automation_editor_ui/menu/install_menu/automation_menu/__init__.py b/pybreeze/pybreeze_ui/menu/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/menu/install_menu/automation_menu/__init__.py rename to pybreeze/pybreeze_ui/menu/__init__.py diff --git a/automation_ide/automation_editor_ui/menu/install_menu/tools_menu/__init__.py b/pybreeze/pybreeze_ui/menu/automation_menu/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/menu/install_menu/tools_menu/__init__.py rename to pybreeze/pybreeze_ui/menu/automation_menu/__init__.py diff --git a/automation_ide/automation_editor_ui/menu/tools/__init__.py b/pybreeze/pybreeze_ui/menu/automation_menu/api_testka_menu/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/menu/tools/__init__.py rename to pybreeze/pybreeze_ui/menu/automation_menu/api_testka_menu/__init__.py diff --git a/automation_ide/automation_editor_ui/menu/automation_menu/api_testka_menu/build_api_testka_menu.py b/pybreeze/pybreeze_ui/menu/automation_menu/api_testka_menu/build_api_testka_menu.py similarity index 95% rename from automation_ide/automation_editor_ui/menu/automation_menu/api_testka_menu/build_api_testka_menu.py rename to pybreeze/pybreeze_ui/menu/automation_menu/api_testka_menu/build_api_testka_menu.py index c614c69..fd63d7b 100644 --- a/automation_ide/automation_editor_ui/menu/automation_menu/api_testka_menu/build_api_testka_menu.py +++ b/pybreeze/pybreeze_ui/menu/automation_menu/api_testka_menu/build_api_testka_menu.py @@ -5,15 +5,15 @@ from je_api_testka.gui.main_widget import APITestkaWidget from je_editor import language_wrapper -from automation_ide.automation_editor_ui.menu.menu_utils import open_web_browser +from pybreeze.pybreeze_ui.menu.menu_utils import open_web_browser if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor import sys from PySide6.QtGui import QAction -from automation_ide.extend.process_executor.api_testka.api_testka_process import call_api_testka, \ +from pybreeze.extend.process_executor.api_testka.api_testka_process import call_api_testka, \ call_api_testka_with_send, call_api_testka_multi_file, call_api_testka_multi_file_and_send diff --git a/automation_ide/automation_editor_ui/show_code_window/__init__.py b/pybreeze/pybreeze_ui/menu/automation_menu/auto_control_menu/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/show_code_window/__init__.py rename to pybreeze/pybreeze_ui/menu/automation_menu/auto_control_menu/__init__.py diff --git a/automation_ide/automation_editor_ui/menu/automation_menu/auto_control_menu/build_autocontrol_menu.py b/pybreeze/pybreeze_ui/menu/automation_menu/auto_control_menu/build_autocontrol_menu.py similarity index 96% rename from automation_ide/automation_editor_ui/menu/automation_menu/auto_control_menu/build_autocontrol_menu.py rename to pybreeze/pybreeze_ui/menu/automation_menu/auto_control_menu/build_autocontrol_menu.py index 32a9fd4..0f7a7f5 100644 --- a/automation_ide/automation_editor_ui/menu/automation_menu/auto_control_menu/build_autocontrol_menu.py +++ b/pybreeze/pybreeze_ui/menu/automation_menu/auto_control_menu/build_autocontrol_menu.py @@ -6,16 +6,16 @@ from je_editor import EditorWidget, language_wrapper from je_editor.pyside_ui.main_ui.save_settings.user_color_setting_file import actually_color_dict -from automation_ide.automation_editor_ui.menu.menu_utils import open_web_browser +from pybreeze.pybreeze_ui.menu.menu_utils import open_web_browser if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor import sys import je_auto_control from PySide6.QtGui import QAction, QTextCharFormat -from automation_ide.extend.process_executor.auto_control.auto_control_process import \ +from pybreeze.extend.process_executor.auto_control.auto_control_process import \ call_auto_control, call_auto_control_with_send, call_auto_control_multi_file, \ call_auto_control_multi_file_and_send diff --git a/automation_ide/automation_editor_ui/syntax/__init__.py b/pybreeze/pybreeze_ui/menu/automation_menu/automation_file_menu/__init__.py similarity index 100% rename from automation_ide/automation_editor_ui/syntax/__init__.py rename to pybreeze/pybreeze_ui/menu/automation_menu/automation_file_menu/__init__.py diff --git a/automation_ide/automation_editor_ui/menu/automation_menu/automation_file_menu/build_automation_file_menu.py b/pybreeze/pybreeze_ui/menu/automation_menu/automation_file_menu/build_automation_file_menu.py similarity index 94% rename from automation_ide/automation_editor_ui/menu/automation_menu/automation_file_menu/build_automation_file_menu.py rename to pybreeze/pybreeze_ui/menu/automation_menu/automation_file_menu/build_automation_file_menu.py index 4ea65e8..26fbfb5 100644 --- a/automation_ide/automation_editor_ui/menu/automation_menu/automation_file_menu/build_automation_file_menu.py +++ b/pybreeze/pybreeze_ui/menu/automation_menu/automation_file_menu/build_automation_file_menu.py @@ -4,15 +4,15 @@ from je_editor import language_wrapper -from automation_ide.automation_editor_ui.menu.menu_utils import open_web_browser +from pybreeze.pybreeze_ui.menu.menu_utils import open_web_browser if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor import sys from PySide6.QtGui import QAction -from automation_ide.extend.process_executor.file_automation.file_automation_process import call_file_automation_test, \ +from pybreeze.extend.process_executor.file_automation.file_automation_process import call_file_automation_test, \ call_file_automation_test_with_send, call_file_automation_test_multi_file, \ call_file_automation_test_multi_file_and_send diff --git a/automation_ide/extend/__init__.py b/pybreeze/pybreeze_ui/menu/automation_menu/load_density_menu/__init__.py similarity index 100% rename from automation_ide/extend/__init__.py rename to pybreeze/pybreeze_ui/menu/automation_menu/load_density_menu/__init__.py diff --git a/automation_ide/automation_editor_ui/menu/automation_menu/load_density_menu/build_load_density_menu.py b/pybreeze/pybreeze_ui/menu/automation_menu/load_density_menu/build_load_density_menu.py similarity index 95% rename from automation_ide/automation_editor_ui/menu/automation_menu/load_density_menu/build_load_density_menu.py rename to pybreeze/pybreeze_ui/menu/automation_menu/load_density_menu/build_load_density_menu.py index 4ed1483..afb0421 100644 --- a/automation_ide/automation_editor_ui/menu/automation_menu/load_density_menu/build_load_density_menu.py +++ b/pybreeze/pybreeze_ui/menu/automation_menu/load_density_menu/build_load_density_menu.py @@ -5,15 +5,15 @@ from je_editor import language_wrapper from je_load_density.gui.main_widget import LoadDensityWidget -from automation_ide.automation_editor_ui.menu.menu_utils import open_web_browser +from pybreeze.pybreeze_ui.menu.menu_utils import open_web_browser if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor import sys from PySide6.QtGui import QAction -from automation_ide.extend.process_executor.load_density.load_density_process import \ +from pybreeze.extend.process_executor.load_density.load_density_process import \ call_load_density, call_load_density_with_send, call_load_density_multi_file, \ call_load_density_multi_file_and_send diff --git a/automation_ide/extend/mail_thunder_extend/__init__.py b/pybreeze/pybreeze_ui/menu/automation_menu/mail_thunder_menu/__init__.py similarity index 100% rename from automation_ide/extend/mail_thunder_extend/__init__.py rename to pybreeze/pybreeze_ui/menu/automation_menu/mail_thunder_menu/__init__.py diff --git a/automation_ide/automation_editor_ui/menu/automation_menu/mail_thunder_menu/build_mail_thunder_menu.py b/pybreeze/pybreeze_ui/menu/automation_menu/mail_thunder_menu/build_mail_thunder_menu.py similarity index 92% rename from automation_ide/automation_editor_ui/menu/automation_menu/mail_thunder_menu/build_mail_thunder_menu.py rename to pybreeze/pybreeze_ui/menu/automation_menu/mail_thunder_menu/build_mail_thunder_menu.py index 1a1a570..cb30cbe 100644 --- a/automation_ide/automation_editor_ui/menu/automation_menu/mail_thunder_menu/build_mail_thunder_menu.py +++ b/pybreeze/pybreeze_ui/menu/automation_menu/mail_thunder_menu/build_mail_thunder_menu.py @@ -4,15 +4,15 @@ from je_editor import language_wrapper -from automation_ide.automation_editor_ui.menu.menu_utils import open_web_browser +from pybreeze.pybreeze_ui.menu.menu_utils import open_web_browser if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor import sys from PySide6.QtGui import QAction -from automation_ide.extend.process_executor.mail_thunder.mail_thunder_process import call_mail_thunder +from pybreeze.extend.process_executor.mail_thunder.mail_thunder_process import call_mail_thunder def set_mail_thunder_menu(ui_we_want_to_set: AutomationEditor): diff --git a/automation_ide/extend/process_executor/__init__.py b/pybreeze/pybreeze_ui/menu/automation_menu/test_pioneer_menu/__init__.py similarity index 100% rename from automation_ide/extend/process_executor/__init__.py rename to pybreeze/pybreeze_ui/menu/automation_menu/test_pioneer_menu/__init__.py diff --git a/automation_ide/automation_editor_ui/menu/automation_menu/test_pioneer_menu/build_test_pioneer_menu.py b/pybreeze/pybreeze_ui/menu/automation_menu/test_pioneer_menu/build_test_pioneer_menu.py similarity index 92% rename from automation_ide/automation_editor_ui/menu/automation_menu/test_pioneer_menu/build_test_pioneer_menu.py rename to pybreeze/pybreeze_ui/menu/automation_menu/test_pioneer_menu/build_test_pioneer_menu.py index 1ff0a38..f114c5f 100644 --- a/automation_ide/automation_editor_ui/menu/automation_menu/test_pioneer_menu/build_test_pioneer_menu.py +++ b/pybreeze/pybreeze_ui/menu/automation_menu/test_pioneer_menu/build_test_pioneer_menu.py @@ -5,11 +5,11 @@ from PySide6.QtWidgets import QFileDialog, QMessageBox -from automation_ide.extend.process_executor.test_pioneer.test_pioneer_process_manager import \ +from pybreeze.extend.process_executor.test_pioneer.test_pioneer_process_manager import \ init_and_start_test_pioneer_process if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor from PySide6.QtGui import QAction from je_editor import language_wrapper diff --git a/automation_ide/extend/process_executor/api_testka/__init__.py b/pybreeze/pybreeze_ui/menu/automation_menu/web_runner_menu/__init__.py similarity index 100% rename from automation_ide/extend/process_executor/api_testka/__init__.py rename to pybreeze/pybreeze_ui/menu/automation_menu/web_runner_menu/__init__.py diff --git a/automation_ide/automation_editor_ui/menu/automation_menu/web_runner_menu/build_webrunner_menu.py b/pybreeze/pybreeze_ui/menu/automation_menu/web_runner_menu/build_webrunner_menu.py similarity index 94% rename from automation_ide/automation_editor_ui/menu/automation_menu/web_runner_menu/build_webrunner_menu.py rename to pybreeze/pybreeze_ui/menu/automation_menu/web_runner_menu/build_webrunner_menu.py index 8f51a6d..591d28f 100644 --- a/automation_ide/automation_editor_ui/menu/automation_menu/web_runner_menu/build_webrunner_menu.py +++ b/pybreeze/pybreeze_ui/menu/automation_menu/web_runner_menu/build_webrunner_menu.py @@ -4,15 +4,15 @@ from je_editor import language_wrapper -from automation_ide.automation_editor_ui.menu.menu_utils import open_web_browser +from pybreeze.pybreeze_ui.menu.menu_utils import open_web_browser if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor import sys from PySide6.QtGui import QAction -from automation_ide.extend.process_executor.web_runner.web_runner_process import call_web_runner_test, \ +from pybreeze.extend.process_executor.web_runner.web_runner_process import call_web_runner_test, \ call_web_runner_test_with_send, call_web_runner_test_multi_file, call_web_runner_test_multi_file_and_send diff --git a/automation_ide/automation_editor_ui/menu/build_menubar.py b/pybreeze/pybreeze_ui/menu/build_menubar.py similarity index 50% rename from automation_ide/automation_editor_ui/menu/build_menubar.py rename to pybreeze/pybreeze_ui/menu/build_menubar.py index fe80f13..38cc998 100644 --- a/automation_ide/automation_editor_ui/menu/build_menubar.py +++ b/pybreeze/pybreeze_ui/menu/build_menubar.py @@ -2,28 +2,28 @@ from typing import TYPE_CHECKING -from automation_ide.automation_editor_ui.menu.tools.tools_menu import build_tools_menu, extend_dock_menu +from pybreeze.pybreeze_ui.menu.tools.tools_menu import build_tools_menu, extend_dock_menu if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor -from automation_ide.automation_editor_ui.menu.automation_menu.api_testka_menu.build_api_testka_menu import \ +from pybreeze.pybreeze_ui.menu.automation_menu.api_testka_menu.build_api_testka_menu import \ set_apitestka_menu -from automation_ide.automation_editor_ui.menu.automation_menu.auto_control_menu.build_autocontrol_menu import \ +from pybreeze.pybreeze_ui.menu.automation_menu.auto_control_menu.build_autocontrol_menu import \ set_autocontrol_menu -from automation_ide.automation_editor_ui.menu.automation_menu.automation_file_menu.build_automation_file_menu import \ +from pybreeze.pybreeze_ui.menu.automation_menu.automation_file_menu.build_automation_file_menu import \ set_automation_file_menu -from automation_ide.automation_editor_ui.menu.automation_menu.load_density_menu.build_load_density_menu import \ +from pybreeze.pybreeze_ui.menu.automation_menu.load_density_menu.build_load_density_menu import \ set_load_density_menu -from automation_ide.automation_editor_ui.menu.automation_menu.mail_thunder_menu.build_mail_thunder_menu import \ +from pybreeze.pybreeze_ui.menu.automation_menu.mail_thunder_menu.build_mail_thunder_menu import \ set_mail_thunder_menu -from automation_ide.automation_editor_ui.menu.automation_menu.web_runner_menu.build_webrunner_menu import \ +from pybreeze.pybreeze_ui.menu.automation_menu.web_runner_menu.build_webrunner_menu import \ set_web_runner_menu -from automation_ide.automation_editor_ui.menu.install_menu.automation_menu.build_automation_install_menu import \ +from pybreeze.pybreeze_ui.menu.install_menu.automation_menu.build_automation_install_menu import \ build_automation_install_menu -from automation_ide.automation_editor_ui.menu.install_menu.tools_menu.build_tool_install_menu import \ +from pybreeze.pybreeze_ui.menu.install_menu.tools_menu.build_tool_install_menu import \ build_tool_install_menu -from automation_ide.automation_editor_ui.menu.automation_menu.test_pioneer_menu.build_test_pioneer_menu import \ +from pybreeze.pybreeze_ui.menu.automation_menu.test_pioneer_menu.build_test_pioneer_menu import \ set_test_pioneer_menu from je_editor import language_wrapper diff --git a/automation_ide/extend/process_executor/auto_control/__init__.py b/pybreeze/pybreeze_ui/menu/install_menu/__init__.py similarity index 100% rename from automation_ide/extend/process_executor/auto_control/__init__.py rename to pybreeze/pybreeze_ui/menu/install_menu/__init__.py diff --git a/automation_ide/extend/process_executor/file_automation/__init__.py b/pybreeze/pybreeze_ui/menu/install_menu/automation_menu/__init__.py similarity index 100% rename from automation_ide/extend/process_executor/file_automation/__init__.py rename to pybreeze/pybreeze_ui/menu/install_menu/automation_menu/__init__.py diff --git a/automation_ide/automation_editor_ui/menu/install_menu/automation_menu/build_automation_install_menu.py b/pybreeze/pybreeze_ui/menu/install_menu/automation_menu/build_automation_install_menu.py similarity index 95% rename from automation_ide/automation_editor_ui/menu/install_menu/automation_menu/build_automation_install_menu.py rename to pybreeze/pybreeze_ui/menu/install_menu/automation_menu/build_automation_install_menu.py index 4711c03..34bf3ae 100644 --- a/automation_ide/automation_editor_ui/menu/install_menu/automation_menu/build_automation_install_menu.py +++ b/pybreeze/pybreeze_ui/menu/install_menu/automation_menu/build_automation_install_menu.py @@ -5,10 +5,10 @@ from PySide6.QtGui import QAction from je_editor import language_wrapper -from automation_ide.automation_editor_ui.menu.install_menu.install_utils import install_package +from pybreeze.pybreeze_ui.menu.install_menu.install_utils import install_package if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor def build_automation_install_menu(ui_we_want_to_set: AutomationEditor): diff --git a/automation_ide/automation_editor_ui/menu/install_menu/install_utils.py b/pybreeze/pybreeze_ui/menu/install_menu/install_utils.py similarity index 89% rename from automation_ide/automation_editor_ui/menu/install_menu/install_utils.py rename to pybreeze/pybreeze_ui/menu/install_menu/install_utils.py index b730899..62f29ca 100644 --- a/automation_ide/automation_editor_ui/menu/install_menu/install_utils.py +++ b/pybreeze/pybreeze_ui/menu/install_menu/install_utils.py @@ -5,7 +5,7 @@ from je_editor import EditorWidget, ShellManager if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor def install_package(package_text: str, ui_we_want_to_set: AutomationEditor) -> None: diff --git a/automation_ide/extend/process_executor/load_density/__init__.py b/pybreeze/pybreeze_ui/menu/install_menu/tools_menu/__init__.py similarity index 100% rename from automation_ide/extend/process_executor/load_density/__init__.py rename to pybreeze/pybreeze_ui/menu/install_menu/tools_menu/__init__.py diff --git a/automation_ide/automation_editor_ui/menu/install_menu/tools_menu/build_tool_install_menu.py b/pybreeze/pybreeze_ui/menu/install_menu/tools_menu/build_tool_install_menu.py similarity index 84% rename from automation_ide/automation_editor_ui/menu/install_menu/tools_menu/build_tool_install_menu.py rename to pybreeze/pybreeze_ui/menu/install_menu/tools_menu/build_tool_install_menu.py index 370bf26..0fed456 100644 --- a/automation_ide/automation_editor_ui/menu/install_menu/tools_menu/build_tool_install_menu.py +++ b/pybreeze/pybreeze_ui/menu/install_menu/tools_menu/build_tool_install_menu.py @@ -5,10 +5,10 @@ from PySide6.QtGui import QAction from je_editor import language_wrapper -from automation_ide.automation_editor_ui.menu.install_menu.install_utils import install_package +from pybreeze.pybreeze_ui.menu.install_menu.install_utils import install_package if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor def build_tool_install_menu(ui_we_want_to_set: AutomationEditor): diff --git a/automation_ide/automation_editor_ui/menu/menu_utils.py b/pybreeze/pybreeze_ui/menu/menu_utils.py similarity index 82% rename from automation_ide/automation_editor_ui/menu/menu_utils.py rename to pybreeze/pybreeze_ui/menu/menu_utils.py index 1f39498..f9bca4c 100644 --- a/automation_ide/automation_editor_ui/menu/menu_utils.py +++ b/pybreeze/pybreeze_ui/menu/menu_utils.py @@ -5,7 +5,7 @@ from je_editor import MainBrowserWidget if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor def open_web_browser( diff --git a/automation_ide/extend/process_executor/mail_thunder/__init__.py b/pybreeze/pybreeze_ui/menu/tools/__init__.py similarity index 100% rename from automation_ide/extend/process_executor/mail_thunder/__init__.py rename to pybreeze/pybreeze_ui/menu/tools/__init__.py diff --git a/automation_ide/automation_editor_ui/menu/tools/tools_menu.py b/pybreeze/pybreeze_ui/menu/tools/tools_menu.py similarity index 92% rename from automation_ide/automation_editor_ui/menu/tools/tools_menu.py rename to pybreeze/pybreeze_ui/menu/tools/tools_menu.py index ea96aab..6edfa05 100644 --- a/automation_ide/automation_editor_ui/menu/tools/tools_menu.py +++ b/pybreeze/pybreeze_ui/menu/tools/tools_menu.py @@ -7,15 +7,15 @@ from je_editor.pyside_ui.main_ui.dock.destroy_dock import DestroyDock from je_editor import jeditor_logger -from automation_ide.automation_editor_ui.connect_gui.ssh.ssh_main_widget import SSHMainWidget -from automation_ide.automation_editor_ui.connect_gui.url.ai_code_review_gui import AICodeReviewClient -from automation_ide.automation_editor_ui.extend_ai_gui.prompt_edit_gui.cot_prompt_editor_widget import CoTPromptEditor -from automation_ide.automation_editor_ui.extend_ai_gui.prompt_edit_gui.skills_prompt_editor_widget import \ +from pybreeze.pybreeze_ui.connect_gui.ssh.ssh_main_widget import SSHMainWidget +from pybreeze.pybreeze_ui.connect_gui.url.ai_code_review_gui import AICodeReviewClient +from pybreeze.pybreeze_ui.extend_ai_gui.prompt_edit_gui.cot_prompt_editor_widget import CoTPromptEditor +from pybreeze.pybreeze_ui.extend_ai_gui.prompt_edit_gui.skills_prompt_editor_widget import \ SkillPromptEditor -from automation_ide.automation_editor_ui.extend_ai_gui.skills.skills_send_gui import SkillsSendGUI +from pybreeze.pybreeze_ui.extend_ai_gui.skills.skills_send_gui import SkillsSendGUI if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor def build_tools_menu(ui_we_want_to_set: AutomationEditor): diff --git a/automation_ide/extend/process_executor/test_pioneer/__init__.py b/pybreeze/pybreeze_ui/show_code_window/__init__.py similarity index 100% rename from automation_ide/extend/process_executor/test_pioneer/__init__.py rename to pybreeze/pybreeze_ui/show_code_window/__init__.py diff --git a/automation_ide/automation_editor_ui/show_code_window/code_window.py b/pybreeze/pybreeze_ui/show_code_window/code_window.py similarity index 100% rename from automation_ide/automation_editor_ui/show_code_window/code_window.py rename to pybreeze/pybreeze_ui/show_code_window/code_window.py diff --git a/automation_ide/extend/process_executor/web_runner/__init__.py b/pybreeze/pybreeze_ui/syntax/__init__.py similarity index 100% rename from automation_ide/extend/process_executor/web_runner/__init__.py rename to pybreeze/pybreeze_ui/syntax/__init__.py diff --git a/automation_ide/automation_editor_ui/syntax/syntax_extend.py b/pybreeze/pybreeze_ui/syntax/syntax_extend.py similarity index 81% rename from automation_ide/automation_editor_ui/syntax/syntax_extend.py rename to pybreeze/pybreeze_ui/syntax/syntax_extend.py index f2e2785..547681c 100644 --- a/automation_ide/automation_editor_ui/syntax/syntax_extend.py +++ b/pybreeze/pybreeze_ui/syntax/syntax_extend.py @@ -5,12 +5,12 @@ from je_editor import EditorWidget if TYPE_CHECKING: - from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor + from pybreeze.pybreeze_ui.editor_main.main_ui import AutomationEditor from PySide6.QtGui import QColor -from automation_ide.automation_editor_ui.syntax.syntax_keyword import \ +from pybreeze.pybreeze_ui.syntax.syntax_keyword import \ package_keyword_list -from automation_ide.utils.manager.package_manager.package_manager_class import package_manager +from pybreeze.utils.manager.package_manager.package_manager_class import package_manager from je_editor import syntax_extend_setting_dict diff --git a/automation_ide/automation_editor_ui/syntax/syntax_keyword.py b/pybreeze/pybreeze_ui/syntax/syntax_keyword.py similarity index 100% rename from automation_ide/automation_editor_ui/syntax/syntax_keyword.py rename to pybreeze/pybreeze_ui/syntax/syntax_keyword.py diff --git a/automation_ide/utils/__init__.py b/pybreeze/utils/__init__.py similarity index 100% rename from automation_ide/utils/__init__.py rename to pybreeze/utils/__init__.py diff --git a/automation_ide/utils/exception/__init__.py b/pybreeze/utils/exception/__init__.py similarity index 100% rename from automation_ide/utils/exception/__init__.py rename to pybreeze/utils/exception/__init__.py diff --git a/automation_ide/utils/exception/exception_tags.py b/pybreeze/utils/exception/exception_tags.py similarity index 100% rename from automation_ide/utils/exception/exception_tags.py rename to pybreeze/utils/exception/exception_tags.py diff --git a/automation_ide/utils/exception/exceptions.py b/pybreeze/utils/exception/exceptions.py similarity index 100% rename from automation_ide/utils/exception/exceptions.py rename to pybreeze/utils/exception/exceptions.py diff --git a/automation_ide/utils/file_process/__init__.py b/pybreeze/utils/file_process/__init__.py similarity index 100% rename from automation_ide/utils/file_process/__init__.py rename to pybreeze/utils/file_process/__init__.py diff --git a/automation_ide/utils/file_process/get_dir_file_list.py b/pybreeze/utils/file_process/get_dir_file_list.py similarity index 100% rename from automation_ide/utils/file_process/get_dir_file_list.py rename to pybreeze/utils/file_process/get_dir_file_list.py diff --git a/automation_ide/utils/json_format/__init__.py b/pybreeze/utils/json_format/__init__.py similarity index 100% rename from automation_ide/utils/json_format/__init__.py rename to pybreeze/utils/json_format/__init__.py diff --git a/automation_ide/utils/json_format/json_process.py b/pybreeze/utils/json_format/json_process.py similarity index 75% rename from automation_ide/utils/json_format/json_process.py rename to pybreeze/utils/json_format/json_process.py index 2fc23d8..e4eba3d 100644 --- a/automation_ide/utils/json_format/json_process.py +++ b/pybreeze/utils/json_format/json_process.py @@ -3,9 +3,9 @@ from json import dumps from json import loads -from automation_ide.utils.exception.exception_tags import cant_reformat_json_error -from automation_ide.utils.exception.exception_tags import wrong_json_data_error -from automation_ide.utils.exception.exceptions import ITEJsonException +from pybreeze.utils.exception.exception_tags import cant_reformat_json_error +from pybreeze.utils.exception.exception_tags import wrong_json_data_error +from pybreeze.utils.exception.exceptions import ITEJsonException def __process_json(json_string: str, **kwargs) -> str: diff --git a/automation_ide/utils/logging/__init__.py b/pybreeze/utils/logging/__init__.py similarity index 100% rename from automation_ide/utils/logging/__init__.py rename to pybreeze/utils/logging/__init__.py diff --git a/automation_ide/utils/logging/logger.py b/pybreeze/utils/logging/logger.py similarity index 100% rename from automation_ide/utils/logging/logger.py rename to pybreeze/utils/logging/logger.py diff --git a/automation_ide/utils/manager/__init__.py b/pybreeze/utils/manager/__init__.py similarity index 100% rename from automation_ide/utils/manager/__init__.py rename to pybreeze/utils/manager/__init__.py diff --git a/automation_ide/utils/manager/package_manager/__init__.py b/pybreeze/utils/manager/package_manager/__init__.py similarity index 100% rename from automation_ide/utils/manager/package_manager/__init__.py rename to pybreeze/utils/manager/package_manager/__init__.py diff --git a/automation_ide/utils/manager/package_manager/package_manager_class.py b/pybreeze/utils/manager/package_manager/package_manager_class.py similarity index 100% rename from automation_ide/utils/manager/package_manager/package_manager_class.py rename to pybreeze/utils/manager/package_manager/package_manager_class.py diff --git a/pyproject.toml b/pyproject.toml index e3e3fda..12741e4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,12 +1,12 @@ -# Rename to dev version -# This is dev version +# Rename to build stable version +# This is stable version [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] -name = "PyBreeze_dev" -version = "1.0.4" +name = "pybreeze" +version = "1.0.5" authors = [ { name = "JE-Chen", email = "jechenmailman@gmail.com" }, ] @@ -14,7 +14,7 @@ description = "AutomationEditor for multi automation" requires-python = ">=3.10" license-files = ["LICENSE"] dependencies = [ - "je_editor_dev", "je_auto_control", "je_web_runner", + "je-editor", "je_auto_control", "je_web_runner", "je_load_density", "je_api_testka", "je-mail-thunder", "automation-file", "PySide6==6.10.2", "test_pioneer", "paramiko" ] @@ -35,6 +35,5 @@ Code = "https://github.com/Intergration-Automation-Testing/AutomationEditor" file = "README.md" content-type = "text/markdown" - [tool.setuptools.packages] find = { namespaces = false } diff --git a/test/unit_test/start_automation/extend_automation_test.py b/test/unit_test/start_automation/extend_automation_test.py index a0e0a3c..40c468f 100644 --- a/test/unit_test/start_automation/extend_automation_test.py +++ b/test/unit_test/start_automation/extend_automation_test.py @@ -1,6 +1,6 @@ from PySide6.QtWidgets import QWidget, QGridLayout, QLineEdit, QPushButton, QLabel -from automation_ide import start_editor, EDITOR_EXTEND_TAB +from pybreeze import start_editor, EDITOR_EXTEND_TAB # You can use you own QWidget diff --git a/test/unit_test/start_automation/start_automation_test.py b/test/unit_test/start_automation/start_automation_test.py index c23b8e3..25fcf3c 100644 --- a/test/unit_test/start_automation/start_automation_test.py +++ b/test/unit_test/start_automation/start_automation_test.py @@ -1,2 +1,2 @@ -from automation_ide import start_editor +from pybreeze import start_editor start_editor(debug_mode=True) From 368e52f6ca69ef1dc468a74649adb5d8ef743736 Mon Sep 17 00:00:00 2001 From: JE-Chen Date: Sun, 15 Mar 2026 00:23:07 +0800 Subject: [PATCH 4/4] Update dev_requirements and requirements Update dev_requirements and requirements --- dev_requirements.txt | 2 +- requirements.txt | 2 +- pyproject.toml => stable.toml | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename pyproject.toml => stable.toml (100%) diff --git a/dev_requirements.txt b/dev_requirements.txt index c6d322f..2c38764 100644 --- a/dev_requirements.txt +++ b/dev_requirements.txt @@ -6,7 +6,7 @@ je-load-density je-auto-control je-web-runner je-mail-thunder -automation_ide_dev +pybreeze_dev sphinx sphinx-rtd-theme PySide6 diff --git a/requirements.txt b/requirements.txt index 41ad177..c44279d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,2 @@ -automation_ide +pybreeze PySide6 diff --git a/pyproject.toml b/stable.toml similarity index 100% rename from pyproject.toml rename to stable.toml