PyBreeze-dev 1.0.16__tar.gz → 1.0.17__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. {pybreeze_dev-1.0.16/pybreeze_dev.egg-info → pybreeze_dev-1.0.17}/PKG-INFO +2 -2
  2. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/README.md +1 -1
  3. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/timestamp_tools/timestamp_converter.py +73 -11
  4. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17/pybreeze_dev.egg-info}/PKG-INFO +2 -2
  5. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pyproject.toml +1 -1
  6. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/LICENSE +0 -0
  7. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/__init__.py +0 -0
  8. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/__main__.py +0 -0
  9. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/extend/__init__.py +0 -0
  10. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/extend/mail_thunder_extend/__init__.py +0 -0
  11. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/extend/mail_thunder_extend/mail_thunder_setting.py +0 -0
  12. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/extend/process_executor/__init__.py +0 -0
  13. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/extend/process_executor/file_runner_process.py +0 -0
  14. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/extend/process_executor/process_executor_utils.py +0 -0
  15. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/extend/process_executor/prthinker/__init__.py +0 -0
  16. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/extend/process_executor/prthinker/prthinker_process.py +0 -0
  17. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/extend/process_executor/python_task_process_manager.py +0 -0
  18. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/extend/process_executor/queue_pump.py +0 -0
  19. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/extend/process_executor/run_notice.py +0 -0
  20. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/extend/process_executor/test_pioneer/__init__.py +0 -0
  21. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/extend/process_executor/test_pioneer/test_pioneer_process_manager.py +0 -0
  22. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/extend/prthinker_extend/__init__.py +0 -0
  23. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/extend/prthinker_extend/prthinker_setting.py +0 -0
  24. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/extend_multi_language/__init__.py +0 -0
  25. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/extend_multi_language/extend_english.py +0 -0
  26. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/extend_multi_language/extend_traditional_chinese.py +0 -0
  27. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/extend_multi_language/update_language_dict.py +0 -0
  28. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/__init__.py +0 -0
  29. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/busy_cursor.py +0 -0
  30. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/closing.py +0 -0
  31. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/code_result_logs.py +0 -0
  32. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/connect_gui/__init__.py +0 -0
  33. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/connect_gui/ssh/__init__.py +0 -0
  34. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/connect_gui/ssh/sftp_session.py +0 -0
  35. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_command_widget.py +0 -0
  36. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_connect_thread.py +0 -0
  37. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_file_viewer_widget.py +0 -0
  38. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_host_key_policy.py +0 -0
  39. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_key_loader.py +0 -0
  40. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_login_widget.py +0 -0
  41. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/connect_gui/ssh/ssh_main_widget.py +0 -0
  42. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/connect_gui/url/__init__.py +0 -0
  43. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/connect_gui/url/ai_code_review_gui.py +0 -0
  44. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/diagram_editor/__init__.py +0 -0
  45. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/diagram_editor/diagram_commands.py +0 -0
  46. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/diagram_editor/diagram_editor_widget.py +0 -0
  47. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/diagram_editor/diagram_items.py +0 -0
  48. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/diagram_editor/diagram_mermaid_parser.py +0 -0
  49. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/diagram_editor/diagram_net_utils.py +0 -0
  50. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/diagram_editor/diagram_property_panel.py +0 -0
  51. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/diagram_editor/diagram_scene.py +0 -0
  52. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/diagram_editor/diagram_view.py +0 -0
  53. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/dialog/__init__.py +0 -0
  54. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/dialog/prthinker_setting_dialog.py +0 -0
  55. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/editor_main/__init__.py +0 -0
  56. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/editor_main/file_tree_context_menu.py +0 -0
  57. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/editor_main/main_ui.py +0 -0
  58. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/editor_main/pybreeze_icon.ico +0 -0
  59. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/error_text.py +0 -0
  60. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/exact_text.py +0 -0
  61. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/__init__.py +0 -0
  62. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/ai_gui_global_variable.py +0 -0
  63. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/code_review/__init__.py +0 -0
  64. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/code_review/code_review_thread.py +0 -0
  65. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/code_review/cot_chain.py +0 -0
  66. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/code_review/cot_code_review_gui.py +0 -0
  67. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/__init__.py +0 -0
  68. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/__init__.py +0 -0
  69. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/code_smell_detector.py +0 -0
  70. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/first_code_review.py +0 -0
  71. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/first_summary_prompt.py +0 -0
  72. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/global_rule.py +0 -0
  73. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge.py +0 -0
  74. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge_single_review.py +0 -0
  75. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/linter.py +0 -0
  76. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/step_by_step_analysis.py +0 -0
  77. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/total_summary.py +0 -0
  78. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/cot_prompt_editor_widget.py +0 -0
  79. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/prompt_editor_widget.py +0 -0
  80. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/prompt_file_io.py +0 -0
  81. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_editor_widget.py +0 -0
  82. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/__init__.py +0 -0
  83. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/code_explainer.py +0 -0
  84. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_edit_gui/skills_prompt_templates/code_review.py +0 -0
  85. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/prompt_store.py +0 -0
  86. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/skills/__init__.py +0 -0
  87. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/extend_ai_gui/skills/skills_send_gui.py +0 -0
  88. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/fixed_pitch.py +0 -0
  89. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/gui_thread_gc.py +0 -0
  90. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/jupyter_lab_gui/__init__.py +0 -0
  91. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/jupyter_lab_gui/jupyter_lab_thread.py +0 -0
  92. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/jupyter_lab_gui/jupyter_lab_widget.py +0 -0
  93. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/jupyter_lab_gui/lab_page.py +0 -0
  94. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/__init__.py +0 -0
  95. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/automation_menu/__init__.py +0 -0
  96. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/automation_menu/api_testka_menu/__init__.py +0 -0
  97. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/automation_menu/api_testka_menu/build_api_testka_menu.py +0 -0
  98. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/automation_menu/auto_control_menu/__init__.py +0 -0
  99. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/automation_menu/auto_control_menu/build_autocontrol_menu.py +0 -0
  100. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/automation_menu/automation_file_menu/__init__.py +0 -0
  101. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/automation_menu/automation_file_menu/build_automation_file_menu.py +0 -0
  102. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/automation_menu/automation_menu_factory.py +0 -0
  103. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/automation_menu/load_density_menu/__init__.py +0 -0
  104. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/automation_menu/load_density_menu/build_load_density_menu.py +0 -0
  105. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/automation_menu/mail_thunder_menu/__init__.py +0 -0
  106. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/automation_menu/mail_thunder_menu/build_mail_thunder_menu.py +0 -0
  107. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/automation_menu/prthinker_menu/__init__.py +0 -0
  108. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/automation_menu/prthinker_menu/build_prthinker_menu.py +0 -0
  109. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/automation_menu/test_pioneer_menu/__init__.py +0 -0
  110. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/automation_menu/test_pioneer_menu/build_test_pioneer_menu.py +0 -0
  111. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/automation_menu/web_runner_menu/__init__.py +0 -0
  112. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/automation_menu/web_runner_menu/build_webrunner_menu.py +0 -0
  113. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/build_menubar.py +0 -0
  114. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/extend_jeditor_tab_menu/__init__.py +0 -0
  115. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/extend_jeditor_tab_menu/jupyter_lab_tab.py +0 -0
  116. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/install_menu/__init__.py +0 -0
  117. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/install_menu/automation_menu/__init__.py +0 -0
  118. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/install_menu/automation_menu/build_automation_install_menu.py +0 -0
  119. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/install_menu/install_utils.py +0 -0
  120. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/install_menu/tools_menu/__init__.py +0 -0
  121. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/install_menu/tools_menu/build_tool_install_menu.py +0 -0
  122. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/menu_utils.py +0 -0
  123. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/plugin_menu/__init__.py +0 -0
  124. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/plugin_menu/build_plugin_menu.py +0 -0
  125. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/plugin_menu/build_run_with_menu.py +0 -0
  126. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/tools/__init__.py +0 -0
  127. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/menu/tools/tools_menu.py +0 -0
  128. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/plain_text.py +0 -0
  129. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/run_shortcut.py +0 -0
  130. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/show_code_window/__init__.py +0 -0
  131. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/show_code_window/code_window.py +0 -0
  132. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/syntax/__init__.py +0 -0
  133. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/syntax/syntax_extend.py +0 -0
  134. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/syntax/syntax_keyword.py +0 -0
  135. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/terminal_view.py +0 -0
  136. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/thread_keeper.py +0 -0
  137. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/tools_gui/__init__.py +0 -0
  138. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/tools_gui/curl_import_gui.py +0 -0
  139. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/tools_gui/diff_gui.py +0 -0
  140. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/tools_gui/har_import_gui.py +0 -0
  141. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/tools_gui/hash_gui.py +0 -0
  142. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/tools_gui/header_analyzer_gui.py +0 -0
  143. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/tools_gui/http_status_gui.py +0 -0
  144. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/tools_gui/json_format_gui.py +0 -0
  145. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/tools_gui/jwt_decoder_gui.py +0 -0
  146. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/tools_gui/output_actions.py +0 -0
  147. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/tools_gui/query_json_gui.py +0 -0
  148. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/tools_gui/regex_gui.py +0 -0
  149. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/tools_gui/response_inspector_gui.py +0 -0
  150. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/tools_gui/timestamp_gui.py +0 -0
  151. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/tools_gui/tool_tabs.py +0 -0
  152. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/pybreeze_ui/tools_gui/url_builder_gui.py +0 -0
  153. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/__init__.py +0 -0
  154. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/app_dirs.py +0 -0
  155. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/curl_import/__init__.py +0 -0
  156. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/curl_import/curl_parser.py +0 -0
  157. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/curl_import/request_body.py +0 -0
  158. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/curl_import/request_codegen.py +0 -0
  159. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/curl_import/script_templates.py +0 -0
  160. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/diff_tools/__init__.py +0 -0
  161. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/diff_tools/text_diff.py +0 -0
  162. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/exception/__init__.py +0 -0
  163. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/exception/error_templates.py +0 -0
  164. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/exception/exception_tags.py +0 -0
  165. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/exception/exceptions.py +0 -0
  166. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/file_process/__init__.py +0 -0
  167. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/file_process/get_dir_file_list.py +0 -0
  168. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/file_process/read_capped.py +0 -0
  169. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/file_process/replace_file.py +0 -0
  170. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/har_import/__init__.py +0 -0
  171. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/har_import/har_codegen.py +0 -0
  172. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/har_import/har_parser.py +0 -0
  173. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/hash_tools/__init__.py +0 -0
  174. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/hash_tools/hash_text.py +0 -0
  175. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/header_tools/__init__.py +0 -0
  176. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/header_tools/header_analyzer.py +0 -0
  177. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/header_tools/header_merge.py +0 -0
  178. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/http_reference/__init__.py +0 -0
  179. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/http_reference/status_codes.py +0 -0
  180. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/json_format/__init__.py +0 -0
  181. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/json_format/json_process.py +0 -0
  182. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/json_format/view_safe.py +0 -0
  183. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/jwt_tools/__init__.py +0 -0
  184. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/jwt_tools/jwt_decoder.py +0 -0
  185. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/logging/__init__.py +0 -0
  186. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/logging/logger.py +0 -0
  187. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/manager/__init__.py +0 -0
  188. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/manager/package_manager/__init__.py +0 -0
  189. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/manager/package_manager/package_manager_class.py +0 -0
  190. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/network/__init__.py +0 -0
  191. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/network/http_client.py +0 -0
  192. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/network/public_http.py +0 -0
  193. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/network/url_validation.py +0 -0
  194. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/query_tools/__init__.py +0 -0
  195. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/query_tools/query_convert.py +0 -0
  196. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/regex_tools/__init__.py +0 -0
  197. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/regex_tools/regex_tester.py +0 -0
  198. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/response_inspector/__init__.py +0 -0
  199. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/response_inspector/response_analyzer.py +0 -0
  200. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/subprocess_util.py +0 -0
  201. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/terminal_style.py +0 -0
  202. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/terminal_text.py +0 -0
  203. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/timestamp_tools/__init__.py +0 -0
  204. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/url_tools/__init__.py +0 -0
  205. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze/utils/url_tools/url_convert.py +0 -0
  206. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze_dev.egg-info/SOURCES.txt +0 -0
  207. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze_dev.egg-info/dependency_links.txt +0 -0
  208. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze_dev.egg-info/requires.txt +0 -0
  209. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/pybreeze_dev.egg-info/top_level.txt +0 -0
  210. {pybreeze_dev-1.0.16 → pybreeze_dev-1.0.17}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pybreeze_dev
3
- Version: 1.0.16
3
+ Version: 1.0.17
4
4
  Summary: IDE for multi automation
5
5
  Author-email: JE-Chen <jechenmailman@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/Integration-Automation/PyBreeze
@@ -167,7 +167,7 @@ Each is a tab or a dock, each has the same copy / open-in-editor / save-to-file
167
167
 
168
168
  ![Timestamp converter, hash generator, query/JSON, URL builder](images/tools_montage_b.png)
169
169
 
170
- - **Timestamp Converter** — a Unix epoch (seconds, milliseconds, microseconds or nanoseconds, auto-detected) or an ISO-8601 date-time (with `Z`, `+08`, `+0800` or `+08:00`, any number of fraction digits, basic or extended) in, every representation out in UTC. Deterministic and independent of the local time zone.
170
+ - **Timestamp Converter** — a Unix epoch (seconds, milliseconds, microseconds or nanoseconds, auto-detected) or an ISO-8601 date-time (with `Z`, `+08`, `+0800` or `+08:00`, any number of fraction digits, basic or extended, and an RFC 9557 zone after the offset as Java's `ZonedDateTime` writes it: `+01:00[Europe/Paris]`) or an HTTP date (`Sun, 06 Nov 1994 08:49:37 GMT`, as in `Date` or `Last-Modified`, and the two older forms RFC 9110 accepts) in, every representation out in UTC. Deterministic and independent of the local time zone.
171
171
  - **Hash Generator** — SHA-256, SHA-512, SHA-1 and MD5 at once (MD5/SHA-1 for interoperability with `usedforsecurity=False`, never for security decisions).
172
172
  - **Query ⇄ JSON** — `application/x-www-form-urlencoded` to pretty JSON and back; repeated keys become arrays and vice versa.
173
173
  - **URL Parser / Builder** — scheme, host, port, path, query, fragment and credentials as an editable JSON object, and back again. Brackets IPv6 literals and re-encodes query parameters for you.
@@ -134,7 +134,7 @@ Each is a tab or a dock, each has the same copy / open-in-editor / save-to-file
134
134
 
135
135
  ![Timestamp converter, hash generator, query/JSON, URL builder](images/tools_montage_b.png)
136
136
 
137
- - **Timestamp Converter** — a Unix epoch (seconds, milliseconds, microseconds or nanoseconds, auto-detected) or an ISO-8601 date-time (with `Z`, `+08`, `+0800` or `+08:00`, any number of fraction digits, basic or extended) in, every representation out in UTC. Deterministic and independent of the local time zone.
137
+ - **Timestamp Converter** — a Unix epoch (seconds, milliseconds, microseconds or nanoseconds, auto-detected) or an ISO-8601 date-time (with `Z`, `+08`, `+0800` or `+08:00`, any number of fraction digits, basic or extended, and an RFC 9557 zone after the offset as Java's `ZonedDateTime` writes it: `+01:00[Europe/Paris]`) or an HTTP date (`Sun, 06 Nov 1994 08:49:37 GMT`, as in `Date` or `Last-Modified`, and the two older forms RFC 9110 accepts) in, every representation out in UTC. Deterministic and independent of the local time zone.
138
138
  - **Hash Generator** — SHA-256, SHA-512, SHA-1 and MD5 at once (MD5/SHA-1 for interoperability with `usedforsecurity=False`, never for security decisions).
139
139
  - **Query ⇄ JSON** — `application/x-www-form-urlencoded` to pretty JSON and back; repeated keys become arrays and vice versa.
140
140
  - **URL Parser / Builder** — scheme, host, port, path, query, fragment and credentials as an editable JSON object, and back again. Brackets IPv6 literals and re-encodes query parameters for you.
@@ -14,6 +14,7 @@ import re
14
14
  from dataclasses import dataclass
15
15
  from datetime import datetime, timedelta, timezone
16
16
  from decimal import MAX_EMAX, MIN_EMIN, ROUND_FLOOR, Decimal, InvalidOperation, localcontext
17
+ from email.utils import parsedate_to_datetime
17
18
 
18
19
  from pybreeze.utils.exception.exception_tags import (
19
20
  empty_timestamp_error,
@@ -129,6 +130,9 @@ def _from_epoch(value: int | Decimal) -> datetime:
129
130
  # refused "Z", "+0000", "+08", fractions of other than 3 or 6 digits (Go and
130
131
  # Kubernetes write 9) and the basic format 20240101T000000Z. A lower-case "z"
131
132
  # was refused on every version.
133
+ # The RFC 3339 offset a date-time with suffixes must end in, after its time
134
+ # (a date's last "-01" is not one)
135
+ _OFFSET_END_RE = re.compile(r"[Tt ][^Tt ]*(?:[Zz]|[+-]\d{2}(?::?\d{2})?)$")
132
136
  _ISO_RE = re.compile(
133
137
  r"(?P<year>\d{4})-?(?P<month>\d{2})-?(?P<day>\d{2})"
134
138
  r"(?:[Tt ](?P<hour>\d{2})(?::?(?P<minute>\d{2})(?::?(?P<second>\d{2})(?:[.,](?P<fraction>\d+))?)?)?"
@@ -167,19 +171,77 @@ def _iso_match(text: str) -> datetime | None:
167
171
  return moment.astimezone(timezone.utc)
168
172
 
169
173
 
170
- def _from_iso(text: str) -> datetime:
171
- """Parse an ISO-8601 string into a UTC datetime; no offset means UTC."""
174
+ def _without_suffixes(text: str) -> str:
175
+ """*text* without its RFC 9557 suffixes (``[Europe/Paris]``, ``[u-ca=gregory]``).
176
+
177
+ RFC 9557 puts them after an RFC 3339 date-time: a time zone, and tags such
178
+ as a calendar, each in brackets (``[!...]`` when critical). Java's
179
+ ``ZonedDateTime`` writes one.
180
+
181
+ The offset before them gives the instant, and one is required: taken as
182
+ UTC, a time in Paris with no offset would be an hour off.
183
+
184
+ :raises ValueError: suffixes after a date-time with no offset
185
+ """
186
+ end = len(text)
187
+ # Each "[...]" at the end, taken off from the last: a pattern searched from
188
+ # every "[" took quadratic time on a long run of brackets
189
+ while text.endswith("]", 0, end):
190
+ start = text.rfind("[", 0, end)
191
+ if start < 0 or "]" in text[start + 1:end - 1]:
192
+ break
193
+ end = start
194
+ if end == len(text):
195
+ return text
196
+ date_time = text[:end]
197
+ if not _OFFSET_END_RE.search(date_time):
198
+ raise ValueError(f"an RFC 9557 suffix after a date-time with no offset: {text}")
199
+ return date_time
200
+
201
+
202
+ def _from_http_date(text: str) -> datetime:
203
+ """*text* as an HTTP date: IMF-fixdate, RFC 850 or asctime (RFC 9110, 5.6.7), or an e-mail date.
204
+
205
+ One with no zone (asctime) is in GMT, as HTTP has it.
206
+
207
+ :raises ValueError: when *text* is none of them
208
+ """
209
+ try:
210
+ parsed = parsedate_to_datetime(text)
211
+ except (TypeError, IndexError) as error:
212
+ # Python 3.10's early releases raised TypeError for text that is no date
213
+ raise ValueError(f"not an HTTP date: {text}") from error
214
+ return parsed if parsed.tzinfo is not None else parsed.replace(tzinfo=timezone.utc)
215
+
216
+
217
+ def _date_time(text: str) -> datetime:
218
+ """*text* as an instant: ISO 8601 (with any RFC 9557 suffix), or else an HTTP date.
219
+
220
+ :raises ValueError: a field out of range, or *text* in none of the forms
221
+ :raises OverflowError: moving it to UTC leaves the years datetime can hold
222
+ """
223
+ date_time = _without_suffixes(text)
224
+ parsed = _iso_match(date_time)
225
+ if parsed is not None:
226
+ return parsed
172
227
  try:
173
- parsed = _iso_match(text)
174
- if parsed is not None:
175
- return parsed
176
228
  # Anything else fromisoformat takes on this Python (3.11+ reads more)
177
- parsed = datetime.fromisoformat(text)
178
- if parsed.tzinfo is None:
179
- parsed = parsed.replace(tzinfo=timezone.utc)
180
- # Moving 0001-01-01 +01:00 (or 9999-12-31 -01:00) to UTC leaves the
181
- # range datetime can hold: OverflowError, not ValueError.
182
- return parsed.astimezone(timezone.utc)
229
+ parsed = datetime.fromisoformat(date_time)
230
+ except ValueError:
231
+ if date_time != text:
232
+ raise
233
+ parsed = _from_http_date(text)
234
+ if parsed.tzinfo is None:
235
+ parsed = parsed.replace(tzinfo=timezone.utc)
236
+ # Moving 0001-01-01 +01:00 (or 9999-12-31 -01:00) to UTC leaves the
237
+ # range datetime can hold: OverflowError, not ValueError.
238
+ return parsed.astimezone(timezone.utc)
239
+
240
+
241
+ def _from_iso(text: str) -> datetime:
242
+ """Parse an ISO-8601 string (or an HTTP date) into a UTC datetime; no offset means UTC."""
243
+ try:
244
+ return _date_time(text)
183
245
  except (ValueError, OverflowError) as error:
184
246
  pybreeze_logger.error(unrecognized_timestamp_error)
185
247
  raise TimestampParseException(unrecognized_timestamp_error) from error
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pybreeze_dev
3
- Version: 1.0.16
3
+ Version: 1.0.17
4
4
  Summary: IDE for multi automation
5
5
  Author-email: JE-Chen <jechenmailman@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/Integration-Automation/PyBreeze
@@ -167,7 +167,7 @@ Each is a tab or a dock, each has the same copy / open-in-editor / save-to-file
167
167
 
168
168
  ![Timestamp converter, hash generator, query/JSON, URL builder](images/tools_montage_b.png)
169
169
 
170
- - **Timestamp Converter** — a Unix epoch (seconds, milliseconds, microseconds or nanoseconds, auto-detected) or an ISO-8601 date-time (with `Z`, `+08`, `+0800` or `+08:00`, any number of fraction digits, basic or extended) in, every representation out in UTC. Deterministic and independent of the local time zone.
170
+ - **Timestamp Converter** — a Unix epoch (seconds, milliseconds, microseconds or nanoseconds, auto-detected) or an ISO-8601 date-time (with `Z`, `+08`, `+0800` or `+08:00`, any number of fraction digits, basic or extended, and an RFC 9557 zone after the offset as Java's `ZonedDateTime` writes it: `+01:00[Europe/Paris]`) or an HTTP date (`Sun, 06 Nov 1994 08:49:37 GMT`, as in `Date` or `Last-Modified`, and the two older forms RFC 9110 accepts) in, every representation out in UTC. Deterministic and independent of the local time zone.
171
171
  - **Hash Generator** — SHA-256, SHA-512, SHA-1 and MD5 at once (MD5/SHA-1 for interoperability with `usedforsecurity=False`, never for security decisions).
172
172
  - **Query ⇄ JSON** — `application/x-www-form-urlencoded` to pretty JSON and back; repeated keys become arrays and vice versa.
173
173
  - **URL Parser / Builder** — scheme, host, port, path, query, fragment and credentials as an editable JSON object, and back again. Brackets IPv6 literals and re-encodes query parameters for you.
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
7
7
 
8
8
  [project]
9
9
  name = "pybreeze_dev"
10
- version = "1.0.16"
10
+ version = "1.0.17"
11
11
  authors = [
12
12
  { name = "JE-Chen", email = "jechenmailman@gmail.com" },
13
13
  ]
File without changes
File without changes