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.
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/PKG-INFO +2 -2
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/README.md +1 -1
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/Type_Safe__Base.py +3 -0
- osbot_utils-2.17.0/osbot_utils/type_safe/Type_Safe__Tuple.py +41 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/shared/Type_Safe__Validation.py +1 -1
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Default_Value.py +14 -7
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/steps/Type_Safe__Step__From_Json.py +4 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Json.py +2 -1
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Objects.py +1 -1
- osbot_utils-2.17.0/osbot_utils/version +1 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/pyproject.toml +1 -1
- osbot_utils-2.15.0/osbot_utils/version +0 -1
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/LICENSE +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/base_classes/Cache_Pickle.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/base_classes/Kwargs_To_Disk.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/base_classes/Kwargs_To_Self.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/base_classes/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/context_managers/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/context_managers/async_invoke.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/context_managers/capture_duration.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/context_managers/disable_root_loggers.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/context_managers/print_duration.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/classes/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/classes/singleton.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/lists/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/lists/filter_list.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/lists/group_by.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/lists/index_by.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/cache.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/cache_on_function.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/cache_on_self.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/cache_on_tmp.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/capture_exception.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/capture_status.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/catch.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/context.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/depreciated.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/function_type_check.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/obj_as_context.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/remove_return_value.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/required_fields.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/fluent/Fluent_Dict.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/fluent/Fluent_List.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/fluent/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/CFormat.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/CPrint.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Dependency_Manager.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Dict_To_Attr.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Guid.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Hashicorp_Secrets.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Local_Cache.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Local_Caches.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Obj_Id.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Print_Table.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Python_Audit.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Random_Guid.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Random_Guid_Short.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Random_Seed.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Safe_Id.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Str_ASCII.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Timestamp_Now.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Type_Registry.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/Zip_Bytes.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/Ast.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/Ast_Base.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/Ast_Data.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/Ast_Load.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/Ast_Merge.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/Ast_Node.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/Ast_Visit.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/Call_Tree.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Add.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Alias.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_And.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Argument.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Arguments.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Assert.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Assign.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Attribute.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Aug_Assign.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Bin_Op.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Bool_Op.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Break.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Call.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Class_Def.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Compare.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Comprehension.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Constant.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Continue.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Dict.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Eq.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Except_Handler.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Expr.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_For.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Function_Def.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Generator_Exp.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Gt.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_GtE.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_If.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_If_Exp.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Import.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Import_From.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_In.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Is.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Is_Not.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Keyword.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Lambda.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_List.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_List_Comp.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Load.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Lt.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_LtE.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Mod.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Module.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Mult.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Name.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Not.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Not_Eq.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Not_In.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Or.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Pass.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Pow.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Raise.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Return.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Set.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Slice.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Starred.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Store.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Sub.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Subscript.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Try.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Tuple.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Unary_Op.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_While.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_With.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_With_Item.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Yield.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Actions.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Config.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Data.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Invoke.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Row.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Table.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/cache_requests/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/cache_requests/flows/flow__Cache__Requests.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/Flow.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/Flow__Events.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/Task.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/decorators/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/decorators/flow.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/decorators/task.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/models/Flow_Run__Config.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/models/Flow_Run__Event.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Data.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Type.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/models/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/generators/Generator_Context_Manager.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/generators/Generator_Manager.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/generators/Model__Generator_State.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/generators/Model__Generator_Target.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/generators/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Dict_To_Css.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Dict_To_Html.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Dict_To_Tags.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Html_To_Dict.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Html_To_Tag.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Tag__Base.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Tag__Body.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Tag__Div.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Tag__H.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Tag__HR.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Tag__Head.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Tag__Html.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Tag__Link.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/Tag__Style.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/html/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/Event__Queue.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/PubSub__Client.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/PubSub__Room.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/PubSub__Server.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/PubSub__Sqlite.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Connect.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Disconnect.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Execute_Method.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Join_Room.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Leave_Room.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Message.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/schemas/Schema__PubSub__Client.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/pubsub/schemas/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/python_compatibility/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/python_compatibility/python_3_8.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/Capture_Sqlite_Error.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/Sqlite__Cursor.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/Sqlite__Database.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/Sqlite__Field.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/Sqlite__Globals.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/Sqlite__Table.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/Sqlite__Table__Create.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Database__Disk.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Table.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/cache/Schema__Table__Requests.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Patch.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Sqlite.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Table.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/cache/Sqlite__DB__Requests.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/cache/TestCase__Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/cache/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Files.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Graph.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Json.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Local.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/domains/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/domains/schemas/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/models/Sqlite__Field__Type.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/models/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/sample_data/Sqlite__Sample_Data__Chinook.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/sample_data/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder__Select.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/sql_builder/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Config.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Edges.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Files.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Nodes.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/sqlite/tables/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ssh/SCP.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ssh/SSH.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ssh/SSH__Cache__Requests.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ssh/SSH__Execute.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ssh/SSH__Health_Check.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ssh/SSH__Linux.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ssh/SSH__Linux__Amazon.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ssh/SSH__Python.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ssh/TestCase__SSH.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ssh/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/Trace_Call.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/Trace_Call__Config.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/Trace_Call__Handler.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/Trace_Call__Print_Lines.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/Trace_Call__Print_Traces.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/Trace_Call__Stack.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/Trace_Call__Stack_Node.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/Trace_Call__Stats.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/Trace_Call__View_Model.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/Trace_Files.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/trace/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/Xml__Attribute.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/Xml__Element.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/Xml__File.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/Xml__File__Load.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/Xml__File__To_Dict.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/Xml__File__To_Xml.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/rss/RSS__Channel.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/rss/RSS__Enclosure.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/rss/RSS__Feed.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/rss/RSS__Feed__Parser.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/rss/RSS__Image.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/xml/rss/RSS__Item.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Catch.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Custom_Handler_For_Http_Tests.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Duration.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Hook_Method.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Log_To_Queue.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Log_To_String.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Logging.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Patch_Print.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Profiler.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Pytest.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Stderr.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Stdout.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Temp_Env_Vars.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Temp_File.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Temp_Folder.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Temp_Sys_Path.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Temp_Web_Server.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Temp_Zip.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Temp_Zip_In_Memory.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Unit_Test.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/Unzip_File.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/performance/Performance_Measure__Session.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/performance/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/performance/models/Model__Performance_Measure__Measurement.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/performance/models/Model__Performance_Measure__Result.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/testing/performance/models/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/Type_Safe.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/Type_Safe__Dict.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/Type_Safe__List.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/Type_Safe__Method.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/Type_Safe__Set.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/decorators/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/decorators/type_safe.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/methods/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/methods/type_safe_property.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/shared/Type_Safe__Annotations.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/shared/Type_Safe__Cache.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/shared/Type_Safe__Convert.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/shared/Type_Safe__Not_Cached.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/shared/Type_Safe__Raise_Exception.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/shared/Type_Safe__Shared__Variables.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/shared/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Class_Kwargs.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Default_Kwargs.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Init.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Set_Attr.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/steps/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/validators/Type_Safe__Validator.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/validators/Validator__Max.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/validators/Validator__Min.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/validators/Validator__One_Of.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/validators/Validator__Regex.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/validators/__init__.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Assert.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Call_Stack.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Csv.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Dev.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Env.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Exceptions.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Files.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Functions.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Http.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Int.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Json_Cache.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Lists.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Misc.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Png.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Process.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Python_Logger.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Regex.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Status.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Str.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Threads.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Toml.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Version.py +0 -0
- {osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/utils/Zip.py +0 -0
- {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.
|
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
|
-

|
27
27
|
[](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
|
-

|
6
6
|
[](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
|
{osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/shared/Type_Safe__Validation.py
RENAMED
@@ -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
|
7
|
-
from osbot_utils.type_safe.
|
8
|
-
from osbot_utils.
|
9
|
-
from osbot_utils.
|
10
|
-
from osbot_utils.type_safe.
|
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
|
-
|
77
|
-
|
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()
|
{osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/type_safe/steps/Type_Safe__Step__From_Json.py
RENAMED
@@ -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
|
-
|
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
|
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 +0,0 @@
|
|
1
|
-
v2.15.0
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/context_managers/disable_root_loggers.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/cache_on_function.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/capture_exception.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/function_type_check.py
RENAMED
File without changes
|
File without changes
|
{osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/decorators/methods/remove_return_value.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Comprehension.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Except_Handler.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/ast/nodes/Ast_Generator_Exp.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Row.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/models/Flow_Run__Config.py
RENAMED
File without changes
|
{osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/models/Flow_Run__Event.py
RENAMED
File without changes
|
{osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Data.py
RENAMED
File without changes
|
{osbot_utils-2.15.0 → osbot_utils-2.17.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Type.py
RENAMED
File without changes
|
File without changes
|
File without changes
|