osbot-utils 2.14.0__tar.gz → 2.16.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.14.0 → osbot_utils-2.16.0}/PKG-INFO +2 -2
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/README.md +1 -1
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/xml/Xml__File__Load.py +1 -1
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/Type_Safe__Base.py +2 -3
- osbot_utils-2.16.0/osbot_utils/type_safe/Type_Safe__Set.py +32 -0
- osbot_utils-2.16.0/osbot_utils/type_safe/Type_Safe__Tuple.py +41 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/shared/Type_Safe__Validation.py +4 -1
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Default_Value.py +21 -8
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/steps/Type_Safe__Step__From_Json.py +20 -2
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Objects.py +3 -1
- osbot_utils-2.16.0/osbot_utils/version +1 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/pyproject.toml +1 -1
- osbot_utils-2.14.0/osbot_utils/version +0 -1
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/LICENSE +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/base_classes/Cache_Pickle.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/base_classes/Kwargs_To_Disk.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/base_classes/Kwargs_To_Self.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/base_classes/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/context_managers/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/context_managers/async_invoke.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/context_managers/capture_duration.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/context_managers/disable_root_loggers.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/context_managers/print_duration.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/classes/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/classes/singleton.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/lists/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/lists/filter_list.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/lists/group_by.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/lists/index_by.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/methods/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/methods/cache.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/methods/cache_on_function.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/methods/cache_on_self.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/methods/cache_on_tmp.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/methods/capture_exception.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/methods/capture_status.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/methods/catch.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/methods/context.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/methods/depreciated.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/methods/function_type_check.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/methods/obj_as_context.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/methods/remove_return_value.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/methods/required_fields.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/fluent/Fluent_Dict.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/fluent/Fluent_List.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/fluent/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/CFormat.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/CPrint.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/Dependency_Manager.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/Dict_To_Attr.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/Guid.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/Hashicorp_Secrets.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/Local_Cache.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/Local_Caches.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/Obj_Id.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/Print_Table.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/Python_Audit.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/Random_Guid.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/Random_Guid_Short.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/Random_Seed.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/Safe_Id.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/Str_ASCII.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/Timestamp_Now.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/Type_Registry.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/Zip_Bytes.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/Ast.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/Ast_Base.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/Ast_Data.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/Ast_Load.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/Ast_Merge.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/Ast_Node.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/Ast_Visit.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/Call_Tree.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Add.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Alias.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_And.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Argument.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Arguments.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Assert.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Assign.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Attribute.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Aug_Assign.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Bin_Op.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Bool_Op.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Break.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Call.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Class_Def.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Compare.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Comprehension.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Constant.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Continue.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Dict.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Eq.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Except_Handler.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Expr.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_For.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Function_Def.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Generator_Exp.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Gt.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_GtE.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_If.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_If_Exp.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Import.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Import_From.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_In.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Is.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Is_Not.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Keyword.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Lambda.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_List.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_List_Comp.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Load.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Lt.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_LtE.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Mod.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Module.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Mult.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Name.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Not.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Not_Eq.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Not_In.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Or.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Pass.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Pow.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Raise.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Return.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Set.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Slice.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Starred.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Store.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Sub.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Subscript.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Try.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Tuple.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Unary_Op.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_While.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_With.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_With_Item.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/Ast_Yield.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ast/nodes/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Actions.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Config.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Data.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Invoke.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Row.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Table.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/cache_requests/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/cache_requests/flows/flow__Cache__Requests.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/flows/Flow.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/flows/Flow__Events.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/flows/Task.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/flows/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/flows/decorators/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/flows/decorators/flow.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/flows/decorators/task.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/flows/models/Flow_Run__Config.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/flows/models/Flow_Run__Event.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Data.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Type.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/flows/models/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/generators/Generator_Context_Manager.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/generators/Generator_Manager.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/generators/Model__Generator_State.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/generators/Model__Generator_Target.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/generators/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/html/Dict_To_Css.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/html/Dict_To_Html.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/html/Dict_To_Tags.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/html/Html_To_Dict.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/html/Html_To_Tag.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/html/Tag__Base.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/html/Tag__Body.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/html/Tag__Div.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/html/Tag__H.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/html/Tag__HR.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/html/Tag__Head.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/html/Tag__Html.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/html/Tag__Link.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/html/Tag__Style.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/html/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/pubsub/Event__Queue.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/pubsub/PubSub__Client.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/pubsub/PubSub__Room.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/pubsub/PubSub__Server.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/pubsub/PubSub__Sqlite.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/pubsub/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Connect.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Disconnect.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Execute_Method.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Join_Room.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Leave_Room.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Message.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/pubsub/schemas/Schema__PubSub__Client.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/pubsub/schemas/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/python_compatibility/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/python_compatibility/python_3_8.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/Capture_Sqlite_Error.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/Sqlite__Cursor.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/Sqlite__Database.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/Sqlite__Field.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/Sqlite__Globals.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/Sqlite__Table.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/Sqlite__Table__Create.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Database__Disk.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Table.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/cache/Schema__Table__Requests.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Patch.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Sqlite.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Table.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/cache/Sqlite__DB__Requests.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/cache/TestCase__Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/cache/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Files.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Graph.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Json.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Local.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/domains/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/domains/schemas/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/models/Sqlite__Field__Type.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/models/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/sample_data/Sqlite__Sample_Data__Chinook.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/sample_data/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder__Select.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/sql_builder/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Config.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Edges.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Files.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Nodes.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/sqlite/tables/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ssh/SCP.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ssh/SSH.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ssh/SSH__Cache__Requests.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ssh/SSH__Execute.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ssh/SSH__Health_Check.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ssh/SSH__Linux.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ssh/SSH__Linux__Amazon.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ssh/SSH__Python.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ssh/TestCase__SSH.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/ssh/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/trace/Trace_Call.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/trace/Trace_Call__Config.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/trace/Trace_Call__Handler.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/trace/Trace_Call__Print_Lines.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/trace/Trace_Call__Print_Traces.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/trace/Trace_Call__Stack.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/trace/Trace_Call__Stack_Node.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/trace/Trace_Call__Stats.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/trace/Trace_Call__View_Model.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/trace/Trace_Files.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/trace/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/xml/Xml__Attribute.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/xml/Xml__Element.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/xml/Xml__File.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/xml/Xml__File__To_Dict.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/xml/Xml__File__To_Xml.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/xml/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/xml/rss/RSS__Channel.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/xml/rss/RSS__Enclosure.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/xml/rss/RSS__Feed.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/xml/rss/RSS__Feed__Parser.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/xml/rss/RSS__Image.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/helpers/xml/rss/RSS__Item.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Catch.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Custom_Handler_For_Http_Tests.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Duration.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Hook_Method.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Log_To_Queue.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Log_To_String.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Logging.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Patch_Print.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Profiler.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Pytest.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Stderr.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Stdout.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Temp_Env_Vars.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Temp_File.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Temp_Folder.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Temp_Sys_Path.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Temp_Web_Server.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Temp_Zip.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Temp_Zip_In_Memory.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Unit_Test.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/Unzip_File.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/performance/Performance_Measure__Session.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/performance/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/performance/models/Model__Performance_Measure__Measurement.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/performance/models/Model__Performance_Measure__Result.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/testing/performance/models/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/Type_Safe.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/Type_Safe__Dict.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/Type_Safe__List.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/Type_Safe__Method.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/decorators/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/decorators/type_safe.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/methods/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/methods/type_safe_property.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/shared/Type_Safe__Annotations.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/shared/Type_Safe__Cache.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/shared/Type_Safe__Convert.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/shared/Type_Safe__Not_Cached.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/shared/Type_Safe__Raise_Exception.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/shared/Type_Safe__Shared__Variables.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/shared/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Class_Kwargs.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Default_Kwargs.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Init.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Set_Attr.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/steps/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/validators/Type_Safe__Validator.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/validators/Validator__Max.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/validators/Validator__Min.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/validators/Validator__One_Of.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/validators/Validator__Regex.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/validators/__init__.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Assert.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Call_Stack.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Csv.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Dev.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Env.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Exceptions.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Files.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Functions.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Http.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Int.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Json.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Json_Cache.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Lists.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Misc.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Png.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Process.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Python_Logger.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Regex.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Status.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Str.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Threads.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Toml.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Version.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/utils/Zip.py +0 -0
- {osbot_utils-2.14.0 → osbot_utils-2.16.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.16.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,7 +1,7 @@
|
|
1
1
|
from io import StringIO
|
2
2
|
from typing import List, Union, Dict
|
3
3
|
from xml.etree.ElementTree import iterparse, Element, fromstring, ParseError
|
4
|
-
from osbot_utils.type_safe.Type_Safe
|
4
|
+
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
5
5
|
from osbot_utils.helpers.xml.Xml__Attribute import Xml__Attribute
|
6
6
|
from osbot_utils.helpers.xml.Xml__Element import XML__Element
|
7
7
|
from osbot_utils.helpers.xml.Xml__File import Xml__File
|
@@ -1,6 +1,5 @@
|
|
1
|
-
from typing
|
2
|
-
|
3
|
-
from osbot_utils.type_safe.shared.Type_Safe__Cache import type_safe_cache
|
1
|
+
from typing import get_args, Union, Optional, Any, ForwardRef
|
2
|
+
from osbot_utils.type_safe.shared.Type_Safe__Cache import type_safe_cache
|
4
3
|
|
5
4
|
EXACT_TYPE_MATCH = (int, float, str, bytes, bool, complex)
|
6
5
|
|
@@ -0,0 +1,32 @@
|
|
1
|
+
from osbot_utils.type_safe.Type_Safe__Base import Type_Safe__Base, type_str
|
2
|
+
|
3
|
+
class Type_Safe__Set(Type_Safe__Base, set):
|
4
|
+
def __init__(self, expected_type, *args):
|
5
|
+
super().__init__(*args)
|
6
|
+
self.expected_type = expected_type
|
7
|
+
|
8
|
+
def __repr__(self):
|
9
|
+
expected_type_name = type_str(self.expected_type)
|
10
|
+
return f"set[{expected_type_name}] with {len(self)} elements"
|
11
|
+
|
12
|
+
def add(self, item):
|
13
|
+
try:
|
14
|
+
self.is_instance_of_type(item, self.expected_type)
|
15
|
+
except TypeError as e:
|
16
|
+
raise TypeError(f"In Type_Safe__Set: Invalid type for item: {e}")
|
17
|
+
super().add(item)
|
18
|
+
|
19
|
+
def json(self):
|
20
|
+
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
21
|
+
|
22
|
+
result = []
|
23
|
+
for item in self:
|
24
|
+
if isinstance(item, Type_Safe):
|
25
|
+
result.append(item.json())
|
26
|
+
elif isinstance(item, (list, tuple, set)):
|
27
|
+
result.append([x.json() if isinstance(x, Type_Safe) else x for x in item])
|
28
|
+
elif isinstance(item, dict):
|
29
|
+
result.append({k: v.json() if isinstance(v, Type_Safe) else v for k, v in item.items()})
|
30
|
+
else:
|
31
|
+
result.append(item)
|
32
|
+
return result
|
@@ -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.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/shared/Type_Safe__Validation.py
RENAMED
@@ -159,6 +159,9 @@ class Type_Safe__Validation:
|
|
159
159
|
attr_type = annotations.get(attr_name)
|
160
160
|
if attr_type:
|
161
161
|
origin_attr_type = get_origin(attr_type) # to handle when type definition contains a generic
|
162
|
+
if origin_attr_type is set:
|
163
|
+
if type(value) is list:
|
164
|
+
return True # if the attribute is a set and the value is a list, then they are compatible
|
162
165
|
if origin_attr_type is type: # Add handling for Type[T]
|
163
166
|
type_arg = get_args(attr_type)[0] # Get T from Type[T]
|
164
167
|
if type_arg == value:
|
@@ -220,7 +223,7 @@ class Type_Safe__Validation:
|
|
220
223
|
) -> None: # Raises ValueError if invalid
|
221
224
|
|
222
225
|
direct_type_match = type_safe_validation.check_if__type_matches__obj_annotation__for_attr(target, name, value)
|
223
|
-
union_type_match
|
226
|
+
union_type_match = type_safe_validation.check_if__type_matches__obj_annotation__for_union_and_annotated(target, name, value)
|
224
227
|
|
225
228
|
is_invalid = (direct_type_match is False and union_type_match is None) or \
|
226
229
|
(direct_type_match is None and union_type_match is False) or \
|
@@ -3,10 +3,12 @@ import sys
|
|
3
3
|
import inspect
|
4
4
|
import typing
|
5
5
|
|
6
|
-
from osbot_utils.type_safe.
|
7
|
-
from osbot_utils.
|
8
|
-
from osbot_utils.type_safe.
|
9
|
-
from osbot_utils.
|
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
|
10
12
|
|
11
13
|
|
12
14
|
# Backport implementations of get_args for Python 3.7 # todo: refactor into separate class (focused on past python version compatibility)
|
@@ -26,6 +28,11 @@ class Type_Safe__Step__Default_Value:
|
|
26
28
|
def default_value(self, _cls, var_type):
|
27
29
|
|
28
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
|
+
|
29
36
|
if origin is type: # Special handling for Type[T] # todo: reuse the get_origin value
|
30
37
|
type_args = get_args(var_type)
|
31
38
|
if type_args:
|
@@ -40,12 +47,17 @@ class Type_Safe__Step__Default_Value:
|
|
40
47
|
return set()
|
41
48
|
|
42
49
|
if origin is set:
|
43
|
-
|
50
|
+
item_type = get_args(var_type)[0]
|
51
|
+
if isinstance(item_type, ForwardRef):
|
52
|
+
forward_name = item_type.__forward_arg__
|
53
|
+
if forward_name == _cls.__name__:
|
54
|
+
item_type = _cls
|
55
|
+
return Type_Safe__Set(expected_type=item_type)
|
44
56
|
|
45
57
|
if var_type is typing.Dict:
|
46
58
|
return {}
|
47
59
|
|
48
|
-
if origin is dict:
|
60
|
+
if origin is dict: # e.g. Dict[key_type, value_type]
|
49
61
|
key_type, value_type = get_args(var_type)
|
50
62
|
if isinstance(key_type, ForwardRef): # Handle forward references on key_type ---
|
51
63
|
forward_name = key_type.__forward_arg__
|
@@ -67,8 +79,9 @@ class Type_Safe__Step__Default_Value:
|
|
67
79
|
if forward_name == _cls.__name__: # if the forward reference is to the current class (simple name check)
|
68
80
|
item_type = _cls # set the item_type to the current class
|
69
81
|
return Type_Safe__List(expected_type=item_type) # and used it as expected_type in Type_Safe__List
|
70
|
-
|
71
|
-
|
82
|
+
|
83
|
+
|
84
|
+
return default_value(var_type) # for all other cases call default_value, which will try to create a default instance
|
72
85
|
|
73
86
|
|
74
87
|
type_safe_step_default_value = Type_Safe__Step__Default_Value()
|
{osbot_utils-2.14.0 → osbot_utils-2.16.0}/osbot_utils/type_safe/steps/Type_Safe__Step__From_Json.py
RENAMED
@@ -6,9 +6,10 @@ from osbot_utils.type_safe.Type_Safe import Type_Safe
|
|
6
6
|
from osbot_utils.type_safe.Type_Safe__List import Type_Safe__List
|
7
7
|
from osbot_utils.helpers.Random_Guid import Random_Guid
|
8
8
|
from osbot_utils.helpers.Random_Guid_Short import Random_Guid_Short
|
9
|
+
from osbot_utils.type_safe.Type_Safe__Set import Type_Safe__Set
|
9
10
|
from osbot_utils.type_safe.shared.Type_Safe__Annotations import type_safe_annotations
|
10
11
|
from osbot_utils.type_safe.shared.Type_Safe__Cache import type_safe_cache
|
11
|
-
from osbot_utils.type_safe.shared.Type_Safe__Convert
|
12
|
+
from osbot_utils.type_safe.shared.Type_Safe__Convert import type_safe_convert
|
12
13
|
from osbot_utils.utils.Objects import enum_from_value
|
13
14
|
from osbot_utils.helpers.Safe_Id import Safe_Id
|
14
15
|
from osbot_utils.helpers.Timestamp_Now import Timestamp_Now
|
@@ -52,8 +53,24 @@ class Type_Safe__Step__From_Json:
|
|
52
53
|
value = self.deserialize_type__using_value(value)
|
53
54
|
elif annotation_origin == type: # Handle type objects inside ForwardRef
|
54
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)
|
55
59
|
elif type_safe_annotations.obj_is_attribute_annotation_of_type(_self, key, dict): # handle the case when the value is a dict
|
56
60
|
value = self.deserialize_dict__using_key_value_annotations(_self, key, value)
|
61
|
+
elif type_safe_annotations.obj_is_attribute_annotation_of_type(_self, key, set): # handle the case when the value is a list
|
62
|
+
attribute_annotation = type_safe_annotations.obj_attribute_annotation(_self, key) # get the annotation for this variable
|
63
|
+
attribute_annotation_args = get_args(attribute_annotation)
|
64
|
+
if attribute_annotation_args:
|
65
|
+
expected_type = get_args(attribute_annotation)[0] # get the first arg (which is the type)
|
66
|
+
type_safe_set = Type_Safe__Set(expected_type) # create a new instance of Type_Safe__List
|
67
|
+
for item in value: # next we need to convert all items (to make sure they all match the type)
|
68
|
+
if type(item) is dict:
|
69
|
+
new_item = expected_type(**item) # create new object
|
70
|
+
else:
|
71
|
+
new_item = expected_type(item)
|
72
|
+
type_safe_set.add(new_item) # and add it to the new type_safe_list obejct
|
73
|
+
value = type_safe_set # todo: refactor out this create list code, maybe to an deserialize_from_list method
|
57
74
|
elif type_safe_annotations.obj_is_attribute_annotation_of_type(_self, key, list): # handle the case when the value is a list
|
58
75
|
attribute_annotation = type_safe_annotations.obj_attribute_annotation(_self, key) # get the annotation for this variable
|
59
76
|
attribute_annotation_args = get_args(attribute_annotation)
|
@@ -85,6 +102,7 @@ class Type_Safe__Step__From_Json:
|
|
85
102
|
value = Random_Guid_Short(value)
|
86
103
|
elif type_safe_annotations.obj_is_attribute_annotation_of_type(_self, key, Timestamp_Now): # handle Timestamp_Now
|
87
104
|
value = Timestamp_Now(value)
|
105
|
+
|
88
106
|
setattr(_self, key, value) # Direct assignment for primitive types and other structures
|
89
107
|
|
90
108
|
return _self
|
@@ -123,7 +141,7 @@ class Type_Safe__Step__From_Json:
|
|
123
141
|
|
124
142
|
if type(dict_value) == value_class: # if the value is already the target, then just use it
|
125
143
|
new__dict_value = dict_value
|
126
|
-
elif issubclass(value_class, Type_Safe):
|
144
|
+
elif isinstance(value_class, type) and issubclass(value_class, Type_Safe):
|
127
145
|
if 'node_type' in dict_value:
|
128
146
|
value_class = type_safe_convert.get_class_from_class_name(dict_value['node_type'])
|
129
147
|
|
@@ -279,7 +279,9 @@ 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
|
+
return [serialize_to_dict(item) for item in obj]
|
284
|
+
elif isinstance(obj, set):
|
283
285
|
return [serialize_to_dict(item) for item in obj]
|
284
286
|
elif isinstance(obj, dict):
|
285
287
|
return {key: serialize_to_dict(value) for key, value in obj.items()}
|
@@ -0,0 +1 @@
|
|
1
|
+
v2.16.0
|
@@ -1 +0,0 @@
|
|
1
|
-
v2.14.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.14.0 → osbot_utils-2.16.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.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/methods/cache_on_function.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-2.14.0 → osbot_utils-2.16.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.14.0 → osbot_utils-2.16.0}/osbot_utils/decorators/methods/function_type_check.py
RENAMED
File without changes
|
File without changes
|
{osbot_utils-2.14.0 → osbot_utils-2.16.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.14.0 → osbot_utils-2.16.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.14.0 → osbot_utils-2.16.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.14.0 → osbot_utils-2.16.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
|