osbot-utils 1.48.0__tar.gz → 1.50.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-1.48.0 → osbot_utils-1.50.0}/PKG-INFO +2 -2
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/README.md +1 -1
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/flows/Flow.py +10 -4
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/flows/Task.py +31 -11
- osbot_utils-1.50.0/osbot_utils/helpers/flows/decorators/task.py +23 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Threads.py +13 -0
- osbot_utils-1.50.0/osbot_utils/version +1 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/pyproject.toml +1 -1
- osbot_utils-1.48.0/osbot_utils/helpers/flows/decorators/task.py +0 -11
- osbot_utils-1.48.0/osbot_utils/version +0 -1
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/LICENSE +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/base_classes/Cache_Pickle.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/base_classes/Kwargs_To_Disk.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/base_classes/Kwargs_To_Self.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/base_classes/Type_Safe.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/base_classes/Type_Safe__List.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/base_classes/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/context_managers/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/context_managers/async_invoke.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/context_managers/capture_duration.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/context_managers/disable_root_loggers.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/context_managers/print_duration.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/classes/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/classes/singleton.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/lists/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/lists/filter_list.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/lists/group_by.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/lists/index_by.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/methods/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/methods/cache.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/methods/cache_on_function.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/methods/cache_on_self.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/methods/cache_on_tmp.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/methods/capture_exception.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/methods/capture_status.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/methods/catch.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/methods/context.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/methods/depreciated.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/methods/function_type_check.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/methods/obj_as_context.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/methods/remove_return_value.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/methods/required_fields.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/fluent/Fluent_Dict.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/fluent/Fluent_List.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/fluent/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mermaid/Mermaid.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mermaid/Mermaid__Edge.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mermaid/Mermaid__Graph.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mermaid/Mermaid__Node.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mermaid/Mermaid__Renderer.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mermaid/configs/Mermaid__Edge__Config.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mermaid/configs/Mermaid__Node__Config.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mermaid/configs/Mermaid__Render__Config.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mermaid/examples/Mermaid_Examples__FlowChart.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mermaid/models/Mermaid__Diagram_Direction.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mermaid/models/Mermaid__Diagram__Type.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mermaid/models/Mermaid__Node__Shape.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mgraph/MGraph.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mgraph/MGraph__Config.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mgraph/MGraph__Data.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mgraph/MGraph__Edge.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mgraph/MGraph__Node.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mgraph/MGraph__Random_Graphs.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mgraph/MGraph__Serializer.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mgraph/MGraphs.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mgraph/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/CFormat.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/CPrint.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/Dependency_Manager.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/Dict_To_Attr.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/Hashicorp_Secrets.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/Local_Cache.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/Local_Caches.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/Print_Table.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/Python_Audit.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/Random_Guid.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/Random_Seed.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/Type_Registry.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/Zip_Bytes.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/Ast.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/Ast_Base.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/Ast_Data.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/Ast_Load.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/Ast_Merge.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/Ast_Node.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/Ast_Visit.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/Call_Tree.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Add.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Alias.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_And.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Argument.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Arguments.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Assert.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Assign.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Attribute.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Aug_Assign.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Bin_Op.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Bool_Op.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Break.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Call.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Class_Def.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Compare.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Comprehension.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Constant.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Continue.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Dict.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Eq.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Except_Handler.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Expr.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_For.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Function_Def.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Generator_Exp.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Gt.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_GtE.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_If.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_If_Exp.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Import.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Import_From.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_In.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Is.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Is_Not.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Keyword.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Lambda.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_List.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_List_Comp.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Load.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Lt.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_LtE.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Mod.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Module.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Mult.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Name.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Not.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Not_Eq.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Not_In.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Or.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Pass.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Pow.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Raise.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Return.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Set.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Slice.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Starred.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Store.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Sub.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Subscript.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Try.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Tuple.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Unary_Op.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_While.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_With.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_With_Item.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Yield.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Actions.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Config.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Data.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Invoke.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Row.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/cache_requests/Cache__Requests__Table.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/cache_requests/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/cache_requests/flows/flow__Cache__Requests.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/flows/Flow__Config.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/flows/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/flows/decorators/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/flows/decorators/flow.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/html/Dict_To_Css.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/html/Dict_To_Html.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/html/Dict_To_Tags.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/html/Html_To_Dict.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/html/Html_To_Tag.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/html/Tag__Base.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/html/Tag__Body.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/html/Tag__Div.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/html/Tag__H.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/html/Tag__HR.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/html/Tag__Head.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/html/Tag__Html.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/html/Tag__Link.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/html/Tag__Style.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/html/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/pubsub/Event__Queue.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/pubsub/PubSub__Client.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/pubsub/PubSub__Room.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/pubsub/PubSub__Server.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/pubsub/PubSub__Sqlite.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/pubsub/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Connect.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Disconnect.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Execute_Method.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Join_Room.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Leave_Room.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/pubsub/schemas/Schema__Event__Message.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/pubsub/schemas/Schema__PubSub__Client.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/pubsub/schemas/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/Capture_Sqlite_Error.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/Sqlite__Cursor.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/Sqlite__Database.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/Sqlite__Field.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/Sqlite__Globals.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/Sqlite__Table.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/Sqlite__Table__Create.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Database__Disk.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/Temp_Sqlite__Table.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/cache/Schema__Table__Requests.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Patch.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Sqlite.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/cache/Sqlite__Cache__Requests__Table.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/cache/Sqlite__DB__Requests.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/cache/TestCase__Sqlite__Cache__Requests.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/cache/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Files.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Graph.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Json.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/domains/Sqlite__DB__Local.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/domains/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/domains/schemas/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/models/Sqlite__Field__Type.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/models/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/sample_data/Sqlite__Sample_Data__Chinook.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/sample_data/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/sql_builder/SQL_Builder__Select.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/sql_builder/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Config.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Edges.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Files.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/tables/Sqlite__Table__Nodes.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/sqlite/tables/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ssh/SCP.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ssh/SSH.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ssh/SSH__Cache__Requests.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ssh/SSH__Execute.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ssh/SSH__Health_Check.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ssh/SSH__Linux.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ssh/SSH__Linux__Amazon.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ssh/SSH__Python.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ssh/TestCase__SSH.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ssh/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/trace/Trace_Call.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/trace/Trace_Call__Config.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/trace/Trace_Call__Graph.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/trace/Trace_Call__Handler.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/trace/Trace_Call__Print_Lines.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/trace/Trace_Call__Print_Traces.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/trace/Trace_Call__Stack.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/trace/Trace_Call__Stack_Node.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/trace/Trace_Call__Stats.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/trace/Trace_Call__View_Model.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/trace/Trace_Files.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/trace/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/Catch.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/Duration.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/Hook_Method.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/Log_To_Queue.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/Log_To_String.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/Logging.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/Patch_Print.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/Profiler.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/Pytest.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/Stderr.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/Stdout.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/Temp_Env_Vars.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/Temp_File.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/Temp_Folder.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/Temp_Sys_Path.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/Temp_Web_Server.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/Temp_Zip.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/Temp_Zip_In_Memory.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/Unit_Test.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/Unzip_File.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/testing/__init__.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Assert.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Call_Stack.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Csv.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Dev.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Env.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Exceptions.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Files.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Functions.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Http.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Int.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Json.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Json_Cache.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Lists.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Misc.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Objects.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Png.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Process.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Python_Logger.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Regex.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Status.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Str.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Toml.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Version.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/Zip.py +0 -0
- {osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/utils/__init__.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: osbot_utils
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.50.0
|
4
4
|
Summary: OWASP Security Bot - Utils
|
5
5
|
Home-page: https://github.com/owasp-sbot/OSBot-Utils
|
6
6
|
License: MIT
|
@@ -22,7 +22,7 @@ Description-Content-Type: text/markdown
|
|
22
22
|
|
23
23
|
Powerful Python util methods and classes that simplify common apis and tasks.
|
24
24
|
|
25
|
-

|
26
26
|
[](https://codecov.io/gh/owasp-sbot/OSBot-Utils)
|
27
27
|
|
28
28
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Powerful Python util methods and classes that simplify common apis and tasks.
|
4
4
|
|
5
|
-

|
6
6
|
[](https://codecov.io/gh/owasp-sbot/OSBot-Utils)
|
7
7
|
|
8
8
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import asyncio
|
1
2
|
import logging
|
2
3
|
import typing
|
3
4
|
|
@@ -8,6 +9,7 @@ from osbot_utils.testing.Stdout import Stdout
|
|
8
9
|
from osbot_utils.utils.Misc import random_id, lower
|
9
10
|
from osbot_utils.utils.Python_Logger import Python_Logger
|
10
11
|
from osbot_utils.utils.Str import ansis_to_texts
|
12
|
+
from osbot_utils.utils.Threads import invoke_async, invoke_in_new_event_loop
|
11
13
|
|
12
14
|
FLOW__RANDOM_ID__PREFIX = 'flow_id__'
|
13
15
|
FLOW__RANDOM_NAME__PREFIX = 'flow_name__'
|
@@ -29,9 +31,6 @@ class Flow(Type_Safe):
|
|
29
31
|
flow_return_value : typing.Any
|
30
32
|
logger : Python_Logger
|
31
33
|
cformat : CFormat
|
32
|
-
#log_to_console : bool = False
|
33
|
-
#log_to_memory : bool = True
|
34
|
-
#print_logs : bool = False
|
35
34
|
executed_tasks : typing.List
|
36
35
|
|
37
36
|
|
@@ -61,7 +60,7 @@ class Flow(Type_Safe):
|
|
61
60
|
self.debug(f"Executing flow run '{self.f__flow_id()}''")
|
62
61
|
try:
|
63
62
|
with Stdout() as stdout:
|
64
|
-
self.
|
63
|
+
self.invoke_flow_target()
|
65
64
|
except Exception as error:
|
66
65
|
self.flow_error = error
|
67
66
|
self.logger.error(self.cformat.red(f"Error executing flow: {error}"))
|
@@ -87,6 +86,13 @@ class Flow(Type_Safe):
|
|
87
86
|
def info(self, message):
|
88
87
|
self.logger.info(message)
|
89
88
|
|
89
|
+
def invoke_flow_target(self):
|
90
|
+
if asyncio.iscoroutinefunction(self.flow_target):
|
91
|
+
#self.flow_return_value = invoke_async(self.flow_target(*self.flow_args, **self.flow_kwargs))
|
92
|
+
self.flow_return_value = invoke_in_new_event_loop(self.flow_target(*self.flow_args, **self.flow_kwargs))
|
93
|
+
else:
|
94
|
+
self.flow_return_value = self.flow_target(*self.flow_args, **self.flow_kwargs)
|
95
|
+
|
90
96
|
def log_captured_stdout(self, stdout):
|
91
97
|
for line in stdout.value().splitlines():
|
92
98
|
if line:
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import asyncio
|
1
2
|
import inspect
|
2
3
|
import typing
|
3
4
|
|
@@ -10,12 +11,13 @@ from osbot_utils.base_classes.Type_Safe import Type_Safe
|
|
10
11
|
from osbot_utils.helpers.flows.Flow import Flow
|
11
12
|
|
12
13
|
|
13
|
-
|
14
14
|
class Task(Type_Safe):
|
15
15
|
data : dict # dict available to the task to add and collect data
|
16
16
|
task_id : str # todo add a random Id value to this
|
17
17
|
task_name : str # make this the function mame
|
18
18
|
cformat : CFormat
|
19
|
+
resolved_args : tuple
|
20
|
+
resolved_kwargs : dict
|
19
21
|
task_target : callable # todo refactor this to to Task__Function class
|
20
22
|
task_args : tuple
|
21
23
|
task_kwargs : dict
|
@@ -24,7 +26,17 @@ class Task(Type_Safe):
|
|
24
26
|
task_error : Exception = None
|
25
27
|
raise_on_error : bool = True
|
26
28
|
|
27
|
-
def
|
29
|
+
def execute__sync(self):
|
30
|
+
self.execute__before()
|
31
|
+
self.execute__task_target__sync()
|
32
|
+
return self.execute__after()
|
33
|
+
|
34
|
+
async def execute__async(self):
|
35
|
+
self.execute__before()
|
36
|
+
await self.execute__task_target__async()
|
37
|
+
return self.execute__after()
|
38
|
+
|
39
|
+
def execute__before(self):
|
28
40
|
self.task_flow = self.find_flow()
|
29
41
|
if self.task_flow is None:
|
30
42
|
raise Exception("No Flow found for Task")
|
@@ -34,14 +46,30 @@ class Task(Type_Safe):
|
|
34
46
|
|
35
47
|
self.task_flow.executed_tasks.append(self)
|
36
48
|
self.task_flow.logger.debug(f"Executing task '{f_blue(self.task_name)}'")
|
49
|
+
dependency_manager = Dependency_Manager()
|
50
|
+
dependency_manager.add_dependency('this_task', self )
|
51
|
+
dependency_manager.add_dependency('this_flow', self.task_flow )
|
52
|
+
dependency_manager.add_dependency('task_data', self.data )
|
53
|
+
dependency_manager.add_dependency('flow_data', self.task_flow.data)
|
54
|
+
self.resolved_args, self.resolved_kwargs = dependency_manager.resolve_dependencies(self.task_target, *self.task_args, **self.task_kwargs)
|
37
55
|
|
56
|
+
def execute__task_target__sync(self):
|
38
57
|
try:
|
39
58
|
with Stdout() as stdout:
|
40
|
-
self.
|
59
|
+
self.task_return_value = self.task_target(*self.resolved_args, **self.resolved_kwargs)
|
41
60
|
except Exception as error:
|
42
61
|
self.task_error = error
|
62
|
+
self.task_flow.log_captured_stdout(stdout)
|
43
63
|
|
64
|
+
async def execute__task_target__async(self):
|
65
|
+
try:
|
66
|
+
with Stdout() as stdout:
|
67
|
+
self.task_return_value = await self.task_target(*self.resolved_args, **self.resolved_kwargs)
|
68
|
+
except Exception as error:
|
69
|
+
self.task_error = error
|
44
70
|
self.task_flow.log_captured_stdout(stdout)
|
71
|
+
|
72
|
+
def execute__after(self):
|
45
73
|
self.print_task_return_value()
|
46
74
|
|
47
75
|
if self.task_error:
|
@@ -52,14 +80,6 @@ class Task(Type_Safe):
|
|
52
80
|
self.print_task_finished_message()
|
53
81
|
return self.task_return_value
|
54
82
|
|
55
|
-
def invoke_task_target(self):
|
56
|
-
dependency_manager = Dependency_Manager()
|
57
|
-
dependency_manager.add_dependency('this_task', self )
|
58
|
-
dependency_manager.add_dependency('this_flow', self.task_flow )
|
59
|
-
dependency_manager.add_dependency('task_data', self.data )
|
60
|
-
dependency_manager.add_dependency('flow_data', self.task_flow.data)
|
61
|
-
resolved_args, resolved_kwargs = dependency_manager.resolve_dependencies(self.task_target, *self.task_args, **self.task_kwargs)
|
62
|
-
self.task_return_value = self.task_target(*resolved_args, **resolved_kwargs)
|
63
83
|
|
64
84
|
def find_flow(self):
|
65
85
|
stack = inspect.stack()
|
@@ -0,0 +1,23 @@
|
|
1
|
+
from functools import wraps
|
2
|
+
import asyncio
|
3
|
+
from osbot_utils.helpers.flows.Task import Task
|
4
|
+
|
5
|
+
|
6
|
+
def task(**task_kwargs):
|
7
|
+
def decorator(function):
|
8
|
+
@wraps(function)
|
9
|
+
async def async_wrapper(*args, **kwargs):
|
10
|
+
with Task(task_target=function, task_args=args, task_kwargs=kwargs, **task_kwargs) as _:
|
11
|
+
return await _.execute__async()
|
12
|
+
|
13
|
+
@wraps(function)
|
14
|
+
def sync_wrapper(*args, **kwargs):
|
15
|
+
with Task(task_target=function, task_args=args, task_kwargs=kwargs, **task_kwargs) as _:
|
16
|
+
return _.execute__sync()
|
17
|
+
|
18
|
+
if asyncio.iscoroutinefunction(function):
|
19
|
+
return async_wrapper
|
20
|
+
else:
|
21
|
+
return sync_wrapper
|
22
|
+
|
23
|
+
return decorator
|
@@ -42,5 +42,18 @@ def invoke_in_new_event_loop(target: typing.Coroutine): # Runs a cor
|
|
42
42
|
result = future.result() # Wait for the result of the future
|
43
43
|
return result # Return the result from the coroutine
|
44
44
|
|
45
|
+
# in the use cases when I tried to use this, it hanged
|
46
|
+
# def invoke_in_current_loop(target: typing.Coroutine):
|
47
|
+
# try:
|
48
|
+
# current_loop = asyncio.get_running_loop() # Get the current running loop, if any
|
49
|
+
# except RuntimeError: # There is no running event loop
|
50
|
+
# current_loop = None
|
51
|
+
#
|
52
|
+
# if current_loop and current_loop.is_running(): # If there's an event loop currently running, we can use asyncio.run_coroutine_threadsafe to run it
|
53
|
+
# future = asyncio.run_coroutine_threadsafe(target, current_loop)
|
54
|
+
# return future.result()
|
55
|
+
# else:
|
56
|
+
# return asyncio.run(target) # If there's no event loop running, we create a new one and use run_until_complete
|
57
|
+
|
45
58
|
async_invoke_in_new_loop = invoke_in_new_event_loop
|
46
59
|
invoke_async = invoke_async_function # todo: see if this is best use of this function name
|
@@ -0,0 +1 @@
|
|
1
|
+
v1.50.0
|
@@ -1,11 +0,0 @@
|
|
1
|
-
from functools import wraps
|
2
|
-
from osbot_utils.helpers.flows.Task import Task
|
3
|
-
|
4
|
-
def task(**task_kwargs):
|
5
|
-
def decorator(function):
|
6
|
-
@wraps(function)
|
7
|
-
def wrapper(*args, **kwargs):
|
8
|
-
with Task(task_target=function, task_args=args, task_kwargs=kwargs, **task_kwargs) as _:
|
9
|
-
return _.execute()
|
10
|
-
return wrapper
|
11
|
-
return decorator
|
@@ -1 +0,0 @@
|
|
1
|
-
v1.48.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
|
File without changes
|
File without changes
|
{osbot_utils-1.48.0 → osbot_utils-1.50.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-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/methods/cache_on_function.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-1.48.0 → osbot_utils-1.50.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-1.48.0 → osbot_utils-1.50.0}/osbot_utils/decorators/methods/function_type_check.py
RENAMED
File without changes
|
File without changes
|
{osbot_utils-1.48.0 → osbot_utils-1.50.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
|
{osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mermaid/models/Mermaid__Node__Shape.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/graphs/mgraph/MGraph__Random_Graphs.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Comprehension.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Except_Handler.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{osbot_utils-1.48.0 → osbot_utils-1.50.0}/osbot_utils/helpers/ast/nodes/Ast_Generator_Exp.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|