osbot-utils 2.79.0__tar.gz → 2.81.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 (477) hide show
  1. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/PKG-INFO +2 -2
  2. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/README.md +1 -1
  3. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/Type_Safe__Base.py +8 -1
  4. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/methods/Type_Safe__Method.py +31 -30
  5. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/shared/Type_Safe__Validation.py +40 -12
  6. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/steps/Type_Safe__Step__Set_Attr.py +35 -7
  7. osbot_utils-2.81.0/osbot_utils/version +1 -0
  8. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/pyproject.toml +1 -1
  9. osbot_utils-2.79.0/osbot_utils/version +0 -1
  10. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/LICENSE +0 -0
  11. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/__init__.py +0 -0
  12. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/base_classes/Cache_Pickle.py +0 -0
  13. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/base_classes/Kwargs_To_Disk.py +0 -0
  14. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/base_classes/Kwargs_To_Self.py +0 -0
  15. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/base_classes/__init__.py +0 -0
  16. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/context_managers/__init__.py +0 -0
  17. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/context_managers/async_invoke.py +0 -0
  18. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/context_managers/disable_root_loggers.py +0 -0
  19. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/__init__.py +0 -0
  20. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/classes/__init__.py +0 -0
  21. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/classes/singleton.py +0 -0
  22. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/lists/__init__.py +0 -0
  23. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/lists/filter_list.py +0 -0
  24. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/lists/group_by.py +0 -0
  25. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/lists/index_by.py +0 -0
  26. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/methods/__init__.py +0 -0
  27. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/methods/cache.py +0 -0
  28. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/methods/cache_on_function.py +0 -0
  29. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/methods/cache_on_self.py +0 -0
  30. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/methods/cache_on_tmp.py +0 -0
  31. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/methods/capture_exception.py +0 -0
  32. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/methods/capture_status.py +0 -0
  33. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/methods/catch.py +0 -0
  34. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/methods/context.py +0 -0
  35. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/methods/depreciated.py +0 -0
  36. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/methods/function_type_check.py +0 -0
  37. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/methods/obj_as_context.py +0 -0
  38. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/methods/remove_return_value.py +0 -0
  39. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/decorators/methods/required_fields.py +0 -0
  40. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/fluent/Fluent_Dict.py +0 -0
  41. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/fluent/Fluent_List.py +0 -0
  42. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/fluent/__init__.py +0 -0
  43. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/CFormat.py +0 -0
  44. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/CPrint.py +0 -0
  45. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/Dependency_Manager.py +0 -0
  46. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/Dict_To_Attr.py +0 -0
  47. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/Hashicorp_Secrets.py +0 -0
  48. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/Local_Cache.py +0 -0
  49. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/Local_Caches.py +0 -0
  50. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/Obj_Id.py +0 -0
  51. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/Print_Table.py +0 -0
  52. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/Python_Audit.py +0 -0
  53. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/Random_Seed.py +0 -0
  54. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/Str_ASCII.py +0 -0
  55. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/Type_Registry.py +0 -0
  56. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/Zip_Bytes.py +0 -0
  57. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/__init__.py +0 -0
  58. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/Ast.py +0 -0
  59. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/Ast_Base.py +0 -0
  60. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/Ast_Data.py +0 -0
  61. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/Ast_Load.py +0 -0
  62. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/Ast_Merge.py +0 -0
  63. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/Ast_Node.py +0 -0
  64. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/Ast_Visit.py +0 -0
  65. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/Call_Tree.py +0 -0
  66. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/__init__.py +0 -0
  67. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Add.py +0 -0
  68. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Alias.py +0 -0
  69. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_And.py +0 -0
  70. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Argument.py +0 -0
  71. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Arguments.py +0 -0
  72. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Assert.py +0 -0
  73. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Assign.py +0 -0
  74. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Attribute.py +0 -0
  75. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Aug_Assign.py +0 -0
  76. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Bin_Op.py +0 -0
  77. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Bool_Op.py +0 -0
  78. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Break.py +0 -0
  79. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Call.py +0 -0
  80. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Class_Def.py +0 -0
  81. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Compare.py +0 -0
  82. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Comprehension.py +0 -0
  83. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Constant.py +0 -0
  84. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Continue.py +0 -0
  85. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Dict.py +0 -0
  86. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Eq.py +0 -0
  87. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Except_Handler.py +0 -0
  88. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Expr.py +0 -0
  89. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_For.py +0 -0
  90. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Function_Def.py +0 -0
  91. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Generator_Exp.py +0 -0
  92. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Gt.py +0 -0
  93. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_GtE.py +0 -0
  94. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_If.py +0 -0
  95. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_If_Exp.py +0 -0
  96. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Import.py +0 -0
  97. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Import_From.py +0 -0
  98. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_In.py +0 -0
  99. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Is.py +0 -0
  100. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Is_Not.py +0 -0
  101. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Keyword.py +0 -0
  102. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Lambda.py +0 -0
  103. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_List.py +0 -0
  104. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_List_Comp.py +0 -0
  105. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Load.py +0 -0
  106. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Lt.py +0 -0
  107. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_LtE.py +0 -0
  108. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Mod.py +0 -0
  109. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Module.py +0 -0
  110. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Mult.py +0 -0
  111. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Name.py +0 -0
  112. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Not.py +0 -0
  113. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Not_Eq.py +0 -0
  114. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Not_In.py +0 -0
  115. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Or.py +0 -0
  116. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Pass.py +0 -0
  117. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Pow.py +0 -0
  118. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Raise.py +0 -0
  119. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Return.py +0 -0
  120. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Set.py +0 -0
  121. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Slice.py +0 -0
  122. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Starred.py +0 -0
  123. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Store.py +0 -0
  124. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Sub.py +0 -0
  125. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Subscript.py +0 -0
  126. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Try.py +0 -0
  127. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Tuple.py +0 -0
  128. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Unary_Op.py +0 -0
  129. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_While.py +0 -0
  130. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_With.py +0 -0
  131. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_With_Item.py +0 -0
  132. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/Ast_Yield.py +0 -0
  133. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ast/nodes/__init__.py +0 -0
  134. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/cache_on_self/Cache_Controller.py +0 -0
  135. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/cache_on_self/Cache_Key_Generator.py +0 -0
  136. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/cache_on_self/Cache_Metrics.py +0 -0
  137. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/cache_on_self/Cache_On_Self.py +0 -0
  138. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/cache_on_self/Cache_Storage.py +0 -0
  139. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/cache_on_self/__init__.py +0 -0
  140. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Actions.py +0 -0
  141. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Config.py +0 -0
  142. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Data.py +0 -0
  143. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Invoke.py +0 -0
  144. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Row.py +0 -0
  145. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Table.py +0 -0
  146. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/cache_requests/__init__.py +0 -0
  147. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/duration/Duration.py +0 -0
  148. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/duration/__init__.py +0 -0
  149. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/duration/decorators/__init__.py +0 -0
  150. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/duration/decorators/capture_duration.py +0 -0
  151. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/duration/decorators/duration.py +0 -0
  152. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/duration/decorators/print_duration.py +0 -0
  153. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/duration/schemas/Schema__Duration.py +0 -0
  154. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/duration/schemas/__init__.py +0 -0
  155. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/Flow.py +0 -0
  156. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/Task.py +0 -0
  157. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/__init__.py +0 -0
  158. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/actions/Flow__Data.py +0 -0
  159. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/actions/Flow__Events.py +0 -0
  160. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/actions/Flow__Stats__Collector.py +0 -0
  161. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/actions/Task__Stats__Collector.py +0 -0
  162. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/actions/__init__.py +0 -0
  163. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/decorators/__init__.py +0 -0
  164. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/decorators/flow.py +0 -0
  165. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/decorators/task.py +0 -0
  166. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/models/Flow_Run__Config.py +0 -0
  167. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/models/Flow_Run__Event.py +0 -0
  168. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Data.py +0 -0
  169. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Type.py +0 -0
  170. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/models/Schema__Flow__Artifact.py +0 -0
  171. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/models/Schema__Flow__Result.py +0 -0
  172. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/models/__init__.py +0 -0
  173. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/schemas/Schema__Flow.py +0 -0
  174. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Data.py +0 -0
  175. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Event.py +0 -0
  176. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Event__Data.py +0 -0
  177. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Log.py +0 -0
  178. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Stats.py +0 -0
  179. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Status.py +0 -0
  180. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Task__Data.py +0 -0
  181. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/schemas/Schema__Task__Stats.py +0 -0
  182. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/flows/schemas/__init__.py +0 -0
  183. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/generators/Generator_Context_Manager.py +0 -0
  184. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/generators/Generator_Manager.py +0 -0
  185. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/generators/Model__Generator_State.py +0 -0
  186. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/generators/Model__Generator_Target.py +0 -0
  187. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/generators/__init__.py +0 -0
  188. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/__init__.py +0 -0
  189. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/schemas/Schema__Html_Document.py +0 -0
  190. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/schemas/Schema__Html_Node.py +0 -0
  191. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/schemas/Schema__Html_Node__Data.py +0 -0
  192. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/schemas/Schema__Html_Node__Data__Type.py +0 -0
  193. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/schemas/__init__.py +0 -0
  194. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/tags/Tag__Base.py +0 -0
  195. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/tags/Tag__Body.py +0 -0
  196. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/tags/Tag__Div.py +0 -0
  197. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/tags/Tag__H.py +0 -0
  198. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/tags/Tag__HR.py +0 -0
  199. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/tags/Tag__Head.py +0 -0
  200. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/tags/Tag__Html.py +0 -0
  201. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/tags/Tag__Link.py +0 -0
  202. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/tags/Tag__Style.py +0 -0
  203. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/tags/Tag__Text.py +0 -0
  204. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/tags/__init__.py +0 -0
  205. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/transformers/CSS_Dict__To__Css.py +0 -0
  206. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/transformers/Html_Dict__To__Html.py +0 -0
  207. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/transformers/Html_Dict__To__Html_Document.py +0 -0
  208. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/transformers/Html_Dict__To__Html_Tags.py +0 -0
  209. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/transformers/Html_Document__To__Html_Dict.py +0 -0
  210. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/transformers/Html__To__Html_Dict.py +0 -0
  211. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/transformers/Html__To__Html_Document.py +0 -0
  212. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/transformers/Html__To__Html_Tag.py +0 -0
  213. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/transformers/__init__.py +0 -0
  214. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/utils/Html__Query.py +0 -0
  215. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/html/utils/__init__.py +0 -0
  216. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/__init__.py +0 -0
  217. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/actions/LLM_Request__Execute.py +0 -0
  218. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/actions/Type_Safe__Schema_For__LLMs.py +0 -0
  219. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/actions/__init__.py +0 -0
  220. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/builders/LLM_Request__Builder.py +0 -0
  221. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/builders/LLM_Request__Builder__Open_AI.py +0 -0
  222. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/builders/LLM_Request__Factory.py +0 -0
  223. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/builders/__init__.py +0 -0
  224. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/cache/LLM_Cache__Path_Generator.py +0 -0
  225. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/cache/LLM_Request__Cache.py +0 -0
  226. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/cache/LLM_Request__Cache__File_System.py +0 -0
  227. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/cache/LLM_Request__Cache__Storage.py +0 -0
  228. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/cache/Virtual_Storage__Local__Folder.py +0 -0
  229. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/cache/Virtual_Storage__Sqlite.py +0 -0
  230. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/cache/__init__.py +0 -0
  231. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/platforms/__init__.py +0 -0
  232. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/platforms/open_ai/API__LLM__Open_AI.py +0 -0
  233. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/platforms/open_ai/__init__.py +0 -0
  234. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/schemas/Safe_Str__LLM__Model_Name.py +0 -0
  235. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Cache__Index.py +0 -0
  236. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Request.py +0 -0
  237. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Data.py +0 -0
  238. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Function_Call.py +0 -0
  239. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Message__Content.py +0 -0
  240. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Message__Role.py +0 -0
  241. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Response.py +0 -0
  242. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Response__Cache.py +0 -0
  243. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/llms/schemas/__init__.py +0 -0
  244. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/pubsub/Event__Queue.py +0 -0
  245. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/pubsub/PubSub__Client.py +0 -0
  246. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/pubsub/PubSub__Room.py +0 -0
  247. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/pubsub/PubSub__Server.py +0 -0
  248. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/pubsub/PubSub__Sqlite.py +0 -0
  249. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/pubsub/__init__.py +0 -0
  250. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event.py +0 -0
  251. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Connect.py +0 -0
  252. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Disconnect.py +0 -0
  253. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Execute_Method.py +0 -0
  254. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Join_Room.py +0 -0
  255. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Leave_Room.py +0 -0
  256. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Message.py +0 -0
  257. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/pubsub/schemas/Schema__PubSub__Client.py +0 -0
  258. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/pubsub/schemas/__init__.py +0 -0
  259. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/python_compatibility/__init__.py +0 -0
  260. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/python_compatibility/python_3_8.py +0 -0
  261. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/Capture_Sqlite_Error.py +0 -0
  262. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/Sqlite__Cursor.py +0 -0
  263. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/Sqlite__Database.py +0 -0
  264. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/Sqlite__Field.py +0 -0
  265. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/Sqlite__Globals.py +0 -0
  266. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/Sqlite__Table.py +0 -0
  267. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/Sqlite__Table__Create.py +0 -0
  268. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Database__Disk.py +0 -0
  269. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Table.py +0 -0
  270. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/__init__.py +0 -0
  271. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/cache/Schema__Table__Requests.py +0 -0
  272. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests.py +0 -0
  273. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Patch.py +0 -0
  274. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Sqlite.py +0 -0
  275. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Table.py +0 -0
  276. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/cache/Sqlite__DB__Requests.py +0 -0
  277. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/cache/TestCase__Sqlite__Cache__Requests.py +0 -0
  278. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/cache/__init__.py +0 -0
  279. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB.py +0 -0
  280. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Files.py +0 -0
  281. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Graph.py +0 -0
  282. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Json.py +0 -0
  283. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Local.py +0 -0
  284. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/domains/__init__.py +0 -0
  285. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/domains/schemas/__init__.py +0 -0
  286. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/models/Sqlite__Field__Type.py +0 -0
  287. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/models/__init__.py +0 -0
  288. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/sample_data/Sqlite__Sample_Data__Chinook.py +0 -0
  289. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/sample_data/__init__.py +0 -0
  290. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder.py +0 -0
  291. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder__Select.py +0 -0
  292. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/sql_builder/__init__.py +0 -0
  293. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Config.py +0 -0
  294. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Edges.py +0 -0
  295. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Files.py +0 -0
  296. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Nodes.py +0 -0
  297. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/sqlite/tables/__init__.py +0 -0
  298. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ssh/SCP.py +0 -0
  299. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ssh/SSH.py +0 -0
  300. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ssh/SSH__Cache__Requests.py +0 -0
  301. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ssh/SSH__Execute.py +0 -0
  302. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ssh/SSH__Health_Check.py +0 -0
  303. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ssh/SSH__Linux.py +0 -0
  304. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ssh/SSH__Linux__Amazon.py +0 -0
  305. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ssh/SSH__Python.py +0 -0
  306. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ssh/TestCase__SSH.py +0 -0
  307. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/ssh/__init__.py +0 -0
  308. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/trace/Trace_Call.py +0 -0
  309. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/trace/Trace_Call__Config.py +0 -0
  310. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/trace/Trace_Call__Handler.py +0 -0
  311. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/trace/Trace_Call__Print_Lines.py +0 -0
  312. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/trace/Trace_Call__Print_Traces.py +0 -0
  313. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/trace/Trace_Call__Stack.py +0 -0
  314. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/trace/Trace_Call__Stack_Node.py +0 -0
  315. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/trace/Trace_Call__Stats.py +0 -0
  316. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/trace/Trace_Call__View_Model.py +0 -0
  317. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/trace/Trace_Files.py +0 -0
  318. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/trace/__init__.py +0 -0
  319. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/transformers/Dict__To__Toml.py +0 -0
  320. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/xml/Xml__Attribute.py +0 -0
  321. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/xml/Xml__Element.py +0 -0
  322. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/xml/Xml__File.py +0 -0
  323. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/xml/Xml__File__Load.py +0 -0
  324. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/xml/Xml__File__To_Dict.py +0 -0
  325. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/xml/Xml__File__To_Xml.py +0 -0
  326. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/xml/__init__.py +0 -0
  327. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/xml/rss/RSS__Channel.py +0 -0
  328. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/xml/rss/RSS__Enclosure.py +0 -0
  329. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/xml/rss/RSS__Feed.py +0 -0
  330. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/xml/rss/RSS__Feed__Parser.py +0 -0
  331. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/xml/rss/RSS__Image.py +0 -0
  332. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/helpers/xml/rss/RSS__Item.py +0 -0
  333. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/Catch.py +0 -0
  334. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/Custom_Handler_For_Http_Tests.py +0 -0
  335. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/Hook_Method.py +0 -0
  336. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/Log_To_Queue.py +0 -0
  337. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/Log_To_String.py +0 -0
  338. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/Logging.py +0 -0
  339. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/Patch_Print.py +0 -0
  340. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/Profiler.py +0 -0
  341. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/Pytest.py +0 -0
  342. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/Stderr.py +0 -0
  343. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/Stdout.py +0 -0
  344. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/Temp_Env_Vars.py +0 -0
  345. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/Temp_File.py +0 -0
  346. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/Temp_Folder.py +0 -0
  347. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/Temp_Sys_Path.py +0 -0
  348. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/Temp_Web_Server.py +0 -0
  349. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/Temp_Zip.py +0 -0
  350. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/Temp_Zip_In_Memory.py +0 -0
  351. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/Unit_Test.py +0 -0
  352. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/Unzip_File.py +0 -0
  353. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/__init__.py +0 -0
  354. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/performance/Performance_Measure__Session.py +0 -0
  355. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/performance/__init__.py +0 -0
  356. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/performance/models/Model__Performance_Measure__Measurement.py +0 -0
  357. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/performance/models/Model__Performance_Measure__Result.py +0 -0
  358. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/performance/models/__init__.py +0 -0
  359. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/test_data/__init__.py +0 -0
  360. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/testing/test_data/const__test__data__html.py +0 -0
  361. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/Type_Safe.py +0 -0
  362. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/Type_Safe__Primitive.py +0 -0
  363. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/__init__.py +0 -0
  364. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/__init__.py +0 -0
  365. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_float/Safe_Float.py +0 -0
  366. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_float/Safe_Float__Engineering.py +0 -0
  367. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_float/Safe_Float__Money.py +0 -0
  368. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_float/Safe_Float__Percentage_Exact.py +0 -0
  369. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_float/__init__.py +0 -0
  370. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_int/Safe_Int.py +0 -0
  371. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_int/Timestamp_Now.py +0 -0
  372. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_int/__init__.py +0 -0
  373. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/Enum__Safe_Str__Regex_Mode.py +0 -0
  374. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/Safe_Str.py +0 -0
  375. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/__init__.py +0 -0
  376. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/cryptography/__init__.py +0 -0
  377. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/cryptography/hashes/Safe_Str__Hash.py +0 -0
  378. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/cryptography/hashes/Safe_Str__SHA1.py +0 -0
  379. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/cryptography/hashes/Safe_Str__SHA1__Short.py +0 -0
  380. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/cryptography/hashes/__init__.py +0 -0
  381. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/cryptography/nacl/Safe_Str__NaCl__Private_Key.py +0 -0
  382. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/cryptography/nacl/Safe_Str__NaCl__Public_Key.py +0 -0
  383. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/cryptography/nacl/Schema__NaCl__Keys.py +0 -0
  384. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/cryptography/nacl/__init__.py +0 -0
  385. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/filesystem/Safe_Str__File__Name.py +0 -0
  386. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/filesystem/Safe_Str__File__Path.py +0 -0
  387. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/filesystem/__init__.py +0 -0
  388. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/git/Safe_Str__Git__Branch.py +0 -0
  389. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/git/Safe_Str__Git__Ref.py +0 -0
  390. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/git/Safe_Str__Git__Ref_Base.py +0 -0
  391. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/git/Safe_Str__Git__Tag.py +0 -0
  392. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/git/Safe_Str__Version.py +0 -0
  393. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/git/__init__.py +0 -0
  394. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/github/Safe_Str__GitHub__Repo.py +0 -0
  395. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/github/Safe_Str__GitHub__Repo_Name.py +0 -0
  396. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/github/Safe_Str__GitHub__Repo_Owner.py +0 -0
  397. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/github/__init__.py +0 -0
  398. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/http/Safe_Str__Http__Content_Type.py +0 -0
  399. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/http/Safe_Str__Http__ETag.py +0 -0
  400. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/http/Safe_Str__Http__Last_Modified.py +0 -0
  401. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/http/Safe_Str__Http__Text.py +0 -0
  402. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/http/__init__.py +0 -0
  403. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/identifiers/Guid.py +0 -0
  404. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/identifiers/Random_Guid.py +0 -0
  405. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/identifiers/Random_Guid_Short.py +0 -0
  406. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/identifiers/Safe_Id.py +0 -0
  407. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/identifiers/__init__.py +0 -0
  408. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/text/Safe_Str__Text.py +0 -0
  409. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/text/Safe_Str__Text__Dangerous.py +0 -0
  410. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/text/__init__.py +0 -0
  411. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/web/Safe_Str__Html.py +0 -0
  412. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/web/Safe_Str__IP_Address.py +0 -0
  413. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/web/Safe_Str__Url.py +0 -0
  414. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_str/web/__init__.py +0 -0
  415. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_uint/Safe_UInt.py +0 -0
  416. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_uint/Safe_UInt__Byte.py +0 -0
  417. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_uint/Safe_UInt__FileSize.py +0 -0
  418. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_uint/Safe_UInt__Percentage.py +0 -0
  419. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_uint/Safe_UInt__Port.py +0 -0
  420. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/primitives/safe_uint/__init__.py +0 -0
  421. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/__init__.py +0 -0
  422. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/collections/Type_Safe__Dict.py +0 -0
  423. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/collections/Type_Safe__List.py +0 -0
  424. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/collections/Type_Safe__Set.py +0 -0
  425. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/collections/Type_Safe__Tuple.py +0 -0
  426. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/collections/__init__.py +0 -0
  427. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/decorators/__init__.py +0 -0
  428. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/decorators/type_safe.py +0 -0
  429. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/methods/__init__.py +0 -0
  430. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/methods/type_safe_property.py +0 -0
  431. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/shared/Type_Safe__Annotations.py +0 -0
  432. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/shared/Type_Safe__Cache.py +0 -0
  433. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/shared/Type_Safe__Convert.py +0 -0
  434. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/shared/Type_Safe__Json_Compressor.py +0 -0
  435. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/shared/Type_Safe__Json_Compressor__Type_Registry.py +0 -0
  436. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/shared/Type_Safe__Not_Cached.py +0 -0
  437. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/shared/Type_Safe__Raise_Exception.py +0 -0
  438. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/shared/Type_Safe__Shared__Variables.py +0 -0
  439. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/shared/__init__.py +0 -0
  440. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/steps/Type_Safe__Step__Class_Kwargs.py +0 -0
  441. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/steps/Type_Safe__Step__Default_Kwargs.py +0 -0
  442. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/steps/Type_Safe__Step__Default_Value.py +0 -0
  443. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/steps/Type_Safe__Step__From_Json.py +0 -0
  444. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/steps/Type_Safe__Step__Init.py +0 -0
  445. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/type_safe_core/steps/__init__.py +0 -0
  446. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/validators/Type_Safe__Validator.py +0 -0
  447. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/validators/Validator__Max.py +0 -0
  448. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/validators/Validator__Min.py +0 -0
  449. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/validators/Validator__One_Of.py +0 -0
  450. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/validators/Validator__Regex.py +0 -0
  451. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/type_safe/validators/__init__.py +0 -0
  452. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Assert.py +0 -0
  453. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Call_Stack.py +0 -0
  454. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Csv.py +0 -0
  455. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Dev.py +0 -0
  456. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Env.py +0 -0
  457. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Exceptions.py +0 -0
  458. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Files.py +0 -0
  459. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Functions.py +0 -0
  460. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Http.py +0 -0
  461. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Int.py +0 -0
  462. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Json.py +0 -0
  463. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Json_Cache.py +0 -0
  464. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Lists.py +0 -0
  465. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Misc.py +0 -0
  466. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Objects.py +0 -0
  467. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Png.py +0 -0
  468. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Process.py +0 -0
  469. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Python_Logger.py +0 -0
  470. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Regex.py +0 -0
  471. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Status.py +0 -0
  472. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Str.py +0 -0
  473. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Threads.py +0 -0
  474. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Toml.py +0 -0
  475. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Version.py +0 -0
  476. {osbot_utils-2.79.0 → osbot_utils-2.81.0}/osbot_utils/utils/Zip.py +0 -0
  477. {osbot_utils-2.79.0 → osbot_utils-2.81.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.79.0
3
+ Version: 2.81.0
4
4
  Summary: OWASP Security Bot - Utils
5
5
  License: MIT
6
6
  Author: Dinis Cruz
@@ -21,7 +21,7 @@ Description-Content-Type: text/markdown
21
21
 
22
22
  # OSBot-Utils
23
23
 
24
- ![Current Release](https://img.shields.io/badge/release-v2.79.0-blue)
24
+ ![Current Release](https://img.shields.io/badge/release-v2.81.0-blue)
25
25
  ![Python](https://img.shields.io/badge/python-3.8+-green)
26
26
  ![Type-Safe](https://img.shields.io/badge/Type--Safe-✓-brightgreen)
27
27
  ![Caching](https://img.shields.io/badge/Caching-Built--In-orange)
@@ -1,6 +1,6 @@
1
1
  # OSBot-Utils
2
2
 
3
- ![Current Release](https://img.shields.io/badge/release-v2.79.0-blue)
3
+ ![Current Release](https://img.shields.io/badge/release-v2.81.0-blue)
4
4
  ![Python](https://img.shields.io/badge/python-3.8+-green)
5
5
  ![Type-Safe](https://img.shields.io/badge/Type--Safe-✓-brightgreen)
6
6
  ![Caching](https://img.shields.io/badge/Caching-Built--In-orange)
@@ -1,5 +1,5 @@
1
1
  import types
2
- from typing import get_args, Union, Optional, Any, ForwardRef
2
+ from typing import get_args, Union, Optional, Any, ForwardRef, Literal
3
3
  from osbot_utils.helpers.Obj_Id import Obj_Id
4
4
  from osbot_utils.type_safe.type_safe_core.shared.Type_Safe__Cache import type_safe_cache
5
5
 
@@ -13,6 +13,13 @@ class Type_Safe__Base:
13
13
  return True
14
14
  origin = type_safe_cache.get_origin(expected_type)
15
15
  args = get_args(expected_type)
16
+
17
+ if origin is Literal: # Add Literal support
18
+ if item not in args:
19
+ allowed_values = ', '.join(repr(v) for v in args)
20
+ raise ValueError(f"Literal value must be one of {allowed_values}, got {repr(item)}")
21
+ return True
22
+
16
23
  if origin is None:
17
24
  if expected_type in EXACT_TYPE_MATCH:
18
25
  if type(item) is expected_type:
@@ -101,43 +101,44 @@ class Type_Safe__Method:
101
101
  def is_list_type(self, origin_type: Any) -> bool: # Check if type is a List
102
102
  return origin_type is list or origin_type is List # Check against list types
103
103
 
104
- def validate_list_type(self, param_name: str, # Validate list type and contents
105
- param_value: Any, expected_type: Any): # List parameters
106
- if not isinstance(param_value, list): # Check if value is a list
107
- raise ValueError(f"Parameter '{param_name}' expected a list but got {type(param_value)}") # Raise error if not list
108
-
109
- item_type = get_args(expected_type)[0] # Get list item type
110
- item_origin = get_origin(item_type) # Get origin of item type
111
-
112
- if item_origin is dict or item_origin is Dict: # Handle Dict[K, V] items
113
- key_type, value_type = get_args(item_type) # Extract key and value types
114
- for i, item in enumerate(param_value): # Validate each dict in list
115
- if not isinstance(item, dict): # Check item is a dict
116
- raise ValueError(f"List item at index {i} expected dict but got {type(item)}") # Raise error if not dict
117
- for k, v in item.items(): # Validate dict contents
118
- if not isinstance(k, key_type): # Check key type
119
- raise ValueError(f"Dict key '{k}' at index {i} expected type {key_type}, but got {type(k)}") # Raise error for invalid key
120
- if not isinstance(v, value_type): # Check value type
121
- raise ValueError(f"Dict value for key '{k}' at index {i} expected type {value_type}, but got {type(v)}") # Raise error for invalid value
122
- elif item_origin is collections.abc.Callable: # Handle Callable[[...], ...] items
123
- for i, item in enumerate(param_value): # Validate each callable in list
124
- if not callable(item): # Check item is callable
125
- raise ValueError(f"List item at index {i} expected callable but got {type(item)}") # Raise error if not callable
104
+ def validate_list_type(self, param_name: str, # Validate list type and contents
105
+ param_value: Any, expected_type: Any): # List parameters
106
+ if not isinstance(param_value, list): # Check if value is a list
107
+ raise ValueError(f"Parameter '{param_name}' expected a list but got {type(param_value)}") # Raise error if not list
108
+
109
+ item_type = get_args(expected_type)[0] # Get list item type
110
+ item_origin = get_origin(item_type) # Get origin of item type
111
+
112
+ if item_origin is dict or item_origin is Dict: # Handle Dict[K, V] items
113
+ key_type, value_type = get_args(item_type) # Extract key and value types
114
+ for i, item in enumerate(param_value): # Validate each dict in list
115
+ if not isinstance(item, dict): # Check item is a dict
116
+ raise ValueError(f"List item at index {i} expected dict but got {type(item)}") # Raise error if not dict
117
+ if key_type is Any and value_type is Any: # Skip validation if both are Any
118
+ continue # No type checking needed
119
+ for k, v in item.items(): # Validate dict contents
120
+ if key_type is not Any and not isinstance(k, key_type): # Check key type if not Any
121
+ raise ValueError(f"Dict key '{k}' at index {i} expected type {key_type}, but got {type(k)}") # Raise error for invalid key
122
+ if value_type is not Any and not isinstance(v, value_type): # Check value type if not Any
123
+ raise ValueError(f"Dict value for key '{k}' at index {i} expected type {value_type}, but got {type(v)}") # Raise error for invalid value
124
+ elif item_origin is collections.abc.Callable: # Handle Callable[[...], ...] items
125
+ for i, item in enumerate(param_value): # Validate each callable in list
126
+ if not callable(item): # Check item is callable
127
+ raise ValueError(f"List item at index {i} expected callable but got {type(item)}") # Raise error if not callable
126
128
  # Note: Full signature validation would require is_callable_compatible method
127
- elif item_origin is not None: # Handle other subscripted types
129
+ elif item_origin is not None: # Handle other subscripted types
128
130
  raise NotImplementedError(f"Validation for list items with subscripted type"
129
131
  f" '{item_type}' is not yet supported "
130
- f"in parameter '{param_name}'.") # todo: add support for checking for subscripted types
131
- else: # Handle non-subscripted types
132
- for i, item in enumerate(param_value): # Check each list item
133
- if not isinstance(item, item_type): # Validate item type
134
- raise ValueError(f"List item at index {i} expected type {item_type}, but got {type(item)}") # Raise error for invalid item
132
+ f"in parameter '{param_name}'.") # todo: add support for checking for subscripted types
133
+ else: # Handle non-subscripted types
134
+ for i, item in enumerate(param_value): # Check each list item
135
+ if not isinstance(item, item_type): # Validate item type
136
+ raise ValueError(f"List item at index {i} expected type {item_type}, but got {type(item)}") # Raise error for invalid item
135
137
 
136
- def validate_type_parameter(self, param_name: str, param_value: Any, expected_type: Any): # Validate a Type[T] parameter
138
+ def validate_type_parameter(self, param_name: str, param_value: Any, expected_type: Any): # Validate a Type[T] parameter
137
139
  if not isinstance(param_value, type):
138
140
  raise ValueError(f"Parameter '{param_name}' expected a type class but got {type(param_value)}")
139
141
 
140
-
141
142
  type_args = get_args(expected_type) # Extract the T from Type[T]
142
143
  if type_args:
143
144
  required_base = type_args[0] # get direct type (this doesn't handle Forward refs)
@@ -3,7 +3,7 @@ import inspect
3
3
  import types
4
4
  import typing
5
5
  from enum import EnumMeta
6
- from typing import Any, Annotated, Optional, get_args, get_origin, ForwardRef, Type, Dict, _GenericAlias
6
+ from typing import Any, Annotated, Optional, get_args, get_origin, ForwardRef, Type, Dict, _GenericAlias # noqa (_GenericAlias does exist)
7
7
  from osbot_utils.type_safe.Type_Safe__Primitive import Type_Safe__Primitive
8
8
  from osbot_utils.type_safe.type_safe_core.shared.Type_Safe__Annotations import type_safe_annotations
9
9
  from osbot_utils.type_safe.type_safe_core.shared.Type_Safe__Cache import type_safe_cache
@@ -50,12 +50,21 @@ class Type_Safe__Validation:
50
50
  return True
51
51
  if target_type is MagicMock:
52
52
  return True
53
- # if class_full_name(source_type) == 'unittest.mock.MagicMock':
54
- # return True
55
- # if class_full_name(target_type) == 'unittest.mock.MagicMock':
56
- # return True
57
53
  return False
58
54
 
55
+ def obj_is_type_literal_compatible(self, var_type) -> bool: # Check if a Literal type contains only immutable values
56
+ from typing import Literal
57
+
58
+ origin = get_origin(var_type)
59
+ if origin is not Literal:
60
+ return False
61
+
62
+ literal_values = get_args(var_type)
63
+ for value in literal_values:
64
+ if value is not None and type(value) not in (bool, int, float, complex, str, bytes):
65
+ return False
66
+ return True
67
+
59
68
  def obj_is_type_union_compatible(self, var_type, compatible_types):
60
69
  from typing import Union
61
70
 
@@ -92,7 +101,7 @@ class Type_Safe__Validation:
92
101
  return None
93
102
 
94
103
  def check_if__value_is__special_generic_alias(self, value):
95
- from typing import _SpecialGenericAlias # todo see if there is a better way to do this since typing is showing as not having _SpecialGenericAlias (this is to handle case like List, Dict, etc...)
104
+ from typing import _SpecialGenericAlias # noqa todo see if there is a better way to do this since typing is showing as not having _SpecialGenericAlias (this is to handle case like List, Dict, etc...)
96
105
  return value is not None and type(value) is not _SpecialGenericAlias
97
106
 
98
107
  def check_if__type_matches__union_type(self, annotation : Any, # Union type annotation
@@ -163,6 +172,10 @@ class Type_Safe__Validation:
163
172
  if attr_type:
164
173
  origin_attr_type = get_origin(attr_type) # to handle when type definition contains a generic
165
174
 
175
+ if origin_attr_type is typing.Literal: # Add Literal support
176
+ literal_values = get_args(attr_type)
177
+ return value in literal_values
178
+
166
179
  if origin_attr_type is collections.abc.Callable: # Handle Callable types
167
180
  return self.is_callable_compatible(value, attr_type) # ISSUE: THIS IS NEVER CALLED
168
181
 
@@ -286,12 +299,27 @@ class Type_Safe__Validation:
286
299
 
287
300
  # todo: see if need to add cache support to this method (it looks like this method is not called very often)
288
301
  def validate_type_immutability(self, var_name: str, var_type: Any) -> None: # Validates that type is immutable or in supported format
289
- if var_type not in IMMUTABLE_TYPES and var_name.startswith('__') is False: # if var_type is not one of the IMMUTABLE_TYPES or is an __ internal
290
- if self.obj_is_type_union_compatible(var_type, IMMUTABLE_TYPES) is False: # if var_type is not something like Optional[Union[int, str]]
291
- if var_type not in IMMUTABLE_TYPES or type(var_type) not in IMMUTABLE_TYPES:
292
- if not isinstance(var_type, EnumMeta):
293
- if not (isinstance(var_type, type) and issubclass(var_type, (int,str, float))):
294
- type_safe_raise_exception.immutable_type_error(var_name, var_type)
302
+ if var_type in IMMUTABLE_TYPES or var_name.startswith('__'): # if var_type is not one of the IMMUTABLE_TYPES or is an __ internal
303
+ return
304
+ if self.obj_is_type_literal_compatible(var_type):
305
+ return
306
+ if self.obj_is_type_union_compatible(var_type, IMMUTABLE_TYPES) : # if var_type is not something like Optional[Union[int, str]]
307
+ return
308
+ if var_type in IMMUTABLE_TYPES:
309
+ return
310
+ if isinstance(var_type, EnumMeta):
311
+ return
312
+ if isinstance(var_type, type) and issubclass(var_type, (int,str, float)):
313
+ return
314
+ type_safe_raise_exception.immutable_type_error(var_name, var_type)
315
+
316
+ # def validate_type_immutability(self, var_name: str, var_type: Any) -> None: # Validates that type is immutable or in supported format
317
+ # if var_type not in IMMUTABLE_TYPES and var_name.startswith('__') is False: # if var_type is not one of the IMMUTABLE_TYPES or is an __ internal
318
+ # if self.obj_is_type_union_compatible(var_type, IMMUTABLE_TYPES) is False: # if var_type is not something like Optional[Union[int, str]]
319
+ # if var_type not in IMMUTABLE_TYPES or type(var_type) not in IMMUTABLE_TYPES:
320
+ # if not isinstance(var_type, EnumMeta):
321
+ # if not (isinstance(var_type, type) and issubclass(var_type, (int,str, float))):
322
+ # type_safe_raise_exception.immutable_type_error(var_name, var_type)
295
323
 
296
324
  def validate_variable_type(self, var_name, var_type, var_value): # Validate type compatibility
297
325
  if type(var_type) is type and not isinstance(var_value, var_type):
@@ -1,10 +1,10 @@
1
- from typing import get_origin, Annotated, get_args
2
- from osbot_utils.type_safe.Type_Safe__Primitive import Type_Safe__Primitive
3
- from osbot_utils.type_safe.type_safe_core.collections.Type_Safe__List import Type_Safe__List
4
- from osbot_utils.type_safe.type_safe_core.shared.Type_Safe__Cache import type_safe_cache
5
- from osbot_utils.type_safe.type_safe_core.shared.Type_Safe__Convert import type_safe_convert
6
- from osbot_utils.type_safe.type_safe_core.shared.Type_Safe__Validation import type_safe_validation
7
- from osbot_utils.type_safe.validators.Type_Safe__Validator import Type_Safe__Validator
1
+ from typing import get_origin, Annotated, get_args, Literal, Union
2
+ from osbot_utils.type_safe.Type_Safe__Primitive import Type_Safe__Primitive
3
+ from osbot_utils.type_safe.type_safe_core.collections.Type_Safe__List import Type_Safe__List
4
+ from osbot_utils.type_safe.type_safe_core.shared.Type_Safe__Cache import type_safe_cache
5
+ from osbot_utils.type_safe.type_safe_core.shared.Type_Safe__Convert import type_safe_convert
6
+ from osbot_utils.type_safe.type_safe_core.shared.Type_Safe__Validation import type_safe_validation
7
+ from osbot_utils.type_safe.validators.Type_Safe__Validator import Type_Safe__Validator
8
8
 
9
9
  class Type_Safe__Step__Set_Attr:
10
10
 
@@ -20,6 +20,8 @@ class Type_Safe__Step__Set_Attr:
20
20
  else:
21
21
  value = self.resolve_value__from_origin(value)
22
22
 
23
+ self.validate_literal_value(annotations, name, value) # Check Literal value constraints before generic type checking
24
+
23
25
  type_safe_validation.validate_type_compatibility(_self, annotations, name, value)
24
26
  return value
25
27
 
@@ -111,5 +113,31 @@ class Type_Safe__Step__Set_Attr:
111
113
 
112
114
  _super.__setattr__(name, value)
113
115
 
116
+ def validate_literal_value(self, annotations, name, value): # Check if a value is valid for a Literal type annotation
117
+
118
+ annotation = annotations.get(name)
119
+ if not annotation:
120
+ return
121
+
122
+ origin = get_origin(annotation)
123
+
124
+ if origin is Union: # Handle Optional[Literal[...]] by unwrapping the Optional
125
+ args = get_args(annotation)
126
+ if type(None) in args: # Check if it's Optional (Union with None)
127
+ for arg in args: # Find the non-None type
128
+ if arg is not type(None) and get_origin(arg) is Literal:
129
+ allowed_values = get_args(arg) # Found Literal inside Optional
130
+ if value is not None and value not in allowed_values:
131
+ allowed_str = ', '.join(repr(v) for v in allowed_values)
132
+ raise ValueError(f"Invalid value for '{name}': must be one of [{allowed_str}], got {repr(value)}")
133
+ return
134
+
135
+
136
+ elif origin is Literal: # Handle direct Literal[...]
137
+ allowed_values = get_args(annotation)
138
+ if value not in allowed_values:
139
+ allowed_str = ', '.join(repr(v) for v in allowed_values)
140
+ raise ValueError(f"Invalid value for '{name}': must be one of [{allowed_str}], got {repr(value)}")
141
+
114
142
 
115
143
  type_safe_step_set_attr = Type_Safe__Step__Set_Attr()
@@ -0,0 +1 @@
1
+ v2.81.0
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "osbot_utils"
3
- version = "v2.79.0"
3
+ version = "v2.81.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.79.0
File without changes