osbot-utils 2.13.0__tar.gz → 2.15.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 (349) hide show
  1. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/PKG-INFO +2 -2
  2. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/README.md +1 -1
  3. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/xml/Xml__File__Load.py +1 -1
  4. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/Type_Safe__Base.py +2 -3
  5. osbot_utils-2.15.0/osbot_utils/type_safe/Type_Safe__Set.py +32 -0
  6. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/shared/Type_Safe__Convert.py +9 -8
  7. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/shared/Type_Safe__Validation.py +8 -2
  8. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Class_Kwargs.py +7 -8
  9. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Default_Value.py +8 -2
  10. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/steps/Type_Safe__Step__From_Json.py +26 -2
  11. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Objects.py +2 -0
  12. osbot_utils-2.15.0/osbot_utils/version +1 -0
  13. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/pyproject.toml +1 -1
  14. osbot_utils-2.13.0/osbot_utils/version +0 -1
  15. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/LICENSE +0 -0
  16. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/__init__.py +0 -0
  17. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/base_classes/Cache_Pickle.py +0 -0
  18. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/base_classes/Kwargs_To_Disk.py +0 -0
  19. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/base_classes/Kwargs_To_Self.py +0 -0
  20. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/base_classes/__init__.py +0 -0
  21. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/context_managers/__init__.py +0 -0
  22. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/context_managers/async_invoke.py +0 -0
  23. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/context_managers/capture_duration.py +0 -0
  24. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/context_managers/disable_root_loggers.py +0 -0
  25. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/context_managers/print_duration.py +0 -0
  26. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/__init__.py +0 -0
  27. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/classes/__init__.py +0 -0
  28. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/classes/singleton.py +0 -0
  29. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/lists/__init__.py +0 -0
  30. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/lists/filter_list.py +0 -0
  31. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/lists/group_by.py +0 -0
  32. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/lists/index_by.py +0 -0
  33. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/methods/__init__.py +0 -0
  34. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/methods/cache.py +0 -0
  35. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/methods/cache_on_function.py +0 -0
  36. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/methods/cache_on_self.py +0 -0
  37. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/methods/cache_on_tmp.py +0 -0
  38. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/methods/capture_exception.py +0 -0
  39. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/methods/capture_status.py +0 -0
  40. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/methods/catch.py +0 -0
  41. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/methods/context.py +0 -0
  42. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/methods/depreciated.py +0 -0
  43. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/methods/function_type_check.py +0 -0
  44. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/methods/obj_as_context.py +0 -0
  45. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/methods/remove_return_value.py +0 -0
  46. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/decorators/methods/required_fields.py +0 -0
  47. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/fluent/Fluent_Dict.py +0 -0
  48. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/fluent/Fluent_List.py +0 -0
  49. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/fluent/__init__.py +0 -0
  50. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/CFormat.py +0 -0
  51. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/CPrint.py +0 -0
  52. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/Dependency_Manager.py +0 -0
  53. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/Dict_To_Attr.py +0 -0
  54. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/Guid.py +0 -0
  55. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/Hashicorp_Secrets.py +0 -0
  56. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/Local_Cache.py +0 -0
  57. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/Local_Caches.py +0 -0
  58. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/Obj_Id.py +0 -0
  59. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/Print_Table.py +0 -0
  60. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/Python_Audit.py +0 -0
  61. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/Random_Guid.py +0 -0
  62. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/Random_Guid_Short.py +0 -0
  63. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/Random_Seed.py +0 -0
  64. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/Safe_Id.py +0 -0
  65. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/Str_ASCII.py +0 -0
  66. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/Timestamp_Now.py +0 -0
  67. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/Type_Registry.py +0 -0
  68. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/Zip_Bytes.py +0 -0
  69. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/__init__.py +0 -0
  70. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/Ast.py +0 -0
  71. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/Ast_Base.py +0 -0
  72. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/Ast_Data.py +0 -0
  73. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/Ast_Load.py +0 -0
  74. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/Ast_Merge.py +0 -0
  75. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/Ast_Node.py +0 -0
  76. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/Ast_Visit.py +0 -0
  77. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/Call_Tree.py +0 -0
  78. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/__init__.py +0 -0
  79. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Add.py +0 -0
  80. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Alias.py +0 -0
  81. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_And.py +0 -0
  82. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Argument.py +0 -0
  83. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Arguments.py +0 -0
  84. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Assert.py +0 -0
  85. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Assign.py +0 -0
  86. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Attribute.py +0 -0
  87. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Aug_Assign.py +0 -0
  88. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Bin_Op.py +0 -0
  89. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Bool_Op.py +0 -0
  90. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Break.py +0 -0
  91. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Call.py +0 -0
  92. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Class_Def.py +0 -0
  93. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Compare.py +0 -0
  94. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Comprehension.py +0 -0
  95. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Constant.py +0 -0
  96. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Continue.py +0 -0
  97. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Dict.py +0 -0
  98. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Eq.py +0 -0
  99. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Except_Handler.py +0 -0
  100. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Expr.py +0 -0
  101. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_For.py +0 -0
  102. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Function_Def.py +0 -0
  103. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Generator_Exp.py +0 -0
  104. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Gt.py +0 -0
  105. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_GtE.py +0 -0
  106. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_If.py +0 -0
  107. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_If_Exp.py +0 -0
  108. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Import.py +0 -0
  109. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Import_From.py +0 -0
  110. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_In.py +0 -0
  111. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Is.py +0 -0
  112. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Is_Not.py +0 -0
  113. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Keyword.py +0 -0
  114. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Lambda.py +0 -0
  115. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_List.py +0 -0
  116. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_List_Comp.py +0 -0
  117. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Load.py +0 -0
  118. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Lt.py +0 -0
  119. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_LtE.py +0 -0
  120. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Mod.py +0 -0
  121. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Module.py +0 -0
  122. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Mult.py +0 -0
  123. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Name.py +0 -0
  124. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Not.py +0 -0
  125. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Not_Eq.py +0 -0
  126. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Not_In.py +0 -0
  127. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Or.py +0 -0
  128. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Pass.py +0 -0
  129. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Pow.py +0 -0
  130. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Raise.py +0 -0
  131. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Return.py +0 -0
  132. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Set.py +0 -0
  133. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Slice.py +0 -0
  134. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Starred.py +0 -0
  135. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Store.py +0 -0
  136. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Sub.py +0 -0
  137. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Subscript.py +0 -0
  138. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Try.py +0 -0
  139. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Tuple.py +0 -0
  140. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Unary_Op.py +0 -0
  141. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_While.py +0 -0
  142. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_With.py +0 -0
  143. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_With_Item.py +0 -0
  144. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/Ast_Yield.py +0 -0
  145. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ast/nodes/__init__.py +0 -0
  146. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Actions.py +0 -0
  147. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Config.py +0 -0
  148. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Data.py +0 -0
  149. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Invoke.py +0 -0
  150. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Row.py +0 -0
  151. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Table.py +0 -0
  152. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/cache_requests/__init__.py +0 -0
  153. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/cache_requests/flows/flow__Cache__Requests.py +0 -0
  154. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/flows/Flow.py +0 -0
  155. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/flows/Flow__Events.py +0 -0
  156. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/flows/Task.py +0 -0
  157. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/flows/__init__.py +0 -0
  158. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/flows/decorators/__init__.py +0 -0
  159. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/flows/decorators/flow.py +0 -0
  160. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/flows/decorators/task.py +0 -0
  161. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/flows/models/Flow_Run__Config.py +0 -0
  162. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/flows/models/Flow_Run__Event.py +0 -0
  163. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Data.py +0 -0
  164. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Type.py +0 -0
  165. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/flows/models/__init__.py +0 -0
  166. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/generators/Generator_Context_Manager.py +0 -0
  167. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/generators/Generator_Manager.py +0 -0
  168. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/generators/Model__Generator_State.py +0 -0
  169. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/generators/Model__Generator_Target.py +0 -0
  170. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/generators/__init__.py +0 -0
  171. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/html/Dict_To_Css.py +0 -0
  172. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/html/Dict_To_Html.py +0 -0
  173. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/html/Dict_To_Tags.py +0 -0
  174. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/html/Html_To_Dict.py +0 -0
  175. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/html/Html_To_Tag.py +0 -0
  176. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/html/Tag__Base.py +0 -0
  177. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/html/Tag__Body.py +0 -0
  178. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/html/Tag__Div.py +0 -0
  179. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/html/Tag__H.py +0 -0
  180. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/html/Tag__HR.py +0 -0
  181. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/html/Tag__Head.py +0 -0
  182. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/html/Tag__Html.py +0 -0
  183. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/html/Tag__Link.py +0 -0
  184. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/html/Tag__Style.py +0 -0
  185. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/html/__init__.py +0 -0
  186. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/pubsub/Event__Queue.py +0 -0
  187. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/pubsub/PubSub__Client.py +0 -0
  188. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/pubsub/PubSub__Room.py +0 -0
  189. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/pubsub/PubSub__Server.py +0 -0
  190. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/pubsub/PubSub__Sqlite.py +0 -0
  191. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/pubsub/__init__.py +0 -0
  192. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event.py +0 -0
  193. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Connect.py +0 -0
  194. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Disconnect.py +0 -0
  195. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Execute_Method.py +0 -0
  196. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Join_Room.py +0 -0
  197. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Leave_Room.py +0 -0
  198. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Message.py +0 -0
  199. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/pubsub/schemas/Schema__PubSub__Client.py +0 -0
  200. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/pubsub/schemas/__init__.py +0 -0
  201. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/python_compatibility/__init__.py +0 -0
  202. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/python_compatibility/python_3_8.py +0 -0
  203. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/Capture_Sqlite_Error.py +0 -0
  204. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/Sqlite__Cursor.py +0 -0
  205. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/Sqlite__Database.py +0 -0
  206. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/Sqlite__Field.py +0 -0
  207. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/Sqlite__Globals.py +0 -0
  208. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/Sqlite__Table.py +0 -0
  209. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/Sqlite__Table__Create.py +0 -0
  210. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Database__Disk.py +0 -0
  211. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Table.py +0 -0
  212. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/__init__.py +0 -0
  213. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/cache/Schema__Table__Requests.py +0 -0
  214. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests.py +0 -0
  215. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Patch.py +0 -0
  216. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Sqlite.py +0 -0
  217. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Table.py +0 -0
  218. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/cache/Sqlite__DB__Requests.py +0 -0
  219. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/cache/TestCase__Sqlite__Cache__Requests.py +0 -0
  220. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/cache/__init__.py +0 -0
  221. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB.py +0 -0
  222. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Files.py +0 -0
  223. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Graph.py +0 -0
  224. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Json.py +0 -0
  225. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Local.py +0 -0
  226. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/domains/__init__.py +0 -0
  227. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/domains/schemas/__init__.py +0 -0
  228. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/models/Sqlite__Field__Type.py +0 -0
  229. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/models/__init__.py +0 -0
  230. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/sample_data/Sqlite__Sample_Data__Chinook.py +0 -0
  231. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/sample_data/__init__.py +0 -0
  232. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder.py +0 -0
  233. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder__Select.py +0 -0
  234. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/sql_builder/__init__.py +0 -0
  235. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Config.py +0 -0
  236. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Edges.py +0 -0
  237. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Files.py +0 -0
  238. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Nodes.py +0 -0
  239. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/sqlite/tables/__init__.py +0 -0
  240. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ssh/SCP.py +0 -0
  241. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ssh/SSH.py +0 -0
  242. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ssh/SSH__Cache__Requests.py +0 -0
  243. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ssh/SSH__Execute.py +0 -0
  244. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ssh/SSH__Health_Check.py +0 -0
  245. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ssh/SSH__Linux.py +0 -0
  246. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ssh/SSH__Linux__Amazon.py +0 -0
  247. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ssh/SSH__Python.py +0 -0
  248. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ssh/TestCase__SSH.py +0 -0
  249. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/ssh/__init__.py +0 -0
  250. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/trace/Trace_Call.py +0 -0
  251. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/trace/Trace_Call__Config.py +0 -0
  252. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/trace/Trace_Call__Handler.py +0 -0
  253. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/trace/Trace_Call__Print_Lines.py +0 -0
  254. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/trace/Trace_Call__Print_Traces.py +0 -0
  255. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/trace/Trace_Call__Stack.py +0 -0
  256. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/trace/Trace_Call__Stack_Node.py +0 -0
  257. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/trace/Trace_Call__Stats.py +0 -0
  258. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/trace/Trace_Call__View_Model.py +0 -0
  259. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/trace/Trace_Files.py +0 -0
  260. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/trace/__init__.py +0 -0
  261. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/xml/Xml__Attribute.py +0 -0
  262. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/xml/Xml__Element.py +0 -0
  263. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/xml/Xml__File.py +0 -0
  264. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/xml/Xml__File__To_Dict.py +0 -0
  265. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/xml/Xml__File__To_Xml.py +0 -0
  266. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/xml/__init__.py +0 -0
  267. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/xml/rss/RSS__Channel.py +0 -0
  268. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/xml/rss/RSS__Enclosure.py +0 -0
  269. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/xml/rss/RSS__Feed.py +0 -0
  270. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/xml/rss/RSS__Feed__Parser.py +0 -0
  271. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/xml/rss/RSS__Image.py +0 -0
  272. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/helpers/xml/rss/RSS__Item.py +0 -0
  273. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Catch.py +0 -0
  274. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Custom_Handler_For_Http_Tests.py +0 -0
  275. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Duration.py +0 -0
  276. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Hook_Method.py +0 -0
  277. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Log_To_Queue.py +0 -0
  278. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Log_To_String.py +0 -0
  279. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Logging.py +0 -0
  280. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Patch_Print.py +0 -0
  281. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Profiler.py +0 -0
  282. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Pytest.py +0 -0
  283. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Stderr.py +0 -0
  284. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Stdout.py +0 -0
  285. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Temp_Env_Vars.py +0 -0
  286. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Temp_File.py +0 -0
  287. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Temp_Folder.py +0 -0
  288. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Temp_Sys_Path.py +0 -0
  289. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Temp_Web_Server.py +0 -0
  290. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Temp_Zip.py +0 -0
  291. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Temp_Zip_In_Memory.py +0 -0
  292. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Unit_Test.py +0 -0
  293. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/Unzip_File.py +0 -0
  294. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/__init__.py +0 -0
  295. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/performance/Performance_Measure__Session.py +0 -0
  296. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/performance/__init__.py +0 -0
  297. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/performance/models/Model__Performance_Measure__Measurement.py +0 -0
  298. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/performance/models/Model__Performance_Measure__Result.py +0 -0
  299. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/testing/performance/models/__init__.py +0 -0
  300. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/Type_Safe.py +0 -0
  301. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/Type_Safe__Dict.py +0 -0
  302. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/Type_Safe__List.py +0 -0
  303. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/Type_Safe__Method.py +0 -0
  304. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/__init__.py +0 -0
  305. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/decorators/__init__.py +0 -0
  306. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/decorators/type_safe.py +0 -0
  307. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/methods/__init__.py +0 -0
  308. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/methods/type_safe_property.py +0 -0
  309. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/shared/Type_Safe__Annotations.py +0 -0
  310. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/shared/Type_Safe__Cache.py +0 -0
  311. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/shared/Type_Safe__Not_Cached.py +0 -0
  312. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/shared/Type_Safe__Raise_Exception.py +0 -0
  313. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/shared/Type_Safe__Shared__Variables.py +0 -0
  314. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/shared/__init__.py +0 -0
  315. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Default_Kwargs.py +0 -0
  316. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Init.py +0 -0
  317. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Set_Attr.py +0 -0
  318. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/steps/__init__.py +0 -0
  319. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/validators/Type_Safe__Validator.py +0 -0
  320. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/validators/Validator__Max.py +0 -0
  321. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/validators/Validator__Min.py +0 -0
  322. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/validators/Validator__One_Of.py +0 -0
  323. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/validators/Validator__Regex.py +0 -0
  324. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/type_safe/validators/__init__.py +0 -0
  325. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Assert.py +0 -0
  326. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Call_Stack.py +0 -0
  327. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Csv.py +0 -0
  328. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Dev.py +0 -0
  329. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Env.py +0 -0
  330. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Exceptions.py +0 -0
  331. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Files.py +0 -0
  332. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Functions.py +0 -0
  333. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Http.py +0 -0
  334. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Int.py +0 -0
  335. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Json.py +0 -0
  336. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Json_Cache.py +0 -0
  337. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Lists.py +0 -0
  338. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Misc.py +0 -0
  339. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Png.py +0 -0
  340. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Process.py +0 -0
  341. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Python_Logger.py +0 -0
  342. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Regex.py +0 -0
  343. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Status.py +0 -0
  344. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Str.py +0 -0
  345. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Threads.py +0 -0
  346. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Toml.py +0 -0
  347. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Version.py +0 -0
  348. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/Zip.py +0 -0
  349. {osbot_utils-2.13.0 → osbot_utils-2.15.0}/osbot_utils/utils/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: osbot_utils
3
- Version: 2.13.0
3
+ Version: 2.15.0
4
4
  Summary: OWASP Security Bot - Utils
5
5
  License: MIT
6
6
  Author: Dinis Cruz
@@ -23,7 +23,7 @@ Description-Content-Type: text/markdown
23
23
 
24
24
  Powerful Python util methods and classes that simplify common apis and tasks.
25
25
 
26
- ![Current Release](https://img.shields.io/badge/release-v2.13.0-blue)
26
+ ![Current Release](https://img.shields.io/badge/release-v2.15.0-blue)
27
27
  [![codecov](https://codecov.io/gh/owasp-sbot/OSBot-Utils/graph/badge.svg?token=GNVW0COX1N)](https://codecov.io/gh/owasp-sbot/OSBot-Utils)
28
28
 
29
29
 
@@ -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-v2.13.0-blue)
5
+ ![Current Release](https://img.shields.io/badge/release-v2.15.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 io import StringIO
2
2
  from typing import List, Union, Dict
3
3
  from xml.etree.ElementTree import iterparse, Element, fromstring, ParseError
4
- from osbot_utils.type_safe.Type_Safe import Type_Safe
4
+ from osbot_utils.type_safe.Type_Safe import Type_Safe
5
5
  from osbot_utils.helpers.xml.Xml__Attribute import Xml__Attribute
6
6
  from osbot_utils.helpers.xml.Xml__Element import XML__Element
7
7
  from osbot_utils.helpers.xml.Xml__File import Xml__File
@@ -1,6 +1,5 @@
1
- from typing import get_args, Union, Optional, Any, ForwardRef
2
-
3
- from osbot_utils.type_safe.shared.Type_Safe__Cache import type_safe_cache
1
+ from typing import get_args, Union, Optional, Any, ForwardRef
2
+ from osbot_utils.type_safe.shared.Type_Safe__Cache import type_safe_cache
4
3
 
5
4
  EXACT_TYPE_MATCH = (int, float, str, bytes, bool, complex)
6
5
 
@@ -0,0 +1,32 @@
1
+ from osbot_utils.type_safe.Type_Safe__Base import Type_Safe__Base, type_str
2
+
3
+ class Type_Safe__Set(Type_Safe__Base, set):
4
+ def __init__(self, expected_type, *args):
5
+ super().__init__(*args)
6
+ self.expected_type = expected_type
7
+
8
+ def __repr__(self):
9
+ expected_type_name = type_str(self.expected_type)
10
+ return f"set[{expected_type_name}] with {len(self)} elements"
11
+
12
+ def add(self, item):
13
+ try:
14
+ self.is_instance_of_type(item, self.expected_type)
15
+ except TypeError as e:
16
+ raise TypeError(f"In Type_Safe__Set: Invalid type for item: {e}")
17
+ super().add(item)
18
+
19
+ def json(self):
20
+ from osbot_utils.type_safe.Type_Safe import Type_Safe
21
+
22
+ result = []
23
+ for item in self:
24
+ if isinstance(item, Type_Safe):
25
+ result.append(item.json())
26
+ elif isinstance(item, (list, tuple, set)):
27
+ result.append([x.json() if isinstance(x, Type_Safe) else x for x in item])
28
+ elif isinstance(item, dict):
29
+ result.append({k: v.json() if isinstance(v, Type_Safe) else v for k, v in item.items()})
30
+ else:
31
+ result.append(item)
32
+ return result
@@ -32,16 +32,17 @@ class Type_Safe__Convert:
32
32
  if attribute_annotation:
33
33
  origin = type_safe_cache.get_origin(attribute_annotation) # Add handling for Type[T] annotations
34
34
  if origin is type and isinstance(value, str):
35
- try: # Convert string path to actual type
36
- if len(value.rsplit('.', 1)) > 1:
37
- module_name, class_name = value.rsplit('.', 1)
38
- module = __import__(module_name, fromlist=[class_name])
39
- return getattr(module, class_name)
40
- except (ValueError, ImportError, AttributeError) as e:
41
- raise ValueError(f"Could not convert '{value}' to type: {str(e)}")
42
-
35
+ return self.get_class_from_class_name(value)
43
36
  if attribute_annotation in TYPE_SAFE__CONVERT_VALUE__SUPPORTED_TYPES: # for now hard-coding this to just these types until we understand the side effects
44
37
  return attribute_annotation(value)
45
38
  return value
46
39
 
40
+ def get_class_from_class_name(self, value):
41
+ try: # Convert string path to actual type
42
+ if len(value.rsplit('.', 1)) > 1:
43
+ module_name, class_name = value.rsplit('.', 1)
44
+ module = __import__(module_name, fromlist=[class_name])
45
+ return getattr(module, class_name)
46
+ except (ValueError, ImportError, AttributeError) as e:
47
+ raise ValueError(f"Could not convert '{value}' to type: {str(e)}")
47
48
  type_safe_convert = Type_Safe__Convert()
@@ -159,6 +159,9 @@ class Type_Safe__Validation:
159
159
  attr_type = annotations.get(attr_name)
160
160
  if attr_type:
161
161
  origin_attr_type = get_origin(attr_type) # to handle when type definition contains a generic
162
+ if origin_attr_type is set:
163
+ if type(value) is list:
164
+ return True # if the attribute is a set and the value is a list, then they are compatible
162
165
  if origin_attr_type is type: # Add handling for Type[T]
163
166
  type_arg = get_args(attr_type)[0] # Get T from Type[T]
164
167
  if type_arg == value:
@@ -220,7 +223,7 @@ class Type_Safe__Validation:
220
223
  ) -> None: # Raises ValueError if invalid
221
224
 
222
225
  direct_type_match = type_safe_validation.check_if__type_matches__obj_annotation__for_attr(target, name, value)
223
- union_type_match = type_safe_validation.check_if__type_matches__obj_annotation__for_union_and_annotated(target, name, value)
226
+ union_type_match = type_safe_validation.check_if__type_matches__obj_annotation__for_union_and_annotated(target, name, value)
224
227
 
225
228
  is_invalid = (direct_type_match is False and union_type_match is None) or \
226
229
  (direct_type_match is None and union_type_match is False) or \
@@ -228,7 +231,10 @@ class Type_Safe__Validation:
228
231
 
229
232
  if is_invalid:
230
233
  expected_type = annotations.get(name)
231
- actual_type = type(value)
234
+ if type(value) is type:
235
+ actual_type = value
236
+ else:
237
+ actual_type = type(value)
232
238
  raise ValueError(f"Invalid type for attribute '{name}'. Expected '{expected_type}' but got '{actual_type}'")
233
239
 
234
240
  # todo: see if need to add cache support to this method (it looks like this method is not called very often)
@@ -1,11 +1,10 @@
1
- from typing import Dict, Any, Type
2
-
3
- from osbot_utils.helpers.Obj_Id import Obj_Id
4
- from osbot_utils.helpers.Random_Guid import Random_Guid
5
- from osbot_utils.type_safe.shared.Type_Safe__Cache import Type_Safe__Cache, type_safe_cache
6
- from osbot_utils.type_safe.shared.Type_Safe__Shared__Variables import IMMUTABLE_TYPES
7
- from osbot_utils.type_safe.shared.Type_Safe__Validation import type_safe_validation
8
- from osbot_utils.type_safe.steps.Type_Safe__Step__Default_Value import type_safe_step_default_value
1
+ from typing import Dict, Any, Type
2
+ from osbot_utils.helpers.Obj_Id import Obj_Id
3
+ from osbot_utils.helpers.Random_Guid import Random_Guid
4
+ from osbot_utils.type_safe.shared.Type_Safe__Cache import Type_Safe__Cache, type_safe_cache
5
+ from osbot_utils.type_safe.shared.Type_Safe__Shared__Variables import IMMUTABLE_TYPES
6
+ from osbot_utils.type_safe.shared.Type_Safe__Validation import type_safe_validation
7
+ from osbot_utils.type_safe.steps.Type_Safe__Step__Default_Value import type_safe_step_default_value
9
8
 
10
9
 
11
10
 
@@ -3,6 +3,7 @@ import sys
3
3
  import inspect
4
4
  import typing
5
5
 
6
+ from osbot_utils.type_safe.Type_Safe__Set import Type_Safe__Set
6
7
  from osbot_utils.type_safe.shared.Type_Safe__Cache import type_safe_cache
7
8
  from osbot_utils.utils.Objects import default_value
8
9
  from osbot_utils.type_safe.Type_Safe__List import Type_Safe__List
@@ -40,12 +41,17 @@ class Type_Safe__Step__Default_Value:
40
41
  return set()
41
42
 
42
43
  if origin is set:
43
- return set() # todo: add Type_Safe__Set
44
+ item_type = get_args(var_type)[0]
45
+ if isinstance(item_type, ForwardRef):
46
+ forward_name = item_type.__forward_arg__
47
+ if forward_name == _cls.__name__:
48
+ item_type = _cls
49
+ return Type_Safe__Set(expected_type=item_type)
44
50
 
45
51
  if var_type is typing.Dict:
46
52
  return {}
47
53
 
48
- if origin is dict: # e.g. Dict[key_type, value_type]
54
+ if origin is dict: # e.g. Dict[key_type, value_type]
49
55
  key_type, value_type = get_args(var_type)
50
56
  if isinstance(key_type, ForwardRef): # Handle forward references on key_type ---
51
57
  forward_name = key_type.__forward_arg__
@@ -6,8 +6,10 @@ from osbot_utils.type_safe.Type_Safe import Type_Safe
6
6
  from osbot_utils.type_safe.Type_Safe__List import Type_Safe__List
7
7
  from osbot_utils.helpers.Random_Guid import Random_Guid
8
8
  from osbot_utils.helpers.Random_Guid_Short import Random_Guid_Short
9
+ from osbot_utils.type_safe.Type_Safe__Set import Type_Safe__Set
9
10
  from osbot_utils.type_safe.shared.Type_Safe__Annotations import type_safe_annotations
10
11
  from osbot_utils.type_safe.shared.Type_Safe__Cache import type_safe_cache
12
+ from osbot_utils.type_safe.shared.Type_Safe__Convert import type_safe_convert
11
13
  from osbot_utils.utils.Objects import enum_from_value
12
14
  from osbot_utils.helpers.Safe_Id import Safe_Id
13
15
  from osbot_utils.helpers.Timestamp_Now import Timestamp_Now
@@ -43,10 +45,29 @@ class Type_Safe__Step__From_Json:
43
45
  raise ValueError(f"Attribute '{key}' not found in '{_self.__class__.__name__}'")
44
46
  else:
45
47
  continue
46
- if type_safe_annotations.obj_attribute_annotation(_self, key) == type: # Handle type objects
48
+ annotation = type_safe_annotations.obj_attribute_annotation(_self, key)
49
+ annotation_origin = type_safe_cache.get_origin(annotation)
50
+
51
+
52
+ if annotation == type: # Handle type objects
53
+ value = self.deserialize_type__using_value(value)
54
+ elif annotation_origin == type: # Handle type objects inside ForwardRef
47
55
  value = self.deserialize_type__using_value(value)
48
56
  elif type_safe_annotations.obj_is_attribute_annotation_of_type(_self, key, dict): # handle the case when the value is a dict
49
57
  value = self.deserialize_dict__using_key_value_annotations(_self, key, value)
58
+ elif type_safe_annotations.obj_is_attribute_annotation_of_type(_self, key, set): # handle the case when the value is a list
59
+ attribute_annotation = type_safe_annotations.obj_attribute_annotation(_self, key) # get the annotation for this variable
60
+ attribute_annotation_args = get_args(attribute_annotation)
61
+ if attribute_annotation_args:
62
+ expected_type = get_args(attribute_annotation)[0] # get the first arg (which is the type)
63
+ type_safe_set = Type_Safe__Set(expected_type) # create a new instance of Type_Safe__List
64
+ for item in value: # next we need to convert all items (to make sure they all match the type)
65
+ if type(item) is dict:
66
+ new_item = expected_type(**item) # create new object
67
+ else:
68
+ new_item = expected_type(item)
69
+ type_safe_set.add(new_item) # and add it to the new type_safe_list obejct
70
+ value = type_safe_set # todo: refactor out this create list code, maybe to an deserialize_from_list method
50
71
  elif type_safe_annotations.obj_is_attribute_annotation_of_type(_self, key, list): # handle the case when the value is a list
51
72
  attribute_annotation = type_safe_annotations.obj_attribute_annotation(_self, key) # get the annotation for this variable
52
73
  attribute_annotation_args = get_args(attribute_annotation)
@@ -116,7 +137,10 @@ class Type_Safe__Step__From_Json:
116
137
 
117
138
  if type(dict_value) == value_class: # if the value is already the target, then just use it
118
139
  new__dict_value = dict_value
119
- elif issubclass(value_class, Type_Safe):
140
+ elif isinstance(value_class, type) and issubclass(value_class, Type_Safe):
141
+ if 'node_type' in dict_value:
142
+ value_class = type_safe_convert.get_class_from_class_name(dict_value['node_type'])
143
+
120
144
  new__dict_value = self.deserialize_from_dict(value_class(), dict_value)
121
145
  elif value_class is Any:
122
146
  new__dict_value = dict_value
@@ -281,6 +281,8 @@ def serialize_to_dict(obj):
281
281
  return f"{obj.__module__}.{obj.__name__}" # save the full type name
282
282
  elif isinstance(obj, list) or isinstance(obj, List):
283
283
  return [serialize_to_dict(item) for item in obj]
284
+ elif isinstance(obj, set):
285
+ return [serialize_to_dict(item) for item in obj]
284
286
  elif isinstance(obj, dict):
285
287
  return {key: serialize_to_dict(value) for key, value in obj.items()}
286
288
  elif hasattr(obj, "__dict__"):
@@ -0,0 +1 @@
1
+ v2.15.0
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "osbot_utils"
3
- version = "v2.13.0"
3
+ version = "v2.15.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
- v2.13.0
File without changes