osbot-utils 1.25.0__tar.gz → 1.27.0__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 (291) hide show
  1. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/PKG-INFO +2 -2
  2. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/README.md +1 -1
  3. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ssh/SSH__Execute.py +6 -4
  4. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ssh/TestCase__SSH.py +4 -0
  5. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/Temp_Folder.py +5 -1
  6. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/Temp_Zip.py +6 -2
  7. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Env.py +3 -0
  8. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Files.py +30 -8
  9. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Zip.py +3 -2
  10. osbot_utils-1.27.0/osbot_utils/version +1 -0
  11. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/pyproject.toml +1 -1
  12. osbot_utils-1.25.0/osbot_utils/version +0 -1
  13. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/LICENSE +0 -0
  14. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/__init__.py +0 -0
  15. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/base_classes/Cache_Pickle.py +0 -0
  16. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/base_classes/Kwargs_To_Disk.py +0 -0
  17. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/base_classes/Kwargs_To_Self.py +0 -0
  18. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/base_classes/Type_Safe.py +0 -0
  19. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/base_classes/Type_Safe__List.py +0 -0
  20. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/base_classes/__init__.py +0 -0
  21. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/context_managers/__init__.py +0 -0
  22. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/context_managers/capture_duration.py +0 -0
  23. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/context_managers/disable_root_loggers.py +0 -0
  24. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/__init__.py +0 -0
  25. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/classes/__init__.py +0 -0
  26. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/classes/singleton.py +0 -0
  27. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/lists/__init__.py +0 -0
  28. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/lists/filter_list.py +0 -0
  29. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/lists/group_by.py +0 -0
  30. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/lists/index_by.py +0 -0
  31. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/methods/__init__.py +0 -0
  32. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/methods/cache.py +0 -0
  33. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/methods/cache_on_function.py +0 -0
  34. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/methods/cache_on_self.py +0 -0
  35. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/methods/cache_on_tmp.py +0 -0
  36. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/methods/capture_exception.py +0 -0
  37. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/methods/capture_status.py +0 -0
  38. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/methods/catch.py +0 -0
  39. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/methods/context.py +0 -0
  40. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/methods/depreciated.py +0 -0
  41. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/methods/function_type_check.py +0 -0
  42. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/methods/obj_as_context.py +0 -0
  43. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/methods/remove_return_value.py +0 -0
  44. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/decorators/methods/required_fields.py +0 -0
  45. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/fluent/Fluent_Dict.py +0 -0
  46. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/fluent/Fluent_List.py +0 -0
  47. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/fluent/__init__.py +0 -0
  48. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/__init__.py +0 -0
  49. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mermaid/Mermaid.py +0 -0
  50. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mermaid/Mermaid__Edge.py +0 -0
  51. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mermaid/Mermaid__Graph.py +0 -0
  52. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mermaid/Mermaid__Node.py +0 -0
  53. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mermaid/Mermaid__Renderer.py +0 -0
  54. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mermaid/configs/Mermaid__Edge__Config.py +0 -0
  55. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mermaid/configs/Mermaid__Node__Config.py +0 -0
  56. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mermaid/configs/Mermaid__Render__Config.py +0 -0
  57. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mermaid/examples/Mermaid_Examples__FlowChart.py +0 -0
  58. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mermaid/models/Mermaid__Diagram_Direction.py +0 -0
  59. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mermaid/models/Mermaid__Diagram__Type.py +0 -0
  60. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mermaid/models/Mermaid__Node__Shape.py +0 -0
  61. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mgraph/MGraph.py +0 -0
  62. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mgraph/MGraph__Config.py +0 -0
  63. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mgraph/MGraph__Data.py +0 -0
  64. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mgraph/MGraph__Edge.py +0 -0
  65. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mgraph/MGraph__Node.py +0 -0
  66. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mgraph/MGraph__Random_Graphs.py +0 -0
  67. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mgraph/MGraph__Serializer.py +0 -0
  68. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mgraph/MGraphs.py +0 -0
  69. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/graphs/mgraph/__init__.py +0 -0
  70. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/CFormat.py +0 -0
  71. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/CPrint.py +0 -0
  72. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/Dict_To_Attr.py +0 -0
  73. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/Local_Cache.py +0 -0
  74. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/Local_Caches.py +0 -0
  75. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/Print_Table.py +0 -0
  76. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/Python_Audit.py +0 -0
  77. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/Random_Seed.py +0 -0
  78. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/Type_Registry.py +0 -0
  79. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/__init__.py +0 -0
  80. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/Ast.py +0 -0
  81. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/Ast_Base.py +0 -0
  82. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/Ast_Data.py +0 -0
  83. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/Ast_Load.py +0 -0
  84. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/Ast_Merge.py +0 -0
  85. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/Ast_Node.py +0 -0
  86. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/Ast_Visit.py +0 -0
  87. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/Call_Tree.py +0 -0
  88. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/__init__.py +0 -0
  89. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Add.py +0 -0
  90. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Alias.py +0 -0
  91. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_And.py +0 -0
  92. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Argument.py +0 -0
  93. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Arguments.py +0 -0
  94. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Assert.py +0 -0
  95. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Assign.py +0 -0
  96. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Attribute.py +0 -0
  97. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Aug_Assign.py +0 -0
  98. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Bin_Op.py +0 -0
  99. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Bool_Op.py +0 -0
  100. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Break.py +0 -0
  101. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Call.py +0 -0
  102. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Class_Def.py +0 -0
  103. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Compare.py +0 -0
  104. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Comprehension.py +0 -0
  105. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Constant.py +0 -0
  106. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Continue.py +0 -0
  107. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Dict.py +0 -0
  108. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Eq.py +0 -0
  109. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Except_Handler.py +0 -0
  110. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Expr.py +0 -0
  111. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_For.py +0 -0
  112. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Function_Def.py +0 -0
  113. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Generator_Exp.py +0 -0
  114. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Gt.py +0 -0
  115. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_GtE.py +0 -0
  116. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_If.py +0 -0
  117. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_If_Exp.py +0 -0
  118. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Import.py +0 -0
  119. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Import_From.py +0 -0
  120. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_In.py +0 -0
  121. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Is.py +0 -0
  122. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Is_Not.py +0 -0
  123. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Keyword.py +0 -0
  124. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Lambda.py +0 -0
  125. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_List.py +0 -0
  126. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_List_Comp.py +0 -0
  127. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Load.py +0 -0
  128. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Lt.py +0 -0
  129. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_LtE.py +0 -0
  130. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Mod.py +0 -0
  131. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Module.py +0 -0
  132. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Mult.py +0 -0
  133. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Name.py +0 -0
  134. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Not.py +0 -0
  135. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Not_Eq.py +0 -0
  136. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Not_In.py +0 -0
  137. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Or.py +0 -0
  138. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Pass.py +0 -0
  139. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Pow.py +0 -0
  140. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Raise.py +0 -0
  141. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Return.py +0 -0
  142. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Set.py +0 -0
  143. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Slice.py +0 -0
  144. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Starred.py +0 -0
  145. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Store.py +0 -0
  146. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Sub.py +0 -0
  147. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Subscript.py +0 -0
  148. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Try.py +0 -0
  149. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Tuple.py +0 -0
  150. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Unary_Op.py +0 -0
  151. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_While.py +0 -0
  152. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_With.py +0 -0
  153. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_With_Item.py +0 -0
  154. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/Ast_Yield.py +0 -0
  155. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ast/nodes/__init__.py +0 -0
  156. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Actions.py +0 -0
  157. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Config.py +0 -0
  158. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Data.py +0 -0
  159. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Invoke.py +0 -0
  160. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Row.py +0 -0
  161. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Table.py +0 -0
  162. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/cache_requests/__init__.py +0 -0
  163. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/cache_requests/flows/flow__Cache__Requests.py +0 -0
  164. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/flows/Flow.py +0 -0
  165. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/flows/Task.py +0 -0
  166. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/flows/__init__.py +0 -0
  167. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/html/Dict_To_Css.py +0 -0
  168. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/html/Dict_To_Html.py +0 -0
  169. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/html/Dict_To_Tags.py +0 -0
  170. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/html/Html_To_Dict.py +0 -0
  171. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/html/Html_To_Tag.py +0 -0
  172. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/html/Tag__Base.py +0 -0
  173. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/html/Tag__Body.py +0 -0
  174. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/html/Tag__Div.py +0 -0
  175. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/html/Tag__H.py +0 -0
  176. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/html/Tag__HR.py +0 -0
  177. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/html/Tag__Head.py +0 -0
  178. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/html/Tag__Html.py +0 -0
  179. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/html/Tag__Link.py +0 -0
  180. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/html/Tag__Style.py +0 -0
  181. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/html/__init__.py +0 -0
  182. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/pubsub/Event__Queue.py +0 -0
  183. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/pubsub/PubSub__Client.py +0 -0
  184. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/pubsub/PubSub__Room.py +0 -0
  185. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/pubsub/PubSub__Server.py +0 -0
  186. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/pubsub/PubSub__Sqlite.py +0 -0
  187. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/pubsub/__init__.py +0 -0
  188. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event.py +0 -0
  189. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Connect.py +0 -0
  190. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Disconnect.py +0 -0
  191. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Join_Room.py +0 -0
  192. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Leave_Room.py +0 -0
  193. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Message.py +0 -0
  194. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/pubsub/schemas/Schema__PubSub__Client.py +0 -0
  195. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/pubsub/schemas/__init__.py +0 -0
  196. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/Capture_Sqlite_Error.py +0 -0
  197. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/Sqlite__Cursor.py +0 -0
  198. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/Sqlite__Database.py +0 -0
  199. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/Sqlite__Field.py +0 -0
  200. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/Sqlite__Globals.py +0 -0
  201. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/Sqlite__Table.py +0 -0
  202. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/Sqlite__Table__Create.py +0 -0
  203. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Database__Disk.py +0 -0
  204. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Table.py +0 -0
  205. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/__init__.py +0 -0
  206. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/cache/Schema__Table__Requests.py +0 -0
  207. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests.py +0 -0
  208. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Patch.py +0 -0
  209. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Sqlite.py +0 -0
  210. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Table.py +0 -0
  211. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/cache/Sqlite__DB__Requests.py +0 -0
  212. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/cache/TestCase__Sqlite__Cache__Requests.py +0 -0
  213. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/cache/__init__.py +0 -0
  214. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Files.py +0 -0
  215. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Graph.py +0 -0
  216. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Json.py +0 -0
  217. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Local.py +0 -0
  218. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/domains/__init__.py +0 -0
  219. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/domains/schemas/__init__.py +0 -0
  220. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/models/Sqlite__Field__Type.py +0 -0
  221. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/models/__init__.py +0 -0
  222. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/sample_data/Sqlite__Sample_Data__Chinook.py +0 -0
  223. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/sample_data/__init__.py +0 -0
  224. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder.py +0 -0
  225. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder__Select.py +0 -0
  226. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/sql_builder/__init__.py +0 -0
  227. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Config.py +0 -0
  228. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Edges.py +0 -0
  229. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Files.py +0 -0
  230. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Nodes.py +0 -0
  231. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/sqlite/tables/__init__.py +0 -0
  232. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ssh/SCP.py +0 -0
  233. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ssh/SSH.py +0 -0
  234. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ssh/SSH__Cache__Requests.py +0 -0
  235. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ssh/SSH__Health_Check.py +0 -0
  236. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ssh/SSH__Linux.py +0 -0
  237. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ssh/SSH__Linux__Amazon.py +0 -0
  238. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ssh/SSH__Python.py +0 -0
  239. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/ssh/__init__.py +0 -0
  240. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/trace/Trace_Call.py +0 -0
  241. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/trace/Trace_Call__Config.py +0 -0
  242. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/trace/Trace_Call__Graph.py +0 -0
  243. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/trace/Trace_Call__Handler.py +0 -0
  244. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/trace/Trace_Call__Print_Lines.py +0 -0
  245. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/trace/Trace_Call__Print_Traces.py +0 -0
  246. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/trace/Trace_Call__Stack.py +0 -0
  247. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/trace/Trace_Call__Stack_Node.py +0 -0
  248. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/trace/Trace_Call__Stats.py +0 -0
  249. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/trace/Trace_Call__View_Model.py +0 -0
  250. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/trace/Trace_Files.py +0 -0
  251. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/helpers/trace/__init__.py +0 -0
  252. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/Catch.py +0 -0
  253. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/Duration.py +0 -0
  254. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/Hook_Method.py +0 -0
  255. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/Log_To_Queue.py +0 -0
  256. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/Log_To_String.py +0 -0
  257. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/Logging.py +0 -0
  258. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/Patch_Print.py +0 -0
  259. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/Profiler.py +0 -0
  260. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/Pytest.py +0 -0
  261. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/Stderr.py +0 -0
  262. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/Stdout.py +0 -0
  263. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/Temp_Env_Vars.py +0 -0
  264. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/Temp_File.py +0 -0
  265. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/Temp_Sys_Path.py +0 -0
  266. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/Temp_Web_Server.py +0 -0
  267. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/Temp_Zip_In_Memory.py +0 -0
  268. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/Unit_Test.py +0 -0
  269. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/Unzip_File.py +0 -0
  270. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/testing/__init__.py +0 -0
  271. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Assert.py +0 -0
  272. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Call_Stack.py +0 -0
  273. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Csv.py +0 -0
  274. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Dev.py +0 -0
  275. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Exceptions.py +0 -0
  276. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Functions.py +0 -0
  277. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Http.py +0 -0
  278. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Int.py +0 -0
  279. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Json.py +0 -0
  280. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Json_Cache.py +0 -0
  281. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Lists.py +0 -0
  282. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Misc.py +0 -0
  283. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Objects.py +0 -0
  284. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Png.py +0 -0
  285. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Process.py +0 -0
  286. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Python_Logger.py +0 -0
  287. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Status.py +0 -0
  288. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Str.py +0 -0
  289. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Toml.py +0 -0
  290. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/Version.py +0 -0
  291. {osbot_utils-1.25.0 → osbot_utils-1.27.0}/osbot_utils/utils/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: osbot_utils
3
- Version: 1.25.0
3
+ Version: 1.27.0
4
4
  Summary: OWASP Security Bot - Utils
5
5
  Home-page: https://github.com/owasp-sbot/OSBot-Utils
6
6
  License: MIT
@@ -22,7 +22,7 @@ Description-Content-Type: text/markdown
22
22
 
23
23
  Powerful Python util methods and classes that simplify common apis and tasks.
24
24
 
25
- ![Current Release](https://img.shields.io/badge/release-v1.25.0-blue)
25
+ ![Current Release](https://img.shields.io/badge/release-v1.27.0-blue)
26
26
  [![codecov](https://codecov.io/gh/owasp-sbot/OSBot-Utils/graph/badge.svg?token=GNVW0COX1N)](https://codecov.io/gh/owasp-sbot/OSBot-Utils)
27
27
 
28
28
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Powerful Python util methods and classes that simplify common apis and tasks.
4
4
 
5
- ![Current Release](https://img.shields.io/badge/release-v1.25.0-blue)
5
+ ![Current Release](https://img.shields.io/badge/release-v1.27.0-blue)
6
6
  [![codecov](https://codecov.io/gh/owasp-sbot/OSBot-Utils/graph/badge.svg?token=GNVW0COX1N)](https://codecov.io/gh/owasp-sbot/OSBot-Utils)
7
7
 
8
8
 
@@ -4,6 +4,7 @@ from osbot_utils.decorators.lists.group_by import group_by
4
4
  from osbot_utils.decorators.lists.index_by import index_by
5
5
  from osbot_utils.utils.Dev import pprint
6
6
  from osbot_utils.utils.Env import get_env
7
+ from osbot_utils.utils.Http import is_port_open
7
8
  from osbot_utils.utils.Misc import str_to_int, str_to_bool
8
9
  from osbot_utils.utils.Process import start_process, run_process
9
10
  from osbot_utils.utils.Status import status_error
@@ -140,10 +141,11 @@ class SSH__Execute(Type_Safe):
140
141
  def ssh_not__setup_ok(self):
141
142
  return self.ssh_setup_ok() is False
142
143
 
143
- # print helpers
144
- # def print_ls(self, path=''):
145
- # pprint(self.ls(path))
146
- # return self
144
+ def ssh_host_available(self):
145
+ return is_port_open(self.ssh_host, self.ssh_port)
146
+
147
+ def ssh_host_not_available(self):
148
+ return self.ssh_host_available() is False
147
149
 
148
150
  def print_status__stderr__stdout(self, result):
149
151
  print()
@@ -21,6 +21,10 @@ class TestCase__SSH(TestCase):
21
21
  import pytest # we can only import this locally since this dependency doesn't exist in the main osbot_utils codebase
22
22
  pytest.skip("SSH host not set")
23
23
 
24
+ with cls.ssh.ssh_execute() as _:
25
+ if _.ssh_not__setup_ok() or _.ssh_host_not_available():
26
+ cls.skipTest(cls, 'ssh is not setup or enabled')
27
+
24
28
  cls.cache = SSH__Cache__Requests()
25
29
  cls.cache.patch_apply()
26
30
 
@@ -4,7 +4,7 @@ from osbot_utils.utils.Misc import random_string
4
4
 
5
5
  from osbot_utils.utils.Files import path_combine, temp_folder_current, safe_file_name, folder_exists, folder_create, \
6
6
  folder_delete_recursively, files_list, file_create, folder_files, folders_recursive, files_find, files_recursive, \
7
- temp_file_in_folder, create_folder, filter_parent_folder
7
+ temp_file_in_folder, create_folder, filter_parent_folder, file_contents
8
8
  from osbot_utils.utils.Zip import zip_folder
9
9
 
10
10
 
@@ -92,6 +92,10 @@ class Temp_Folder:
92
92
  def path(self):
93
93
  return self.full_path
94
94
 
95
+ def file_contents(self, target_file):
96
+ file_path = path_combine(self.full_path, target_file)
97
+ return file_contents(file_path)
98
+
95
99
  def files(self, show_parent_folder=False, include_folders=False):
96
100
  all_files = files_recursive(self.path(), include_folders=include_folders)
97
101
  if show_parent_folder:
@@ -1,5 +1,6 @@
1
1
  from osbot_utils.testing.Temp_Folder import Temp_Folder
2
- from osbot_utils.utils.Files import Files, is_folder, file_exists, file_name
2
+ from osbot_utils.utils.Files import Files, is_folder, file_exists, file_name, file_move_to_folder, file_move, \
3
+ file_move_to
3
4
  from osbot_utils.utils.Zip import zip_folder, zip_file_list
4
5
 
5
6
 
@@ -42,4 +43,7 @@ class Temp_Zip():
42
43
  return self
43
44
 
44
45
  def zip_file_exists(self):
45
- return file_exists(self.zip_file)
46
+ return file_exists(self.zip_file)
47
+
48
+ def move_to(self, target_file):
49
+ file_move_to(self.zip_file, target_file)
@@ -94,6 +94,9 @@ def load_dotenv(dotenv_path=None, override=False): # todo: add dete
94
94
  def not_in_github_action():
95
95
  return in_github_action() is False
96
96
 
97
+ def set_env(key, value):
98
+ os.environ[key] = value
99
+ return value
97
100
 
98
101
  def unload_dotenv(dotenv_path=None):
99
102
  if dotenv_path: # If a specific dotenv path is provided, unload from it
@@ -8,6 +8,8 @@ import shutil
8
8
  import tempfile
9
9
  from os.path import abspath, join
10
10
  from pathlib import Path, PosixPath
11
+ from typing import Union
12
+
11
13
  from osbot_utils.utils.Misc import bytes_to_base64, base64_to_bytes, random_string
12
14
 
13
15
 
@@ -306,13 +308,24 @@ class Files:
306
308
  return Files.open(path, mode='rb')
307
309
 
308
310
  @staticmethod
309
- def path_combine(path1, path2):
310
- if type(path1) in [str, Path] and type(path2) in [str, Path]:
311
- parent_path = str(path1)
312
- sub_path = str(path2)
313
- if sub_path.startswith('/'):
314
- sub_path = sub_path[1:]
315
- return abspath(join(parent_path,sub_path))
311
+ # def path_combine(path1, path2):
312
+ # if type(path1) in [str, Path] and type(path2) in [str, Path]:
313
+ # parent_path = str(path1)
314
+ # sub_path = str(path2)
315
+ # if sub_path.startswith('/'):
316
+ # sub_path = sub_path[1:]
317
+ # return abspath(join(parent_path,sub_path))
318
+
319
+ def path_combine(path1: Union[str, os.PathLike], path2: Union[str, os.PathLike]) -> str:
320
+ if path1 is None or path2 is None:
321
+ raise ValueError("Both paths must be provided")
322
+
323
+ parent_path = str(path1)
324
+ sub_path = str(path2)
325
+
326
+ sub_path = sub_path.lstrip('/') # Remove leading slashes from sub_path
327
+
328
+ return abspath(join(parent_path, sub_path))
316
329
 
317
330
  @staticmethod
318
331
  def parent_folder(path, use_full_path=False):
@@ -451,8 +464,8 @@ def all_parent_folders(path=None, include_path=False):
451
464
  if path and path not in parent_directories: # to handle the root path case
452
465
  parent_directories.append(path)
453
466
  break
454
-
455
467
  return parent_directories
468
+
456
469
  def file_move(source_file, target_file):
457
470
  if file_exists(source_file):
458
471
  file_copy(source_file, target_file)
@@ -461,6 +474,14 @@ def file_move(source_file, target_file):
461
474
  return True
462
475
  return False
463
476
 
477
+ def file_move_to_folder(source_file, target_folder):
478
+ if file_exists(source_file):
479
+ if folder_exists(target_folder):
480
+ target_file = path_combine(target_folder, file_name(source_file))
481
+ if file_move(source_file, target_file):
482
+ return target_file
483
+
484
+
464
485
  def folders_names_in_folder(target):
465
486
  folders = folders_in_folder(target)
466
487
  return folders_names(folders)
@@ -506,6 +527,7 @@ file_full_path = absolute_path
506
527
  file_lines = Files.lines
507
528
  file_lines_gz = Files.lines_gz
508
529
  file_md5 = Files.contents_md5
530
+ file_move_to = file_move
509
531
  file_name = Files.file_name
510
532
  file_name_without_extension = Files.file_name_without_extension
511
533
  file_not_exists = Files.not_exists
@@ -136,5 +136,6 @@ def zip_files(base_folder, file_pattern="*.*", target_file=None):
136
136
 
137
137
 
138
138
  # extra function's mappings
139
- file_unzip = unzip_file
140
- folder_zip = zip_folder
139
+ file_unzip = unzip_file
140
+ folder_zip = zip_folder
141
+ zip_bytes_unzip_to_folder = zip_bytes_extract_to_folder
@@ -0,0 +1 @@
1
+ v1.27.0
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "osbot_utils"
3
- version = "v1.25.0"
3
+ version = "v1.27.0"
4
4
  description = "OWASP Security Bot - Utils"
5
5
  authors = ["Dinis Cruz <dinis.cruz@owasp.org>"]
6
6
  license = "MIT"
@@ -1 +0,0 @@
1
- v1.25.0
File without changes