osbot-utils 2.15.0__tar.gz → 2.17.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 (350) hide show
  1. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/PKG-INFO +2 -2
  2. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/README.md +1 -1
  3. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/Type_Safe__Base.py +3 -0
  4. osbot_utils-2.17.0/osbot_utils/type_safe/Type_Safe__Tuple.py +41 -0
  5. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/shared/Type_Safe__Validation.py +1 -1
  6. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Default_Value.py +14 -7
  7. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/steps/Type_Safe__Step__From_Json.py +4 -0
  8. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Json.py +2 -1
  9. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Objects.py +1 -1
  10. osbot_utils-2.17.0/osbot_utils/version +1 -0
  11. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/pyproject.toml +1 -1
  12. osbot_utils-2.15.0/osbot_utils/version +0 -1
  13. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/LICENSE +0 -0
  14. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/__init__.py +0 -0
  15. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/base_classes/Cache_Pickle.py +0 -0
  16. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/base_classes/Kwargs_To_Disk.py +0 -0
  17. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/base_classes/Kwargs_To_Self.py +0 -0
  18. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/base_classes/__init__.py +0 -0
  19. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/context_managers/__init__.py +0 -0
  20. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/context_managers/async_invoke.py +0 -0
  21. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/context_managers/capture_duration.py +0 -0
  22. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/context_managers/disable_root_loggers.py +0 -0
  23. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/context_managers/print_duration.py +0 -0
  24. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/__init__.py +0 -0
  25. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/classes/__init__.py +0 -0
  26. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/classes/singleton.py +0 -0
  27. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/lists/__init__.py +0 -0
  28. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/lists/filter_list.py +0 -0
  29. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/lists/group_by.py +0 -0
  30. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/lists/index_by.py +0 -0
  31. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/__init__.py +0 -0
  32. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/cache.py +0 -0
  33. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/cache_on_function.py +0 -0
  34. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/cache_on_self.py +0 -0
  35. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/cache_on_tmp.py +0 -0
  36. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/capture_exception.py +0 -0
  37. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/capture_status.py +0 -0
  38. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/catch.py +0 -0
  39. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/context.py +0 -0
  40. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/depreciated.py +0 -0
  41. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/function_type_check.py +0 -0
  42. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/obj_as_context.py +0 -0
  43. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/remove_return_value.py +0 -0
  44. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/required_fields.py +0 -0
  45. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/fluent/Fluent_Dict.py +0 -0
  46. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/fluent/Fluent_List.py +0 -0
  47. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/fluent/__init__.py +0 -0
  48. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/CFormat.py +0 -0
  49. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/CPrint.py +0 -0
  50. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Dependency_Manager.py +0 -0
  51. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Dict_To_Attr.py +0 -0
  52. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Guid.py +0 -0
  53. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Hashicorp_Secrets.py +0 -0
  54. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Local_Cache.py +0 -0
  55. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Local_Caches.py +0 -0
  56. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Obj_Id.py +0 -0
  57. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Print_Table.py +0 -0
  58. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Python_Audit.py +0 -0
  59. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Random_Guid.py +0 -0
  60. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Random_Guid_Short.py +0 -0
  61. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Random_Seed.py +0 -0
  62. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Safe_Id.py +0 -0
  63. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Str_ASCII.py +0 -0
  64. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Timestamp_Now.py +0 -0
  65. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Type_Registry.py +0 -0
  66. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Zip_Bytes.py +0 -0
  67. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/__init__.py +0 -0
  68. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/Ast.py +0 -0
  69. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/Ast_Base.py +0 -0
  70. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/Ast_Data.py +0 -0
  71. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/Ast_Load.py +0 -0
  72. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/Ast_Merge.py +0 -0
  73. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/Ast_Node.py +0 -0
  74. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/Ast_Visit.py +0 -0
  75. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/Call_Tree.py +0 -0
  76. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/__init__.py +0 -0
  77. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Add.py +0 -0
  78. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Alias.py +0 -0
  79. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_And.py +0 -0
  80. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Argument.py +0 -0
  81. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Arguments.py +0 -0
  82. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Assert.py +0 -0
  83. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Assign.py +0 -0
  84. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Attribute.py +0 -0
  85. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Aug_Assign.py +0 -0
  86. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Bin_Op.py +0 -0
  87. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Bool_Op.py +0 -0
  88. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Break.py +0 -0
  89. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Call.py +0 -0
  90. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Class_Def.py +0 -0
  91. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Compare.py +0 -0
  92. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Comprehension.py +0 -0
  93. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Constant.py +0 -0
  94. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Continue.py +0 -0
  95. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Dict.py +0 -0
  96. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Eq.py +0 -0
  97. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Except_Handler.py +0 -0
  98. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Expr.py +0 -0
  99. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_For.py +0 -0
  100. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Function_Def.py +0 -0
  101. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Generator_Exp.py +0 -0
  102. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Gt.py +0 -0
  103. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_GtE.py +0 -0
  104. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_If.py +0 -0
  105. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_If_Exp.py +0 -0
  106. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Import.py +0 -0
  107. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Import_From.py +0 -0
  108. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_In.py +0 -0
  109. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Is.py +0 -0
  110. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Is_Not.py +0 -0
  111. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Keyword.py +0 -0
  112. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Lambda.py +0 -0
  113. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_List.py +0 -0
  114. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_List_Comp.py +0 -0
  115. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Load.py +0 -0
  116. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Lt.py +0 -0
  117. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_LtE.py +0 -0
  118. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Mod.py +0 -0
  119. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Module.py +0 -0
  120. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Mult.py +0 -0
  121. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Name.py +0 -0
  122. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Not.py +0 -0
  123. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Not_Eq.py +0 -0
  124. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Not_In.py +0 -0
  125. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Or.py +0 -0
  126. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Pass.py +0 -0
  127. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Pow.py +0 -0
  128. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Raise.py +0 -0
  129. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Return.py +0 -0
  130. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Set.py +0 -0
  131. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Slice.py +0 -0
  132. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Starred.py +0 -0
  133. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Store.py +0 -0
  134. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Sub.py +0 -0
  135. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Subscript.py +0 -0
  136. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Try.py +0 -0
  137. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Tuple.py +0 -0
  138. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Unary_Op.py +0 -0
  139. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_While.py +0 -0
  140. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_With.py +0 -0
  141. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_With_Item.py +0 -0
  142. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Yield.py +0 -0
  143. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/__init__.py +0 -0
  144. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Actions.py +0 -0
  145. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Config.py +0 -0
  146. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Data.py +0 -0
  147. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Invoke.py +0 -0
  148. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Row.py +0 -0
  149. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Table.py +0 -0
  150. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/cache_requests/__init__.py +0 -0
  151. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/cache_requests/flows/flow__Cache__Requests.py +0 -0
  152. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/Flow.py +0 -0
  153. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/Flow__Events.py +0 -0
  154. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/Task.py +0 -0
  155. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/__init__.py +0 -0
  156. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/decorators/__init__.py +0 -0
  157. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/decorators/flow.py +0 -0
  158. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/decorators/task.py +0 -0
  159. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/models/Flow_Run__Config.py +0 -0
  160. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/models/Flow_Run__Event.py +0 -0
  161. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Data.py +0 -0
  162. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Type.py +0 -0
  163. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/models/__init__.py +0 -0
  164. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/generators/Generator_Context_Manager.py +0 -0
  165. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/generators/Generator_Manager.py +0 -0
  166. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/generators/Model__Generator_State.py +0 -0
  167. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/generators/Model__Generator_Target.py +0 -0
  168. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/generators/__init__.py +0 -0
  169. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Dict_To_Css.py +0 -0
  170. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Dict_To_Html.py +0 -0
  171. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Dict_To_Tags.py +0 -0
  172. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Html_To_Dict.py +0 -0
  173. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Html_To_Tag.py +0 -0
  174. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Tag__Base.py +0 -0
  175. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Tag__Body.py +0 -0
  176. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Tag__Div.py +0 -0
  177. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Tag__H.py +0 -0
  178. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Tag__HR.py +0 -0
  179. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Tag__Head.py +0 -0
  180. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Tag__Html.py +0 -0
  181. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Tag__Link.py +0 -0
  182. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Tag__Style.py +0 -0
  183. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/__init__.py +0 -0
  184. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/Event__Queue.py +0 -0
  185. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/PubSub__Client.py +0 -0
  186. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/PubSub__Room.py +0 -0
  187. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/PubSub__Server.py +0 -0
  188. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/PubSub__Sqlite.py +0 -0
  189. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/__init__.py +0 -0
  190. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event.py +0 -0
  191. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Connect.py +0 -0
  192. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Disconnect.py +0 -0
  193. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Execute_Method.py +0 -0
  194. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Join_Room.py +0 -0
  195. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Leave_Room.py +0 -0
  196. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Message.py +0 -0
  197. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/schemas/Schema__PubSub__Client.py +0 -0
  198. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/schemas/__init__.py +0 -0
  199. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/python_compatibility/__init__.py +0 -0
  200. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/python_compatibility/python_3_8.py +0 -0
  201. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/Capture_Sqlite_Error.py +0 -0
  202. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/Sqlite__Cursor.py +0 -0
  203. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/Sqlite__Database.py +0 -0
  204. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/Sqlite__Field.py +0 -0
  205. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/Sqlite__Globals.py +0 -0
  206. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/Sqlite__Table.py +0 -0
  207. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/Sqlite__Table__Create.py +0 -0
  208. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Database__Disk.py +0 -0
  209. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Table.py +0 -0
  210. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/__init__.py +0 -0
  211. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/cache/Schema__Table__Requests.py +0 -0
  212. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests.py +0 -0
  213. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Patch.py +0 -0
  214. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Sqlite.py +0 -0
  215. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Table.py +0 -0
  216. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/cache/Sqlite__DB__Requests.py +0 -0
  217. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/cache/TestCase__Sqlite__Cache__Requests.py +0 -0
  218. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/cache/__init__.py +0 -0
  219. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB.py +0 -0
  220. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Files.py +0 -0
  221. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Graph.py +0 -0
  222. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Json.py +0 -0
  223. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Local.py +0 -0
  224. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/domains/__init__.py +0 -0
  225. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/domains/schemas/__init__.py +0 -0
  226. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/models/Sqlite__Field__Type.py +0 -0
  227. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/models/__init__.py +0 -0
  228. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/sample_data/Sqlite__Sample_Data__Chinook.py +0 -0
  229. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/sample_data/__init__.py +0 -0
  230. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder.py +0 -0
  231. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder__Select.py +0 -0
  232. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/sql_builder/__init__.py +0 -0
  233. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Config.py +0 -0
  234. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Edges.py +0 -0
  235. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Files.py +0 -0
  236. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Nodes.py +0 -0
  237. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/tables/__init__.py +0 -0
  238. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ssh/SCP.py +0 -0
  239. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ssh/SSH.py +0 -0
  240. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ssh/SSH__Cache__Requests.py +0 -0
  241. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ssh/SSH__Execute.py +0 -0
  242. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ssh/SSH__Health_Check.py +0 -0
  243. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ssh/SSH__Linux.py +0 -0
  244. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ssh/SSH__Linux__Amazon.py +0 -0
  245. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ssh/SSH__Python.py +0 -0
  246. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ssh/TestCase__SSH.py +0 -0
  247. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ssh/__init__.py +0 -0
  248. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/Trace_Call.py +0 -0
  249. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/Trace_Call__Config.py +0 -0
  250. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/Trace_Call__Handler.py +0 -0
  251. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/Trace_Call__Print_Lines.py +0 -0
  252. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/Trace_Call__Print_Traces.py +0 -0
  253. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/Trace_Call__Stack.py +0 -0
  254. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/Trace_Call__Stack_Node.py +0 -0
  255. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/Trace_Call__Stats.py +0 -0
  256. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/Trace_Call__View_Model.py +0 -0
  257. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/Trace_Files.py +0 -0
  258. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/__init__.py +0 -0
  259. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/Xml__Attribute.py +0 -0
  260. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/Xml__Element.py +0 -0
  261. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/Xml__File.py +0 -0
  262. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/Xml__File__Load.py +0 -0
  263. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/Xml__File__To_Dict.py +0 -0
  264. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/Xml__File__To_Xml.py +0 -0
  265. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/__init__.py +0 -0
  266. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/rss/RSS__Channel.py +0 -0
  267. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/rss/RSS__Enclosure.py +0 -0
  268. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/rss/RSS__Feed.py +0 -0
  269. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/rss/RSS__Feed__Parser.py +0 -0
  270. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/rss/RSS__Image.py +0 -0
  271. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/rss/RSS__Item.py +0 -0
  272. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Catch.py +0 -0
  273. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Custom_Handler_For_Http_Tests.py +0 -0
  274. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Duration.py +0 -0
  275. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Hook_Method.py +0 -0
  276. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Log_To_Queue.py +0 -0
  277. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Log_To_String.py +0 -0
  278. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Logging.py +0 -0
  279. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Patch_Print.py +0 -0
  280. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Profiler.py +0 -0
  281. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Pytest.py +0 -0
  282. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Stderr.py +0 -0
  283. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Stdout.py +0 -0
  284. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Temp_Env_Vars.py +0 -0
  285. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Temp_File.py +0 -0
  286. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Temp_Folder.py +0 -0
  287. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Temp_Sys_Path.py +0 -0
  288. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Temp_Web_Server.py +0 -0
  289. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Temp_Zip.py +0 -0
  290. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Temp_Zip_In_Memory.py +0 -0
  291. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Unit_Test.py +0 -0
  292. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Unzip_File.py +0 -0
  293. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/__init__.py +0 -0
  294. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/performance/Performance_Measure__Session.py +0 -0
  295. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/performance/__init__.py +0 -0
  296. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/performance/models/Model__Performance_Measure__Measurement.py +0 -0
  297. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/performance/models/Model__Performance_Measure__Result.py +0 -0
  298. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/performance/models/__init__.py +0 -0
  299. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/Type_Safe.py +0 -0
  300. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/Type_Safe__Dict.py +0 -0
  301. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/Type_Safe__List.py +0 -0
  302. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/Type_Safe__Method.py +0 -0
  303. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/Type_Safe__Set.py +0 -0
  304. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/__init__.py +0 -0
  305. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/decorators/__init__.py +0 -0
  306. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/decorators/type_safe.py +0 -0
  307. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/methods/__init__.py +0 -0
  308. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/methods/type_safe_property.py +0 -0
  309. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/shared/Type_Safe__Annotations.py +0 -0
  310. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/shared/Type_Safe__Cache.py +0 -0
  311. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/shared/Type_Safe__Convert.py +0 -0
  312. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/shared/Type_Safe__Not_Cached.py +0 -0
  313. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/shared/Type_Safe__Raise_Exception.py +0 -0
  314. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/shared/Type_Safe__Shared__Variables.py +0 -0
  315. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/shared/__init__.py +0 -0
  316. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Class_Kwargs.py +0 -0
  317. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Default_Kwargs.py +0 -0
  318. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Init.py +0 -0
  319. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Set_Attr.py +0 -0
  320. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/steps/__init__.py +0 -0
  321. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/validators/Type_Safe__Validator.py +0 -0
  322. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/validators/Validator__Max.py +0 -0
  323. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/validators/Validator__Min.py +0 -0
  324. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/validators/Validator__One_Of.py +0 -0
  325. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/validators/Validator__Regex.py +0 -0
  326. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/validators/__init__.py +0 -0
  327. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Assert.py +0 -0
  328. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Call_Stack.py +0 -0
  329. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Csv.py +0 -0
  330. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Dev.py +0 -0
  331. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Env.py +0 -0
  332. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Exceptions.py +0 -0
  333. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Files.py +0 -0
  334. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Functions.py +0 -0
  335. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Http.py +0 -0
  336. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Int.py +0 -0
  337. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Json_Cache.py +0 -0
  338. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Lists.py +0 -0
  339. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Misc.py +0 -0
  340. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Png.py +0 -0
  341. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Process.py +0 -0
  342. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Python_Logger.py +0 -0
  343. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Regex.py +0 -0
  344. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Status.py +0 -0
  345. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Str.py +0 -0
  346. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Threads.py +0 -0
  347. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Toml.py +0 -0
  348. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Version.py +0 -0
  349. {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Zip.py +0 -0
  350. {osbot_utils-2.15.0 → osbot_utils-2.17.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.15.0
3
+ Version: 2.17.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.15.0-blue)
26
+ ![Current Release](https://img.shields.io/badge/release-v2.17.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.15.0-blue)
5
+ ![Current Release](https://img.shields.io/badge/release-v2.17.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,4 +1,5 @@
1
1
  from typing import get_args, Union, Optional, Any, ForwardRef
2
+ from osbot_utils.helpers.Obj_Id import Obj_Id
2
3
  from osbot_utils.type_safe.shared.Type_Safe__Cache import type_safe_cache
3
4
 
4
5
  EXACT_TYPE_MATCH = (int, float, str, bytes, bool, complex)
@@ -63,6 +64,8 @@ class Type_Safe__Base:
63
64
  if len(args) != len(item):
64
65
  raise TypeError(f"Expected tuple of length {len(args)}, but got {len(item)}")
65
66
  for idx, (elem, elem_type) in enumerate(zip(item, args)):
67
+ if elem_type is Obj_Id: # todo: refactor this out, and figure out better way to handle this kind of de-serialisation
68
+ elem = elem_type(elem)
66
69
  try:
67
70
  self.is_instance_of_type(elem, elem_type)
68
71
  except TypeError as e:
@@ -0,0 +1,41 @@
1
+ from osbot_utils.type_safe.Type_Safe__Base import Type_Safe__Base, type_str
2
+
3
+ class Type_Safe__Tuple(Type_Safe__Base, tuple):
4
+
5
+ def __new__(cls, expected_types, items=None):
6
+ items = items or tuple()
7
+ instance = super().__new__(cls, items)
8
+ instance.expected_types = expected_types
9
+ return instance
10
+
11
+ def __init__(self, expected_types, items=None): # todo: see if we should be assining expected_types to self here
12
+ if items:
13
+ self.validate_items(items)
14
+
15
+ def validate_items(self, items):
16
+ if len(items) != len(self.expected_types):
17
+ raise ValueError(f"Expected {len(self.expected_types)} elements, got {len(items)}")
18
+ for item, expected_type in zip(items, self.expected_types):
19
+ try:
20
+ self.is_instance_of_type(item, expected_type)
21
+ except TypeError as e:
22
+ raise TypeError(f"In Type_Safe__Tuple: Invalid type for item: {e}")
23
+
24
+ def __repr__(self):
25
+ types_str = ', '.join(type_str(t) for t in self.expected_types)
26
+ return f"tuple[{types_str}] with {len(self)} elements"
27
+
28
+ def json(self):
29
+ from osbot_utils.type_safe.Type_Safe import Type_Safe
30
+
31
+ result = []
32
+ for item in self:
33
+ if isinstance(item, Type_Safe):
34
+ result.append(item.json())
35
+ elif isinstance(item, (list, tuple)):
36
+ result.append([x.json() if isinstance(x, Type_Safe) else x for x in item])
37
+ elif isinstance(item, dict):
38
+ result.append({k: v.json() if isinstance(v, Type_Safe) else v for k, v in item.items()})
39
+ else:
40
+ result.append(item)
41
+ return result
@@ -246,7 +246,7 @@ class Type_Safe__Validation:
246
246
  type_safe_raise_exception.immutable_type_error(var_name, var_type)
247
247
 
248
248
  def validate_variable_type(self, var_name, var_type, var_value): # Validate type compatibility
249
- if var_type and not isinstance(var_value, var_type):
249
+ if type(var_type) is type and not isinstance(var_value, var_type):
250
250
  type_safe_raise_exception.type_mismatch_error(var_name, var_type, type(var_value))
251
251
 
252
252
  type_safe_validation = Type_Safe__Validation()
@@ -3,11 +3,12 @@ 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
7
- from osbot_utils.type_safe.shared.Type_Safe__Cache import type_safe_cache
8
- from osbot_utils.utils.Objects import default_value
9
- from osbot_utils.type_safe.Type_Safe__List import Type_Safe__List
10
- from osbot_utils.type_safe.Type_Safe__Dict import Type_Safe__Dict
6
+ from osbot_utils.type_safe.Type_Safe__Set import Type_Safe__Set
7
+ from osbot_utils.type_safe.Type_Safe__Tuple import Type_Safe__Tuple
8
+ from osbot_utils.type_safe.shared.Type_Safe__Cache import type_safe_cache
9
+ from osbot_utils.utils.Objects import default_value
10
+ from osbot_utils.type_safe.Type_Safe__List import Type_Safe__List
11
+ from osbot_utils.type_safe.Type_Safe__Dict import Type_Safe__Dict
11
12
 
12
13
 
13
14
  # Backport implementations of get_args for Python 3.7 # todo: refactor into separate class (focused on past python version compatibility)
@@ -27,6 +28,11 @@ class Type_Safe__Step__Default_Value:
27
28
  def default_value(self, _cls, var_type):
28
29
 
29
30
  origin = type_safe_cache.get_origin(var_type) # todo: refactor this to use the get_origin method
31
+
32
+ if origin is tuple:
33
+ item_types = get_args(var_type)
34
+ return Type_Safe__Tuple(expected_types=item_types)
35
+
30
36
  if origin is type: # Special handling for Type[T] # todo: reuse the get_origin value
31
37
  type_args = get_args(var_type)
32
38
  if type_args:
@@ -73,8 +79,9 @@ class Type_Safe__Step__Default_Value:
73
79
  if forward_name == _cls.__name__: # if the forward reference is to the current class (simple name check)
74
80
  item_type = _cls # set the item_type to the current class
75
81
  return Type_Safe__List(expected_type=item_type) # and used it as expected_type in Type_Safe__List
76
- else:
77
- return default_value(var_type) # for all other cases call default_value, which will try to create a default instance
82
+
83
+
84
+ return default_value(var_type) # for all other cases call default_value, which will try to create a default instance
78
85
 
79
86
 
80
87
  type_safe_step_default_value = Type_Safe__Step__Default_Value()
@@ -53,6 +53,9 @@ class Type_Safe__Step__From_Json:
53
53
  value = self.deserialize_type__using_value(value)
54
54
  elif annotation_origin == type: # Handle type objects inside ForwardRef
55
55
  value = self.deserialize_type__using_value(value)
56
+ if annotation_origin is tuple and isinstance(value, list):
57
+ # item_types = get_args(annotation) # todo: see if we should do type safety here
58
+ value = tuple(value)
56
59
  elif type_safe_annotations.obj_is_attribute_annotation_of_type(_self, key, dict): # handle the case when the value is a dict
57
60
  value = self.deserialize_dict__using_key_value_annotations(_self, key, value)
58
61
  elif type_safe_annotations.obj_is_attribute_annotation_of_type(_self, key, set): # handle the case when the value is a list
@@ -99,6 +102,7 @@ class Type_Safe__Step__From_Json:
99
102
  value = Random_Guid_Short(value)
100
103
  elif type_safe_annotations.obj_is_attribute_annotation_of_type(_self, key, Timestamp_Now): # handle Timestamp_Now
101
104
  value = Timestamp_Now(value)
105
+
102
106
  setattr(_self, key, value) # Direct assignment for primitive types and other structures
103
107
 
104
108
  return _self
@@ -170,7 +170,7 @@ json_file_create_gz = Json.save_file_gz
170
170
  json_file_contents = Json.load_file
171
171
  json_file_contents_gz = Json.load_file_gz
172
172
  json_file_load = Json.load_file
173
- json_file_safe = Json.save_file
173
+ json_file_save = Json.save_file
174
174
  json_from_file = Json.load_file
175
175
  json_load_file = Json.load_file
176
176
  json_load_file_and_delete = Json.load_file_and_delete
@@ -184,6 +184,7 @@ json_lines_loads = Json.loads_json_lines
184
184
  json_parse = Json.loads
185
185
  json_lines_parse = Json.loads_json_lines
186
186
  json_to_bytes = json_dumps_to_bytes
187
+ json_to_file = json_file_save
187
188
  json_to_str = json_dumps
188
189
  json_round_trip = Json.round_trip
189
190
  json_save = Json.save_file
@@ -279,7 +279,7 @@ def serialize_to_dict(obj):
279
279
  return obj.name
280
280
  elif isinstance(obj, type):
281
281
  return f"{obj.__module__}.{obj.__name__}" # save the full type name
282
- elif isinstance(obj, list) or isinstance(obj, List):
282
+ elif isinstance(obj, (list, tuple, List)): # Added tuple here
283
283
  return [serialize_to_dict(item) for item in obj]
284
284
  elif isinstance(obj, set):
285
285
  return [serialize_to_dict(item) for item in obj]
@@ -0,0 +1 @@
1
+ v2.17.0
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "osbot_utils"
3
- version = "v2.15.0"
3
+ version = "v2.17.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.15.0
File without changes