osbot-utils 2.19.0__tar.gz → 2.21.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.19.0 → osbot_utils-2.21.0}/PKG-INFO +2 -2
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/README.md +1 -1
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/flows/Flow.py +32 -1
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/flows/Task.py +20 -8
- osbot_utils-2.21.0/osbot_utils/helpers/flows/actions/Flow__Data.py +87 -0
- osbot_utils-2.21.0/osbot_utils/helpers/flows/models/Flow_Run__Config.py +14 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/flows/models/Flow_Run__Event.py +2 -5
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Data.py +0 -2
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/flows/models/Flow_Run__Event_Type.py +1 -0
- osbot_utils-2.21.0/osbot_utils/helpers/flows/models/Schema__Flow__Artifact.py +11 -0
- osbot_utils-2.21.0/osbot_utils/helpers/flows/models/Schema__Flow__Result.py +7 -0
- osbot_utils-2.21.0/osbot_utils/helpers/flows/schemas/Schema__Flow.py +9 -0
- osbot_utils-2.21.0/osbot_utils/helpers/flows/schemas/Schema__Flow__Data.py +25 -0
- osbot_utils-2.21.0/osbot_utils/helpers/flows/schemas/Schema__Flow__Event.py +13 -0
- osbot_utils-2.21.0/osbot_utils/helpers/flows/schemas/Schema__Flow__Event__Data.py +14 -0
- osbot_utils-2.21.0/osbot_utils/helpers/flows/schemas/Schema__Flow__Log.py +10 -0
- osbot_utils-2.21.0/osbot_utils/helpers/flows/schemas/Schema__Flow__Task__Data.py +15 -0
- osbot_utils-2.21.0/osbot_utils/type_safe/validators/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Http.py +11 -1
- osbot_utils-2.21.0/osbot_utils/utils/__init__.py +0 -0
- osbot_utils-2.21.0/osbot_utils/version +1 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/pyproject.toml +1 -1
- osbot_utils-2.19.0/osbot_utils/helpers/flows/models/Flow_Run__Config.py +0 -12
- osbot_utils-2.19.0/osbot_utils/version +0 -1
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/LICENSE +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/base_classes/Cache_Pickle.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/base_classes/Kwargs_To_Disk.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/base_classes/Kwargs_To_Self.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/base_classes/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/context_managers/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/context_managers/async_invoke.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/context_managers/capture_duration.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/context_managers/disable_root_loggers.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/context_managers/print_duration.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/classes/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/classes/singleton.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/lists/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/lists/filter_list.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/lists/group_by.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/lists/index_by.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/methods/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/methods/cache.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/methods/cache_on_function.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/methods/cache_on_self.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/methods/cache_on_tmp.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/methods/capture_exception.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/methods/capture_status.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/methods/catch.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/methods/context.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/methods/depreciated.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/methods/function_type_check.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/methods/obj_as_context.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/methods/remove_return_value.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/methods/required_fields.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/fluent/Fluent_Dict.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/fluent/Fluent_List.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/fluent/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/CFormat.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/CPrint.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/Dependency_Manager.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/Dict_To_Attr.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/Guid.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/Hashicorp_Secrets.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/Local_Cache.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/Local_Caches.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/Obj_Id.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/Print_Table.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/Python_Audit.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/Random_Guid.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/Random_Guid_Short.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/Random_Seed.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/Safe_Id.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/Str_ASCII.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/Timestamp_Now.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/Type_Registry.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/Zip_Bytes.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/Ast.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/Ast_Base.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/Ast_Data.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/Ast_Load.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/Ast_Merge.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/Ast_Node.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/Ast_Visit.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/Call_Tree.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Add.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Alias.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_And.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Argument.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Arguments.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Assert.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Assign.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Attribute.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Aug_Assign.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Bin_Op.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Bool_Op.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Break.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Call.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Class_Def.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Compare.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Comprehension.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Constant.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Continue.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Dict.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Eq.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Except_Handler.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Expr.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_For.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Function_Def.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Generator_Exp.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Gt.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_GtE.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_If.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_If_Exp.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Import.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Import_From.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_In.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Is.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Is_Not.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Keyword.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Lambda.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_List.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_List_Comp.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Load.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Lt.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_LtE.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Mod.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Module.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Mult.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Name.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Not.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Not_Eq.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Not_In.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Or.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Pass.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Pow.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Raise.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Return.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Set.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Slice.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Starred.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Store.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Sub.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Subscript.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Try.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Tuple.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Unary_Op.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_While.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_With.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_With_Item.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/Ast_Yield.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ast/nodes/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Actions.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Config.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Data.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Invoke.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Row.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Table.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/cache_requests/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/cache_requests/flows/flow__Cache__Requests.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/flows/__init__.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/helpers/flows → osbot_utils-2.21.0/osbot_utils/helpers/flows/actions}/Flow__Events.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/helpers/flows/decorators → osbot_utils-2.21.0/osbot_utils/helpers/flows/actions}/__init__.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/helpers/flows/models → osbot_utils-2.21.0/osbot_utils/helpers/flows/decorators}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/flows/decorators/flow.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/flows/decorators/task.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/helpers/generators → osbot_utils-2.21.0/osbot_utils/helpers/flows/models}/__init__.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/helpers/html → osbot_utils-2.21.0/osbot_utils/helpers/flows/schemas}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/generators/Generator_Context_Manager.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/generators/Generator_Manager.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/generators/Model__Generator_State.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/generators/Model__Generator_Target.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/helpers/pubsub → osbot_utils-2.21.0/osbot_utils/helpers/generators}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/html/Dict_To_Css.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/html/Dict_To_Html.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/html/Dict_To_Tags.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/html/Html_To_Dict.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/html/Html_To_Tag.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/html/Tag__Base.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/html/Tag__Body.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/html/Tag__Div.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/html/Tag__H.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/html/Tag__HR.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/html/Tag__Head.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/html/Tag__Html.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/html/Tag__Link.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/html/Tag__Style.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/helpers/pubsub/schemas → osbot_utils-2.21.0/osbot_utils/helpers/html}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/pubsub/Event__Queue.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/pubsub/PubSub__Client.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/pubsub/PubSub__Room.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/pubsub/PubSub__Server.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/pubsub/PubSub__Sqlite.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/helpers/python_compatibility → osbot_utils-2.21.0/osbot_utils/helpers/pubsub}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Connect.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Disconnect.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Execute_Method.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Join_Room.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Leave_Room.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Message.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/pubsub/schemas/Schema__PubSub__Client.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/helpers/sqlite → osbot_utils-2.21.0/osbot_utils/helpers/pubsub/schemas}/__init__.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/helpers/sqlite/cache → osbot_utils-2.21.0/osbot_utils/helpers/python_compatibility}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/python_compatibility/python_3_8.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/Capture_Sqlite_Error.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/Sqlite__Cursor.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/Sqlite__Database.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/Sqlite__Field.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/Sqlite__Globals.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/Sqlite__Table.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/Sqlite__Table__Create.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Database__Disk.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Table.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/helpers/sqlite/domains → osbot_utils-2.21.0/osbot_utils/helpers/sqlite}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/cache/Schema__Table__Requests.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Patch.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Sqlite.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Table.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/cache/Sqlite__DB__Requests.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/cache/TestCase__Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/helpers/sqlite/domains/schemas → osbot_utils-2.21.0/osbot_utils/helpers/sqlite/cache}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Files.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Graph.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Json.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Local.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/helpers/sqlite/models → osbot_utils-2.21.0/osbot_utils/helpers/sqlite/domains}/__init__.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/helpers/sqlite/sample_data → osbot_utils-2.21.0/osbot_utils/helpers/sqlite/domains/schemas}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/models/Sqlite__Field__Type.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/helpers/sqlite/sql_builder → osbot_utils-2.21.0/osbot_utils/helpers/sqlite/models}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/sample_data/Sqlite__Sample_Data__Chinook.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/helpers/sqlite/tables → osbot_utils-2.21.0/osbot_utils/helpers/sqlite/sample_data}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder__Select.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/helpers/ssh → osbot_utils-2.21.0/osbot_utils/helpers/sqlite/sql_builder}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Config.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Edges.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Files.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Nodes.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/helpers/trace → osbot_utils-2.21.0/osbot_utils/helpers/sqlite/tables}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ssh/SCP.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ssh/SSH.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ssh/SSH__Cache__Requests.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ssh/SSH__Execute.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ssh/SSH__Health_Check.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ssh/SSH__Linux.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ssh/SSH__Linux__Amazon.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ssh/SSH__Python.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/ssh/TestCase__SSH.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/helpers/xml → osbot_utils-2.21.0/osbot_utils/helpers/ssh}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/trace/Trace_Call.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/trace/Trace_Call__Config.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/trace/Trace_Call__Handler.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/trace/Trace_Call__Print_Lines.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/trace/Trace_Call__Print_Traces.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/trace/Trace_Call__Stack.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/trace/Trace_Call__Stack_Node.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/trace/Trace_Call__Stats.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/trace/Trace_Call__View_Model.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/trace/Trace_Files.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/testing → osbot_utils-2.21.0/osbot_utils/helpers/trace}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/xml/Xml__Attribute.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/xml/Xml__Element.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/xml/Xml__File.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/xml/Xml__File__Load.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/xml/Xml__File__To_Dict.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/xml/Xml__File__To_Xml.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/testing/performance → osbot_utils-2.21.0/osbot_utils/helpers/xml}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/xml/rss/RSS__Channel.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/xml/rss/RSS__Enclosure.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/xml/rss/RSS__Feed.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/xml/rss/RSS__Feed__Parser.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/xml/rss/RSS__Image.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/xml/rss/RSS__Item.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Catch.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Custom_Handler_For_Http_Tests.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Duration.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Hook_Method.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Log_To_Queue.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Log_To_String.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Logging.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Patch_Print.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Profiler.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Pytest.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Stderr.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Stdout.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Temp_Env_Vars.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Temp_File.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Temp_Folder.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Temp_Sys_Path.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Temp_Web_Server.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Temp_Zip.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Temp_Zip_In_Memory.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Unit_Test.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/Unzip_File.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/testing/performance/models → osbot_utils-2.21.0/osbot_utils/testing}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/performance/Performance_Measure__Session.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/type_safe → osbot_utils-2.21.0/osbot_utils/testing/performance}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/performance/models/Model__Performance_Measure__Measurement.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/testing/performance/models/Model__Performance_Measure__Result.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/type_safe/decorators → osbot_utils-2.21.0/osbot_utils/testing/performance/models}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/Type_Safe.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/Type_Safe__Base.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/Type_Safe__Dict.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/Type_Safe__List.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/Type_Safe__Method.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/Type_Safe__Set.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/Type_Safe__Tuple.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/type_safe/methods → osbot_utils-2.21.0/osbot_utils/type_safe}/__init__.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/type_safe/shared → osbot_utils-2.21.0/osbot_utils/type_safe/decorators}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/decorators/type_safe.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/type_safe/steps → osbot_utils-2.21.0/osbot_utils/type_safe/methods}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/methods/type_safe_property.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/shared/Type_Safe__Annotations.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/shared/Type_Safe__Cache.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/shared/Type_Safe__Convert.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/shared/Type_Safe__Not_Cached.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/shared/Type_Safe__Raise_Exception.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/shared/Type_Safe__Shared__Variables.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/shared/Type_Safe__Validation.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/type_safe/validators → osbot_utils-2.21.0/osbot_utils/type_safe/shared}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Class_Kwargs.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Default_Kwargs.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Default_Value.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/steps/Type_Safe__Step__From_Json.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Init.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/steps/Type_Safe__Step__Set_Attr.py +0 -0
- {osbot_utils-2.19.0/osbot_utils/utils → osbot_utils-2.21.0/osbot_utils/type_safe/steps}/__init__.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/validators/Type_Safe__Validator.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/validators/Validator__Max.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/validators/Validator__Min.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/validators/Validator__One_Of.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/type_safe/validators/Validator__Regex.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Assert.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Call_Stack.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Csv.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Dev.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Env.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Exceptions.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Files.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Functions.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Int.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Json.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Json_Cache.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Lists.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Misc.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Objects.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Png.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Process.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Python_Logger.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Regex.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Status.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Str.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Threads.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Toml.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Version.py +0 -0
- {osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/utils/Zip.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: osbot_utils
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.21.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
|
|
@@ -3,10 +3,12 @@ import logging
|
|
3
3
|
import typing
|
4
4
|
|
5
5
|
from osbot_utils.helpers.Dependency_Manager import Dependency_Manager
|
6
|
+
from osbot_utils.helpers.flows.actions.Flow__Data import Flow__Data
|
7
|
+
from osbot_utils.helpers.flows.models.Flow_Run__Event import Flow_Run__Event
|
6
8
|
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
7
9
|
from osbot_utils.helpers.CFormat import CFormat, f_dark_grey, f_magenta, f_bold
|
8
10
|
from osbot_utils.helpers.flows.models.Flow_Run__Config import Flow_Run__Config
|
9
|
-
from osbot_utils.helpers.flows.Flow__Events
|
11
|
+
from osbot_utils.helpers.flows.actions.Flow__Events import flow_events
|
10
12
|
from osbot_utils.helpers.flows.models.Flow_Run__Event_Data import Flow_Run__Event_Data
|
11
13
|
from osbot_utils.testing.Stdout import Stdout
|
12
14
|
from osbot_utils.utils.Misc import random_id, lower, time_now
|
@@ -22,6 +24,7 @@ FLOW__LOGGING__DATE_FORMAT = '%H:%M:%S'
|
|
22
24
|
|
23
25
|
# todo: add flow duration
|
24
26
|
class Flow(Type_Safe):
|
27
|
+
flow_data : Flow__Data
|
25
28
|
captured_exec_logs : list
|
26
29
|
data : dict # dict available to the tasks to add and collect data
|
27
30
|
flow_id : str # rename to flow_run_id (or also capture the flow_run_id)
|
@@ -47,6 +50,10 @@ class Flow(Type_Safe):
|
|
47
50
|
type = artifact_type or "link")) # type clashed with built-in type
|
48
51
|
event_data.flow_run_id = self.flow_id
|
49
52
|
flow_events.on__new_artifact(event_data)
|
53
|
+
self.flow_data.add_artifact(key = key or 'default' ,
|
54
|
+
description = description or '' ,
|
55
|
+
data = data ,
|
56
|
+
artifact_type = artifact_type or 'default' )
|
50
57
|
|
51
58
|
|
52
59
|
def add_flow_result(self, key, description):
|
@@ -55,6 +62,7 @@ class Flow(Type_Safe):
|
|
55
62
|
event_data.data = dict(result_data = dict(key = key ,
|
56
63
|
description = description ))
|
57
64
|
flow_events.on__new_result(event_data)
|
65
|
+
self.flow_data.add_result(key, description)
|
58
66
|
|
59
67
|
def config_logger(self):
|
60
68
|
with self.logger as _:
|
@@ -79,9 +87,12 @@ class Flow(Type_Safe):
|
|
79
87
|
try:
|
80
88
|
with Stdout() as stdout:
|
81
89
|
self.invoke_flow_target()
|
90
|
+
self.flow_data.set_return_value(self.flow_return_value)
|
91
|
+
self.flow_data.set_completed()
|
82
92
|
except Exception as error:
|
83
93
|
self.flow_error = error
|
84
94
|
self.log_error(self.cformat.red(f"Error executing flow: {error}"))
|
95
|
+
self.flow_data.set_error(error)
|
85
96
|
|
86
97
|
self.log_captured_stdout (stdout)
|
87
98
|
self.print_flow_return_value ()
|
@@ -93,6 +104,9 @@ class Flow(Type_Safe):
|
|
93
104
|
if self.flow_return_value:
|
94
105
|
self.add_flow_result(key = 'flow-return-value', description=f'{self.flow_return_value}')
|
95
106
|
flow_events.on__flow__stop(self.flow_event_data())
|
107
|
+
|
108
|
+
if self.flow_config.raise_flow_error and self.flow_error: # raise an event if there was an error and raise_flow_error is set
|
109
|
+
raise self.flow_error
|
96
110
|
return self
|
97
111
|
|
98
112
|
def captured_logs(self):
|
@@ -153,6 +167,7 @@ class Flow(Type_Safe):
|
|
153
167
|
self.logger.error(message)
|
154
168
|
else:
|
155
169
|
self.logger.info(message)
|
170
|
+
self.flow_data.add_log(log_level, message, task_run_id)
|
156
171
|
|
157
172
|
def log_messages(self):
|
158
173
|
return ansis_to_texts(self.log_messages_with_colors())
|
@@ -161,6 +176,8 @@ class Flow(Type_Safe):
|
|
161
176
|
return self.logger.memory_handler_messages()
|
162
177
|
|
163
178
|
def print_log_messages(self, use_colors=True):
|
179
|
+
print()
|
180
|
+
print()
|
164
181
|
if use_colors:
|
165
182
|
if self.captured_exec_logs:
|
166
183
|
for message in self.captured_exec_logs:
|
@@ -230,9 +247,23 @@ class Flow(Type_Safe):
|
|
230
247
|
_.config_logger ()
|
231
248
|
_.setup_flow_run ()
|
232
249
|
_.set_flow_name ()
|
250
|
+
_.flow_data.set_flow_id (self.flow_id)
|
251
|
+
_.flow_data.set_flow_name(self.flow_name)
|
252
|
+
_.add_event_listener()
|
233
253
|
return self
|
234
254
|
|
235
255
|
def setup_flow_run(self):
|
236
256
|
with self as _:
|
237
257
|
if not _.flow_id:
|
238
258
|
_.flow_id = self.random_flow_id()
|
259
|
+
|
260
|
+
def add_event_listener(self):
|
261
|
+
flow_events.event_listeners.append(self.event_listener)
|
262
|
+
|
263
|
+
def event_listener(self, flow_event: Flow_Run__Event):
|
264
|
+
if self.flow_config.flow_data__capture_events:
|
265
|
+
self.flow_data.add_event(flow_event)
|
266
|
+
|
267
|
+
def json(self) -> typing.Dict[str, typing.Any]: # Convert flow data to JSON
|
268
|
+
return self.flow_data.json()
|
269
|
+
|
@@ -4,7 +4,7 @@ import typing
|
|
4
4
|
from osbot_utils.helpers.flows.models.Flow_Run__Event_Data import Flow_Run__Event_Data
|
5
5
|
from osbot_utils.utils.Misc import random_id, lower
|
6
6
|
from osbot_utils.helpers.Dependency_Manager import Dependency_Manager
|
7
|
-
from osbot_utils.helpers.flows.Flow__Events
|
7
|
+
from osbot_utils.helpers.flows.actions.Flow__Events import flow_events
|
8
8
|
from osbot_utils.testing.Stdout import Stdout
|
9
9
|
from osbot_utils.helpers.CFormat import CFormat, f_dark_grey, f_red, f_blue, f_bold
|
10
10
|
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
@@ -49,6 +49,7 @@ class Task(Type_Safe):
|
|
49
49
|
return self.execute__after()
|
50
50
|
|
51
51
|
def execute__before(self):
|
52
|
+
self.on_task_start()
|
52
53
|
self.task_flow = self.find_flow()
|
53
54
|
if self.task_flow is None:
|
54
55
|
raise Exception("No Flow found for Task")
|
@@ -107,17 +108,17 @@ class Task(Type_Safe):
|
|
107
108
|
self.print_task_finished_message()
|
108
109
|
|
109
110
|
flow_events.on__task__stop(self.task_event_data())
|
111
|
+
self.on_task_end()
|
110
112
|
return self.task_return_value
|
111
113
|
|
112
|
-
|
113
|
-
def find_flow(self):
|
114
|
+
def find_flow(self): # Find the closest Flow instance in the call stack by examining both self parameters and local variables in each frame
|
114
115
|
stack = inspect.stack()
|
115
116
|
for frame_info in stack:
|
116
117
|
frame = frame_info.frame
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
118
|
+
for var_name, var_value in list(frame.f_locals.items()): # Check all local variables in the frame
|
119
|
+
if type(var_value) is Flow:
|
120
|
+
return var_value
|
121
|
+
return None
|
121
122
|
|
122
123
|
def print_task_finished_message(self):
|
123
124
|
if self.task_flow.flow_config.print_finished_message:
|
@@ -131,4 +132,15 @@ class Task(Type_Safe):
|
|
131
132
|
|
132
133
|
|
133
134
|
def random_task_id(self):
|
134
|
-
return lower(random_id(prefix=TASK__RANDOM_ID__PREFIX))
|
135
|
+
return lower(random_id(prefix=TASK__RANDOM_ID__PREFIX))
|
136
|
+
|
137
|
+
|
138
|
+
def on_task_start(self): # Handle task start event
|
139
|
+
self.task_flow.flow_data.add_task(self.task_id, self.task_name)
|
140
|
+
|
141
|
+
def on_task_end(self): # Handle task end event
|
142
|
+
status = 'failed' if self.task_error else 'completed'
|
143
|
+
self.task_flow.flow_data.update_task(self.task_id ,
|
144
|
+
status ,
|
145
|
+
self.task_error ,
|
146
|
+
self.task_return_value)
|
@@ -0,0 +1,87 @@
|
|
1
|
+
from typing import Optional, Dict, Any
|
2
|
+
from osbot_utils.helpers.Timestamp_Now import Timestamp_Now
|
3
|
+
from osbot_utils.helpers.flows.models.Flow_Run__Event import Flow_Run__Event
|
4
|
+
from osbot_utils.helpers.flows.models.Schema__Flow__Artifact import Schema__Flow__Artifact
|
5
|
+
from osbot_utils.helpers.flows.models.Schema__Flow__Result import Schema__Flow__Result
|
6
|
+
from osbot_utils.helpers.flows.schemas.Schema__Flow import Schema__Flow
|
7
|
+
from osbot_utils.helpers.flows.schemas.Schema__Flow__Data import Schema__Flow__Data
|
8
|
+
#from osbot_utils.helpers.flows.schemas.Schema__Flow__Event import Schema__Flow__Event
|
9
|
+
from osbot_utils.helpers.flows.schemas.Schema__Flow__Log import Schema__Flow__Log
|
10
|
+
from osbot_utils.helpers.flows.schemas.Schema__Flow__Task__Data import Schema__Flow__Task__Data
|
11
|
+
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
12
|
+
|
13
|
+
|
14
|
+
class Flow__Data(Type_Safe):
|
15
|
+
flow_data : Schema__Flow__Data # Main data container for flow execution
|
16
|
+
|
17
|
+
def set_completed(self): # Mark flow as completed
|
18
|
+
self.flow_data.end_time = Timestamp_Now()
|
19
|
+
self.flow_data.status = "completed"
|
20
|
+
|
21
|
+
def set_error(self, error: Exception): # Record flow execution error
|
22
|
+
self.flow_data.end_time = Timestamp_Now()
|
23
|
+
self.flow_data.status = "failed"
|
24
|
+
self.flow_data.error = str(error)
|
25
|
+
|
26
|
+
def set_flow_id(self, flow_id: str): # Set flow identifier
|
27
|
+
self.flow_data.flow_id = flow_id
|
28
|
+
|
29
|
+
def set_flow_name(self, flow_name: str): # Set flow name
|
30
|
+
self.flow_data.flow_name = flow_name
|
31
|
+
|
32
|
+
def set_return_value(self, value: Any): # Set flow return value
|
33
|
+
self.flow_data.return_value = value
|
34
|
+
|
35
|
+
def add_task(self, task_id: str, task_name: str): # Record start of task execution
|
36
|
+
self.flow_data.tasks[task_id] = Schema__Flow__Task__Data(task_id = task_id ,
|
37
|
+
task_name = task_name ,
|
38
|
+
start_time = Timestamp_Now() ,
|
39
|
+
end_time = None ,
|
40
|
+
status = "" ,
|
41
|
+
error_message= None ,
|
42
|
+
return_value = None ,
|
43
|
+
input_args = () ,
|
44
|
+
input_kwargs = {} )
|
45
|
+
|
46
|
+
def update_task(self, task_id: str, status: str, # Update task execution status
|
47
|
+
error: Optional[Exception] = None,
|
48
|
+
return_value: Any = None):
|
49
|
+
if task_id in self.flow_data.tasks:
|
50
|
+
task_data = self.flow_data.tasks[task_id]
|
51
|
+
task_data.end_time = Timestamp_Now()
|
52
|
+
task_data.status = status
|
53
|
+
task_data.error_message = str(error) if error else None
|
54
|
+
task_data.return_value = return_value
|
55
|
+
|
56
|
+
# def add_event(self, event: Schema__Flow__Event): # todo: this needs refactoring with the Flow_Run__Event events used below
|
57
|
+
def add_event(self, event: Flow_Run__Event): # Record flow execution event
|
58
|
+
self.flow_data.events.append(event)
|
59
|
+
|
60
|
+
def add_log(self, level: int, message: str, # Record log message
|
61
|
+
task_id: Optional[str] = None):
|
62
|
+
self.flow_data.logs.append(Schema__Flow__Log(
|
63
|
+
timestamp = Timestamp_Now(),
|
64
|
+
level = level,
|
65
|
+
message = message,
|
66
|
+
task_id = task_id))
|
67
|
+
|
68
|
+
def add_result(self, key: str, description: str): # Record flow execution result
|
69
|
+
self.flow_data.results.append(Schema__Flow__Result(
|
70
|
+
key = key,
|
71
|
+
description = description,
|
72
|
+
timestamp = Timestamp_Now()))
|
73
|
+
|
74
|
+
def add_artifact(self, key : str,
|
75
|
+
description : str,
|
76
|
+
data : Any,
|
77
|
+
artifact_type: str): # Record flow execution artifact
|
78
|
+
|
79
|
+
self.flow_data.artifacts.append(Schema__Flow__Artifact(
|
80
|
+
key = key,
|
81
|
+
description = description,
|
82
|
+
data = data,
|
83
|
+
type = artifact_type,
|
84
|
+
timestamp = Timestamp_Now()))
|
85
|
+
|
86
|
+
def json(self) -> Dict[str, Any]: # Convert flow data to JSON
|
87
|
+
return Schema__Flow(flow_data=self.flow_data).json()
|
@@ -0,0 +1,14 @@
|
|
1
|
+
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
2
|
+
|
3
|
+
# todo: this needs a good clean up and refactoring
|
4
|
+
class Flow_Run__Config(Type_Safe):
|
5
|
+
add_task_to_self : bool = True
|
6
|
+
log_to_console : bool = False
|
7
|
+
log_to_memory : bool = True
|
8
|
+
logging_enabled : bool = True
|
9
|
+
print_logs : bool = False
|
10
|
+
print_none_return_value : bool = False
|
11
|
+
print_finished_message : bool = False
|
12
|
+
raise_flow_error : bool = True
|
13
|
+
flow_data__capture_events : bool = False
|
14
|
+
|
{osbot_utils-2.19.0 → osbot_utils-2.21.0}/osbot_utils/helpers/flows/models/Flow_Run__Event.py
RENAMED
@@ -1,12 +1,9 @@
|
|
1
|
-
from osbot_utils.helpers.Random_Guid
|
2
|
-
|
3
|
-
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
1
|
+
from osbot_utils.helpers.Random_Guid import Random_Guid
|
2
|
+
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
4
3
|
from osbot_utils.helpers.Timestamp_Now import Timestamp_Now
|
5
4
|
from osbot_utils.helpers.flows.models.Flow_Run__Event_Data import Flow_Run__Event_Data
|
6
5
|
from osbot_utils.helpers.flows.models.Flow_Run__Event_Type import Flow_Run__Event_Type
|
7
6
|
|
8
|
-
|
9
|
-
|
10
7
|
class Flow_Run__Event(Type_Safe):
|
11
8
|
event_id : Random_Guid
|
12
9
|
event_type : Flow_Run__Event_Type
|
@@ -0,0 +1,11 @@
|
|
1
|
+
from typing import Any
|
2
|
+
from osbot_utils.helpers.Timestamp_Now import Timestamp_Now
|
3
|
+
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
4
|
+
|
5
|
+
|
6
|
+
class Schema__Flow__Artifact(Type_Safe): # Represents an artifact produced during flow execution
|
7
|
+
key : str
|
8
|
+
description : str
|
9
|
+
data : Any
|
10
|
+
type : str
|
11
|
+
timestamp : Timestamp_Now
|
@@ -0,0 +1,9 @@
|
|
1
|
+
from typing import List
|
2
|
+
|
3
|
+
from osbot_utils.helpers.flows.models.Flow_Run__Event import Flow_Run__Event
|
4
|
+
from osbot_utils.helpers.flows.schemas.Schema__Flow__Data import Schema__Flow__Data
|
5
|
+
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
6
|
+
|
7
|
+
class Schema__Flow(Type_Safe): # Root schema for flow execution data
|
8
|
+
flow_data : Schema__Flow__Data
|
9
|
+
flow_events: List[Flow_Run__Event] # todo: refactor this Flow_Run__Event class with the respective Schema_* classes
|
@@ -0,0 +1,25 @@
|
|
1
|
+
from typing import Optional, Dict, List, Any
|
2
|
+
from osbot_utils.helpers.Timestamp_Now import Timestamp_Now
|
3
|
+
from osbot_utils.helpers.flows.models.Flow_Run__Event import Flow_Run__Event
|
4
|
+
from osbot_utils.helpers.flows.models.Schema__Flow__Artifact import Schema__Flow__Artifact
|
5
|
+
from osbot_utils.helpers.flows.models.Schema__Flow__Result import Schema__Flow__Result
|
6
|
+
from osbot_utils.helpers.flows.schemas.Schema__Flow__Log import Schema__Flow__Log
|
7
|
+
from osbot_utils.helpers.flows.schemas.Schema__Flow__Task__Data import Schema__Flow__Task__Data
|
8
|
+
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
9
|
+
#from osbot_utils.helpers.flows.schemas.Schema__Flow__Event import Schema__Flow__Event
|
10
|
+
|
11
|
+
|
12
|
+
class Schema__Flow__Data(Type_Safe): # Main container for flow execution data
|
13
|
+
flow_id : str
|
14
|
+
flow_name : str
|
15
|
+
start_time : Timestamp_Now
|
16
|
+
end_time : Optional[Timestamp_Now]
|
17
|
+
status : str # 'completed', 'failed', 'running'
|
18
|
+
error : Optional[str]
|
19
|
+
tasks : Dict[str, Schema__Flow__Task__Data] # task_id -> task_data
|
20
|
+
#events : List[Schema__Flow__Event] # todo: this needs refactoring with the Flow_Run__Event events used below
|
21
|
+
events : List[Flow_Run__Event]
|
22
|
+
results : List[Schema__Flow__Result]
|
23
|
+
artifacts : List[Schema__Flow__Artifact]
|
24
|
+
logs : List[Schema__Flow__Log]
|
25
|
+
return_value : Any
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# todo: this needs refactoring with the Flow_Run__Event events stored in the Schema__Flow__Data. object
|
2
|
+
|
3
|
+
|
4
|
+
# from osbot_utils.helpers.Timestamp_Now import Timestamp_Now
|
5
|
+
# from osbot_utils.helpers.flows.schemas.Schema__Flow__Event__Data import Schema__Flow__Event__Data
|
6
|
+
# from osbot_utils.type_safe.Type_Safe import Type_Safe
|
7
|
+
#
|
8
|
+
#
|
9
|
+
# class Schema__Flow__Event(Type_Safe): # Represents a single event in the flow execution"""
|
10
|
+
# event_id : str
|
11
|
+
# event_type : str
|
12
|
+
# event_data : Schema__Flow__Event__Data
|
13
|
+
# timestamp : Timestamp_Now
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# todo: this needs refactoring with the Flow_Run__Event events stored in the Schema__Flow__Data. object
|
2
|
+
|
3
|
+
# from typing import Dict, Optional, Any
|
4
|
+
# from osbot_utils.type_safe.Type_Safe import Type_Safe
|
5
|
+
#
|
6
|
+
#
|
7
|
+
# class Schema__Flow__Event__Data(Type_Safe): # Represents the data associated with a flow event
|
8
|
+
# data : Dict[str, Any]
|
9
|
+
# event_source : str
|
10
|
+
# flow_name : Optional[str]
|
11
|
+
# flow_run_id : Optional[str]
|
12
|
+
# log_level : int
|
13
|
+
# task_name : Optional[str]
|
14
|
+
# task_run_id : Optional[str]
|
@@ -0,0 +1,10 @@
|
|
1
|
+
from typing import Optional
|
2
|
+
from osbot_utils.helpers.Timestamp_Now import Timestamp_Now
|
3
|
+
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
4
|
+
|
5
|
+
|
6
|
+
class Schema__Flow__Log(Type_Safe): # Represents a log entry from the flow execution
|
7
|
+
timestamp : Timestamp_Now
|
8
|
+
level : int
|
9
|
+
message : str
|
10
|
+
task_id : Optional[str]
|
@@ -0,0 +1,15 @@
|
|
1
|
+
from typing import Optional, Any
|
2
|
+
from osbot_utils.helpers.Timestamp_Now import Timestamp_Now
|
3
|
+
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
4
|
+
|
5
|
+
|
6
|
+
class Schema__Flow__Task__Data(Type_Safe): # Represents the data associated with a task execution
|
7
|
+
task_id : str
|
8
|
+
task_name : str
|
9
|
+
start_time : Timestamp_Now
|
10
|
+
end_time : Optional[Timestamp_Now]
|
11
|
+
status : str # 'completed', 'failed', 'running'
|
12
|
+
error_message : Optional[str]
|
13
|
+
return_value : Any
|
14
|
+
input_args : tuple
|
15
|
+
input_kwargs : dict
|
File without changes
|
@@ -56,7 +56,6 @@ def http_request(url, data=None, headers=None, method='GET', encoding ='utf-8',
|
|
56
56
|
ssl_request = url.startswith('https://')
|
57
57
|
headers = headers or {}
|
58
58
|
if data:
|
59
|
-
print()
|
60
59
|
if type(data) is not str: # if the data object is not a string
|
61
60
|
if headers.get('Content-Type') == "application/json": # and a json payload is expected
|
62
61
|
data = json.dumps(data) # convert it to json
|
@@ -164,6 +163,17 @@ def POST(url, data='', headers=None):
|
|
164
163
|
def POST_json(*args, **kwargs):
|
165
164
|
return json.loads(POST(*args, **kwargs))
|
166
165
|
|
166
|
+
def POST_json_get_bytes(url=None, data=None):
|
167
|
+
headers = {'Content-Type': "application/json"} # todo add support for providing custom headers
|
168
|
+
kwargs = dict(url = url ,
|
169
|
+
data = data,
|
170
|
+
headers = headers ,
|
171
|
+
method = 'POST' ,
|
172
|
+
encoding = None
|
173
|
+
)
|
174
|
+
response = http_request(**kwargs)
|
175
|
+
return response
|
176
|
+
|
167
177
|
def PUT(url, data='', headers=None):
|
168
178
|
return http_request(url, data, headers, 'PUT')
|
169
179
|
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
v2.21.0
|
@@ -1,12 +0,0 @@
|
|
1
|
-
from osbot_utils.type_safe.Type_Safe import Type_Safe
|
2
|
-
|
3
|
-
|
4
|
-
class Flow_Run__Config(Type_Safe):
|
5
|
-
add_task_to_self : bool = True
|
6
|
-
log_to_console : bool = False
|
7
|
-
log_to_memory : bool = True
|
8
|
-
logging_enabled : bool = True
|
9
|
-
print_logs : bool = False
|
10
|
-
print_none_return_value: bool = False
|
11
|
-
print_finished_message : bool = False
|
12
|
-
|
@@ -1 +0,0 @@
|
|
1
|
-
v2.19.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.19.0 → osbot_utils-2.21.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.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/methods/cache_on_function.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-2.19.0 → osbot_utils-2.21.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.19.0 → osbot_utils-2.21.0}/osbot_utils/decorators/methods/function_type_check.py
RENAMED
File without changes
|
File without changes
|
{osbot_utils-2.19.0 → osbot_utils-2.21.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
|