osbot-utils 1.33.0__tar.gz → 1.35.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 (295) hide show
  1. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/PKG-INFO +2 -2
  2. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/README.md +1 -1
  3. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/Local_Caches.py +4 -3
  4. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/Zip_Bytes.py +9 -2
  5. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Data.py +4 -1
  6. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Invoke.py +15 -1
  7. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/Sqlite__Database.py +3 -1
  8. osbot_utils-1.35.0/osbot_utils/helpers/sqlite/domains/Sqlite__DB.py +34 -0
  9. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Files.py +7 -0
  10. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Files.py +6 -0
  11. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Files.py +2 -1
  12. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Misc.py +1 -1
  13. osbot_utils-1.35.0/osbot_utils/version +1 -0
  14. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/pyproject.toml +1 -1
  15. osbot_utils-1.33.0/osbot_utils/version +0 -1
  16. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/LICENSE +0 -0
  17. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/__init__.py +0 -0
  18. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/base_classes/Cache_Pickle.py +0 -0
  19. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/base_classes/Kwargs_To_Disk.py +0 -0
  20. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/base_classes/Kwargs_To_Self.py +0 -0
  21. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/base_classes/Type_Safe.py +0 -0
  22. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/base_classes/Type_Safe__List.py +0 -0
  23. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/base_classes/__init__.py +0 -0
  24. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/context_managers/__init__.py +0 -0
  25. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/context_managers/capture_duration.py +0 -0
  26. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/context_managers/disable_root_loggers.py +0 -0
  27. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/__init__.py +0 -0
  28. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/classes/__init__.py +0 -0
  29. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/classes/singleton.py +0 -0
  30. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/lists/__init__.py +0 -0
  31. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/lists/filter_list.py +0 -0
  32. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/lists/group_by.py +0 -0
  33. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/lists/index_by.py +0 -0
  34. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/methods/__init__.py +0 -0
  35. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/methods/cache.py +0 -0
  36. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/methods/cache_on_function.py +0 -0
  37. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/methods/cache_on_self.py +0 -0
  38. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/methods/cache_on_tmp.py +0 -0
  39. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/methods/capture_exception.py +0 -0
  40. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/methods/capture_status.py +0 -0
  41. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/methods/catch.py +0 -0
  42. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/methods/context.py +0 -0
  43. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/methods/depreciated.py +0 -0
  44. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/methods/function_type_check.py +0 -0
  45. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/methods/obj_as_context.py +0 -0
  46. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/methods/remove_return_value.py +0 -0
  47. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/decorators/methods/required_fields.py +0 -0
  48. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/fluent/Fluent_Dict.py +0 -0
  49. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/fluent/Fluent_List.py +0 -0
  50. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/fluent/__init__.py +0 -0
  51. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/__init__.py +0 -0
  52. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mermaid/Mermaid.py +0 -0
  53. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mermaid/Mermaid__Edge.py +0 -0
  54. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mermaid/Mermaid__Graph.py +0 -0
  55. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mermaid/Mermaid__Node.py +0 -0
  56. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mermaid/Mermaid__Renderer.py +0 -0
  57. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mermaid/configs/Mermaid__Edge__Config.py +0 -0
  58. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mermaid/configs/Mermaid__Node__Config.py +0 -0
  59. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mermaid/configs/Mermaid__Render__Config.py +0 -0
  60. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mermaid/examples/Mermaid_Examples__FlowChart.py +0 -0
  61. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mermaid/models/Mermaid__Diagram_Direction.py +0 -0
  62. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mermaid/models/Mermaid__Diagram__Type.py +0 -0
  63. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mermaid/models/Mermaid__Node__Shape.py +0 -0
  64. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mgraph/MGraph.py +0 -0
  65. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mgraph/MGraph__Config.py +0 -0
  66. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mgraph/MGraph__Data.py +0 -0
  67. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mgraph/MGraph__Edge.py +0 -0
  68. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mgraph/MGraph__Node.py +0 -0
  69. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mgraph/MGraph__Random_Graphs.py +0 -0
  70. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mgraph/MGraph__Serializer.py +0 -0
  71. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mgraph/MGraphs.py +0 -0
  72. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/graphs/mgraph/__init__.py +0 -0
  73. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/CFormat.py +0 -0
  74. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/CPrint.py +0 -0
  75. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/Dict_To_Attr.py +0 -0
  76. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/Hashicorp_Secrets.py +0 -0
  77. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/Local_Cache.py +0 -0
  78. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/Print_Table.py +0 -0
  79. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/Python_Audit.py +0 -0
  80. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/Random_Seed.py +0 -0
  81. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/Type_Registry.py +0 -0
  82. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/__init__.py +0 -0
  83. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/Ast.py +0 -0
  84. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/Ast_Base.py +0 -0
  85. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/Ast_Data.py +0 -0
  86. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/Ast_Load.py +0 -0
  87. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/Ast_Merge.py +0 -0
  88. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/Ast_Node.py +0 -0
  89. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/Ast_Visit.py +0 -0
  90. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/Call_Tree.py +0 -0
  91. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/__init__.py +0 -0
  92. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Add.py +0 -0
  93. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Alias.py +0 -0
  94. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_And.py +0 -0
  95. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Argument.py +0 -0
  96. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Arguments.py +0 -0
  97. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Assert.py +0 -0
  98. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Assign.py +0 -0
  99. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Attribute.py +0 -0
  100. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Aug_Assign.py +0 -0
  101. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Bin_Op.py +0 -0
  102. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Bool_Op.py +0 -0
  103. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Break.py +0 -0
  104. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Call.py +0 -0
  105. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Class_Def.py +0 -0
  106. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Compare.py +0 -0
  107. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Comprehension.py +0 -0
  108. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Constant.py +0 -0
  109. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Continue.py +0 -0
  110. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Dict.py +0 -0
  111. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Eq.py +0 -0
  112. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Except_Handler.py +0 -0
  113. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Expr.py +0 -0
  114. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_For.py +0 -0
  115. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Function_Def.py +0 -0
  116. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Generator_Exp.py +0 -0
  117. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Gt.py +0 -0
  118. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_GtE.py +0 -0
  119. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_If.py +0 -0
  120. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_If_Exp.py +0 -0
  121. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Import.py +0 -0
  122. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Import_From.py +0 -0
  123. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_In.py +0 -0
  124. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Is.py +0 -0
  125. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Is_Not.py +0 -0
  126. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Keyword.py +0 -0
  127. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Lambda.py +0 -0
  128. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_List.py +0 -0
  129. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_List_Comp.py +0 -0
  130. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Load.py +0 -0
  131. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Lt.py +0 -0
  132. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_LtE.py +0 -0
  133. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Mod.py +0 -0
  134. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Module.py +0 -0
  135. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Mult.py +0 -0
  136. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Name.py +0 -0
  137. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Not.py +0 -0
  138. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Not_Eq.py +0 -0
  139. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Not_In.py +0 -0
  140. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Or.py +0 -0
  141. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Pass.py +0 -0
  142. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Pow.py +0 -0
  143. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Raise.py +0 -0
  144. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Return.py +0 -0
  145. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Set.py +0 -0
  146. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Slice.py +0 -0
  147. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Starred.py +0 -0
  148. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Store.py +0 -0
  149. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Sub.py +0 -0
  150. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Subscript.py +0 -0
  151. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Try.py +0 -0
  152. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Tuple.py +0 -0
  153. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Unary_Op.py +0 -0
  154. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_While.py +0 -0
  155. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_With.py +0 -0
  156. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_With_Item.py +0 -0
  157. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/Ast_Yield.py +0 -0
  158. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ast/nodes/__init__.py +0 -0
  159. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Actions.py +0 -0
  160. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Config.py +0 -0
  161. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Row.py +0 -0
  162. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Table.py +0 -0
  163. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/cache_requests/__init__.py +0 -0
  164. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/cache_requests/flows/flow__Cache__Requests.py +0 -0
  165. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/flows/Flow.py +0 -0
  166. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/flows/Task.py +0 -0
  167. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/flows/__init__.py +0 -0
  168. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/html/Dict_To_Css.py +0 -0
  169. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/html/Dict_To_Html.py +0 -0
  170. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/html/Dict_To_Tags.py +0 -0
  171. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/html/Html_To_Dict.py +0 -0
  172. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/html/Html_To_Tag.py +0 -0
  173. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/html/Tag__Base.py +0 -0
  174. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/html/Tag__Body.py +0 -0
  175. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/html/Tag__Div.py +0 -0
  176. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/html/Tag__H.py +0 -0
  177. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/html/Tag__HR.py +0 -0
  178. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/html/Tag__Head.py +0 -0
  179. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/html/Tag__Html.py +0 -0
  180. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/html/Tag__Link.py +0 -0
  181. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/html/Tag__Style.py +0 -0
  182. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/html/__init__.py +0 -0
  183. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/pubsub/Event__Queue.py +0 -0
  184. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/pubsub/PubSub__Client.py +0 -0
  185. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/pubsub/PubSub__Room.py +0 -0
  186. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/pubsub/PubSub__Server.py +0 -0
  187. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/pubsub/PubSub__Sqlite.py +0 -0
  188. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/pubsub/__init__.py +0 -0
  189. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event.py +0 -0
  190. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Connect.py +0 -0
  191. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Disconnect.py +0 -0
  192. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Join_Room.py +0 -0
  193. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Leave_Room.py +0 -0
  194. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Message.py +0 -0
  195. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/pubsub/schemas/Schema__PubSub__Client.py +0 -0
  196. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/pubsub/schemas/__init__.py +0 -0
  197. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/Capture_Sqlite_Error.py +0 -0
  198. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/Sqlite__Cursor.py +0 -0
  199. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/Sqlite__Field.py +0 -0
  200. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/Sqlite__Globals.py +0 -0
  201. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/Sqlite__Table.py +0 -0
  202. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/Sqlite__Table__Create.py +0 -0
  203. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Database__Disk.py +0 -0
  204. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Table.py +0 -0
  205. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/__init__.py +0 -0
  206. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/cache/Schema__Table__Requests.py +0 -0
  207. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests.py +0 -0
  208. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Patch.py +0 -0
  209. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Sqlite.py +0 -0
  210. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Table.py +0 -0
  211. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/cache/Sqlite__DB__Requests.py +0 -0
  212. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/cache/TestCase__Sqlite__Cache__Requests.py +0 -0
  213. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/cache/__init__.py +0 -0
  214. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Graph.py +0 -0
  215. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Json.py +0 -0
  216. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Local.py +0 -0
  217. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/domains/__init__.py +0 -0
  218. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/domains/schemas/__init__.py +0 -0
  219. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/models/Sqlite__Field__Type.py +0 -0
  220. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/models/__init__.py +0 -0
  221. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/sample_data/Sqlite__Sample_Data__Chinook.py +0 -0
  222. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/sample_data/__init__.py +0 -0
  223. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder.py +0 -0
  224. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder__Select.py +0 -0
  225. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/sql_builder/__init__.py +0 -0
  226. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Config.py +0 -0
  227. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Edges.py +0 -0
  228. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Nodes.py +0 -0
  229. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/sqlite/tables/__init__.py +0 -0
  230. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ssh/SCP.py +0 -0
  231. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ssh/SSH.py +0 -0
  232. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ssh/SSH__Cache__Requests.py +0 -0
  233. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ssh/SSH__Execute.py +0 -0
  234. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ssh/SSH__Health_Check.py +0 -0
  235. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ssh/SSH__Linux.py +0 -0
  236. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ssh/SSH__Linux__Amazon.py +0 -0
  237. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ssh/SSH__Python.py +0 -0
  238. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ssh/TestCase__SSH.py +0 -0
  239. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/ssh/__init__.py +0 -0
  240. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/trace/Trace_Call.py +0 -0
  241. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/trace/Trace_Call__Config.py +0 -0
  242. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/trace/Trace_Call__Graph.py +0 -0
  243. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/trace/Trace_Call__Handler.py +0 -0
  244. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/trace/Trace_Call__Print_Lines.py +0 -0
  245. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/trace/Trace_Call__Print_Traces.py +0 -0
  246. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/trace/Trace_Call__Stack.py +0 -0
  247. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/trace/Trace_Call__Stack_Node.py +0 -0
  248. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/trace/Trace_Call__Stats.py +0 -0
  249. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/trace/Trace_Call__View_Model.py +0 -0
  250. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/trace/Trace_Files.py +0 -0
  251. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/helpers/trace/__init__.py +0 -0
  252. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/Catch.py +0 -0
  253. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/Duration.py +0 -0
  254. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/Hook_Method.py +0 -0
  255. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/Log_To_Queue.py +0 -0
  256. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/Log_To_String.py +0 -0
  257. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/Logging.py +0 -0
  258. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/Patch_Print.py +0 -0
  259. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/Profiler.py +0 -0
  260. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/Pytest.py +0 -0
  261. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/Stderr.py +0 -0
  262. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/Stdout.py +0 -0
  263. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/Temp_Env_Vars.py +0 -0
  264. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/Temp_File.py +0 -0
  265. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/Temp_Folder.py +0 -0
  266. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/Temp_Sys_Path.py +0 -0
  267. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/Temp_Web_Server.py +0 -0
  268. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/Temp_Zip.py +0 -0
  269. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/Temp_Zip_In_Memory.py +0 -0
  270. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/Unit_Test.py +0 -0
  271. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/Unzip_File.py +0 -0
  272. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/testing/__init__.py +0 -0
  273. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Assert.py +0 -0
  274. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Call_Stack.py +0 -0
  275. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Csv.py +0 -0
  276. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Dev.py +0 -0
  277. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Env.py +0 -0
  278. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Exceptions.py +0 -0
  279. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Functions.py +0 -0
  280. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Http.py +0 -0
  281. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Int.py +0 -0
  282. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Json.py +0 -0
  283. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Json_Cache.py +0 -0
  284. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Lists.py +0 -0
  285. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Objects.py +0 -0
  286. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Png.py +0 -0
  287. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Process.py +0 -0
  288. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Python_Logger.py +0 -0
  289. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Regex.py +0 -0
  290. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Status.py +0 -0
  291. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Str.py +0 -0
  292. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Toml.py +0 -0
  293. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Version.py +0 -0
  294. {osbot_utils-1.33.0 → osbot_utils-1.35.0}/osbot_utils/utils/Zip.py +0 -0
  295. {osbot_utils-1.33.0 → osbot_utils-1.35.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.33.0
3
+ Version: 1.35.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.33.0-blue)
25
+ ![Current Release](https://img.shields.io/badge/release-v1.35.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.33.0-blue)
5
+ ![Current Release](https://img.shields.io/badge/release-v1.35.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
 
@@ -1,7 +1,7 @@
1
1
  from pathlib import Path
2
2
  from typing import Dict, List
3
3
  from osbot_utils.helpers.Local_Cache import Local_Cache
4
- from osbot_utils.utils.Files import current_temp_folder, path_combine,folder_exists, folder_delete
4
+ from osbot_utils.utils.Files import current_temp_folder, path_combine, folder_exists, folder_delete, file_extension
5
5
  from osbot_utils.utils.Misc import random_text
6
6
 
7
7
 
@@ -41,8 +41,9 @@ class Local_Caches:
41
41
  cache_names = []
42
42
  for f in self.path_local_caches().iterdir():
43
43
  if f.is_file():
44
- cache_name = f.name.replace('.json', '')
45
- cache_names.append(cache_name)
44
+ if file_extension(f.name) == '.json':
45
+ cache_name = f.name.replace('.json', '')
46
+ cache_names.append(cache_name)
46
47
  return cache_names
47
48
 
48
49
  #@cache_on_self
@@ -1,6 +1,7 @@
1
1
  from osbot_utils.base_classes.Type_Safe import Type_Safe
2
2
  from osbot_utils.utils.Dev import pprint
3
3
  from osbot_utils.utils.Files import files_list, file_create_from_bytes, temp_file, parent_folder, parent_folder_create
4
+ from osbot_utils.utils.Misc import random_text
4
5
  from osbot_utils.utils.Regex import list__match_regex, list__match_regexes
5
6
  from osbot_utils.utils.Zip import zip_bytes_empty, zip_bytes__files, zip_bytes__add_file, zip_bytes__add_files, \
6
7
  zip_bytes__replace_files, zip_bytes__replace_file, zip_bytes__file_list, zip_bytes__file, \
@@ -10,8 +11,8 @@ from osbot_utils.utils.Zip import zip_bytes_empty, zip_bytes__files, zip_bytes__
10
11
  class Zip_Bytes(Type_Safe):
11
12
  zip_bytes : bytes = None
12
13
 
13
- def __init__(self):
14
- super().__init__()
14
+ def __init__(self, **kwargs):
15
+ super().__init__(**kwargs)
15
16
  self.zip_bytes = zip_bytes_empty()
16
17
 
17
18
  def __enter__(self):
@@ -44,6 +45,12 @@ class Zip_Bytes(Type_Safe):
44
45
  files_to_add = list__match_regexes(all_files_in_folder, *patterns)
45
46
  return self.add_files__from_disk(base_path, files_to_add)
46
47
 
48
+ def add_random_file(self):
49
+ random_file_name = random_text('file_name' )
50
+ random_file_contents = random_text('file_contents')
51
+ self.add_file(random_file_name, random_file_contents)
52
+ return self
53
+
47
54
  def add_folder__from_disk__with_prefix(self, folder_to_add, path_prefix, *patterns):
48
55
  base_path = folder_to_add
49
56
  all_files_in_folder = files_list(folder_to_add)
@@ -101,5 +101,8 @@ class Cache__Requests__Data(Type_Safe):
101
101
 
102
102
  def response_data_serialize(self, response_data):
103
103
  if self.config.pickle_response:
104
- return pickle_save_to_bytes(response_data)
104
+ try:
105
+ return pickle_save_to_bytes(response_data)
106
+ except: # todo: look at a better way to handle this and any possible side effects (saw this with a couple boto3 class)
107
+ return None
105
108
  return response_data
@@ -1,3 +1,4 @@
1
+ import threading
1
2
  import types
2
3
 
3
4
  from osbot_utils.base_classes.Type_Safe import Type_Safe
@@ -11,6 +12,14 @@ class Cache__Requests__Invoke(Type_Safe):
11
12
  cache_data : Cache__Requests__Data
12
13
  config : Cache__Requests__Config
13
14
  on_invoke_target : types.FunctionType
15
+ cursor_thread_id : int
16
+
17
+ def __init__(self, **kwargs):
18
+ super().__init__(**kwargs)
19
+ self.cursor_thread_id = threading.get_ident() # we need to capture this to make sure we are operating on the same thread
20
+
21
+ def can_operate_in_this_thread(self):
22
+ return self.cursor_thread_id == threading.get_ident()
14
23
 
15
24
  def invoke(self, target, target_args, target_kwargs):
16
25
  return self.invoke_with_cache(target, target_args, target_kwargs)
@@ -22,7 +31,11 @@ class Cache__Requests__Invoke(Type_Safe):
22
31
  raw_response = target(*target_args, **target_kwargs)
23
32
  return self.transform_raw_response(raw_response)
24
33
 
34
+
35
+
25
36
  def invoke_with_cache(self, target, target_args, target_kwargs, request_data=None):
37
+ if self.can_operate_in_this_thread() is False: # make sure we are in the correct thread
38
+ return self.invoke_target(target, target_args, target_kwargs)
26
39
  if self.config.enabled is False:
27
40
  if self.config.cache_only_mode:
28
41
  return None
@@ -43,7 +56,8 @@ class Cache__Requests__Invoke(Type_Safe):
43
56
  try:
44
57
  response_data_obj = self.invoke_target(target, target_args, target_kwargs)
45
58
  response_data = self.cache_data.response_data_serialize(response_data_obj)
46
- self.cache_actions.cache_add(request_data=request_data, response_data=response_data)
59
+ if response_data:
60
+ self.cache_actions.cache_add(request_data=request_data, response_data=response_data)
47
61
  return response_data_obj
48
62
  except Exception as exception:
49
63
  if self.config.capture_exceptions:
@@ -124,10 +124,12 @@ class Sqlite__Database(Kwargs_To_Self):
124
124
  def tables_raw(self):
125
125
  return self.cursor().tables()
126
126
 
127
- def tables_names(self, include_sqlite_master=False):
127
+ def tables_names(self, include_sqlite_master=False, include_indexes=True):
128
128
  table_names = self.table__sqlite_master().select_field_values('name')
129
129
  if include_sqlite_master:
130
130
  table_names.append('sqlite_master')
131
+ if include_indexes is False:
132
+ return [table_name for table_name in table_names if table_name.startswith('idx') is False]
131
133
  return table_names
132
134
 
133
135
  def purge_database(self): # this fells like a better name than vacuum :)
@@ -0,0 +1,34 @@
1
+ from typing import Dict, Type
2
+
3
+ from osbot_utils.decorators.methods.cache_on_self import cache_on_self
4
+ from osbot_utils.helpers.sqlite.Sqlite__Database import Sqlite__Database
5
+ from osbot_utils.helpers.sqlite.tables.Sqlite__Table__Config import Sqlite__Table__Config, SQLITE__TABLE_NAME__CONFIG, \
6
+ Schema__Table__Config
7
+
8
+
9
+ class Sqlite__DB(Sqlite__Database):
10
+
11
+ # methods to override
12
+ def tables_to_add(self): # use this to define the tables that should be automatically created on setup
13
+ return {}
14
+
15
+ def db_not_configured(self):
16
+ return self.tables_names() == []
17
+
18
+ @cache_on_self
19
+ def table_config(self):
20
+ return Sqlite__Table__Config(database=self)
21
+
22
+
23
+
24
+ def tables_names(self, include_sqlite_master=False, include_indexes=False):
25
+ return super().tables_names(include_sqlite_master=include_sqlite_master, include_indexes=include_indexes)
26
+
27
+ def setup(self):
28
+ if self.db_not_configured():
29
+ self.table_config().setup()
30
+ for table_name, row_schema in self.tables_to_add().items():
31
+ table = self.table(table_name)
32
+ table.row_schema = row_schema
33
+ table.create()
34
+ return self
@@ -21,11 +21,18 @@ class Sqlite__DB__Files(Sqlite__DB__Local):
21
21
  def file(self, path, include_contents=False):
22
22
  return self.table_files().file(path, include_contents=include_contents)
23
23
 
24
+ def file_contents(self, path):
25
+ return self.table_files().file_contents(path)
26
+
27
+ def file__with_content(self, path):
28
+ return self.file(path, include_contents=True)
29
+
24
30
  def file_exists(self, path):
25
31
  return self.table_files().file_exists(path)
26
32
 
27
33
  def file_names(self):
28
34
  return self.table_files().select_field_values('path')
35
+
29
36
  @cache_on_self
30
37
  def table_files(self):
31
38
  return Sqlite__Table__Files(database=self).setup()
@@ -67,6 +67,12 @@ class Sqlite__Table__Files(Sqlite__Table):
67
67
  fields = self.field_names_without_content()
68
68
  return self.row(where=dict(path=path), fields = fields)
69
69
 
70
+ def file_contents(self, path):
71
+ fields = ['contents']
72
+ row = self.row(where=dict(path=path), fields = fields)
73
+ if row:
74
+ return row.get('contents')
75
+
70
76
  def file_without_contents(self, path):
71
77
  return self.file(path, include_contents=False)
72
78
 
@@ -270,7 +270,8 @@ class Files:
270
270
  if isinstance(target, Path):
271
271
  return target.is_file()
272
272
  if type(target) is str:
273
- return os.path.isfile(target)
273
+ if len(target) < 4096: # max file size in Linux (handle the cases when the file contents was used as target)
274
+ return os.path.isfile(target)
274
275
  return False
275
276
 
276
277
  @staticmethod
@@ -174,7 +174,7 @@ def is_guid(value):
174
174
  try:
175
175
  uuid_obj = uuid.UUID(value)
176
176
  return str(uuid_obj) == value.lower()
177
- except ValueError:
177
+ except Exception:
178
178
  return False
179
179
 
180
180
 
@@ -0,0 +1 @@
1
+ v1.35.0
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "osbot_utils"
3
- version = "v1.33.0"
3
+ version = "v1.35.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.33.0
File without changes