osbot-utils 2.72.0__tar.gz → 2.73.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.73.0/PKG-INFO +212 -0
- osbot_utils-2.73.0/README.md +190 -0
- osbot_utils-2.73.0/osbot_utils/version +1 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/pyproject.toml +1 -1
- osbot_utils-2.72.0/PKG-INFO +0 -44
- osbot_utils-2.72.0/README.md +0 -22
- osbot_utils-2.72.0/osbot_utils/version +0 -1
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/LICENSE +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/base_classes/Cache_Pickle.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/base_classes/Kwargs_To_Disk.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/base_classes/Kwargs_To_Self.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/base_classes/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/context_managers/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/context_managers/async_invoke.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/context_managers/disable_root_loggers.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/classes/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/classes/singleton.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/lists/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/lists/filter_list.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/lists/group_by.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/lists/index_by.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/methods/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/methods/cache.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/methods/cache_on_function.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/methods/cache_on_self.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/methods/cache_on_tmp.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/methods/capture_exception.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/methods/capture_status.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/methods/catch.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/methods/context.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/methods/depreciated.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/methods/function_type_check.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/methods/obj_as_context.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/methods/remove_return_value.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/methods/required_fields.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/fluent/Fluent_Dict.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/fluent/Fluent_List.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/fluent/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/CFormat.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/CPrint.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/Dependency_Manager.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/Dict_To_Attr.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/Guid.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/Hashicorp_Secrets.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/Local_Cache.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/Local_Caches.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/Obj_Id.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/Print_Table.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/Python_Audit.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/Random_Guid.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/Random_Guid_Short.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/Random_Seed.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/Safe_Id.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/Str_ASCII.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/Timestamp_Now.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/Type_Registry.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/Zip_Bytes.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/Ast.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/Ast_Base.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/Ast_Data.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/Ast_Load.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/Ast_Merge.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/Ast_Node.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/Ast_Visit.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/Call_Tree.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Add.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Alias.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_And.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Argument.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Arguments.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Assert.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Assign.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Attribute.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Aug_Assign.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Bin_Op.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Bool_Op.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Break.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Call.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Class_Def.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Compare.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Comprehension.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Constant.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Continue.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Dict.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Eq.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Except_Handler.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Expr.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_For.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Function_Def.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Generator_Exp.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Gt.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_GtE.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_If.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_If_Exp.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Import.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Import_From.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_In.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Is.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Is_Not.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Keyword.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Lambda.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_List.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_List_Comp.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Load.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Lt.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_LtE.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Mod.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Module.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Mult.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Name.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Not.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Not_Eq.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Not_In.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Or.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Pass.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Pow.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Raise.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Return.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Set.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Slice.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Starred.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Store.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Sub.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Subscript.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Try.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Tuple.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Unary_Op.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_While.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_With.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_With_Item.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/Ast_Yield.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ast/nodes/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/cache_on_self/Cache_Controller.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/cache_on_self/Cache_Key_Generator.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/cache_on_self/Cache_Metrics.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/cache_on_self/Cache_On_Self.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/cache_on_self/Cache_Storage.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/cache_on_self/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Actions.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Config.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Data.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Invoke.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Row.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Table.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/cache_requests/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/duration/Duration.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/duration/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/duration/decorators/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/duration/decorators/capture_duration.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/duration/decorators/duration.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/duration/decorators/print_duration.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/duration/schemas/Schema__Duration.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/duration/schemas/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/Flow.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/Task.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/actions/Flow__Data.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/actions/Flow__Events.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/actions/Flow__Stats__Collector.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/actions/Task__Stats__Collector.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/actions/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/decorators/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/decorators/flow.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/decorators/task.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/models/Flow_Run__Config.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/models/Flow_Run__Event.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Data.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Type.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/models/Schema__Flow__Artifact.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/models/Schema__Flow__Result.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/models/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/schemas/Schema__Flow.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Data.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Event.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Event__Data.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Log.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Stats.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Status.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/schemas/Schema__Flow__Task__Data.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/schemas/Schema__Task__Stats.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/flows/schemas/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/generators/Generator_Context_Manager.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/generators/Generator_Manager.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/generators/Model__Generator_State.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/generators/Model__Generator_Target.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/generators/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/CSS_Dict__To__Css.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/Html_Dict__To__Html.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/Html_Dict__To__Html_Document.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/Html_Dict__To__Html_Tags.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/Html_Document__To__Html_Dict.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/Html__To__Html_Dict.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/Html__To__Html_Document.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/Html__To__Html_Tag.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/Tag__Base.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/Tag__Body.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/Tag__Div.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/Tag__H.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/Tag__HR.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/Tag__Head.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/Tag__Html.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/Tag__Link.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/Tag__Style.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/Tag__Text.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/schemas/Schema__Html_Document.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/schemas/Schema__Html_Node.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/schemas/Schema__Html_Node__Data.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/schemas/Schema__Html_Node__Data__Type.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/html/schemas/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/actions/LLM_Request__Execute.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/actions/Type_Safe__Schema_For__LLMs.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/actions/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/builders/LLM_Request__Builder.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/builders/LLM_Request__Builder__Open_AI.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/builders/LLM_Request__Factory.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/builders/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/cache/LLM_Cache__Path_Generator.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/cache/LLM_Request__Cache.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/cache/LLM_Request__Cache__File_System.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/cache/LLM_Request__Cache__Storage.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/cache/Virtual_Storage__Local__Folder.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/cache/Virtual_Storage__Sqlite.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/cache/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/platforms/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/platforms/open_ai/API__LLM__Open_AI.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/platforms/open_ai/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/schemas/Safe_Str__LLM__Model_Name.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Cache__Index.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Request.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Data.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Function_Call.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Message__Content.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Request__Message__Role.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Response.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/schemas/Schema__LLM_Response__Cache.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/llms/schemas/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/pubsub/Event__Queue.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/pubsub/PubSub__Client.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/pubsub/PubSub__Room.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/pubsub/PubSub__Server.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/pubsub/PubSub__Sqlite.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/pubsub/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Connect.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Disconnect.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Execute_Method.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Join_Room.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Leave_Room.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Message.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/pubsub/schemas/Schema__PubSub__Client.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/pubsub/schemas/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/python_compatibility/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/python_compatibility/python_3_8.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_float/Safe_Float.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_float/Safe_Float__Engineering.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_float/Safe_Float__Money.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_float/Safe_Float__Percentage_Exact.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_float/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_int/Safe_Int.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_int/Safe_UInt.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_int/Safe_UInt__Byte.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_int/Safe_UInt__FileSize.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_int/Safe_UInt__Percentage.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_int/Safe_UInt__Port.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_int/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_str/Safe_Str.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_str/Safe_Str__File__Name.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_str/Safe_Str__File__Path.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_str/Safe_Str__Hash.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_str/Safe_Str__Text.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_str/Safe_Str__Text__Dangerous.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_str/Safe_Str__Url.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_str/Safe_Str__Version.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_str/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_str/http/Safe_Str__Html.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_str/http/Safe_Str__Http__Content_Type.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_str/http/Safe_Str__Http__ETag.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_str/http/Safe_Str__Http__Last_Modified.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_str/http/Safe_Str__Http__Text.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_str/http/Safe_Str__IP_Address.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_str/http/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_str/schemas/Enum__Safe_Str__Regex_Mode.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/safe_str/schemas/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/Capture_Sqlite_Error.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/Sqlite__Cursor.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/Sqlite__Database.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/Sqlite__Field.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/Sqlite__Globals.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/Sqlite__Table.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/Sqlite__Table__Create.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Database__Disk.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Table.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/cache/Schema__Table__Requests.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Patch.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Sqlite.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Table.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/cache/Sqlite__DB__Requests.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/cache/TestCase__Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/cache/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Files.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Graph.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Json.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Local.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/domains/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/domains/schemas/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/models/Sqlite__Field__Type.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/models/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/sample_data/Sqlite__Sample_Data__Chinook.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/sample_data/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder__Select.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/sql_builder/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Config.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Edges.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Files.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Nodes.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/sqlite/tables/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ssh/SCP.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ssh/SSH.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ssh/SSH__Cache__Requests.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ssh/SSH__Execute.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ssh/SSH__Health_Check.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ssh/SSH__Linux.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ssh/SSH__Linux__Amazon.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ssh/SSH__Python.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ssh/TestCase__SSH.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/ssh/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/trace/Trace_Call.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/trace/Trace_Call__Config.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/trace/Trace_Call__Handler.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/trace/Trace_Call__Print_Lines.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/trace/Trace_Call__Print_Traces.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/trace/Trace_Call__Stack.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/trace/Trace_Call__Stack_Node.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/trace/Trace_Call__Stats.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/trace/Trace_Call__View_Model.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/trace/Trace_Files.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/trace/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/xml/Xml__Attribute.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/xml/Xml__Element.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/xml/Xml__File.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/xml/Xml__File__Load.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/xml/Xml__File__To_Dict.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/xml/Xml__File__To_Xml.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/xml/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/xml/rss/RSS__Channel.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/xml/rss/RSS__Enclosure.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/xml/rss/RSS__Feed.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/xml/rss/RSS__Feed__Parser.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/xml/rss/RSS__Image.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/helpers/xml/rss/RSS__Item.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/Catch.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/Custom_Handler_For_Http_Tests.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/Hook_Method.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/Log_To_Queue.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/Log_To_String.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/Logging.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/Patch_Print.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/Profiler.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/Pytest.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/Stderr.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/Stdout.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/Temp_Env_Vars.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/Temp_File.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/Temp_Folder.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/Temp_Sys_Path.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/Temp_Web_Server.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/Temp_Zip.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/Temp_Zip_In_Memory.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/Unit_Test.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/Unzip_File.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/performance/Performance_Measure__Session.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/performance/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/performance/models/Model__Performance_Measure__Measurement.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/performance/models/Model__Performance_Measure__Result.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/testing/performance/models/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/Type_Safe.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/Type_Safe__Base.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/Type_Safe__Dict.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/Type_Safe__List.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/Type_Safe__Method.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/Type_Safe__Primitive.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/Type_Safe__Set.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/Type_Safe__Tuple.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/decorators/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/decorators/type_safe.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/methods/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/methods/type_safe_property.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/shared/Type_Safe__Annotations.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/shared/Type_Safe__Cache.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/shared/Type_Safe__Convert.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/shared/Type_Safe__Json_Compressor.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/shared/Type_Safe__Json_Compressor__Type_Registry.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/shared/Type_Safe__Not_Cached.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/shared/Type_Safe__Raise_Exception.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/shared/Type_Safe__Shared__Variables.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/shared/Type_Safe__Validation.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/shared/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Class_Kwargs.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Default_Kwargs.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Default_Value.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/steps/Type_Safe__Step__From_Json.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Init.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Set_Attr.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/steps/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/validators/Type_Safe__Validator.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/validators/Validator__Max.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/validators/Validator__Min.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/validators/Validator__One_Of.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/validators/Validator__Regex.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/type_safe/validators/__init__.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Assert.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Call_Stack.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Csv.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Dev.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Env.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Exceptions.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Files.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Functions.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Http.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Int.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Json.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Json_Cache.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Lists.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Misc.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Objects.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Png.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Process.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Python_Logger.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Regex.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Status.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Str.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Threads.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Toml.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Version.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/Zip.py +0 -0
- {osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/utils/__init__.py +0 -0
@@ -0,0 +1,212 @@
|
|
1
|
+
Metadata-Version: 2.3
|
2
|
+
Name: osbot_utils
|
3
|
+
Version: 2.73.0
|
4
|
+
Summary: OWASP Security Bot - Utils
|
5
|
+
License: MIT
|
6
|
+
Author: Dinis Cruz
|
7
|
+
Author-email: dinis.cruz@owasp.org
|
8
|
+
Requires-Python: >=3.7,<4.0
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
11
|
+
Classifier: Programming Language :: Python :: 3.7
|
12
|
+
Classifier: Programming Language :: Python :: 3.8
|
13
|
+
Classifier: Programming Language :: Python :: 3.9
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
18
|
+
Project-URL: Homepage, https://github.com/owasp-sbot/OSBot-Utils
|
19
|
+
Project-URL: Repository, https://github.com/owasp-sbot/OSBot-Utils
|
20
|
+
Description-Content-Type: text/markdown
|
21
|
+
|
22
|
+
# OSBot-Utils
|
23
|
+
|
24
|
+

|
25
|
+

|
26
|
+

|
27
|
+

|
28
|
+
[](https://codecov.io/gh/owasp-sbot/OSBot-Utils)
|
29
|
+
|
30
|
+
A comprehensive Python utility toolkit providing **Type-Safe primitives**, decorators, caching layers, HTML/AST helpers, SQLite tooling, SSH execution, LLM request pipelines, tracing, and more — all designed to accelerate building robust, maintainable automation and integration code.
|
31
|
+
|
32
|
+
---
|
33
|
+
|
34
|
+
## ✨ Key Features
|
35
|
+
|
36
|
+
* **🛡️ Type-Safe First**: Strongly typed primitives (`Safe_Str`, `Safe_Int`, `Safe_Float`, etc.) with validation and sanitization
|
37
|
+
* **⚡ Multi-layer Caching**: In-memory, per-instance, pickle-on-disk, temp-file, and request/response caches
|
38
|
+
* **🗂️ Rich Utilities**: Helpers for HTML parsing/rendering, AST inspection, SSH/SCP execution, SQLite schema management, and more
|
39
|
+
* **🧠 LLM Support**: Structured request builders, OpenAI API integration, schema enforcement, and persistent cache
|
40
|
+
* **🔍 Tracing & Debugging**: Full function call tracing with configurable depth, locals capture, and pretty output
|
41
|
+
* **🧪 Testing Utilities**: Temp SQLite DBs, mockable caches, and easy test helpers
|
42
|
+
|
43
|
+
---
|
44
|
+
|
45
|
+
## 📦 Installation
|
46
|
+
|
47
|
+
```bash
|
48
|
+
pip install osbot-utils
|
49
|
+
```
|
50
|
+
|
51
|
+
From source:
|
52
|
+
|
53
|
+
```bash
|
54
|
+
pip install git+https://github.com/owasp-sbot/OSBot-Utils.git@dev
|
55
|
+
```
|
56
|
+
|
57
|
+
---
|
58
|
+
|
59
|
+
## 🚀 Quick Start
|
60
|
+
|
61
|
+
### Using Type-Safe Primitives
|
62
|
+
|
63
|
+
```python
|
64
|
+
from osbot_utils.helpers.safe_str.Safe_Str import Safe_Str
|
65
|
+
|
66
|
+
class Username(Safe_Str):
|
67
|
+
max_length = 20
|
68
|
+
|
69
|
+
print(Username("alice")) # 'alice'
|
70
|
+
print(Username("invalid username!")) # 'invalid_username_'
|
71
|
+
```
|
72
|
+
|
73
|
+
---
|
74
|
+
|
75
|
+
### Simple In-Memory Caching
|
76
|
+
|
77
|
+
```python
|
78
|
+
from osbot_utils.decorators.methods.cache_on_self import cache_on_self
|
79
|
+
|
80
|
+
class DataFetcher:
|
81
|
+
@cache_on_self
|
82
|
+
def fetch(self, x):
|
83
|
+
print("Fetching…")
|
84
|
+
return x * 2
|
85
|
+
|
86
|
+
fetcher = DataFetcher()
|
87
|
+
fetcher.fetch(10) # Calls method
|
88
|
+
fetcher.fetch(10) # Returns cached result
|
89
|
+
```
|
90
|
+
|
91
|
+
---
|
92
|
+
|
93
|
+
### HTML Parsing
|
94
|
+
|
95
|
+
```python
|
96
|
+
from osbot_utils.helpers.html.Html__To__Html_Dict import html_to_dict
|
97
|
+
|
98
|
+
html_code = "<html><body><h1>Hello</h1></body></html>"
|
99
|
+
print(html_to_dict(html_code))
|
100
|
+
```
|
101
|
+
|
102
|
+
---
|
103
|
+
|
104
|
+
### SQLite Dynamic Table
|
105
|
+
|
106
|
+
```python
|
107
|
+
from osbot_utils.helpers.sqlite.Temp_Sqlite__Table import Temp_Sqlite__Table
|
108
|
+
|
109
|
+
with Temp_Sqlite__Table() as table:
|
110
|
+
table.row_schema = type("Row", (), {"name": str, "age": int})
|
111
|
+
table.create()
|
112
|
+
table.add_row_and_commit(name="Alice", age=30)
|
113
|
+
print(table.rows())
|
114
|
+
```
|
115
|
+
|
116
|
+
---
|
117
|
+
|
118
|
+
### LLM Request Execution
|
119
|
+
|
120
|
+
```python
|
121
|
+
from osbot_utils.helpers.llms.builders.LLM_Request__Builder__Open_AI import LLM_Request__Builder__Open_AI
|
122
|
+
from osbot_utils.helpers.llms.actions.LLM_Request__Execute import LLM_Request__Execute
|
123
|
+
|
124
|
+
builder = LLM_Request__Builder__Open_AI()
|
125
|
+
builder.set__model__gpt_4o().add_message__user("Say hi in JSON")
|
126
|
+
|
127
|
+
executor = LLM_Request__Execute(request_builder=builder)
|
128
|
+
response = executor.execute(builder.llm_request())
|
129
|
+
print(response.response_data)
|
130
|
+
```
|
131
|
+
|
132
|
+
---
|
133
|
+
|
134
|
+
## 🏗️ Architecture
|
135
|
+
|
136
|
+
OSBot-Utils is organized into core **Type-Safe foundations** with layered utilities for different domains:
|
137
|
+
|
138
|
+
```
|
139
|
+
┌──────────────────────────────────────────────┐
|
140
|
+
│ Your Code │
|
141
|
+
│ ┌───────────┐ ┌─────────────┐ ┌──────────┐ │
|
142
|
+
│ │ Type-Safe │ │ Decorators │ │ Helpers │ │
|
143
|
+
│ │ Primitives│ │ & Caching │ │ (HTML, │ │
|
144
|
+
│ │ │ │ │ │ AST, │ │
|
145
|
+
│ │ │ │ │ │ SQLite)│ │
|
146
|
+
│ └───────────┘ └─────────────┘ └──────────┘ │
|
147
|
+
└──────────────────────────┬───────────────────┘
|
148
|
+
│
|
149
|
+
┌──────────────────────────▼───────────────────┐
|
150
|
+
│ OSBot-Utils │
|
151
|
+
│ ┌────────────────────────────────────────┐ │
|
152
|
+
│ │ Type-Safe Core Classes │ │
|
153
|
+
│ │ Validation / Sanitization / Defaults │ │
|
154
|
+
│ └────────────────────────────────────────┘ │
|
155
|
+
│ ┌────────────────────────────────────────┐ │
|
156
|
+
│ │ Caching Layers & Decorators │ │
|
157
|
+
│ │ @cache, @cache_on_self, pickle, tmp │ │
|
158
|
+
│ └────────────────────────────────────────┘ │
|
159
|
+
│ ┌────────────────────────────────────────┐ │
|
160
|
+
│ │ Domain Helpers │ │
|
161
|
+
│ │ HTML, AST, SSH, LLMs, SQLite, Tracing │ │
|
162
|
+
│ └────────────────────────────────────────┘ │
|
163
|
+
└──────────────────────────────────────────────┘
|
164
|
+
```
|
165
|
+
|
166
|
+
---
|
167
|
+
|
168
|
+
## 📚 Key Modules
|
169
|
+
|
170
|
+
* **`helpers/safe_*`** — Type-Safe primitives for validated strings, ints, floats
|
171
|
+
* **`decorators/methods`** — Caching, exception capture, timing, validation
|
172
|
+
* **`helpers/html`** — HTML ↔ dict ↔ tag classes
|
173
|
+
* **`helpers/ast`** — Python AST parsing, visiting, merging
|
174
|
+
* **`helpers/sqlite`** — High-level SQLite APIs, schema generation, temp DBs
|
175
|
+
* **`helpers/ssh`** — SSH/SCP execution with caching
|
176
|
+
* **`helpers/llms`** — LLM request/response handling with caching
|
177
|
+
* **`helpers/trace`** — Function call tracing with configurable output
|
178
|
+
|
179
|
+
---
|
180
|
+
|
181
|
+
## 🎯 Benefits
|
182
|
+
|
183
|
+
### For Developers
|
184
|
+
|
185
|
+
* Strong runtime type validation with Type-Safe classes
|
186
|
+
* Consistent patterns for caching and decorators
|
187
|
+
* Rich helper library to avoid reinventing the wheel
|
188
|
+
|
189
|
+
### For Production
|
190
|
+
|
191
|
+
* Deterministic caching with persistence options
|
192
|
+
* Safe, validated data structures at integration boundaries
|
193
|
+
* Lightweight, dependency-minimal utilities
|
194
|
+
|
195
|
+
### For Teams
|
196
|
+
|
197
|
+
* Standardized approach to cross-cutting concerns (logging, tracing, caching)
|
198
|
+
* Modular helpers to fit many contexts (CLI, web apps, serverless)
|
199
|
+
|
200
|
+
---
|
201
|
+
|
202
|
+
## 🤝 Contributing
|
203
|
+
|
204
|
+
Pull requests are welcome!
|
205
|
+
Check existing patterns in `/helpers` and `/decorators` for style guidance.
|
206
|
+
|
207
|
+
---
|
208
|
+
|
209
|
+
## 📄 License
|
210
|
+
|
211
|
+
Licensed under the Apache 2.0 License.
|
212
|
+
|
@@ -0,0 +1,190 @@
|
|
1
|
+
# OSBot-Utils
|
2
|
+
|
3
|
+

|
4
|
+

|
5
|
+

|
6
|
+

|
7
|
+
[](https://codecov.io/gh/owasp-sbot/OSBot-Utils)
|
8
|
+
|
9
|
+
A comprehensive Python utility toolkit providing **Type-Safe primitives**, decorators, caching layers, HTML/AST helpers, SQLite tooling, SSH execution, LLM request pipelines, tracing, and more — all designed to accelerate building robust, maintainable automation and integration code.
|
10
|
+
|
11
|
+
---
|
12
|
+
|
13
|
+
## ✨ Key Features
|
14
|
+
|
15
|
+
* **🛡️ Type-Safe First**: Strongly typed primitives (`Safe_Str`, `Safe_Int`, `Safe_Float`, etc.) with validation and sanitization
|
16
|
+
* **⚡ Multi-layer Caching**: In-memory, per-instance, pickle-on-disk, temp-file, and request/response caches
|
17
|
+
* **🗂️ Rich Utilities**: Helpers for HTML parsing/rendering, AST inspection, SSH/SCP execution, SQLite schema management, and more
|
18
|
+
* **🧠 LLM Support**: Structured request builders, OpenAI API integration, schema enforcement, and persistent cache
|
19
|
+
* **🔍 Tracing & Debugging**: Full function call tracing with configurable depth, locals capture, and pretty output
|
20
|
+
* **🧪 Testing Utilities**: Temp SQLite DBs, mockable caches, and easy test helpers
|
21
|
+
|
22
|
+
---
|
23
|
+
|
24
|
+
## 📦 Installation
|
25
|
+
|
26
|
+
```bash
|
27
|
+
pip install osbot-utils
|
28
|
+
```
|
29
|
+
|
30
|
+
From source:
|
31
|
+
|
32
|
+
```bash
|
33
|
+
pip install git+https://github.com/owasp-sbot/OSBot-Utils.git@dev
|
34
|
+
```
|
35
|
+
|
36
|
+
---
|
37
|
+
|
38
|
+
## 🚀 Quick Start
|
39
|
+
|
40
|
+
### Using Type-Safe Primitives
|
41
|
+
|
42
|
+
```python
|
43
|
+
from osbot_utils.helpers.safe_str.Safe_Str import Safe_Str
|
44
|
+
|
45
|
+
class Username(Safe_Str):
|
46
|
+
max_length = 20
|
47
|
+
|
48
|
+
print(Username("alice")) # 'alice'
|
49
|
+
print(Username("invalid username!")) # 'invalid_username_'
|
50
|
+
```
|
51
|
+
|
52
|
+
---
|
53
|
+
|
54
|
+
### Simple In-Memory Caching
|
55
|
+
|
56
|
+
```python
|
57
|
+
from osbot_utils.decorators.methods.cache_on_self import cache_on_self
|
58
|
+
|
59
|
+
class DataFetcher:
|
60
|
+
@cache_on_self
|
61
|
+
def fetch(self, x):
|
62
|
+
print("Fetching…")
|
63
|
+
return x * 2
|
64
|
+
|
65
|
+
fetcher = DataFetcher()
|
66
|
+
fetcher.fetch(10) # Calls method
|
67
|
+
fetcher.fetch(10) # Returns cached result
|
68
|
+
```
|
69
|
+
|
70
|
+
---
|
71
|
+
|
72
|
+
### HTML Parsing
|
73
|
+
|
74
|
+
```python
|
75
|
+
from osbot_utils.helpers.html.Html__To__Html_Dict import html_to_dict
|
76
|
+
|
77
|
+
html_code = "<html><body><h1>Hello</h1></body></html>"
|
78
|
+
print(html_to_dict(html_code))
|
79
|
+
```
|
80
|
+
|
81
|
+
---
|
82
|
+
|
83
|
+
### SQLite Dynamic Table
|
84
|
+
|
85
|
+
```python
|
86
|
+
from osbot_utils.helpers.sqlite.Temp_Sqlite__Table import Temp_Sqlite__Table
|
87
|
+
|
88
|
+
with Temp_Sqlite__Table() as table:
|
89
|
+
table.row_schema = type("Row", (), {"name": str, "age": int})
|
90
|
+
table.create()
|
91
|
+
table.add_row_and_commit(name="Alice", age=30)
|
92
|
+
print(table.rows())
|
93
|
+
```
|
94
|
+
|
95
|
+
---
|
96
|
+
|
97
|
+
### LLM Request Execution
|
98
|
+
|
99
|
+
```python
|
100
|
+
from osbot_utils.helpers.llms.builders.LLM_Request__Builder__Open_AI import LLM_Request__Builder__Open_AI
|
101
|
+
from osbot_utils.helpers.llms.actions.LLM_Request__Execute import LLM_Request__Execute
|
102
|
+
|
103
|
+
builder = LLM_Request__Builder__Open_AI()
|
104
|
+
builder.set__model__gpt_4o().add_message__user("Say hi in JSON")
|
105
|
+
|
106
|
+
executor = LLM_Request__Execute(request_builder=builder)
|
107
|
+
response = executor.execute(builder.llm_request())
|
108
|
+
print(response.response_data)
|
109
|
+
```
|
110
|
+
|
111
|
+
---
|
112
|
+
|
113
|
+
## 🏗️ Architecture
|
114
|
+
|
115
|
+
OSBot-Utils is organized into core **Type-Safe foundations** with layered utilities for different domains:
|
116
|
+
|
117
|
+
```
|
118
|
+
┌──────────────────────────────────────────────┐
|
119
|
+
│ Your Code │
|
120
|
+
│ ┌───────────┐ ┌─────────────┐ ┌──────────┐ │
|
121
|
+
│ │ Type-Safe │ │ Decorators │ │ Helpers │ │
|
122
|
+
│ │ Primitives│ │ & Caching │ │ (HTML, │ │
|
123
|
+
│ │ │ │ │ │ AST, │ │
|
124
|
+
│ │ │ │ │ │ SQLite)│ │
|
125
|
+
│ └───────────┘ └─────────────┘ └──────────┘ │
|
126
|
+
└──────────────────────────┬───────────────────┘
|
127
|
+
│
|
128
|
+
┌──────────────────────────▼───────────────────┐
|
129
|
+
│ OSBot-Utils │
|
130
|
+
│ ┌────────────────────────────────────────┐ │
|
131
|
+
│ │ Type-Safe Core Classes │ │
|
132
|
+
│ │ Validation / Sanitization / Defaults │ │
|
133
|
+
│ └────────────────────────────────────────┘ │
|
134
|
+
│ ┌────────────────────────────────────────┐ │
|
135
|
+
│ │ Caching Layers & Decorators │ │
|
136
|
+
│ │ @cache, @cache_on_self, pickle, tmp │ │
|
137
|
+
│ └────────────────────────────────────────┘ │
|
138
|
+
│ ┌────────────────────────────────────────┐ │
|
139
|
+
│ │ Domain Helpers │ │
|
140
|
+
│ │ HTML, AST, SSH, LLMs, SQLite, Tracing │ │
|
141
|
+
│ └────────────────────────────────────────┘ │
|
142
|
+
└──────────────────────────────────────────────┘
|
143
|
+
```
|
144
|
+
|
145
|
+
---
|
146
|
+
|
147
|
+
## 📚 Key Modules
|
148
|
+
|
149
|
+
* **`helpers/safe_*`** — Type-Safe primitives for validated strings, ints, floats
|
150
|
+
* **`decorators/methods`** — Caching, exception capture, timing, validation
|
151
|
+
* **`helpers/html`** — HTML ↔ dict ↔ tag classes
|
152
|
+
* **`helpers/ast`** — Python AST parsing, visiting, merging
|
153
|
+
* **`helpers/sqlite`** — High-level SQLite APIs, schema generation, temp DBs
|
154
|
+
* **`helpers/ssh`** — SSH/SCP execution with caching
|
155
|
+
* **`helpers/llms`** — LLM request/response handling with caching
|
156
|
+
* **`helpers/trace`** — Function call tracing with configurable output
|
157
|
+
|
158
|
+
---
|
159
|
+
|
160
|
+
## 🎯 Benefits
|
161
|
+
|
162
|
+
### For Developers
|
163
|
+
|
164
|
+
* Strong runtime type validation with Type-Safe classes
|
165
|
+
* Consistent patterns for caching and decorators
|
166
|
+
* Rich helper library to avoid reinventing the wheel
|
167
|
+
|
168
|
+
### For Production
|
169
|
+
|
170
|
+
* Deterministic caching with persistence options
|
171
|
+
* Safe, validated data structures at integration boundaries
|
172
|
+
* Lightweight, dependency-minimal utilities
|
173
|
+
|
174
|
+
### For Teams
|
175
|
+
|
176
|
+
* Standardized approach to cross-cutting concerns (logging, tracing, caching)
|
177
|
+
* Modular helpers to fit many contexts (CLI, web apps, serverless)
|
178
|
+
|
179
|
+
---
|
180
|
+
|
181
|
+
## 🤝 Contributing
|
182
|
+
|
183
|
+
Pull requests are welcome!
|
184
|
+
Check existing patterns in `/helpers` and `/decorators` for style guidance.
|
185
|
+
|
186
|
+
---
|
187
|
+
|
188
|
+
## 📄 License
|
189
|
+
|
190
|
+
Licensed under the Apache 2.0 License.
|
@@ -0,0 +1 @@
|
|
1
|
+
v2.73.0
|
osbot_utils-2.72.0/PKG-INFO
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.3
|
2
|
-
Name: osbot_utils
|
3
|
-
Version: 2.72.0
|
4
|
-
Summary: OWASP Security Bot - Utils
|
5
|
-
License: MIT
|
6
|
-
Author: Dinis Cruz
|
7
|
-
Author-email: dinis.cruz@owasp.org
|
8
|
-
Requires-Python: >=3.7,<4.0
|
9
|
-
Classifier: License :: OSI Approved :: MIT License
|
10
|
-
Classifier: Programming Language :: Python :: 3
|
11
|
-
Classifier: Programming Language :: Python :: 3.7
|
12
|
-
Classifier: Programming Language :: Python :: 3.8
|
13
|
-
Classifier: Programming Language :: Python :: 3.9
|
14
|
-
Classifier: Programming Language :: Python :: 3.10
|
15
|
-
Classifier: Programming Language :: Python :: 3.11
|
16
|
-
Classifier: Programming Language :: Python :: 3.12
|
17
|
-
Classifier: Programming Language :: Python :: 3.13
|
18
|
-
Project-URL: Homepage, https://github.com/owasp-sbot/OSBot-Utils
|
19
|
-
Project-URL: Repository, https://github.com/owasp-sbot/OSBot-Utils
|
20
|
-
Description-Content-Type: text/markdown
|
21
|
-
|
22
|
-
# OSBot-Utils
|
23
|
-
|
24
|
-
Powerful Python util methods and classes that simplify common apis and tasks.
|
25
|
-
|
26
|
-

|
27
|
-
[](https://codecov.io/gh/owasp-sbot/OSBot-Utils)
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
## Install - Release 1.x
|
32
|
-
|
33
|
-
**for main branch**: just get it from pypi
|
34
|
-
|
35
|
-
```
|
36
|
-
pip install osbot-utils
|
37
|
-
```
|
38
|
-
|
39
|
-
**for dev branch**: add to requirements.txt
|
40
|
-
|
41
|
-
```
|
42
|
-
git+https://github.com/owasp-sbot/OSBot-Utils.git@dev
|
43
|
-
```
|
44
|
-
|
osbot_utils-2.72.0/README.md
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
# OSBot-Utils
|
2
|
-
|
3
|
-
Powerful Python util methods and classes that simplify common apis and tasks.
|
4
|
-
|
5
|
-

|
6
|
-
[](https://codecov.io/gh/owasp-sbot/OSBot-Utils)
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
## Install - Release 1.x
|
11
|
-
|
12
|
-
**for main branch**: just get it from pypi
|
13
|
-
|
14
|
-
```
|
15
|
-
pip install osbot-utils
|
16
|
-
```
|
17
|
-
|
18
|
-
**for dev branch**: add to requirements.txt
|
19
|
-
|
20
|
-
```
|
21
|
-
git+https://github.com/owasp-sbot/OSBot-Utils.git@dev
|
22
|
-
```
|
@@ -1 +0,0 @@
|
|
1
|
-
v2.72.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
|
{osbot_utils-2.72.0 → osbot_utils-2.73.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
|
{osbot_utils-2.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/methods/cache_on_function.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-2.72.0 → osbot_utils-2.73.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.72.0 → osbot_utils-2.73.0}/osbot_utils/decorators/methods/function_type_check.py
RENAMED
File without changes
|
File without changes
|
{osbot_utils-2.72.0 → osbot_utils-2.73.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
|